diff options
| author | bors <bors@rust-lang.org> | 2016-04-12 22:21:23 -0700 |
|---|---|---|
| committer | bors <bors@rust-lang.org> | 2016-04-12 22:21:23 -0700 |
| commit | 4b71f8d1417423d933dfd4f74d5d4d167b85f77e (patch) | |
| tree | 0dbbc205324310a16be1d2e283f6e08146ea0651 /src/libsyntax | |
| parent | 7c27cce9e59bbbc1e556de257de85122dad88dcd (diff) | |
| parent | bc6daea2db6d5b5686e857b93c1f71a94268dddb (diff) | |
| download | rust-4b71f8d1417423d933dfd4f74d5d4d167b85f77e.tar.gz rust-4b71f8d1417423d933dfd4f74d5d4d167b85f77e.zip | |
Auto merge of #32814 - jseyfried:improve_duplicate_glob_detection, r=nikomatsakis
resolve: Improve duplicate glob detection
This fixes a bug introduced in #31726 in which we erroneously allow multiple imports of the same item under some circumstances.
More specifically, we erroneously allow a module that is in a cycle of glob re-exports to have other re-exports (besides the glob from the cycle).
For example,
```rust
pub fn f() {}
mod foo {
pub use f; // (1) This defines `foo::f`.
pub use bar::*; // (3) This also defines `foo::f`, which should be a duplicate error but is currently allowed.
}
mod bar {
pub use foo::*; // (2) This defines `bar::f`.
}
```
A module in a glob re-export cycle can still have `pub` items after this PR. For example,
```rust
mod foo {
pub fn f() {}; // (1) This defines `foo::f`.
pub use bar::*; // (3) This is not a duplicate error since items shadow glob-imported re-exports (cf #31337).
}
mod bar {
pub use foo::*; // (2) This defines `bar::f`.
}
```
r? @nikomatsakis
Diffstat (limited to 'src/libsyntax')
0 files changed, 0 insertions, 0 deletions
