]> git.lizzy.rs Git - rust.git/commitdiff
resolve: Fix another ICE in import validation
authorVadim Petrochenkov <vadim.petrochenkov@gmail.com>
Fri, 28 Dec 2018 21:15:19 +0000 (00:15 +0300)
committerVadim Petrochenkov <vadim.petrochenkov@gmail.com>
Fri, 28 Dec 2018 21:15:19 +0000 (00:15 +0300)
src/librustc_resolve/lib.rs
src/librustc_resolve/resolve_imports.rs
src/test/ui/rust-2018/uniform-paths/auxiliary/issue-56596-2.rs [new file with mode: 0644]
src/test/ui/rust-2018/uniform-paths/issue-56596-2.rs [new file with mode: 0644]

index 0db6dbafb6cc6c54e31eaa29355a9c5f133bd0a5..6c7d0efbc0297fc530733e1cac13b5d98fbea33c 100644 (file)
@@ -1014,11 +1014,11 @@ enum ModuleOrUniformRoot<'a> {
     CurrentScope,
 }
 
-impl<'a> PartialEq for ModuleOrUniformRoot<'a> {
-    fn eq(&self, other: &Self) -> bool {
-        match (*self, *other) {
+impl ModuleOrUniformRoot<'_> {
+    fn same_def(lhs: Self, rhs: Self) -> bool {
+        match (lhs, rhs) {
             (ModuleOrUniformRoot::Module(lhs),
-             ModuleOrUniformRoot::Module(rhs)) => ptr::eq(lhs, rhs),
+             ModuleOrUniformRoot::Module(rhs)) => lhs.def() == rhs.def(),
             (ModuleOrUniformRoot::CrateRootAndExternPrelude,
              ModuleOrUniformRoot::CrateRootAndExternPrelude) |
             (ModuleOrUniformRoot::ExternPrelude, ModuleOrUniformRoot::ExternPrelude) |
index 9a7b8c24993c6f3b7addef96f2ac58a6dfe673f5..ef9b68a18a6a29b7ab39b4acc803f0f6cbad316a 100644 (file)
@@ -842,7 +842,7 @@ fn finalize_import(
             PathResult::Module(module) => {
                 // Consistency checks, analogous to `finalize_current_module_macro_resolutions`.
                 if let Some(initial_module) = directive.imported_module.get() {
-                    if module != initial_module && no_ambiguity {
+                    if !ModuleOrUniformRoot::same_def(module, initial_module) && no_ambiguity {
                         span_bug!(directive.span, "inconsistent resolution for an import");
                     }
                 } else {
diff --git a/src/test/ui/rust-2018/uniform-paths/auxiliary/issue-56596-2.rs b/src/test/ui/rust-2018/uniform-paths/auxiliary/issue-56596-2.rs
new file mode 100644 (file)
index 0000000..db72307
--- /dev/null
@@ -0,0 +1 @@
+pub extern crate core;
diff --git a/src/test/ui/rust-2018/uniform-paths/issue-56596-2.rs b/src/test/ui/rust-2018/uniform-paths/issue-56596-2.rs
new file mode 100644 (file)
index 0000000..9ec3a64
--- /dev/null
@@ -0,0 +1,11 @@
+// compile-pass
+// edition:2018
+// compile-flags: --extern issue_56596_2
+// aux-build:issue-56596-2.rs
+
+mod m {
+    use core::any;
+    pub use issue_56596_2::*;
+}
+
+fn main() {}