diff options
author | Pierre-Emmanuel Patry <pierre-emmanuel.patry@embecosm.com> | 2023-10-10 10:04:57 +0200 |
---|---|---|
committer | CohenArthur <arthur.cohen@embecosm.com> | 2023-10-17 11:43:13 +0000 |
commit | 0ad109695216a5655bf890d8565b68890017db7a (patch) | |
tree | 4f3dc376154327b834b5dd354ba9bea5b007dd18 /gcc | |
parent | c82bbb09b0206f962bfdea5e12d69a71467e5371 (diff) | |
download | gcc-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.h | 4 |
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, |