]> git.ipfire.org Git - thirdparty/gcc.git/commitdiff
gccrs: collector: Fix method self parameter
authorPierre-Emmanuel Patry <pierre-emmanuel.patry@embecosm.com>
Wed, 28 Jun 2023 09:30:57 +0000 (11:30 +0200)
committerArthur Cohen <arthur.cohen@embecosm.com>
Tue, 16 Jan 2024 17:49:32 +0000 (18:49 +0100)
Fix visitor for self parameter in methods.

gcc/rust/ChangeLog:

* ast/rust-ast-collector.cc (TokenCollector::visit): Fix self
param output.

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

index 7bf827e7bb75cbff4fb56b6d53cbd76be6d0bc7c..04c0397a8b7676fb026502f9580dc233aa3490c1 100644 (file)
@@ -1600,7 +1600,7 @@ TokenCollector::visit (Method &method)
   push (Rust::Token::make_identifier (Location (), std::move (method_name)));
   push (Rust::Token::make (LEFT_PAREN, Location ()));
 
-  push (Rust::Token::make (SELF, Location ()));
+  visit (method.get_self_param ());
   if (!method.get_function_params ().empty ())
     {
       push (Rust::Token::make (COMMA, Location ()));
@@ -2028,20 +2028,21 @@ TokenCollector::visit (SelfParam &param)
 {
   if (param.get_has_ref ())
     {
-      push (Rust::Token::make (AMP, param.get_locus ()));
+      push (Rust::Token::make (AMP, Location ()));
       if (param.has_lifetime ())
        {
          auto lifetime = param.get_lifetime ();
          visit (lifetime);
        }
+      if (param.get_is_mut ())
+       push (Rust::Token::make (MUT, Location ()));
     }
-
-  if (param.get_is_mut ())
+  push (Rust::Token::make (SELF, Location ()));
+  if (param.has_type ())
     {
-      push (Rust::Token::make (MUT, Location ()));
+      push (Rust::Token::make (COLON, Location ()));
+      visit (param.get_type ());
     }
-
-  push (Rust::Token::make (SELF, Location ()));
 }
 
 void