diff options
| author | Vadim Petrochenkov <vadim.petrochenkov@gmail.com> | 2018-12-29 00:15:19 +0300 |
|---|---|---|
| committer | Vadim Petrochenkov <vadim.petrochenkov@gmail.com> | 2018-12-29 00:15:19 +0300 |
| commit | 2af1d6f4dd071e17816b08b19492bff2870926f4 (patch) | |
| tree | ca76de3880c86384d07cd0ff03eba89c4302a74a /src/librustc_resolve | |
| parent | 3cda631ea45bac643ed9e4968f9292b0244a5b82 (diff) | |
| download | rust-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.rs | 8 | ||||
| -rw-r--r-- | src/librustc_resolve/resolve_imports.rs | 2 |
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 { |
