diff options
author | Arthur Cohen <arthur.cohen@embecosm.com> | 2023-02-02 15:32:17 +0100 |
---|---|---|
committer | Arthur Cohen <arthur.cohen@embecosm.com> | 2023-02-03 11:50:00 +0100 |
commit | 38bad2bf21ef0649b3e89bcccfe7e8f7c366de68 (patch) | |
tree | fb72a0b4c247dd653648b1a32ba146d8970ba781 /gcc | |
parent | 776c4247de465dd93438a738fff48d5b2076ec11 (diff) | |
download | gcc-38bad2bf21ef0649b3e89bcccfe7e8f7c366de68.zip gcc-38bad2bf21ef0649b3e89bcccfe7e8f7c366de68.tar.gz gcc-38bad2bf21ef0649b3e89bcccfe7e8f7c366de68.tar.bz2 |
parser: Fix parsing of closure param list
gcc/rust/ChangeLog:
* parse/rust-parse-impl.h (Parser::parse_closure_expr): Advance tokens
properly when parsing closure param list.
gcc/testsuite/ChangeLog:
* rust/compile/closure_move_expr.rs: New test.
Diffstat (limited to 'gcc')
-rw-r--r-- | gcc/rust/parse/rust-parse-impl.h | 2 | ||||
-rw-r--r-- | gcc/testsuite/rust/compile/closure_move_expr.rs | 9 |
2 files changed, 11 insertions, 0 deletions
diff --git a/gcc/rust/parse/rust-parse-impl.h b/gcc/rust/parse/rust-parse-impl.h index f60d34f..a3fc9f3 100644 --- a/gcc/rust/parse/rust-parse-impl.h +++ b/gcc/rust/parse/rust-parse-impl.h @@ -7590,6 +7590,7 @@ Parser<ManagedTokenSource>::parse_closure_expr (AST::AttrVec outer_attrs) case PIPE: // actually may have parameters lexer.skip_token (); + t = lexer.peek_token (); while (t->get_id () != PIPE) { @@ -7606,6 +7607,7 @@ Parser<ManagedTokenSource>::parse_closure_expr (AST::AttrVec outer_attrs) if (lexer.peek_token ()->get_id () != COMMA) { + lexer.skip_token (); // not an error but means param list is done break; } diff --git a/gcc/testsuite/rust/compile/closure_move_expr.rs b/gcc/testsuite/rust/compile/closure_move_expr.rs new file mode 100644 index 0000000..780c316 --- /dev/null +++ b/gcc/testsuite/rust/compile/closure_move_expr.rs @@ -0,0 +1,9 @@ +// { dg-additional-options "-fsyntax-only" } + +fn foo() { + move |l: u32, r: u32| l + r +} + +fn foo2() { + |l: u32, r: u32| l + r +} |