aboutsummaryrefslogtreecommitdiff
path: root/gcc
diff options
context:
space:
mode:
authorPierre-Emmanuel Patry <pierre-emmanuel.patry@embecosm.com>2023-10-10 10:04:57 +0200
committerCohenArthur <arthur.cohen@embecosm.com>2023-10-17 11:43:13 +0000
commit0ad109695216a5655bf890d8565b68890017db7a (patch)
tree4f3dc376154327b834b5dd354ba9bea5b007dd18 /gcc
parentc82bbb09b0206f962bfdea5e12d69a71467e5371 (diff)
downloadgcc-0ad109695216a5655bf890d8565b68890017db7a.zip
gcc-0ad109695216a5655bf890d8565b68890017db7a.tar.gz
gcc-0ad109695216a5655bf890d8565b68890017db7a.tar.bz2
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 <pierre-emmanuel.patry@embecosm.com>
Diffstat (limited to 'gcc')
-rw-r--r--gcc/rust/parse/rust-parse-impl.h4
1 files changed, 3 insertions, 1 deletions
diff --git a/gcc/rust/parse/rust-parse-impl.h b/gcc/rust/parse/rust-parse-impl.h
index 392d9ac..8c2bf00 100644
--- a/gcc/rust/parse/rust-parse-impl.h
+++ b/gcc/rust/parse/rust-parse-impl.h
@@ -6808,11 +6808,13 @@ Parser<ManagedTokenSource>::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,