diff options
Diffstat (limited to 'gcc/rust/parse/rust-parse-impl.h')
-rw-r--r-- | gcc/rust/parse/rust-parse-impl.h | 10 |
1 files changed, 6 insertions, 4 deletions
diff --git a/gcc/rust/parse/rust-parse-impl.h b/gcc/rust/parse/rust-parse-impl.h index f1d376a..aabb15c 100644 --- a/gcc/rust/parse/rust-parse-impl.h +++ b/gcc/rust/parse/rust-parse-impl.h @@ -7347,6 +7347,8 @@ Parser<ManagedTokenSource>::parse_block_expr (AST::AttrVec outer_attrs, return nullptr; } + t = lexer.peek_token (); + if (expr_or_stmt.stmt != nullptr) { stmts.push_back (std::move (expr_or_stmt.stmt)); @@ -7357,10 +7359,10 @@ Parser<ManagedTokenSource>::parse_block_expr (AST::AttrVec outer_attrs, expr = std::move (expr_or_stmt.expr); break; } - - t = lexer.peek_token (); } + Location end_locus = t->get_locus (); + if (!skip_token (RIGHT_CURLY)) { Error error (t->get_locus (), @@ -7378,8 +7380,8 @@ Parser<ManagedTokenSource>::parse_block_expr (AST::AttrVec outer_attrs, return std::unique_ptr<AST::BlockExpr> ( new AST::BlockExpr (std::move (stmts), std::move (expr), - std::move (inner_attrs), std::move (outer_attrs), - locus)); + std::move (inner_attrs), std::move (outer_attrs), locus, + end_locus)); } /* Parses a "grouped" expression (expression in parentheses), used to control |