mirror of
https://github.com/carbon-language/carbon-lang.git
synced 2026-09-27 22:02:33 +01:00
Carbon fuzzing 2/3: added logic for converting carbon.proto to a Carbon source string. (#1155)
* Carbon fuzzing 2/3: added logic for converting carbon.proto to a Carbon source string. * adjusted to proto changes in proto PR * addressed todos * removed unnecessary has_xx() calls * minor fix * sync from part 1 * Update executable_semantics/fuzzing/proto_to_carbon_test.cpp Co-authored-by: Geoff Romer <gromer@google.com> * review comments * Update common/fuzzing/proto_to_carbon.cpp Co-authored-by: Jon Meow <jperkins@google.com> * Update common/fuzzing/proto_to_carbon.cpp Co-authored-by: Jon Meow <jperkins@google.com> * code review * code review * Update common/fuzzing/proto_to_carbon.cpp Co-authored-by: Jon Meow <jperkins@google.com> * code review * merged + added support for type_params in class * use <> includes for protobuf * review comments * code review comments Co-authored-by: Geoff Romer <gromer@google.com> Co-authored-by: Jon Meow <jperkins@google.com>
This commit is contained in:
committed by
GitHub
co-authored by
Geoff Romer
Jon Meow
parent
a89be4ffea
commit
f8ded337fb
@@ -380,7 +380,14 @@ static auto StatementToProto(const Statement& statement) -> Fuzzing::Statement {
|
||||
ExpressionToProto(match.expression());
|
||||
for (const Match::Clause& clause : match.clauses()) {
|
||||
auto* clause_proto = match_proto->add_clauses();
|
||||
*clause_proto->mutable_pattern() = PatternToProto(clause.pattern());
|
||||
const bool is_default_clause =
|
||||
clause.pattern().kind() == PatternKind::BindingPattern &&
|
||||
cast<BindingPattern>(clause.pattern()).name() == AnonymousName;
|
||||
if (is_default_clause) {
|
||||
clause_proto->set_is_default(true);
|
||||
} else {
|
||||
*clause_proto->mutable_pattern() = PatternToProto(clause.pattern());
|
||||
}
|
||||
*clause_proto->mutable_statement() =
|
||||
StatementToProto(clause.statement());
|
||||
}
|
||||
@@ -466,6 +473,10 @@ static auto DeclarationToProto(const Declaration& declaration)
|
||||
const auto& class_decl = cast<ClassDeclaration>(declaration);
|
||||
auto* class_proto = declaration_proto.mutable_class_declaration();
|
||||
class_proto->set_name(class_decl.name());
|
||||
if (class_decl.type_params().has_value()) {
|
||||
*class_proto->mutable_type_params() =
|
||||
TuplePatternToProto(**class_decl.type_params());
|
||||
}
|
||||
for (Nonnull<const Declaration*> member : class_decl.members()) {
|
||||
*class_proto->add_members() = DeclarationToProto(*member);
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user