aboutsummaryrefslogtreecommitdiff
path: root/gcc/rust
diff options
context:
space:
mode:
authorOwen Avery <powerboat9.gamer@gmail.com>2023-01-26 22:59:49 -0500
committerCohenArthur <arthur.cohen@embecosm.com>2023-02-20 09:29:04 +0000
commit3448f0fa239430156d7ebbcab6cf1abb6095b242 (patch)
tree218bf41cc9657e9b36a199ddd9d6725256058d61 /gcc/rust
parent0f736eb625903c15415fa3835b88c76219e4ce78 (diff)
downloadgcc-3448f0fa239430156d7ebbcab6cf1abb6095b242.zip
gcc-3448f0fa239430156d7ebbcab6cf1abb6095b242.tar.gz
gcc-3448f0fa239430156d7ebbcab6cf1abb6095b242.tar.bz2
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/rust')
-rw-r--r--gcc/rust/parse/rust-parse-impl.h10
1 files changed, 9 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: