From f209a01840a365365100c0ff4a31c0bab2ed2693 Mon Sep 17 00:00:00 2001 From: Pierre-Emmanuel Patry Date: Mon, 16 Oct 2023 11:28:34 +0200 Subject: [PATCH] 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 --- gcc/rust/parse/rust-parse-impl.h | 7 +++++-- 1 file changed, 5 insertions(+), 2 deletions(-) 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 -- 2.47.2