From cdc9428984028cdc0eb804ba05c4dd195dab145a Mon Sep 17 00:00:00 2001 From: pk19604014 <95385881+pk19604014@users.noreply.github.com> Date: Fri, 20 May 2022 20:36:17 -0400 Subject: [PATCH] Changed the type of `parameter` in FunctionType ctor from generic `Expression` to `TupleLiteral` to match the grammar (#1272) --- common/fuzzing/carbon.proto | 2 +- common/fuzzing/proto_to_carbon.cpp | 2 +- explorer/ast/expression.h | 8 +++---- explorer/fuzzing/ast_to_proto.cpp | 2 +- ...61b70aea94c6cb2922236d87ddb03a5.textproto} | 24 +++++++++---------- ...40456e2748925f3ba854ccacadd029e.textproto} | 8 +++---- ...cd76b94b2ef6664be2a640b92cf68fb.textproto} | 14 ++++------- ...ca0db94774b36ee1a9eb31156e6b6af.textproto} | 8 +++---- explorer/fuzzing/fuzzer_util_test.cpp | 3 ++- 9 files changed, 31 insertions(+), 40 deletions(-) rename explorer/fuzzing/fuzzer_corpus/{bbf51fb6519d507da617e8ad2f7aa820354ca2f4.textproto => 01e7317e461b70aea94c6cb2922236d87ddb03a5.textproto} (96%) rename explorer/fuzzing/fuzzer_corpus/{d191fc4462a50c502d790d51fd58e68346dc1505.textproto => 035c3272740456e2748925f3ba854ccacadd029e.textproto} (96%) rename explorer/fuzzing/fuzzer_corpus/{4ac057f4d857b6644a3de54266d932940ebf106a.textproto => 3045a5c32cd76b94b2ef6664be2a640b92cf68fb.textproto} (98%) rename explorer/fuzzing/fuzzer_corpus/{09e83bb511e0d695ff3608a746040ae7c69cc984.textproto => cc5dd89a2ca0db94774b36ee1a9eb31156e6b6af.textproto} (97%) diff --git a/common/fuzzing/carbon.proto b/common/fuzzing/carbon.proto index 856c0e30f70b..aa1659d68c1e 100644 --- a/common/fuzzing/carbon.proto +++ b/common/fuzzing/carbon.proto @@ -19,7 +19,7 @@ message CallExpression { } message FunctionTypeLiteral { - optional Expression parameter = 1; + optional TupleLiteralExpression parameter = 3; optional Expression return_type = 2; } diff --git a/common/fuzzing/proto_to_carbon.cpp b/common/fuzzing/proto_to_carbon.cpp index d53c6cd29045..734d95f2e9e5 100644 --- a/common/fuzzing/proto_to_carbon.cpp +++ b/common/fuzzing/proto_to_carbon.cpp @@ -200,7 +200,7 @@ static auto ExpressionToCarbon(const Fuzzing::Expression& expression, case Fuzzing::Expression::kFunctionType: { const auto& fun_type = expression.function_type(); out << "__Fn"; - ExpressionToCarbon(fun_type.parameter(), out); + TupleLiteralExpressionToCarbon(fun_type.parameter(), out); out << " -> "; ExpressionToCarbon(fun_type.return_type(), out); break; diff --git a/explorer/ast/expression.h b/explorer/ast/expression.h index 3a80102ff174..15ad3fe58651 100644 --- a/explorer/ast/expression.h +++ b/explorer/ast/expression.h @@ -489,7 +489,7 @@ class CallExpression : public Expression { class FunctionTypeLiteral : public Expression { public: explicit FunctionTypeLiteral(SourceLocation source_loc, - Nonnull parameter, + Nonnull parameter, Nonnull return_type) : Expression(AstNodeKind::FunctionTypeLiteral, source_loc), parameter_(parameter), @@ -499,13 +499,13 @@ class FunctionTypeLiteral : public Expression { return InheritsFromFunctionTypeLiteral(node->kind()); } - auto parameter() const -> const Expression& { return *parameter_; } - auto parameter() -> Expression& { return *parameter_; } + auto parameter() const -> const TupleLiteral& { return *parameter_; } + auto parameter() -> TupleLiteral& { return *parameter_; } auto return_type() const -> const Expression& { return *return_type_; } auto return_type() -> Expression& { return *return_type_; } private: - Nonnull parameter_; + Nonnull parameter_; Nonnull return_type_; }; diff --git a/explorer/fuzzing/ast_to_proto.cpp b/explorer/fuzzing/ast_to_proto.cpp index 4705c787c945..e29ab3e6aec0 100644 --- a/explorer/fuzzing/ast_to_proto.cpp +++ b/explorer/fuzzing/ast_to_proto.cpp @@ -97,7 +97,7 @@ static auto ExpressionToProto(const Expression& expression) const auto& fun_type = cast(expression); auto* fun_type_proto = expression_proto.mutable_function_type(); *fun_type_proto->mutable_parameter() = - ExpressionToProto(fun_type.parameter()); + TupleLiteralExpressionToProto(fun_type.parameter()); *fun_type_proto->mutable_return_type() = ExpressionToProto(fun_type.return_type()); break; diff --git a/explorer/fuzzing/fuzzer_corpus/bbf51fb6519d507da617e8ad2f7aa820354ca2f4.textproto b/explorer/fuzzing/fuzzer_corpus/01e7317e461b70aea94c6cb2922236d87ddb03a5.textproto similarity index 96% rename from explorer/fuzzing/fuzzer_corpus/bbf51fb6519d507da617e8ad2f7aa820354ca2f4.textproto rename to explorer/fuzzing/fuzzer_corpus/01e7317e461b70aea94c6cb2922236d87ddb03a5.textproto index 0e6f9d231649..1aa134fc6dfd 100644 --- a/explorer/fuzzing/fuzzer_corpus/bbf51fb6519d507da617e8ad2f7aa820354ca2f4.textproto +++ b/explorer/fuzzing/fuzzer_corpus/01e7317e461b70aea94c6cb2922236d87ddb03a5.textproto @@ -245,20 +245,18 @@ compilation_unit { type { function_type { parameter { - tuple_literal { - fields { - call { - function { - identifier { - name: "Point" - } + fields { + call { + function { + identifier { + name: "Point" } - argument { - tuple_literal { - fields { - identifier { - name: "T" - } + } + argument { + tuple_literal { + fields { + identifier { + name: "T" } } } diff --git a/explorer/fuzzing/fuzzer_corpus/d191fc4462a50c502d790d51fd58e68346dc1505.textproto b/explorer/fuzzing/fuzzer_corpus/035c3272740456e2748925f3ba854ccacadd029e.textproto similarity index 96% rename from explorer/fuzzing/fuzzer_corpus/d191fc4462a50c502d790d51fd58e68346dc1505.textproto rename to explorer/fuzzing/fuzzer_corpus/035c3272740456e2748925f3ba854ccacadd029e.textproto index 567697075a2f..86e252f3e523 100644 --- a/explorer/fuzzing/fuzzer_corpus/d191fc4462a50c502d790d51fd58e68346dc1505.textproto +++ b/explorer/fuzzing/fuzzer_corpus/035c3272740456e2748925f3ba854ccacadd029e.textproto @@ -29,11 +29,9 @@ compilation_unit { expression { function_type { parameter { - tuple_literal { - fields { - identifier { - name: "T" - } + fields { + identifier { + name: "T" } } } diff --git a/explorer/fuzzing/fuzzer_corpus/4ac057f4d857b6644a3de54266d932940ebf106a.textproto b/explorer/fuzzing/fuzzer_corpus/3045a5c32cd76b94b2ef6664be2a640b92cf68fb.textproto similarity index 98% rename from explorer/fuzzing/fuzzer_corpus/4ac057f4d857b6644a3de54266d932940ebf106a.textproto rename to explorer/fuzzing/fuzzer_corpus/3045a5c32cd76b94b2ef6664be2a640b92cf68fb.textproto index 46b7e3ecfe26..4c1ffb58a03e 100644 --- a/explorer/fuzzing/fuzzer_corpus/4ac057f4d857b6644a3de54266d932940ebf106a.textproto +++ b/explorer/fuzzing/fuzzer_corpus/3045a5c32cd76b94b2ef6664be2a640b92cf68fb.textproto @@ -422,11 +422,9 @@ compilation_unit { expression { function_type { parameter { - tuple_literal { - fields { - identifier { - name: "T" - } + fields { + identifier { + name: "T" } } } @@ -463,10 +461,8 @@ compilation_unit { expression { function_type { parameter { - tuple_literal { - fields { - int_type_literal { - } + fields { + int_type_literal { } } } diff --git a/explorer/fuzzing/fuzzer_corpus/09e83bb511e0d695ff3608a746040ae7c69cc984.textproto b/explorer/fuzzing/fuzzer_corpus/cc5dd89a2ca0db94774b36ee1a9eb31156e6b6af.textproto similarity index 97% rename from explorer/fuzzing/fuzzer_corpus/09e83bb511e0d695ff3608a746040ae7c69cc984.textproto rename to explorer/fuzzing/fuzzer_corpus/cc5dd89a2ca0db94774b36ee1a9eb31156e6b6af.textproto index 7b200da2ef2b..f5f885729c0f 100644 --- a/explorer/fuzzing/fuzzer_corpus/09e83bb511e0d695ff3608a746040ae7c69cc984.textproto +++ b/explorer/fuzzing/fuzzer_corpus/cc5dd89a2ca0db94774b36ee1a9eb31156e6b6af.textproto @@ -22,11 +22,9 @@ compilation_unit { expression { function_type { parameter { - tuple_literal { - fields { - identifier { - name: "T" - } + fields { + identifier { + name: "T" } } } diff --git a/explorer/fuzzing/fuzzer_util_test.cpp b/explorer/fuzzing/fuzzer_util_test.cpp index 8437f0e23466..2ed36dea83bf 100644 --- a/explorer/fuzzing/fuzzer_util_test.cpp +++ b/explorer/fuzzing/fuzzer_util_test.cpp @@ -29,7 +29,8 @@ TEST(FuzzerUtilTest, RunFuzzerOnCorpus) { contents << file.rdbuf(); Fuzzing::Carbon carbon_proto; ASSERT_TRUE(google::protobuf::TextFormat::ParseFromString(contents.str(), - &carbon_proto)); + &carbon_proto)) + << " couldn't parse text proto in " << f; ParseAndExecute(carbon_proto.compilation_unit()); ++file_count; }