| // Make sure that underscore imports with different contexts can exist in the |
| // same scope. |
| |
| //@ check-pass |
| |
| #![feature(decl_macro)] |
| |
| mod x { |
| pub use std::ops::Deref as _; |
| } |
| |
| macro n() { |
| pub use crate::x::*; |
| } |
| |
| #[macro_export] |
| macro_rules! p { |
| () => { pub use crate::x::*; } |
| } |
| |
| macro m($y:ident) { |
| mod $y { |
| crate::n!(); // Reexport of `Deref` should not be imported in `main` |
| crate::p!(); // Reexport of `Deref` should be imported into `main` |
| } |
| } |
| |
| m!(y); |
| |
| fn main() { |
| use crate::y::*; |
| #[allow(noop_method_call)] |
| (&()).deref(); |
| } |