From d7530c8f7bb14e860898c74aa6a20d86379c8822 Mon Sep 17 00:00:00 2001 From: William Sengir Date: Wed, 23 Mar 2022 08:44:11 -0700 Subject: [PATCH] stage2: make zero-sized array not cause recursive type definition --- src/Sema.zig | 1 + test/behavior/array.zig | 3 --- 2 files changed, 1 insertion(+), 3 deletions(-) diff --git a/src/Sema.zig b/src/Sema.zig index 17341850738e237a974494a1b171117c0afe5573..03a8a8905423d6ffef689321dbaa4c9ee3691673 100644 --- a/src/Sema.zig +++ b/src/Sema.zig @@ -20816,6 +20816,7 @@ pub fn resolveTypeLayout( .Struct => return sema.resolveStructLayout(block, src, ty), .Union => return sema.resolveUnionLayout(block, src, ty), .Array => { + if (ty.arrayLenIncludingSentinel() == 0) return; const elem_ty = ty.childType(); return sema.resolveTypeLayout(block, src, elem_ty); }, diff --git a/test/behavior/array.zig b/test/behavior/array.zig index bbaf3b3c34a05d1ef31967650fddb49b873784ce..7e55bb13c34a562814647189a168105c9cb13ef2 100644 --- a/test/behavior/array.zig +++ b/test/behavior/array.zig @@ -479,10 +479,7 @@ test "sentinel element count towards the ABI size calculation" { test "zero-sized array with recursive type definition" { if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest; // TODO - if (builtin.zig_backend == .stage2_llvm) return error.SkipZigTest; // TODO - if (builtin.zig_backend == .stage2_wasm) return error.SkipZigTest; // TODO if (builtin.zig_backend == .stage2_c) return error.SkipZigTest; // TODO - if (builtin.zig_backend == .stage2_x86_64) return error.SkipZigTest; // TODO if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO const U = struct { -- 2.54.0