summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorBen Bridle <bridle.benjamin@gmail.com>2025-02-13 20:24:25 +1300
committerBen Bridle <bridle.benjamin@gmail.com>2025-02-13 20:24:25 +1300
commit8d652ab6adfb30ca4ead6c803252667faca53407 (patch)
tree93c562a3b75839921896b35c1b86c531670ce26f
parente717e32badebcd34f590e1e58d6417ebf8c8d973 (diff)
downloadassembler-8d652ab6adfb30ca4ead6c803252667faca53407.zip
Correctly record references resolved by each definition
Definitions were incorrectly not having resolved references associated with them.
-rw-r--r--src/resolver.rs6
1 files changed, 5 insertions, 1 deletions
diff --git a/src/resolver.rs b/src/resolver.rs
index b50f910..2214198 100644
--- a/src/resolver.rs
+++ b/src/resolver.rs
@@ -93,7 +93,11 @@ impl Resolver {
let tracked = TrackedSymbol { symbol, source_id, source_role };
let defines = |d: &TrackedDefinition| d.tracked.symbol.defines(&tracked.symbol);
match self.definitions.iter().position(defines) {
- Some(definition) => self.resolved.push(TrackedReference { tracked, definition }),
+ Some(index) => {
+ let definition = &mut self.definitions[index];
+ definition.references.push(self.resolved.len());
+ self.resolved.push(TrackedReference { tracked, definition: index })
+ }
None => self.unresolved.push(tracked),
}
}