diff options
author | Owen Avery <powerboat9.gamer@gmail.com> | 2023-01-26 22:59:49 -0500 |
---|---|---|
committer | Arthur Cohen <arthur.cohen@embecosm.com> | 2023-04-06 10:47:24 +0200 |
commit | d2a499a9881c7c079d2a722b57c7fcf022a864dd (patch) | |
tree | d11a56d65f831074820f4051435ae859bbe1a181 /gcc | |
parent | 990ae497b8684be7dde7350c5a2292badd518c15 (diff) | |
download | gcc-d2a499a9881c7c079d2a722b57c7fcf022a864dd.zip gcc-d2a499a9881c7c079d2a722b57c7fcf022a864dd.tar.gz gcc-d2a499a9881c7c079d2a722b57c7fcf022a864dd.tar.bz2 |
gccrs: Fix issue with parsing unsafe block expression statements
gcc/rust/ChangeLog:
* parse/rust-parse-impl.h
(Parser::parse_stmt): Handle unsafe expression statements.
gcc/testsuite/ChangeLog:
* rust/compile/issue-1422.rs: New test.
Signed-off-by: Owen Avery <powerboat9.gamer@gmail.com>
Diffstat (limited to 'gcc')
-rw-r--r-- | gcc/rust/parse/rust-parse-impl.h | 10 | ||||
-rw-r--r-- | gcc/testsuite/rust/compile/issue-1422.rs | 7 |
2 files changed, 16 insertions, 1 deletions
diff --git a/gcc/rust/parse/rust-parse-impl.h b/gcc/rust/parse/rust-parse-impl.h index 1e5b2dc..db32803d 100644 --- a/gcc/rust/parse/rust-parse-impl.h +++ b/gcc/rust/parse/rust-parse-impl.h @@ -6131,7 +6131,15 @@ Parser<ManagedTokenSource>::parse_stmt (ParseRestrictions restrictions) /* if any of these (should be all possible VisItem prefixes), parse a * VisItem can't parse item because would require reparsing outer * attributes */ - return parse_vis_item (std::move (outer_attrs)); + // may also be unsafe block + if (lexer.peek_token (1)->get_id () == LEFT_CURLY) + { + return parse_expr_stmt (std::move (outer_attrs), restrictions); + } + else + { + return parse_vis_item (std::move (outer_attrs)); + } break; case SUPER: case SELF: diff --git a/gcc/testsuite/rust/compile/issue-1422.rs b/gcc/testsuite/rust/compile/issue-1422.rs new file mode 100644 index 0000000..b178cda --- /dev/null +++ b/gcc/testsuite/rust/compile/issue-1422.rs @@ -0,0 +1,7 @@ +macro_rules! test { + () => { unsafe {} }; +} + +fn main() { + test!(); +} |