From 164700740b9530ffc7622f9b4c664278a7f68160 Mon Sep 17 00:00:00 2001 From: mlugg Date: Thu, 6 Feb 2025 00:51:44 +0000 Subject: [PATCH] behavior: add test for old bug Resolves: #13013 --- test/behavior/generics.zig | 16 ++++++++++++++++ 1 file changed, 16 insertions(+) diff --git a/test/behavior/generics.zig b/test/behavior/generics.zig index 4e86419258..f8e0735b2e 100644 --- a/test/behavior/generics.zig +++ b/test/behavior/generics.zig @@ -589,3 +589,19 @@ comptime { // should override the result of the previous analysis. for (0..2) |_| _ = fn (void) void; } + +test "generic parameter resolves to comptime-only type but is not marked comptime" { + const S = struct { + fn foo(comptime T: type, rt_false: bool, func: fn (T) void) T { + if (rt_false) _ = foo(T, rt_false, func); + return 123; + } + fn bar(_: u8) void {} + }; + + const rt_result = S.foo(u8, false, S.bar); + try expect(rt_result == 123); + + const ct_result = comptime S.foo(u8, false, S.bar); + comptime std.debug.assert(ct_result == 123); +}