authorgravatar for william@sengir.comWilliam Sengir <william@sengir.com> 2022-03-23 08:44:11-07:00
committergravatar for andrew@ziglang.orgAndrew Kelley <andrew@ziglang.org> 2022-03-23 16:38:33-04:00
logd7530c8f7bb14e860898c74aa6a20d86379c8822
tree20d423de16191fd82a30deaa5936c75b1f18e4e2
parent6fc07f49a9d723fba6422d83d23384a484b0b0be

stage2: make zero-sized array not cause recursive type definition


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

src/Sema.zig+1
......@@ -20816,6 +20816,7 @@ pub fn resolveTypeLayout(
2081620816 .Struct => return sema.resolveStructLayout(block, src, ty),
2081720817 .Union => return sema.resolveUnionLayout(block, src, ty),
2081820818 .Array => {
20819 if (ty.arrayLenIncludingSentinel() == 0) return;
2081920820 const elem_ty = ty.childType();
2082020821 return sema.resolveTypeLayout(block, src, elem_ty);
2082120822 },
test/behavior/array.zig-3
......@@ -479,10 +479,7 @@ test "sentinel element count towards the ABI size calculation" {
479479
480480test "zero-sized array with recursive type definition" {
481481 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest; // TODO
482 if (builtin.zig_backend == .stage2_llvm) return error.SkipZigTest; // TODO
483 if (builtin.zig_backend == .stage2_wasm) return error.SkipZigTest; // TODO
484482 if (builtin.zig_backend == .stage2_c) return error.SkipZigTest; // TODO
485 if (builtin.zig_backend == .stage2_x86_64) return error.SkipZigTest; // TODO
486483 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO
487484
488485 const U = struct {