diff options
| author | Jacob Young <jacobly0@users.noreply.github.com> | 2024-07-16 02:22:53 -0400 |
|---|---|---|
| committer | Jacob Young <jacobly0@users.noreply.github.com> | 2024-07-16 02:24:16 -0400 |
| commit | 7dbd2a6bb549afa6dc3c95df46f40bf144db23a6 (patch) | |
| tree | e69d14539d69b8a22908316c418b8cba4d516caf | |
| parent | a20d081129ac6cad1df4afff057bd07e79d1d561 (diff) | |
| download | zig-7dbd2a6bb549afa6dc3c95df46f40bf144db23a6.tar.gz zig-7dbd2a6bb549afa6dc3c95df46f40bf144db23a6.zip | |
InternPool: fix `DependencyIterator` iteration
| -rw-r--r-- | src/InternPool.zig | 10 |
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; + } } }; |
