From 37cb9d30fa457cd56e775175e684a0763bf4a3cb Mon Sep 17 00:00:00 2001 From: Jethro Beekman Date: Wed, 3 Feb 2021 09:40:59 +0100 Subject: [PATCH] Really fix early lints inside an async desugaring --- compiler/rustc_lint/src/early.rs | 8 ++++---- .../semicolon-in-expressions-from-macros.rs | 5 +++++ 2 files changed, 9 insertions(+), 4 deletions(-) diff --git a/compiler/rustc_lint/src/early.rs b/compiler/rustc_lint/src/early.rs index c02465f5979..231edf442eb 100644 --- a/compiler/rustc_lint/src/early.rs +++ b/compiler/rustc_lint/src/early.rs @@ -219,10 +219,10 @@ impl<'a, T: EarlyLintPass> ast_visit::Visitor<'a> for EarlyContextAndPass<'a, T> // Explicitly check for lints associated with 'closure_id', since // it does not have a corresponding AST node - if let ast::ExprKind::Closure(_, asyncness, ..) = e.kind { - if let ast::Async::Yes { closure_id, .. } = asyncness { - self.check_id(closure_id); - } + match e.kind { + ast::ExprKind::Closure(_, ast::Async::Yes { closure_id, .. }, ..) + | ast::ExprKind::Async(_, closure_id, ..) => self.check_id(closure_id), + _ => {} } } diff --git a/src/test/ui/lint/semicolon-in-expressions-from-macros/semicolon-in-expressions-from-macros.rs b/src/test/ui/lint/semicolon-in-expressions-from-macros/semicolon-in-expressions-from-macros.rs index 4f39d088b12..0bbd7dc6c8a 100644 --- a/src/test/ui/lint/semicolon-in-expressions-from-macros/semicolon-in-expressions-from-macros.rs +++ b/src/test/ui/lint/semicolon-in-expressions-from-macros/semicolon-in-expressions-from-macros.rs @@ -33,4 +33,9 @@ fn main() { fn inner() { let _ = foo!(third); } + + #[allow(semicolon_in_expressions_from_macros)] + async { + let _ = foo!(fourth); + }; }