// Extern crate items are marked as used if they are used
// through extern prelude entries introduced by them.

// edition:2018

#![deny(unused_extern_crates)]

// Shouldn't suggest changing to `use`, as new name
// would no longer be added to the prelude which could cause
// compilation errors for imports that use the new name in
// other modules. See #57672.
extern crate core as iso1;
extern crate core as iso2;
extern crate core as iso3;
extern crate core as iso4;

// 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 = dyn iso3::any::Any;
    type AreYouOkay2 = dyn (::iso4::any::Any);

    use core::any as are_you_okay3;
    use ::core::any as are_you_okay4;
    type AreYouOkay3 = dyn core::any::Any;
    type AreYouOkay4 = dyn (::core::any::Any);
}

fn main() {}