gccrs: Allow const and async specifiers in functions
We need to account for const specifiers in async parsing as const can be used in the syntax before the async keyword. gcc/rust/ChangeLog: * parse/rust-parse-impl.h (Parser::parse_vis_item): Allow parsing async items in const. (Parser::parse_async_item): Account for const offset during async lookahead. Signed-off-by: Pierre-Emmanuel Patry <pierre-emmanuel.patry@embecosm.com>
This commit is contained in:
parent
12844c82de
commit
68990dbead
1 changed files with 6 additions and 2 deletions
|
@ -1383,6 +1383,8 @@ Parser<ManagedTokenSource>::parse_vis_item (AST::AttrVec outer_attrs)
|
|||
return parse_const_item (std::move (vis), std::move (outer_attrs));
|
||||
case UNSAFE:
|
||||
case EXTERN_KW:
|
||||
case ASYNC:
|
||||
return parse_async_item (std::move (vis), std::move (outer_attrs));
|
||||
case FN_KW:
|
||||
return parse_function (std::move (vis), std::move (outer_attrs));
|
||||
default:
|
||||
|
@ -1445,7 +1447,9 @@ std::unique_ptr<AST::Function>
|
|||
Parser<ManagedTokenSource>::parse_async_item (AST::Visibility vis,
|
||||
AST::AttrVec outer_attrs)
|
||||
{
|
||||
const_TokenPtr t = lexer.peek_token ();
|
||||
auto offset = (lexer.peek_token ()->get_id () == CONST) ? 1 : 0;
|
||||
const_TokenPtr t = lexer.peek_token (offset);
|
||||
|
||||
if (Session::get_instance ().options.get_edition ()
|
||||
== CompileOptions::Edition::E2015)
|
||||
{
|
||||
|
@ -1456,7 +1460,7 @@ Parser<ManagedTokenSource>::parse_async_item (AST::Visibility vis,
|
|||
"to use %<async fn%>, switch to Rust 2018 or later"));
|
||||
}
|
||||
|
||||
t = lexer.peek_token (1);
|
||||
t = lexer.peek_token (offset + 1);
|
||||
|
||||
switch (t->get_id ())
|
||||
{
|
||||
|
|
Loading…
Add table
Reference in a new issue