From: Pierre-Emmanuel Patry Date: Tue, 10 Oct 2023 08:04:57 +0000 (+0200) Subject: gccrs: Fix path expr segment parsing with generic path X-Git-Tag: basepoints/gcc-15~2095 X-Git-Url: http://git.ipfire.org/?a=commitdiff_plain;h=061c5d2e24831e520c2deaa383c7ba2041e89146;p=thirdparty%2Fgcc.git gccrs: Fix path expr segment parsing with generic path When a token was identified as bit left shift it slipped through the parser and resulted in an error. gcc/rust/ChangeLog: * parse/rust-parse-impl.h (Parser::parse_path_expr_segment): Accept left shift tokens in order to let generic parsing function split the token. 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 8c04a1af1758..dde3d63201e2 100644 --- a/gcc/rust/parse/rust-parse-impl.h +++ b/gcc/rust/parse/rust-parse-impl.h @@ -6808,11 +6808,13 @@ Parser::parse_path_expr_segment () /* use lookahead to determine if they actually exist (don't want to * accidently parse over next ident segment) */ if (lexer.peek_token ()->get_id () == SCOPE_RESOLUTION - && lexer.peek_token (1)->get_id () == LEFT_ANGLE) + && (lexer.peek_token (1)->get_id () == LEFT_ANGLE + || lexer.peek_token (1)->get_id () == LEFT_SHIFT)) { // skip scope resolution lexer.skip_token (); + // Let parse_path_generic_args split "<<" tokens AST::GenericArgs generic_args = parse_path_generic_args (); return AST::PathExprSegment (std::move (ident), locus,