Commit 89db4f2e93

David Rubin <daviru007@icloud.com>
2025-03-21 02:50:12
Sema: use unwrapped generic owner in `getFuncInstanceIes`
1 parent 972cab5
Changed files (2)
src
test
behavior
src/InternPool.zig
@@ -9455,7 +9455,7 @@ pub fn getFuncInstanceIes(
     try items.ensureUnusedCapacity(4);
 
     const generic_owner = unwrapCoercedFunc(ip, arg.generic_owner);
-    const generic_owner_ty = ip.indexToKey(ip.funcDeclInfo(arg.generic_owner).ty).func_type;
+    const generic_owner_ty = ip.indexToKey(ip.funcDeclInfo(generic_owner).ty).func_type;
 
     // The strategy here is to add the function decl unconditionally, then to
     // ask if it already exists, and if so, revert the lengths of the mutated
test/behavior/generics.zig
@@ -619,3 +619,15 @@ test "generic parameter resolves to comptime-only type but is not marked comptim
     const ct_result = comptime S.foo(u8, false, S.bar);
     comptime std.debug.assert(ct_result == 123);
 }
+
+test "instantiate coerced generic function" {
+    const S = struct {
+        fn generic(comptime T: type, arg: *const u8) !void {
+            _ = T;
+            _ = arg;
+        }
+    };
+    const coerced: fn (comptime type, *u8) anyerror!void = S.generic;
+    var x: u8 = 20;
+    try coerced(u8, &x);
+}