about summary refs log tree commit diff
diff options
context:
space:
mode:
-rw-r--r--compiler/rustc_lint/src/early.rs16
-rw-r--r--src/test/ui/lint/semicolon-in-expressions-from-macros/semicolon-in-expressions-from-macros.rs6
-rw-r--r--src/test/ui/lint/semicolon-in-expressions-from-macros/semicolon-in-expressions-from-macros.stderr6
3 files changed, 25 insertions, 3 deletions
diff --git a/compiler/rustc_lint/src/early.rs b/compiler/rustc_lint/src/early.rs
index e36af234936..c02465f5979 100644
--- a/compiler/rustc_lint/src/early.rs
+++ b/compiler/rustc_lint/src/early.rs
@@ -143,6 +143,14 @@ impl<'a, T: EarlyLintPass> ast_visit::Visitor<'a> for EarlyContextAndPass<'a, T>
         run_early_pass!(self, check_fn, fk, span, id);
         self.check_id(id);
         ast_visit::walk_fn(self, fk, span);
+
+        // Explicitly check for lints associated with 'closure_id', since
+        // it does not have a corresponding AST node
+        if let ast_visit::FnKind::Fn(_, _, sig, _, _) = fk {
+            if let ast::Async::Yes { closure_id, .. } = sig.header.asyncness {
+                self.check_id(closure_id);
+            }
+        }
         run_early_pass!(self, check_fn_post, fk, span, id);
     }
 
@@ -208,6 +216,14 @@ impl<'a, T: EarlyLintPass> ast_visit::Visitor<'a> for EarlyContextAndPass<'a, T>
 
     fn visit_expr_post(&mut self, e: &'a ast::Expr) {
         run_early_pass!(self, check_expr_post, e);
+
+        // 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);
+            }
+        }
     }
 
     fn visit_generic_arg(&mut self, arg: &'a ast::GenericArg) {
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 605d5a0309c..4f39d088b12 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
@@ -1,4 +1,5 @@
 // check-pass
+// edition:2018
 #![warn(semicolon_in_expressions_from_macros)]
 
 #[allow(dead_code)]
@@ -11,6 +12,11 @@ macro_rules! foo {
     }
 }
 
+#[allow(semicolon_in_expressions_from_macros)]
+async fn bar() {
+    foo!(first);
+}
+
 fn main() {
     // This `allow` doesn't work
     #[allow(semicolon_in_expressions_from_macros)]
diff --git a/src/test/ui/lint/semicolon-in-expressions-from-macros/semicolon-in-expressions-from-macros.stderr b/src/test/ui/lint/semicolon-in-expressions-from-macros/semicolon-in-expressions-from-macros.stderr
index 6f9f879661a..bfdce732e02 100644
--- a/src/test/ui/lint/semicolon-in-expressions-from-macros/semicolon-in-expressions-from-macros.stderr
+++ b/src/test/ui/lint/semicolon-in-expressions-from-macros/semicolon-in-expressions-from-macros.stderr
@@ -1,5 +1,5 @@
 warning: trailing semicolon in macro used in expression position
-  --> $DIR/semicolon-in-expressions-from-macros.rs:7:13
+  --> $DIR/semicolon-in-expressions-from-macros.rs:8:13
    |
 LL |         true;
    |             ^
@@ -8,7 +8,7 @@ LL |         foo!(first)
    |         ----------- in this macro invocation
    |
 note: the lint level is defined here
-  --> $DIR/semicolon-in-expressions-from-macros.rs:2:9
+  --> $DIR/semicolon-in-expressions-from-macros.rs:3:9
    |
 LL | #![warn(semicolon_in_expressions_from_macros)]
    |         ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
@@ -17,7 +17,7 @@ LL | #![warn(semicolon_in_expressions_from_macros)]
    = note: this warning originates in a macro (in Nightly builds, run with -Z macro-backtrace for more info)
 
 warning: trailing semicolon in macro used in expression position
-  --> $DIR/semicolon-in-expressions-from-macros.rs:7:13
+  --> $DIR/semicolon-in-expressions-from-macros.rs:8:13
    |
 LL |         true;
    |             ^