diff options
| author | Matthias Krüger <matthias.krueger@famsik.de> | 2022-03-03 20:01:48 +0100 |
|---|---|---|
| committer | GitHub <noreply@github.com> | 2022-03-03 20:01:48 +0100 |
| commit | 26cbf9158d3c69817fdc9b94949f5d4aa699322b (patch) | |
| tree | 6534c8c3f383a771877ea29bd28106219a03ebe5 | |
| parent | 40c146cebd8b989973f56616ccd62c625ccf738e (diff) | |
| parent | 516488484ebcf83759d94bc11608971bb6331d5e (diff) | |
| download | rust-26cbf9158d3c69817fdc9b94949f5d4aa699322b.tar.gz rust-26cbf9158d3c69817fdc9b94949f5d4aa699322b.zip | |
Rollup merge of #94554 - Urgau:stmt-node-id-ice, r=petrochenkov
Fix invalid lint_node_id being put on a removed stmt This pull-request remove a invalid `assign_id!` being put on an stmt node. The problem is that this node is being removed away by a cfg making it unreachable when triggering a buffered lint. The comment in the other match arm already tell to not assign a id because it could have a `#[cfg()]` so this is just respecting the comment. Fixes https://github.com/rust-lang/rust/issues/94523 r? ```````@petrochenkov```````
| -rw-r--r-- | compiler/rustc_expand/src/expand.rs | 4 | ||||
| -rw-r--r-- | src/test/ui/check-cfg/stmt-no-ice.rs | 10 | ||||
| -rw-r--r-- | src/test/ui/check-cfg/stmt-no-ice.stderr | 10 |
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 + |
