diff options
| author | bors <bors@rust-lang.org> | 2016-02-01 04:52:12 +0000 |
|---|---|---|
| committer | bors <bors@rust-lang.org> | 2016-02-01 04:52:12 +0000 |
| commit | 654f68dd50b72d1d812b0760f1b71d7c366f6f55 (patch) | |
| tree | d07cc489e252e70593b48ff64f511443ec7e8209 | |
| parent | 094c5b0d61a0fb19a1cb94dddd6f59a975089b4b (diff) | |
| parent | 7a69ee0c4806d30bbda5cc0277f3d0f38c3266c8 (diff) | |
Auto merge of #30866 - jseyfried:fix_shadowed_use_visibility, r=nrc
This reverts PR #30324, fixing bug #30159 in which a public a glob import makes public any preceding imports that share a name with an item in the module being glob imported from.
For example,
```rust
pub fn f() {}
pub mod foo {
fn f() {}
}
mod bar {
use f;
use f as g;
pub use foo::*; // This makes the first import public but does not affect the second import.
}
```
This is a [breaking-change].
| -rw-r--r-- | src/librustc_resolve/resolve_imports.rs | 3 | ||||
| -rw-r--r-- | src/test/compile-fail/shadowed-use-visibility.rs | 4 |
2 files changed, 4 insertions, 3 deletions
diff --git a/src/librustc_resolve/resolve_imports.rs b/src/librustc_resolve/resolve_imports.rs index 07f6a0f9549..50537a6b936 100644 --- a/src/librustc_resolve/resolve_imports.rs +++ b/src/librustc_resolve/resolve_imports.rs @@ -798,9 +798,6 @@ impl<'a, 'b:'a, 'tcx:'b> ImportResolver<'a, 'b, 'tcx> { dest_import_resolution.is_public = is_public; self.add_export(module_, name, &dest_import_resolution); } - } else { - // FIXME #30159: This is required for backwards compatability. - dest_import_resolution.is_public |= is_public; } self.check_for_conflicts_between_imports_and_items(module_, diff --git a/src/test/compile-fail/shadowed-use-visibility.rs b/src/test/compile-fail/shadowed-use-visibility.rs index bfc6a4ec9b8..1bf7f393384 100644 --- a/src/test/compile-fail/shadowed-use-visibility.rs +++ b/src/test/compile-fail/shadowed-use-visibility.rs @@ -17,6 +17,10 @@ mod foo { mod bar { use foo::bar::f as g; //~ ERROR unresolved import + + use foo as f; + pub use foo::*; } +use bar::f::f; //~ ERROR unresolved import fn main() {} |
