diff --git a/src/codegen/llvm.zig b/src/codegen/llvm.zig index 9000e9a442d877a89146283d635f0d6dc0cd8550..6361963ab4d898bcf84a08fed641c7390e476e4a 100644 --- a/src/codegen/llvm.zig +++ b/src/codegen/llvm.zig @@ -1717,6 +1717,7 @@ pub const Object = struct { } pub fn updateContainerType(o: *Object, pt: Zcu.PerThread, ty: InternPool.Index, success: bool) Allocator.Error!void { + _ = o.type_map.remove(ty); try o.type_pool.updateContainerType(pt, .{ .llvm = o }, ty, success); if (o.named_enum_map.get(ty)) |function_index| { try o.updateIsNamedEnumValueFunction(.fromInterned(ty), function_index); diff --git a/test/incremental/increase_array_field_length b/test/incremental/increase_array_field_length new file mode 100644 index 0000000000000000000000000000000000000000..714473dd8302d57b0b2644a90f73442d47e9db2d --- /dev/null +++ b/test/incremental/increase_array_field_length @@ -0,0 +1,31 @@ +#update=initial version +#file=main.zig +const Big = struct { arr: [10]u8 }; +pub fn main(init: std.process.Init) !void { + var big: Big = undefined; + big = .{ .arr = @splat(123) }; + var stdout_writer = std.Io.File.stdout().writerStreaming(init.io, &.{}); + const index = big.arr.len - 1; + big.arr[index] = 234; + stdout_writer.interface.print("arr[{d}] = {d}\n", .{ index, big.arr[index] }) catch |err| switch (err) { + error.WriteFailed => return stdout_writer.err.?, + }; +} +const std = @import("std"); +#expect_stdout="arr[9] = 234\n" + +#update=increase array length +#file=main.zig +const Big = struct { arr: [1000]u8 }; +pub fn main(init: std.process.Init) !void { + var big: Big = undefined; + big = .{ .arr = @splat(123) }; + var stdout_writer = std.Io.File.stdout().writerStreaming(init.io, &.{}); + const index = big.arr.len - 1; + big.arr[index] = 234; + stdout_writer.interface.print("arr[{d}] = {d}\n", .{ index, big.arr[index] }) catch |err| switch (err) { + error.WriteFailed => return stdout_writer.err.?, + }; +} +const std = @import("std"); +#expect_stdout="arr[999] = 234\n"