fix(gen): 修复 HandlesExprCall 委托签名缺参数(_infer_generic_ctor_type_arg/_LookupMethodRetTyFromTextLL)

This commit is contained in:
TermiNexus committed 2026-08-17 06:38:00 +08:00
1 parent 1718738a19
commit 38e32fdeb1
1 file changed
+6 -4
+6 -4
View File
@@ -840,12 +840,13 @@ def _ParseLLVMRetTyStr(pool: memhub.MemBuddy | t.CPtr,
def _LookupMethodRetTyFromTextLL(pool: memhub.MemBuddy | t.CPtr,
class_sha1: str,
class_name: str,
method_name: str) -> llvmlite.LLVMType | t.CPtr:
method_name: str,
use_bare: int = 0) -> llvmlite.LLVMType | t.CPtr:
"""从依赖模块的 text.ll 中查找方法返回类型(委托到 gen._LookupMethodRetTyFromTextLL)"""
import lib.core.Gen.Generator as Generator
g: Generator.Generator | t.CPtr = (Generator.Generator | t.CPtr)(t.CVoid(_g_gen, t.CPtr))
if g is not None:
return g._LookupMethodRetTyFromTextLL(pool, class_sha1, class_name, method_name)
return g._LookupMethodRetTyFromTextLL(pool, class_sha1, class_name, method_name, use_bare)
return None
@@ -1138,12 +1139,13 @@ def _extract_type_args_from_slice(pool: memhub.MemBuddy | t.CPtr,
# 且缺少 __new__ 方法名后缀,导致链接报 undefined reference。
# ============================================================
def _infer_generic_ctor_type_arg(pool: memhub.MemBuddy | t.CPtr,
arg_node: ast.AST | t.CPtr) -> str:
arg_node: ast.AST | t.CPtr,
class_name: str) -> str:
"""从构造实参 AST 推断泛型类型实参名;无法推断时默认 "int"(与 TPC 一致)(委托到 gen._infer_generic_ctor_type_arg)"""
import lib.core.Gen.Generator as Generator
g: Generator.Generator | t.CPtr = (Generator.Generator | t.CPtr)(t.CVoid(_g_gen, t.CPtr))
if g is not None:
return g._infer_generic_ctor_type_arg(pool, arg_node)
return g._infer_generic_ctor_type_arg(pool, arg_node, class_name)
return "int"