about summary refs log tree commit diff
diff options
context:
space:
mode:
authorbors <bors@rust-lang.org>2016-02-19 02:18:25 +0000
committerbors <bors@rust-lang.org>2016-02-19 02:18:25 +0000
commit917db28b555ca0038cb95b535909fea0c904c230 (patch)
tree96ba7876ea8bf2a597341906e64eb33667cf822f
parent8842e28be8857e8e37591e2dec469d6720c278cb (diff)
parent08b909719790e40f7feaab4b314893d178e892ea (diff)
downloadrust-917db28b555ca0038cb95b535909fea0c904c230.tar.gz
rust-917db28b555ca0038cb95b535909fea0c904c230.zip
Auto merge of #31716 - jseyfried:fix_privacy_for_def_err, r=nrc
Fixes #31714
-rw-r--r--src/librustc_resolve/lib.rs1
-rw-r--r--src/librustc_resolve/resolve_imports.rs2
-rw-r--r--src/test/compile-fail/import.rs7
3 files changed, 9 insertions, 1 deletions
diff --git a/src/librustc_resolve/lib.rs b/src/librustc_resolve/lib.rs
index 49040a4c732..7dfb79d820a 100644
--- a/src/librustc_resolve/lib.rs
+++ b/src/librustc_resolve/lib.rs
@@ -1038,6 +1038,7 @@ impl<'a> NameBinding<'a> {
 
     fn def_and_lp(&self) -> (Def, LastPrivate) {
         let def = self.def().unwrap();
+        if let Def::Err = def { return (def, LastMod(AllPublic)) }
         (def, LastMod(if self.is_public() { AllPublic } else { DependsOn(def.def_id()) }))
     }
 
diff --git a/src/librustc_resolve/resolve_imports.rs b/src/librustc_resolve/resolve_imports.rs
index 1253d4f9cef..ce56f484b02 100644
--- a/src/librustc_resolve/resolve_imports.rs
+++ b/src/librustc_resolve/resolve_imports.rs
@@ -218,6 +218,8 @@ impl<'a, 'b:'a, 'tcx:'b> ImportResolver<'a, 'b, 'tcx> {
                 kind: NameBindingKind::Def(Def::Err),
                 span: None,
             });
+            let dummy_binding =
+                self.resolver.new_name_binding(e.import_directive.import(dummy_binding));
 
             let _ = e.source_module.try_define_child(target, ValueNS, dummy_binding);
             let _ = e.source_module.try_define_child(target, TypeNS, dummy_binding);
diff --git a/src/test/compile-fail/import.rs b/src/test/compile-fail/import.rs
index 86c4ce8b038..ff93cd0f066 100644
--- a/src/test/compile-fail/import.rs
+++ b/src/test/compile-fail/import.rs
@@ -15,5 +15,10 @@ use zed::baz;
 
 mod zed {
     pub fn bar() { println!("bar"); }
+    use foo; //~ ERROR unresolved import
+}
+
+fn main() {
+    zed::foo(); //~ ERROR unresolved name
+    bar();
 }
-fn main() { bar(); }