feat(bootstrap): function pointer types + C emission

- Add tekFunc AST node and parser support for func(Params) -> Ret
- Add tkFunc type resolution in sema and hir_lower
- Add &FuncName address-taking yielding tkMutRef(tkFunc)
- Fix C emission: function pointer params use Ret (*name)(Params) syntax
  via cParamDecl helper that embeds the name inside (*)
- Fix forward declarations and temp declarations for function pointers
- Add funcPtrTypes table in C backend so &Fn temps get proper type
- Add _test_funcptr integration test
This commit is contained in:
2026-06-08 22:31:32 +03:00
parent 3f0a3901ca
commit 2e536488e6
9 changed files with 99 additions and 9 deletions
+4
View File
@@ -183,6 +183,10 @@ proc isAssignableTo*(a, b: Type): bool =
return true
if b.isDynRef and a.isMutRef:
return true
# &mut func(...) -> func(...) (function pointer decay)
if a.isMutRef and b.kind == tkFunc:
if a.inner.len > 0 and a.inner[0].kind == tkFunc:
return true
return false
# String representation