Rollup merge of #105200 - cjgillot:issue-104562, r=compiler-errors
Remove useless filter in unused extern crate check. Fixes https://github.com/rust-lang/rust/issues/104562
This commit is contained in:
commit
b1e680650e
@ -56,25 +56,6 @@ fn unused_crates_lint(tcx: TyCtxt<'_>) {
|
||||
let unused_extern_crates: FxHashMap<LocalDefId, Span> = tcx
|
||||
.maybe_unused_extern_crates(())
|
||||
.iter()
|
||||
.filter(|&&(def_id, _)| {
|
||||
// The `def_id` here actually was calculated during resolution (at least
|
||||
// at the time of this writing) and is being shipped to us via a side
|
||||
// channel of the tcx. There may have been extra expansion phases,
|
||||
// however, which ended up removing the `def_id` *after* expansion.
|
||||
//
|
||||
// As a result we need to verify that `def_id` is indeed still valid for
|
||||
// our AST and actually present in the HIR map. If it's not there then
|
||||
// there's safely nothing to warn about, and otherwise we carry on with
|
||||
// our execution.
|
||||
//
|
||||
// Note that if we carry through to the `extern_mod_stmt_cnum` query
|
||||
// below it'll cause a panic because `def_id` is actually bogus at this
|
||||
// point in time otherwise.
|
||||
if tcx.hir().find(tcx.hir().local_def_id_to_hir_id(def_id)).is_none() {
|
||||
return false;
|
||||
}
|
||||
true
|
||||
})
|
||||
.filter(|&&(def_id, _)| {
|
||||
tcx.extern_mod_stmt_cnum(def_id).map_or(true, |cnum| {
|
||||
!tcx.is_compiler_builtins(cnum)
|
||||
|
6
src/test/ui/attributes/unused-item-in-attr.rs
Normal file
6
src/test/ui/attributes/unused-item-in-attr.rs
Normal file
@ -0,0 +1,6 @@
|
||||
#[w = { extern crate alloc; }]
|
||||
//~^ ERROR unexpected expression: `{
|
||||
//~| ERROR cannot find attribute `w` in this scope
|
||||
fn f() {}
|
||||
|
||||
fn main() {}
|
16
src/test/ui/attributes/unused-item-in-attr.stderr
Normal file
16
src/test/ui/attributes/unused-item-in-attr.stderr
Normal file
@ -0,0 +1,16 @@
|
||||
error: unexpected expression: `{
|
||||
extern crate alloc;
|
||||
}`
|
||||
--> $DIR/unused-item-in-attr.rs:1:7
|
||||
|
|
||||
LL | #[w = { extern crate alloc; }]
|
||||
| ^^^^^^^^^^^^^^^^^^^^^^^
|
||||
|
||||
error: cannot find attribute `w` in this scope
|
||||
--> $DIR/unused-item-in-attr.rs:1:3
|
||||
|
|
||||
LL | #[w = { extern crate alloc; }]
|
||||
| ^
|
||||
|
||||
error: aborting due to 2 previous errors
|
||||
|
Loading…
Reference in New Issue
Block a user