From: Pierre-Emmanuel Patry Date: Mon, 16 Oct 2023 09:28:34 +0000 (+0200) Subject: gccrs: Fix pub unit type parsing X-Git-Tag: basepoints/gcc-15~2100 X-Git-Url: http://git.ipfire.org/?a=commitdiff_plain;h=f209a01840a365365100c0ff4a31c0bab2ed2693;p=thirdparty%2Fgcc.git 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 --- diff --git a/gcc/rust/parse/rust-parse-impl.h b/gcc/rust/parse/rust-parse-impl.h index 07f95a61ec29..345ef0eeb6ee 100644 --- a/gcc/rust/parse/rust-parse-impl.h +++ b/gcc/rust/parse/rust-parse-impl.h @@ -2296,8 +2296,11 @@ Parser::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