| ... | @@ -4064,9 +4064,19 @@ pub fn deleteUnusedDecl(mod: *Module, decl: *Decl) void { | ... | @@ -4064,9 +4064,19 @@ pub fn deleteUnusedDecl(mod: *Module, decl: *Decl) void { |
| 4064 | | 4064 | |
| 4065 | pub fn abortAnonDecl(mod: *Module, decl: *Decl) void { | 4065 | pub fn abortAnonDecl(mod: *Module, decl: *Decl) void { |
| 4066 | log.debug("abortAnonDecl {*} ({s})", .{ decl, decl.name }); | 4066 | log.debug("abortAnonDecl {*} ({s})", .{ decl, decl.name }); |
| 4067 | assert(decl.namespace.anon_decls.swapRemove(decl)); | 4067 | |
| 4068 | assert(decl.dependants.count() == 0); | 4068 | const owner_namespace = if (decl.namespace.getDecl() == decl and decl.namespace.parent != null) decl.namespace.parent.? else decl.namespace; |
| 4069 | assert(decl.dependencies.count() == 0); | 4069 | assert(owner_namespace.anon_decls.swapRemove(decl)); |
| | 4070 | |
| | 4071 | const dependants = decl.dependants.keys(); |
| | 4072 | for (dependants) |dep| { |
| | 4073 | dep.removeDependency(decl); |
| | 4074 | } |
| | 4075 | |
| | 4076 | for (decl.dependencies.keys()) |dep| { |
| | 4077 | dep.removeDependant(decl); |
| | 4078 | } |
| | 4079 | |
| 4070 | decl.destroy(mod); | 4080 | decl.destroy(mod); |
| 4071 | } | 4081 | } |
| 4072 | | 4082 | |