about summary refs log tree commit diff
diff options
context:
space:
mode:
authorLoïc BRANSTETT <lolo.branstett@numericable.fr>2022-03-03 11:52:09 +0100
committerLoïc BRANSTETT <lolo.branstett@numericable.fr>2022-03-03 11:52:09 +0100
commit516488484ebcf83759d94bc11608971bb6331d5e (patch)
tree67ec51d8ad35863f178abafba39e028746d811ff
parent2f8d1a835b4e7feaf625f74d0d5cb9b84dbc845a (diff)
downloadrust-516488484ebcf83759d94bc11608971bb6331d5e.tar.gz
rust-516488484ebcf83759d94bc11608971bb6331d5e.zip
Fix invalid lint_node_id being put on a removed stmt
-rw-r--r--compiler/rustc_expand/src/expand.rs4
-rw-r--r--src/test/ui/check-cfg/stmt-no-ice.rs10
-rw-r--r--src/test/ui/check-cfg/stmt-no-ice.stderr10
3 files changed, 22 insertions, 2 deletions
diff --git a/compiler/rustc_expand/src/expand.rs b/compiler/rustc_expand/src/expand.rs
index 1b976180509..4af376b983c 100644
--- a/compiler/rustc_expand/src/expand.rs
+++ b/compiler/rustc_expand/src/expand.rs
@@ -1841,7 +1841,7 @@ impl<'a, 'b> MutVisitor for InvocationCollector<'a, 'b> {
         self.flat_map_node(node)
     }
 
-    fn flat_map_stmt(&mut self, mut node: ast::Stmt) -> SmallVec<[ast::Stmt; 1]> {
+    fn flat_map_stmt(&mut self, node: ast::Stmt) -> SmallVec<[ast::Stmt; 1]> {
         // FIXME: invocations in semicolon-less expressions positions are expanded as expressions,
         // changing that requires some compatibility measures.
         if node.is_expr() {
@@ -1863,7 +1863,7 @@ impl<'a, 'b> MutVisitor for InvocationCollector<'a, 'b> {
                     self.cx.current_expansion.is_trailing_mac = false;
                     res
                 }
-                _ => assign_id!(self, &mut node.id, || noop_flat_map_stmt(node, self)),
+                _ => noop_flat_map_stmt(node, self),
             };
         }
 
diff --git a/src/test/ui/check-cfg/stmt-no-ice.rs b/src/test/ui/check-cfg/stmt-no-ice.rs
new file mode 100644
index 00000000000..cf76487ed46
--- /dev/null
+++ b/src/test/ui/check-cfg/stmt-no-ice.rs
@@ -0,0 +1,10 @@
+// This test checks that there is no ICE with this code
+//
+// check-pass
+// compile-flags:--check-cfg=names() -Z unstable-options
+
+fn main() {
+    #[cfg(crossbeam_loom)]
+    //~^ WARNING unexpected `cfg` condition name
+    {}
+}
diff --git a/src/test/ui/check-cfg/stmt-no-ice.stderr b/src/test/ui/check-cfg/stmt-no-ice.stderr
new file mode 100644
index 00000000000..da65b596911
--- /dev/null
+++ b/src/test/ui/check-cfg/stmt-no-ice.stderr
@@ -0,0 +1,10 @@
+warning: unexpected `cfg` condition name
+  --> $DIR/stmt-no-ice.rs:7:11
+   |
+LL |     #[cfg(crossbeam_loom)]
+   |           ^^^^^^^^^^^^^^
+   |
+   = note: `#[warn(unexpected_cfgs)]` on by default
+
+warning: 1 warning emitted
+