about summary refs log tree commit diff
diff options
context:
space:
mode:
authorVadim Petrochenkov <vadim.petrochenkov@gmail.com>2018-11-27 03:26:37 +0300
committerVadim Petrochenkov <vadim.petrochenkov@gmail.com>2018-11-27 14:35:36 +0300
commitcd2e98dbd35f078fa14fbe021f1fb3861257e9a6 (patch)
treeb23b6eb5fe1909029a9759b1495e162d6bd59fd5
parent45205f2ac18e926ec61f2672d16ec3b955de5652 (diff)
downloadrust-cd2e98dbd35f078fa14fbe021f1fb3861257e9a6.tar.gz
rust-cd2e98dbd35f078fa14fbe021f1fb3861257e9a6.zip
resolve: Extern prelude is for type namespace only
-rw-r--r--src/librustc_resolve/resolve_imports.rs4
-rw-r--r--src/test/ui/imports/issue-56263.rs8
2 files changed, 11 insertions, 1 deletions
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 @@ 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 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;
+}