From cd2e98dbd35f078fa14fbe021f1fb3861257e9a6 Mon Sep 17 00:00:00 2001 From: Vadim Petrochenkov Date: Tue, 27 Nov 2018 03:26:37 +0300 Subject: [PATCH] resolve: Extern prelude is for type namespace only --- src/librustc_resolve/resolve_imports.rs | 4 +++- src/test/ui/imports/issue-56263.rs | 8 ++++++++ 2 files changed, 11 insertions(+), 1 deletion(-) create mode 100644 src/test/ui/imports/issue-56263.rs diff --git a/src/librustc_resolve/resolve_imports.rs b/src/librustc_resolve/resolve_imports.rs index 3bfa862f0dc7d..e7cd32f4e810f 100644 --- a/src/librustc_resolve/resolve_imports.rs +++ b/src/librustc_resolve/resolve_imports.rs @@ -173,7 +173,9 @@ impl<'a, 'crateloader> Resolver<'a, 'crateloader> { } ModuleOrUniformRoot::ExternPrelude => { assert!(!restricted_shadowing); - return if let Some(binding) = self.extern_prelude_get(ident, !record_used) { + return if ns != TypeNS { + Err((Determined, Weak::No)) + } else if let Some(binding) = self.extern_prelude_get(ident, !record_used) { Ok(binding) } else if !self.graph_root.unresolved_invocations.borrow().is_empty() { // Macro-expanded `extern crate` items can add names to extern prelude. diff --git a/src/test/ui/imports/issue-56263.rs b/src/test/ui/imports/issue-56263.rs new file mode 100644 index 0000000000000..4113d4390c3c9 --- /dev/null +++ b/src/test/ui/imports/issue-56263.rs @@ -0,0 +1,8 @@ +// compile-pass +// edition:2018 + +use ::std; + +fn main() { + let std = 10; +}