| // Check that macro expanded underscore imports behave as expected |
| |
| // check-pass |
| |
| #![feature(decl_macro, rustc_attrs)] |
| |
| mod x { |
| pub use std::ops::Not as _; |
| } |
| |
| macro m() { |
| mod w { |
| mod y { |
| pub use std::ops::Deref as _; |
| } |
| use crate::x::*; |
| use self::y::*; |
| use std::ops::DerefMut as _; |
| fn f() { |
| false.not(); |
| (&()).deref(); |
| (&mut ()).deref_mut(); |
| } |
| } |
| } |
| |
| #[rustc_macro_transparency = "transparent"] |
| macro n() { |
| mod z { |
| pub use std::ops::Deref as _; |
| } |
| use crate::x::*; |
| use crate::z::*; |
| use std::ops::DerefMut as _; |
| fn f() { |
| false.not(); |
| (&()).deref(); |
| (&mut ()).deref_mut(); |
| } |
| } |
| |
| m!(); |
| n!(); |
| |
| fn main() {} |