aboutsummaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
authorJacob Young <jacobly0@users.noreply.github.com>2024-07-16 02:22:53 -0400
committerJacob Young <jacobly0@users.noreply.github.com>2024-07-16 02:24:16 -0400
commit7dbd2a6bb549afa6dc3c95df46f40bf144db23a6 (patch)
treee69d14539d69b8a22908316c418b8cba4d516caf /src
parenta20d081129ac6cad1df4afff057bd07e79d1d561 (diff)
downloadzig-7dbd2a6bb549afa6dc3c95df46f40bf144db23a6.tar.gz
zig-7dbd2a6bb549afa6dc3c95df46f40bf144db23a6.zip
InternPool: fix `DependencyIterator` iteration
Diffstat (limited to 'src')
-rw-r--r--src/InternPool.zig10
1 files changed, 6 insertions, 4 deletions
diff --git a/src/InternPool.zig b/src/InternPool.zig
index ff748ebc62..2440ccff3b 100644
--- a/src/InternPool.zig
+++ b/src/InternPool.zig
@@ -283,10 +283,12 @@ pub const DependencyIterator = struct {
ip: *const InternPool,
next_entry: DepEntry.Index.Optional,
pub fn next(it: *DependencyIterator) ?AnalUnit {
- const idx = it.next_entry.unwrap() orelse return null;
- const entry = it.ip.dep_entries.items[@intFromEnum(idx)];
- it.next_entry = entry.next;
- return entry.depender.unwrap().?;
+ while (true) {
+ const idx = it.next_entry.unwrap() orelse return null;
+ const entry = it.ip.dep_entries.items[@intFromEnum(idx)];
+ it.next_entry = entry.next;
+ if (entry.depender.unwrap()) |depender| return depender;
+ }
}
};