aboutsummaryrefslogtreecommitdiff
path: root/src/Sema.zig
diff options
context:
space:
mode:
authorAndrew Kelley <andrew@ziglang.org>2021-05-04 11:08:40 -0700
committerAndrew Kelley <andrew@ziglang.org>2021-05-04 11:08:40 -0700
commit3dafec0acd01c9e044ed9c81dd4f34f30018b065 (patch)
tree30586e447795ecf34fa5c998fab244098fa69271 /src/Sema.zig
parent2910b10033f955a99aacc2e833421ac47512c9b7 (diff)
downloadzig-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.zig10
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,