1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53
|
mod a {
pub fn foo() {}
}
mod b {
pub fn foo() {}
}
mod c {
pub use a::foo;
}
mod d {
use a::foo;
use a::foo; //~ ERROR the name `foo` is defined multiple times
}
mod e {
pub use a::*;
pub use c::*; // ok
}
mod f {
pub use a::*;
pub use b::*;
}
mod g {
pub use a::*;
pub use f::*;
}
fn main() {
e::foo();
f::foo(); //~ ERROR `foo` is ambiguous
g::foo();
//~^ WARNING `foo` is ambiguous
//~| WARNING this was previously accepted by the compiler but is being phased out; it will become a hard error in a future release!
}
mod ambiguous_module_errors {
pub mod m1 { pub use super::m1 as foo; pub fn bar() {} }
pub mod m2 { pub use super::m2 as foo; }
use self::m1::*;
use self::m2::*;
use self::foo::bar; //~ ERROR `foo` is ambiguous
fn f() {
foo::bar(); //~ ERROR `foo` is ambiguous
}
}
|