fix(gen): 修复 HandlesExprCall 委托签名缺参数(_infer_generic_ctor_type_arg/_LookupMethodRetTyFromTextLL)
This commit is contained in:
1 parent
1718738a19
commit
38e32fdeb1
1 file changed
+6
-4
@@ -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"
|
||||
|
||||
|
||||
|
||||
Reference in new issue
Block a user