about summary refs log tree commit diff
path: root/src/librustc_resolve
diff options
context:
space:
mode:
authorVadim Petrochenkov <vadim.petrochenkov@gmail.com>2018-12-29 00:15:19 +0300
committerVadim Petrochenkov <vadim.petrochenkov@gmail.com>2018-12-29 00:15:19 +0300
commit2af1d6f4dd071e17816b08b19492bff2870926f4 (patch)
treeca76de3880c86384d07cd0ff03eba89c4302a74a /src/librustc_resolve
parent3cda631ea45bac643ed9e4968f9292b0244a5b82 (diff)
downloadrust-2af1d6f4dd071e17816b08b19492bff2870926f4.tar.gz
rust-2af1d6f4dd071e17816b08b19492bff2870926f4.zip
resolve: Fix another ICE in import validation
Diffstat (limited to 'src/librustc_resolve')
-rw-r--r--src/librustc_resolve/lib.rs8
-rw-r--r--src/librustc_resolve/resolve_imports.rs2
2 files changed, 5 insertions, 5 deletions
diff --git a/src/librustc_resolve/lib.rs b/src/librustc_resolve/lib.rs
index 0db6dbafb6c..6c7d0efbc02 100644
--- a/src/librustc_resolve/lib.rs
+++ b/src/librustc_resolve/lib.rs
@@ -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) |
diff --git a/src/librustc_resolve/resolve_imports.rs b/src/librustc_resolve/resolve_imports.rs
index 9a7b8c24993..ef9b68a18a6 100644
--- a/src/librustc_resolve/resolve_imports.rs
+++ b/src/librustc_resolve/resolve_imports.rs
@@ -842,7 +842,7 @@ impl<'a, 'b:'a> ImportResolver<'a, 'b> {
             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 {