authorgravatar for spexguy070@gmail.comMartin Wickham <spexguy070@gmail.com> 2021-09-30 21:42:34-05:00
committergravatar for spexguy070@gmail.comMartin Wickham <spexguy070@gmail.com> 2021-10-02 15:21:48-05:00
log993dc2ae77514e61235f0920755fdb1ccc77c2f7
tree3b1224ca2d9a37ff12deae8e8a1aca9feb34e1de
parent7ef59384500afa5b20bee474d570af55565dfa7f

Fix ownership of array type and elements


1 files changed, 5 insertions(+), 2 deletions(-)

src/Sema.zig+5-2
...@@ -8244,10 +8244,13 @@ fn zirArrayInit(sema: *Sema, block: *Scope.Block, inst: Zir.Inst.Index, is_ref:...@@ -8244,10 +8244,13 @@ fn zirArrayInit(sema: *Sema, block: *Scope.Block, inst: Zir.Inst.Index, is_ref:
8244 var anon_decl = try block.startAnonDecl();8244 var anon_decl = try block.startAnonDecl();
8245 defer anon_decl.deinit();8245 defer anon_decl.deinit();
8246 assert(!(resolved_args.len == 0));8246 assert(!(resolved_args.len == 0));
8247 const final_ty = try Type.Tag.array.create(anon_decl.arena(), .{ .len = resolved_args.len, .elem_type = sema.typeOf(resolved_args[0]) });8247 const final_ty = try Type.Tag.array.create(anon_decl.arena(), .{
8248 .len = resolved_args.len,
8249 .elem_type = try sema.typeOf(resolved_args[0]).copy(anon_decl.arena()),
8250 });
8248 const buf = try anon_decl.arena().alloc(Value, resolved_args.len);8251 const buf = try anon_decl.arena().alloc(Value, resolved_args.len);
8249 for (resolved_args) |arg, i| {8252 for (resolved_args) |arg, i| {
8250 buf[i] = (try sema.resolveMaybeUndefVal(block, src, arg)).?;8253 buf[i] = try (try sema.resolveMaybeUndefVal(block, src, arg)).?.copy(anon_decl.arena());
8251 }8254 }
82528255
8253 const val = try Value.Tag.array.create(anon_decl.arena(), buf);8256 const val = try Value.Tag.array.create(anon_decl.arena(), buf);