diff options
| author | kennytm <kennytm@gmail.com> | 2018-09-08 16:07:44 +0800 |
|---|---|---|
| committer | kennytm <kennytm@gmail.com> | 2018-09-08 18:26:44 +0800 |
| commit | 407da0a8a2f56629220bf9421763345d992c2a79 (patch) | |
| tree | 60dc525dd0adc08339d2229d2bef2d87414c0ac0 | |
| parent | e2e3608a4befa37d44571664f63bf9c4dae566cf (diff) | |
| parent | c34dd37f854dc4fcb8c2e3eebe4f9dae6b24784a (diff) | |
| download | rust-407da0a8a2f56629220bf9421763345d992c2a79.tar.gz rust-407da0a8a2f56629220bf9421763345d992c2a79.zip | |
Rollup merge of #53993 - eddyb:issue-53691, r=petrochenkov
rustc_resolve: don't record uniform_paths canaries as reexports. Fixes #53691, fixes #53484.
| -rw-r--r-- | src/librustc_resolve/resolve_imports.rs | 10 | ||||
| -rw-r--r-- | src/test/run-pass/uniform-paths/auxiliary/issue-53691.rs | 19 | ||||
| -rw-r--r-- | src/test/run-pass/uniform-paths/issue-53691.rs | 18 |
3 files changed, 46 insertions, 1 deletions
diff --git a/src/librustc_resolve/resolve_imports.rs b/src/librustc_resolve/resolve_imports.rs index 73c9af0d11c..a72ee7ae379 100644 --- a/src/librustc_resolve/resolve_imports.rs +++ b/src/librustc_resolve/resolve_imports.rs @@ -1147,7 +1147,15 @@ impl<'a, 'b:'a, 'c: 'b> ImportResolver<'a, 'b, 'c> { None => continue, }; - if binding.is_import() || binding.is_macro_def() { + // Don't reexport `uniform_path` canaries. + let non_canary_import = match binding.kind { + NameBindingKind::Import { directive, .. } => { + !directive.is_uniform_paths_canary + } + _ => false, + }; + + if non_canary_import || binding.is_macro_def() { let def = binding.def(); if def != Def::Err { if !def.def_id().is_local() { diff --git a/src/test/run-pass/uniform-paths/auxiliary/issue-53691.rs b/src/test/run-pass/uniform-paths/auxiliary/issue-53691.rs new file mode 100644 index 00000000000..5845afd72fb --- /dev/null +++ b/src/test/run-pass/uniform-paths/auxiliary/issue-53691.rs @@ -0,0 +1,19 @@ +// Copyright 2018 The Rust Project Developers. See the COPYRIGHT +// file at the top-level directory of this distribution and at +// http://rust-lang.org/COPYRIGHT. +// +// Licensed under the Apache License, Version 2.0 <LICENSE-APACHE or +// http://www.apache.org/licenses/LICENSE-2.0> or the MIT license +// <LICENSE-MIT or http://opensource.org/licenses/MIT>, at your +// option. This file may not be copied, modified, or distributed +// except according to those terms. + +// edition:2018 + +#![feature(uniform_paths)] + +mod m { pub fn f() {} } +mod n { pub fn g() {} } + +pub use m::f; +pub use n::g; diff --git a/src/test/run-pass/uniform-paths/issue-53691.rs b/src/test/run-pass/uniform-paths/issue-53691.rs new file mode 100644 index 00000000000..62be31d6b85 --- /dev/null +++ b/src/test/run-pass/uniform-paths/issue-53691.rs @@ -0,0 +1,18 @@ +// Copyright 2018 The Rust Project Developers. See the COPYRIGHT +// file at the top-level directory of this distribution and at +// http://rust-lang.org/COPYRIGHT. +// +// Licensed under the Apache License, Version 2.0 <LICENSE-APACHE or +// http://www.apache.org/licenses/LICENSE-2.0> or the MIT license +// <LICENSE-MIT or http://opensource.org/licenses/MIT>, at your +// option. This file may not be copied, modified, or distributed +// except according to those terms. + +// aux-build:issue-53691.rs + +extern crate issue_53691; + +fn main() { + issue_53691::f(); + issue_53691::g(); +} |
