Regression: Generic type could not be found in lambda inside macro #2853

This commit is contained in:
Christoffer Lerno
2026-01-27 14:23:41 +01:00
parent f3ede27f60
commit 0b5064683f
2 changed files with 31 additions and 0 deletions

View File

@@ -10947,6 +10947,11 @@ static inline bool sema_expr_analyse_lambda(SemaContext *context, Type *target_t
decl->var.is_read = true;
}
decl_flatten(decl)->is_external_visible = true;
if (context->generic_instance)
{
decl->is_templated = true;
decl->instance_id = declid(context->generic_instance);
}
vec_add(unit->module->lambdas_to_evaluate, decl);
}
else

View File

@@ -0,0 +1,26 @@
// #target: macos-x64
module main;
import foo;
fn void main()
{
foo::test{int}();
}
module foo <Type>;
macro void test()
{
var func = fn Type* ()
{
return mem::new(Type);
};
}
/* #expect: foo.ll
define weak ptr @"foo.test{int}$lambda1"() #0 {
entry:
%0 = call ptr @std.core.mem.calloc(i64 4) #1
ret ptr %0
}