diff options
| author | Andrew Kelley <andrew@ziglang.org> | 2021-05-04 11:08:40 -0700 |
|---|---|---|
| committer | Andrew Kelley <andrew@ziglang.org> | 2021-05-04 11:08:40 -0700 |
| commit | 3dafec0acd01c9e044ed9c81dd4f34f30018b065 (patch) | |
| tree | 30586e447795ecf34fa5c998fab244098fa69271 /src/Sema.zig | |
| parent | 2910b10033f955a99aacc2e833421ac47512c9b7 (diff) | |
| download | zig-3dafec0acd01c9e044ed9c81dd4f34f30018b065.tar.gz zig-3dafec0acd01c9e044ed9c81dd4f34f30018b065.zip | |
stage2: fix structs and enums setting wrong owner_decl
No more memory leaks.
Diffstat (limited to 'src/Sema.zig')
| -rw-r--r-- | src/Sema.zig | 10 |
1 files changed, 8 insertions, 2 deletions
diff --git a/src/Sema.zig b/src/Sema.zig index 87f2f475ff..34713234c8 100644 --- a/src/Sema.zig +++ b/src/Sema.zig @@ -698,7 +698,7 @@ fn zirStructDecl( .val = struct_val, }); struct_obj.* = .{ - .owner_decl = sema.owner_decl, + .owner_decl = new_decl, .fields = .{}, .node_offset = inst_data.src_node, .zir_index = inst, @@ -710,6 +710,9 @@ fn zirStructDecl( .file_scope = block.getFileScope(), }, }; + std.log.scoped(.module).debug("create struct {*} owned by {*} ({s})", .{ + &struct_obj.namespace, new_decl, new_decl.name, + }); try sema.analyzeStructDecl(new_decl, inst, struct_obj); try new_decl.finalizeNewArena(&new_decl_arena); return sema.analyzeDeclVal(block, src, new_decl); @@ -757,7 +760,7 @@ fn zirEnumDecl( .val = enum_val, }); enum_obj.* = .{ - .owner_decl = sema.owner_decl, + .owner_decl = new_decl, .tag_ty = tag_ty, .fields = .{}, .values = .{}, @@ -768,6 +771,9 @@ fn zirEnumDecl( .file_scope = block.getFileScope(), }, }; + std.log.scoped(.module).debug("create enum {*} owned by {*} ({s})", .{ + &enum_obj.namespace, new_decl, new_decl.name, + }); var extra_index: usize = try sema.mod.scanNamespace( &enum_obj.namespace, |
