]> git.ipfire.org Git - thirdparty/gcc.git/commitdiff
gccrs: ast: Fix StructExprStruct tokenstream
authorPierre-Emmanuel Patry <pierre-emmanuel.patry@embecosm.com>
Wed, 5 Apr 2023 11:45:36 +0000 (13:45 +0200)
committerArthur Cohen <arthur.cohen@embecosm.com>
Tue, 16 Jan 2024 17:28:47 +0000 (18:28 +0100)
StructExprStructFields inherit from StructExprStruct and shall output
the struct name and curly braces.

gcc/rust/ChangeLog:

* ast/rust-ast-tokenstream.cc (TokenStream::visit): Add struct
name and curly braces to output tokenstream.

Signed-off-by: Pierre-Emmanuel Patry <pierre-emmanuel.patry@embecosm.com>
gcc/rust/ast/rust-ast-tokenstream.cc

index 8c54141fd7892c725feea50dd53bb0d51c5eff18..cdfd8701c6de1262984b52f7f6d3d99b72e109bb 100644 (file)
@@ -1111,11 +1111,6 @@ void
 TokenStream::visit (StructExprStruct &expr)
 {
   visit (expr.get_struct_name ());
-  tokens.push_back (Rust::Token::make (LEFT_CURLY, expr.get_locus ()));
-  // FIXME: Reference says it should have fields but node doesn't have them for
-  // now. We need to disambiguate with StructExprUnit and visit fields.
-  gcc_unreachable ();
-  tokens.push_back (Rust::Token::make (RIGHT_CURLY, Location ()));
 }
 
 void
@@ -1161,6 +1156,8 @@ TokenStream::visit (StructBase &base)
 void
 TokenStream::visit (StructExprStructFields &expr)
 {
+  visit (expr.get_struct_name ());
+  tokens.push_back (Rust::Token::make (LEFT_CURLY, expr.get_locus ()));
   visit_items_joined_by_separator (expr.get_fields (), COMMA);
   if (expr.has_struct_base ())
     {
@@ -1171,6 +1168,7 @@ TokenStream::visit (StructExprStructFields &expr)
     {
       trailing_comma ();
     }
+  tokens.push_back (Rust::Token::make (RIGHT_CURLY, expr.get_locus ()));
 }
 
 void