From 6484e279e54fc4232bae911dbe6fb76aa9e711ed Mon Sep 17 00:00:00 2001 From: Veikka Tuominen Date: Thu, 7 Sep 2023 12:58:36 +0300 Subject: [PATCH] AstGen: fix missing array type validation Closes #17084 --- src/AstGen.zig | 7 ++++++- .../cases/compile_errors/array_init_invalid_elem_count.zig | 7 +++++++ 2 files changed, 13 insertions(+), 1 deletion(-) diff --git a/src/AstGen.zig b/src/AstGen.zig index 00997e4ace..c93bab8294 100644 --- a/src/AstGen.zig +++ b/src/AstGen.zig @@ -1454,7 +1454,12 @@ fn arrayInitExpr( }, .ty, .coerced_ty => |ty_inst| { const arr_ty = if (types.array != .none) types.array else blk: { - break :blk try gz.addUnNode(.opt_eu_base_ty, ty_inst, node); + const arr_ty = try gz.addUnNode(.opt_eu_base_ty, ty_inst, node); + _ = try gz.addPlNode(.validate_array_init_ty, node, Zir.Inst.ArrayInit{ + .ty = arr_ty, + .init_count = @intCast(array_init.ast.elements.len), + }); + break :blk arr_ty; }; const result = try arrayInitExprInner(gz, scope, node, array_init.ast.elements, arr_ty, types.elem, .array_init); return rvalue(gz, ri, result, node); diff --git a/test/cases/compile_errors/array_init_invalid_elem_count.zig b/test/cases/compile_errors/array_init_invalid_elem_count.zig index d61987479d..23e00cd057 100644 --- a/test/cases/compile_errors/array_init_invalid_elem_count.zig +++ b/test/cases/compile_errors/array_init_invalid_elem_count.zig @@ -24,6 +24,12 @@ pub export fn entry2() void { var bla: A = .{ 1, 2, 3, 4 }; _ = bla; } +const S = struct { + list: [2]u8 = .{0}, +}; +export fn entry3() void { + _ = S{}; +} // error // backend=stage2 @@ -35,3 +41,4 @@ pub export fn entry2() void { // :16:17: error: expected 8 array elements; found 0 // :20:19: error: expected 8 vector elements; found 4 // :24:19: error: expected 8 array elements; found 4 +// :28:20: error: expected 2 array elements; found 1