From 3d7b1f0d18a4bdb667c6244b1748136c312cc9cf Mon Sep 17 00:00:00 2001 From: Michael Goulet Date: Wed, 19 Oct 2022 04:55:31 +0000 Subject: Don't erroneously deny semicolons after closure expr within parentheses in a macro --- compiler/rustc_parse/src/parser/expr.rs | 4 ++++ 1 file changed, 4 insertions(+) (limited to 'compiler/rustc_parse/src/parser') diff --git a/compiler/rustc_parse/src/parser/expr.rs b/compiler/rustc_parse/src/parser/expr.rs index afa116ce1bc..5b466cec8e1 100644 --- a/compiler/rustc_parse/src/parser/expr.rs +++ b/compiler/rustc_parse/src/parser/expr.rs @@ -2051,6 +2051,10 @@ impl<'a> Parser<'a> { if self.token.kind == TokenKind::Semi && matches!(self.token_cursor.frame.delim_sp, Some((Delimiter::Parenthesis, _))) + // HACK: This is needed so we can detect whether we're inside a macro, + // where regular assumptions about what tokens can follow other tokens + // don't necessarily apply. + && self.subparser_name.is_none() { // It is likely that the closure body is a block but where the // braces have been removed. We will recover and eat the next -- cgit 1.4.1-3-g733a5