Closed
Description
The following code (2015 edition, a subset of /src/test/ui/imports/duplicate.rs, playground) compiles:
mod a {
pub fn foo() {}
}
mod b {
pub fn foo() {}
}
mod f {
pub use a::*;
pub use b::*;
}
mod g {
pub use a::*;
pub use f::*;
}
fn main() {
g::foo();
}
If you reorder the glob imports in g
, it does not compile (playground):
error[E0659]: `foo` is ambiguous
--> src/main.rs:20:8
|
20 | g::foo();
| ^^^ ambiguous name
|
= note: ambiguous because of multiple glob imports of a name in the same module
note: `foo` could refer to the function imported here
--> src/main.rs:10:13
|
10 | pub use a::*;
| ^^^^
= help: consider adding an explicit import of `foo` to disambiguate
note: `foo` could also refer to the function imported here
--> src/main.rs:11:13
|
11 | pub use b::*;
| ^^^^
= help: consider adding an explicit import of `foo` to disambiguate
Both versions failed to compile prior to 1.32.0.
I found this while looking at #97584/#47525, which looks very related, but regressed earlier (1.15) - I have a WIP fix for that issue, but it fails on the linked UI test because it makes this error again. I'm mostly opening this to double-check that this change wasn't deliberate (since the change to the UI test's output was blessed).
@rustbot label C-bug T-compiler A-resolve regression-from-stable-to-stable