]> git.lizzy.rs Git - rust.git/commitdiff
resolve: Extern prelude is for type namespace only
authorVadim Petrochenkov <vadim.petrochenkov@gmail.com>
Tue, 27 Nov 2018 00:26:37 +0000 (03:26 +0300)
committerVadim Petrochenkov <vadim.petrochenkov@gmail.com>
Tue, 27 Nov 2018 11:35:36 +0000 (14:35 +0300)
src/librustc_resolve/resolve_imports.rs
src/test/ui/imports/issue-56263.rs [new file with mode: 0644]

index 3bfa862f0dc7dc8a355c8914a2e2037ffa278270..e7cd32f4e810f44d0aedb7964dd9ce999c321290 100644 (file)
@@ -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 (file)
index 0000000..4113d43
--- /dev/null
@@ -0,0 +1,8 @@
+// compile-pass
+// edition:2018
+
+use ::std;
+
+fn main() {
+    let std = 10;
+}