Rollup merge of #57557 - petrochenkov:ecused, r=varkor
resolve: Mark extern crate items as used in more cases Fixes https://github.com/rust-lang/rust/issues/57421
This commit is contained in:
commit
c04d6fa084
3 changed files with 69 additions and 0 deletions
|
@ -5112,6 +5112,9 @@ impl<'a> Resolver<'a> {
|
||||||
}
|
}
|
||||||
self.extern_prelude.get(&ident.modern()).cloned().and_then(|entry| {
|
self.extern_prelude.get(&ident.modern()).cloned().and_then(|entry| {
|
||||||
if let Some(binding) = entry.extern_crate_item {
|
if let Some(binding) = entry.extern_crate_item {
|
||||||
|
if !speculative && entry.introduced_by_item {
|
||||||
|
self.record_use(ident, TypeNS, binding, false);
|
||||||
|
}
|
||||||
Some(binding)
|
Some(binding)
|
||||||
} else {
|
} else {
|
||||||
let crate_id = if !speculative {
|
let crate_id = if !speculative {
|
||||||
|
|
28
src/test/ui/imports/extern-crate-used.rs
Normal file
28
src/test/ui/imports/extern-crate-used.rs
Normal file
|
@ -0,0 +1,28 @@
|
||||||
|
// Extern crate items are marked as used if they are used
|
||||||
|
// through extern prelude entries introduced by them.
|
||||||
|
|
||||||
|
// edition:2018
|
||||||
|
|
||||||
|
#![deny(unused_extern_crates)]
|
||||||
|
|
||||||
|
extern crate core as iso1; //~ ERROR `extern crate` is not idiomatic in the new edition
|
||||||
|
extern crate core as iso2; //~ ERROR `extern crate` is not idiomatic in the new edition
|
||||||
|
extern crate core as iso3; //~ ERROR `extern crate` is not idiomatic in the new edition
|
||||||
|
extern crate core as iso4; //~ ERROR `extern crate` is not idiomatic in the new edition
|
||||||
|
|
||||||
|
// Doesn't introduce its extern prelude entry, so it's still considered unused.
|
||||||
|
extern crate core; //~ ERROR unused extern crate
|
||||||
|
|
||||||
|
mod m {
|
||||||
|
use iso1::any as are_you_okay1;
|
||||||
|
use ::iso2::any as are_you_okay2;
|
||||||
|
type AreYouOkay1 = iso3::any::Any;
|
||||||
|
type AreYouOkay2 = ::iso4::any::Any;
|
||||||
|
|
||||||
|
use core::any as are_you_okay3;
|
||||||
|
use ::core::any as are_you_okay4;
|
||||||
|
type AreYouOkay3 = core::any::Any;
|
||||||
|
type AreYouOkay4 = ::core::any::Any;
|
||||||
|
}
|
||||||
|
|
||||||
|
fn main() {}
|
38
src/test/ui/imports/extern-crate-used.stderr
Normal file
38
src/test/ui/imports/extern-crate-used.stderr
Normal file
|
@ -0,0 +1,38 @@
|
||||||
|
error: `extern crate` is not idiomatic in the new edition
|
||||||
|
--> $DIR/extern-crate-used.rs:8:1
|
||||||
|
|
|
||||||
|
LL | extern crate core as iso1; //~ ERROR `extern crate` is not idiomatic in the new edition
|
||||||
|
| ^^^^^^^^^^^^^^^^^^^^^^^^^^ help: convert it to a `use`
|
||||||
|
|
|
||||||
|
note: lint level defined here
|
||||||
|
--> $DIR/extern-crate-used.rs:6:9
|
||||||
|
|
|
||||||
|
LL | #![deny(unused_extern_crates)]
|
||||||
|
| ^^^^^^^^^^^^^^^^^^^^
|
||||||
|
|
||||||
|
error: `extern crate` is not idiomatic in the new edition
|
||||||
|
--> $DIR/extern-crate-used.rs:9:1
|
||||||
|
|
|
||||||
|
LL | extern crate core as iso2; //~ ERROR `extern crate` is not idiomatic in the new edition
|
||||||
|
| ^^^^^^^^^^^^^^^^^^^^^^^^^^ help: convert it to a `use`
|
||||||
|
|
||||||
|
error: `extern crate` is not idiomatic in the new edition
|
||||||
|
--> $DIR/extern-crate-used.rs:10:1
|
||||||
|
|
|
||||||
|
LL | extern crate core as iso3; //~ ERROR `extern crate` is not idiomatic in the new edition
|
||||||
|
| ^^^^^^^^^^^^^^^^^^^^^^^^^^ help: convert it to a `use`
|
||||||
|
|
||||||
|
error: `extern crate` is not idiomatic in the new edition
|
||||||
|
--> $DIR/extern-crate-used.rs:11:1
|
||||||
|
|
|
||||||
|
LL | extern crate core as iso4; //~ ERROR `extern crate` is not idiomatic in the new edition
|
||||||
|
| ^^^^^^^^^^^^^^^^^^^^^^^^^^ help: convert it to a `use`
|
||||||
|
|
||||||
|
error: unused extern crate
|
||||||
|
--> $DIR/extern-crate-used.rs:14:1
|
||||||
|
|
|
||||||
|
LL | extern crate core; //~ ERROR unused extern crate
|
||||||
|
| ^^^^^^^^^^^^^^^^^^ help: remove it
|
||||||
|
|
||||||
|
error: aborting due to 5 previous errors
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue