about summary refs log tree commit diff
diff options
context:
space:
mode:
authorJethro Beekman <jethro@fortanix.com>2021-02-03 09:40:59 +0100
committerJethro Beekman <jethro@fortanix.com>2021-02-03 10:05:58 +0100
commit37cb9d30fa457cd56e775175e684a0763bf4a3cb (patch)
treedad80a9bc6d2fe84f24236f0fc6e38018e578ffb
parente6a0f3cdf3801394a53ffa42683385d94b02c772 (diff)
downloadrust-37cb9d30fa457cd56e775175e684a0763bf4a3cb.tar.gz
rust-37cb9d30fa457cd56e775175e684a0763bf4a3cb.zip
Really fix early lints inside an async desugaring
-rw-r--r--compiler/rustc_lint/src/early.rs8
-rw-r--r--src/test/ui/lint/semicolon-in-expressions-from-macros/semicolon-in-expressions-from-macros.rs5
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);
+    };
 }