From 8b9161179d08a3f1dc22ea61e6165a0c638bfae3 Mon Sep 17 00:00:00 2001 From: Jacob Young Date: Thu, 10 Aug 2023 03:25:35 -0400 Subject: Sema: avoid deleting runtime side-effects in comptime initializers Closes #16744 --- test/behavior/array.zig | 24 ++++++++++++++++++++++++ 1 file changed, 24 insertions(+) (limited to 'test/behavior/array.zig') diff --git a/test/behavior/array.zig b/test/behavior/array.zig index a4cac26569..523855161a 100644 --- a/test/behavior/array.zig +++ b/test/behavior/array.zig @@ -775,3 +775,27 @@ test "array init with no result pointer sets field result types" { try expect(y == x); } + +test "runtime side-effects in comptime-known array init" { + var side_effects: u4 = 0; + const init = [4]u4{ + blk: { + side_effects += 1; + break :blk 1; + }, + blk: { + side_effects += 2; + break :blk 2; + }, + blk: { + side_effects += 4; + break :blk 4; + }, + blk: { + side_effects += 8; + break :blk 8; + }, + }; + try expectEqual([4]u4{ 1, 2, 4, 8 }, init); + try expectEqual(@as(u4, std.math.maxInt(u4)), side_effects); +} -- cgit v1.2.3