Skip to content

Commit

Permalink
Rollup merge of rust-lang#94554 - Urgau:stmt-node-id-ice, r=petrochenkov
Browse files Browse the repository at this point in the history
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 rust-lang#94523
r? `````@petrochenkov`````
  • Loading branch information
Dylan-DPC authored Mar 3, 2022
2 parents a63b186 + 5164884 commit 31eed28
Show file tree
Hide file tree
Showing 3 changed files with 22 additions and 2 deletions.
4 changes: 2 additions & 2 deletions compiler/rustc_expand/src/expand.rs
Original file line number Diff line number Diff line change
Expand Up @@ -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() {
Expand All @@ -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),
};
}

Expand Down
10 changes: 10 additions & 0 deletions src/test/ui/check-cfg/stmt-no-ice.rs
Original file line number Diff line number Diff line change
@@ -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
{}
}
10 changes: 10 additions & 0 deletions src/test/ui/check-cfg/stmt-no-ice.stderr
Original file line number Diff line number Diff line change
@@ -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

0 comments on commit 31eed28

Please sign in to comment.