// edition:2018 #![deny(unused_extern_crates)] #![feature(alloc, test, rustc_private, crate_visibility_modifier)] extern crate libc; //~^ ERROR unused extern crate //~| HELP remove extern crate libc as x; //~^ ERROR unused extern crate //~| HELP remove extern crate proc_macro; #[macro_use] extern crate test; pub extern crate test as y; pub extern crate alloc; pub(crate) extern crate alloc as a; crate extern crate alloc as b; mod foo { pub(in crate::foo) extern crate alloc as c; pub(super) extern crate alloc as d; extern crate libc; //~^ ERROR unused extern crate //~| HELP remove extern crate libc as x; //~^ ERROR unused extern crate //~| HELP remove pub extern crate test; pub extern crate test as y; mod bar { extern crate libc; //~^ ERROR unused extern crate //~| HELP remove extern crate libc as x; //~^ ERROR unused extern crate //~| HELP remove pub(in crate::foo::bar) extern crate alloc as e; fn dummy() { e::string::String::new(); } } fn dummy() { c::string::String::new(); d::string::String::new(); } } fn main() { a::string::String::new(); b::string::String::new(); proc_macro::TokenStream::new(); }