From 38af81f183504145bd3bf6ba5bc40b3e41e04593 Mon Sep 17 00:00:00 2001 From: Paul Daniel Faria Date: Tue, 23 Jun 2020 22:10:01 -0400 Subject: Account for updated module ids when determining whether a resolution is "changed" --- crates/ra_hir_def/src/item_scope.rs | 41 +++++++++++++++++++++++++++++-------- 1 file changed, 32 insertions(+), 9 deletions(-) (limited to 'crates/ra_hir_def/src/item_scope.rs') diff --git a/crates/ra_hir_def/src/item_scope.rs b/crates/ra_hir_def/src/item_scope.rs index b03ba939a..571ba3b8a 100644 --- a/crates/ra_hir_def/src/item_scope.rs +++ b/crates/ra_hir_def/src/item_scope.rs @@ -126,17 +126,40 @@ impl ItemScope { let mut changed = false; let existing = self.visible.entry(name).or_default(); - if existing.types.is_none() && def.types.is_some() { - existing.types = def.types; - changed = true; + match (existing.types, def.types) { + (None, Some(_)) => { + existing.types = def.types; + changed = true; + } + (Some(e), Some(d)) if e.0 != d.0 => { + existing.types = def.types; + changed = true; + } + _ => {} } - if existing.values.is_none() && def.values.is_some() { - existing.values = def.values; - changed = true; + + match (existing.values, def.values) { + (None, Some(_)) => { + existing.values = def.values; + changed = true; + } + (Some(e), Some(d)) if e.0 != d.0 => { + existing.values = def.values; + changed = true; + } + _ => {} } - if existing.macros.is_none() && def.macros.is_some() { - existing.macros = def.macros; - changed = true; + + match (existing.macros, def.macros) { + (None, Some(_)) => { + existing.macros = def.macros; + changed = true; + } + (Some(e), Some(d)) if e.0 != d.0 => { + existing.macros = def.macros; + changed = true; + } + _ => {} } changed -- cgit v1.2.3