about summary refs log tree commit diff
diff options
context:
space:
mode:
authorPietro Albini <pietro@pietroalbini.org>2018-08-01 21:46:35 +0200
committerGitHub <noreply@github.com>2018-08-01 21:46:35 +0200
commit2893bd0e0c752af8c2238bf18181a4b6991bfd78 (patch)
tree4ea34f15d25f0d9fdb28e941be87589a68c2d40a
parent110b71a8280c984bf63a01199f57e50eafad0b8f (diff)
parentdbc0cd94b94e0c97c4be9ef1cfb1b67431cd51e5 (diff)
downloadrust-2893bd0e0c752af8c2238bf18181a4b6991bfd78.tar.gz
rust-2893bd0e0c752af8c2238bf18181a4b6991bfd78.zip
Rollup merge of #52930 - eddyb:issue-52489, r=cramertj
rustc_resolve: record single-segment extern crate import resolutions.

Fixes #52489 by recording special-cased single-segment imports for later (e.g. stability) checks.

cc @alexcrichton @Mark-Simulacrum @petrochenkov

Does this need to be backported?
-rw-r--r--src/librustc_resolve/resolve_imports.rs2
-rw-r--r--src/test/compile-fail/auxiliary/issue-52489.rs13
-rw-r--r--src/test/compile-fail/issue-52489.rs17
3 files changed, 32 insertions, 0 deletions
diff --git a/src/librustc_resolve/resolve_imports.rs b/src/librustc_resolve/resolve_imports.rs
index 260179de99b..b6ad2f316a0 100644
--- a/src/librustc_resolve/resolve_imports.rs
+++ b/src/librustc_resolve/resolve_imports.rs
@@ -691,6 +691,8 @@ impl<'a, 'b:'a> ImportResolver<'a, 'b> {
                             expansion: directive.expansion,
                         });
                         let _ = self.try_define(directive.parent, target, TypeNS, binding);
+                        let import = self.import_map.entry(directive.id).or_default();
+                        import[TypeNS] = Some(PathResolution::new(binding.def()));
                         return None;
                     }
                 }
diff --git a/src/test/compile-fail/auxiliary/issue-52489.rs b/src/test/compile-fail/auxiliary/issue-52489.rs
new file mode 100644
index 00000000000..68d1ef8d776
--- /dev/null
+++ b/src/test/compile-fail/auxiliary/issue-52489.rs
@@ -0,0 +1,13 @@
+// Copyright 2018 The Rust Project Developers. See the COPYRIGHT
+// file at the top-level directory of this distribution and at
+// http://rust-lang.org/COPYRIGHT.
+//
+// Licensed under the Apache License, Version 2.0 <LICENSE-APACHE or
+// http://www.apache.org/licenses/LICENSE-2.0> or the MIT license
+// <LICENSE-MIT or http://opensource.org/licenses/MIT>, at your
+// option. This file may not be copied, modified, or distributed
+// except according to those terms.
+
+#![crate_type = "lib"]
+#![unstable(feature = "issue_52489_unstable", issue = "0")]
+#![feature(staged_api)]
diff --git a/src/test/compile-fail/issue-52489.rs b/src/test/compile-fail/issue-52489.rs
new file mode 100644
index 00000000000..c43cc12ca02
--- /dev/null
+++ b/src/test/compile-fail/issue-52489.rs
@@ -0,0 +1,17 @@
+// Copyright 2018 The Rust Project Developers. See the COPYRIGHT
+// file at the top-level directory of this distribution and at
+// http://rust-lang.org/COPYRIGHT.
+//
+// Licensed under the Apache License, Version 2.0 <LICENSE-APACHE or
+// http://www.apache.org/licenses/LICENSE-2.0> or the MIT license
+// <LICENSE-MIT or http://opensource.org/licenses/MIT>, at your
+// option. This file may not be copied, modified, or distributed
+// except according to those terms.
+
+// edition:2018
+// aux-build:issue-52489.rs
+
+use issue_52489;
+//~^ ERROR use of unstable library feature 'issue_52489_unstable'
+
+fn main() {}