From 38e32fdeb13b90c8b32c0e1e9ac1c119589a03f0 Mon Sep 17 00:00:00 2001 From: TermiNexus Date: Mon, 17 Aug 2026 06:38:00 +0800 Subject: [PATCH] =?UTF-8?q?fix(gen):=20=E4=BF=AE=E5=A4=8D=20HandlesExprCal?= =?UTF-8?q?l=20=E5=A7=94=E6=89=98=E7=AD=BE=E5=90=8D=E7=BC=BA=E5=8F=82?= =?UTF-8?q?=E6=95=B0=EF=BC=88=5Finfer=5Fgeneric=5Fctor=5Ftype=5Farg/=5FLoo?= =?UTF-8?q?kupMethodRetTyFromTextLL=EF=BC=89?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- App/lib/core/Handles/HandlesExprCall.vp | 10 ++++++---- 1 file changed, 6 insertions(+), 4 deletions(-) diff --git a/App/lib/core/Handles/HandlesExprCall.vp b/App/lib/core/Handles/HandlesExprCall.vp index 6faf8a5..168f18d 100644 --- a/App/lib/core/Handles/HandlesExprCall.vp +++ b/App/lib/core/Handles/HandlesExprCall.vp @@ -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"