1 // aux-build:two_macros.rs 2 3 mod foo { 4 extern crate two_macros; 5 pub use self::two_macros::m as panic; 6 } 7 8 mod m1 { 9 use foo::panic; // ok f()10 fn f() { panic!(); } 11 } 12 13 mod m2 { 14 use foo::*; f()15 fn f() { panic!(); } //~ ERROR ambiguous 16 } 17 18 mod m3 { 19 ::two_macros::m!(use foo::panic;); f()20 fn f() { panic!(); } //~ ERROR ambiguous 21 } 22 23 mod m4 { 24 macro_rules! panic { () => {} } // ok 25 panic!(); 26 } 27 28 mod m5 { 29 macro_rules! m { () => { 30 macro_rules! panic { () => {} } 31 } } 32 m!(); 33 panic!(); //~ ERROR `panic` is ambiguous 34 } 35 36 #[macro_use(n)] 37 extern crate two_macros; 38 mod bar { 39 pub use two_macros::m as n; 40 } 41 42 mod m6 { 43 use bar::n; // ok 44 n!(); 45 } 46 47 mod m7 { 48 use bar::*; 49 n!(); //~ ERROR ambiguous 50 } 51 main()52fn main() {} 53