// Make sure that underscore imports have the same hygiene considerations as other imports. // check-pass #![feature(decl_macro)] #![allow(noop_method_call)] mod x { pub use std::ops::Deref as _; } macro glob_import() { pub use crate::x::*; } macro underscore_import() { use std::ops::DerefMut as _; } mod y { crate::glob_import!(); crate::underscore_import!(); } macro create_module($y:ident) { mod $y { crate::glob_import!(); crate::underscore_import!(); } } create_module!(z); fn main() { use crate::y::*; use crate::z::*; glob_import!(); underscore_import!(); (&()).deref(); (&mut ()).deref_mut(); }