authorgravatar for git@vexu.euVeikka Tuominen <git@vexu.eu> 2023-01-16 14:16:47+02:00
committergravatar for git@vexu.euVeikka Tuominen <git@vexu.eu> 2023-01-17 20:28:43+02:00
log8b35f09f4ae29eb2768d47e8a8bae0f4131d6bad
treeef55b1531dcc83b33e76f71847d88c57f13d56ea
parent6b037bad590bd6c319af336b6d3017c33d6834ba

Sema: resolve lazy values in switch prong items

Closes #14330

2 files changed, 15 insertions(+), 0 deletions(-)

src/Sema.zig+1
......@@ -11288,6 +11288,7 @@ fn resolveSwitchItemVal(
1128811288 // Only if we know for sure we need to report a compile error do we resolve the
1128911289 // full source locations.
1129011290 if (sema.resolveConstValue(block, .unneeded, item, "")) |val| {
11291 try sema.resolveLazyValue(val);
1129111292 return TypedValue{ .ty = item_ty, .val = val };
1129211293 } else |err| switch (err) {
1129311294 error.NeededSourceLocation => {
test/behavior/switch.zig+14
......@@ -686,3 +686,17 @@ test "enum value without tag name used as switch item" {
686686 _ => return error.TestFailed,
687687 }
688688}
689
690test "switch item sizeof" {
691 const S = struct {
692 fn doTheTest() !void {
693 var a: usize = 0;
694 switch (a) {
695 @sizeOf(struct {}) => {},
696 else => return error.TestFailed,
697 }
698 }
699 };
700 try S.doTheTest();
701 comptime try S.doTheTest();
702}