From: Vadim Petrochenkov Date: Tue, 27 Nov 2018 00:26:37 +0000 (+0300) Subject: resolve: Extern prelude is for type namespace only X-Git-Url: https://git.lizzy.rs/?a=commitdiff_plain;h=cd2e98dbd35f078fa14fbe021f1fb3861257e9a6;p=rust.git resolve: Extern prelude is for type namespace only --- diff --git a/src/librustc_resolve/resolve_imports.rs b/src/librustc_resolve/resolve_imports.rs index 3bfa862f0dc..e7cd32f4e81 100644 --- a/src/librustc_resolve/resolve_imports.rs +++ b/src/librustc_resolve/resolve_imports.rs @@ -173,7 +173,9 @@ fn resolution(&self, module: Module<'a>, ident: Ident, ns: Namespace) } 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 00000000000..4113d4390c3 --- /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; +}