diff options
-rw-r--r-- | src/symbol_resolver.rs | 8 |
1 files changed, 4 insertions, 4 deletions
diff --git a/src/symbol_resolver.rs b/src/symbol_resolver.rs index 38163e3..c96ba67 100644 --- a/src/symbol_resolver.rs +++ b/src/symbol_resolver.rs @@ -10,7 +10,7 @@ pub struct SymbolResolver { pub resolved: Vec<TrackedSymbol>, /// All unresolved references. pub unresolved: Vec<TrackedSymbol>, - /// Contains the ID of the owner of the original definition. + /// Contains the `definitions` index of the original definition. pub redefinitions: Vec<(TrackedSymbol, usize)>, pub source_units: Vec<HeirarchicalSourceUnit>, pub root_unit_ids: Vec<usize>, @@ -122,10 +122,10 @@ impl SymbolResolver { fn add_definitions(&mut self, definitions: Vec<Symbol>, source_id: usize, source_role: SourceRole) { for symbol in definitions { - let predicate = |d: &&TrackedSymbol| { &d.symbol.name == &symbol.name }; - if let Some(def) = self.definitions.iter().find(predicate) { + let predicate = |d: &TrackedSymbol| { &d.symbol.name == &symbol.name }; + if let Some(original) = self.definitions.iter().position(predicate) { let definition = TrackedSymbol { symbol, source_id, source_role }; - let redefinition = (definition, def.source_id); + let redefinition = (definition, original); self.redefinitions.push(redefinition); } else { let predicate = |s: &mut TrackedSymbol| s.symbol.name == symbol.name; |