Public unit types where not parsed correctly due to visibility specifiers
within parenthesis. Fixes #2648.
gcc/rust/ChangeLog:
* parse/rust-parse-impl.h (Parser::parse_visibility): Relax constraints
over public visibility return condition in order to accept pub unit
types.
Signed-off-by: Pierre-Emmanuel Patry <pierre-emmanuel.patry@embecosm.com>
auto vis_loc = lexer.peek_token ()->get_locus ();
lexer.skip_token ();
- // create simple pub visibility if no parentheses
- if (lexer.peek_token ()->get_id () != LEFT_PAREN)
+ // create simple pub visibility if
+ // - found no parentheses
+ // - found unit type `()`
+ if (lexer.peek_token ()->get_id () != LEFT_PAREN
+ || lexer.peek_token (1)->get_id () == RIGHT_PAREN)
{
return AST::Visibility::create_public (vis_loc);
// or whatever