aboutsummaryrefslogtreecommitdiff
path: root/gcc
diff options
context:
space:
mode:
authorPierre-Emmanuel Patry <pierre-emmanuel.patry@embecosm.com>2023-10-16 11:28:34 +0200
committerArthur Cohen <arthur.cohen@embecosm.com>2024-01-16 19:09:12 +0100
commitf209a01840a365365100c0ff4a31c0bab2ed2693 (patch)
tree74f4ccd96ae44a84ebf1fae9a7d03ec6bd0ad5f8 /gcc
parentf97a9841dc65ddaa18a08f37d0cd58537c3bfb94 (diff)
downloadgcc-f209a01840a365365100c0ff4a31c0bab2ed2693.zip
gcc-f209a01840a365365100c0ff4a31c0bab2ed2693.tar.gz
gcc-f209a01840a365365100c0ff4a31c0bab2ed2693.tar.bz2
gccrs: Fix pub unit type parsing
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>
Diffstat (limited to 'gcc')
-rw-r--r--gcc/rust/parse/rust-parse-impl.h7
1 files changed, 5 insertions, 2 deletions
diff --git a/gcc/rust/parse/rust-parse-impl.h b/gcc/rust/parse/rust-parse-impl.h
index 07f95a6..345ef0e 100644
--- a/gcc/rust/parse/rust-parse-impl.h
+++ b/gcc/rust/parse/rust-parse-impl.h
@@ -2296,8 +2296,11 @@ Parser<ManagedTokenSource>::parse_visibility ()
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