summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--src/symbol_resolver.rs8
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;