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
|
let unused_extern_crates: FxHashMap<LocalDefId, Span> = tcx
|
||||||
.maybe_unused_extern_crates(())
|
.maybe_unused_extern_crates(())
|
||||||
.iter()
|
.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, _)| {
|
.filter(|&&(def_id, _)| {
|
||||||
tcx.extern_mod_stmt_cnum(def_id).map_or(true, |cnum| {
|
tcx.extern_mod_stmt_cnum(def_id).map_or(true, |cnum| {
|
||||||
!tcx.is_compiler_builtins(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