mirror of
https://github.com/ziglang/zig.git
synced 2026-02-13 12:59:04 +00:00
self-hosted: remove deleted Decls from failed_decls
This commit is contained in:
parent
91930a4ff0
commit
9ea4965ceb
@ -910,6 +910,8 @@ fn analyzeRoot(self: *Module, root_scope: *Scope.ZIRModule) !void {
|
||||
}
|
||||
|
||||
fn deleteDecl(self: *Module, decl: *Decl) !void {
|
||||
try self.deletion_set.ensureCapacity(self.allocator, self.deletion_set.items.len + decl.dependencies.items.len);
|
||||
|
||||
//std.debug.warn("deleting decl '{}'\n", .{decl.name});
|
||||
const name_hash = decl.fullyQualifiedNameHash();
|
||||
self.decl_table.removeAssertDiscard(name_hash);
|
||||
@ -921,16 +923,20 @@ fn deleteDecl(self: *Module, decl: *Decl) !void {
|
||||
// another reference to it may turn up.
|
||||
assert(!dep.deletion_flag);
|
||||
dep.deletion_flag = true;
|
||||
try self.deletion_set.append(self.allocator, dep);
|
||||
self.deletion_set.appendAssumeCapacity(dep);
|
||||
}
|
||||
}
|
||||
// Anything that depends on this deleted decl certainly needs to be re-analyzed.
|
||||
for (decl.dependants.items) |dep| {
|
||||
dep.removeDependency(decl);
|
||||
if (dep.analysis != .outdated) {
|
||||
// TODO Move this failure possibility to the top of the function.
|
||||
try self.markOutdatedDecl(dep);
|
||||
}
|
||||
}
|
||||
if (self.failed_decls.remove(decl)) |entry| {
|
||||
self.allocator.destroy(entry.value);
|
||||
}
|
||||
self.deleteDeclExports(decl);
|
||||
self.bin_file.freeDecl(decl);
|
||||
decl.destroy(self.allocator);
|
||||
|
||||
Loading…
x
Reference in New Issue
Block a user