]> gcc.gnu.org Git - gcc.git/commitdiff
Parse named variadic parameters
authorPierre-Emmanuel Patry <pierre-emmanuel.patry@embecosm.com>
Mon, 23 Oct 2023 11:41:35 +0000 (13:41 +0200)
committerPhilip Herron <philip.herron@embecosm.com>
Thu, 9 Nov 2023 15:39:45 +0000 (15:39 +0000)
Add ability to parse named variadic parameters in extern c functions.

gcc/rust/ChangeLog:

* parse/rust-parse-impl.h (Parser::parse_named_function_param): Add
new parsing ability.

Signed-off-by: Pierre-Emmanuel Patry <pierre-emmanuel.patry@embecosm.com>
gcc/rust/parse/rust-parse-impl.h

index cbf4140fa064d594cda47c824c0ad10eb3f11c26..f08ab692e98323d72c492bd768e791ccf5cf59a7 100644 (file)
@@ -5970,7 +5970,7 @@ Parser<ManagedTokenSource>::parse_named_function_param ()
   AST::AttrVec outer_attrs = parse_outer_attributes ();
   location_t locus = lexer.peek_token ()->get_locus ();
 
-  if (lexer.peek_token ()->get_id () == ELLIPSIS)
+  if (lexer.peek_token ()->get_id () == ELLIPSIS) // Unnamed variadic
     {
       lexer.skip_token (); // Skip ellipsis
       return AST::NamedFunctionParam (std::move (outer_attrs), locus);
@@ -6002,6 +6002,13 @@ Parser<ManagedTokenSource>::parse_named_function_param ()
       return AST::NamedFunctionParam::create_error ();
     }
 
+  if (lexer.peek_token ()->get_id () == ELLIPSIS) // Named variadic
+    {
+      lexer.skip_token (); // Skip ellipsis
+      return AST::NamedFunctionParam (std::move (name), std::move (outer_attrs),
+                                     locus);
+    }
+
   // parse (required) type
   std::unique_ptr<AST::Type> param_type = parse_type ();
   if (param_type == nullptr)
This page took 0.071885 seconds and 5 git commands to generate.