From 0f25dc15116eab05fb9845ac0d26b22e245a2dc7 Mon Sep 17 00:00:00 2001 From: TermiNexus Date: Tue, 18 Aug 2026 09:48:11 +0800 Subject: [PATCH] =?UTF-8?q?chore(gentype):=20resolve=5Fannotation=5Ftype?= =?UTF-8?q?=20=E5=8A=A0=20T=20=E6=9B=BF=E6=8D=A2=E6=96=AD=E7=82=B9?= =?UTF-8?q?=EF=BC=88=E6=96=B9=E6=B3=95=E4=BD=93=E5=B1=80=E9=83=A8=E6=B3=A8?= =?UTF-8?q?=E8=A7=A3=E8=B7=AF=E5=BE=84=EF=BC=89?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit 上一轮 resolve_generic_type_name 断点无输出——方法体局部注解 (elem_ptr: T|t.CPtr)的 T 替换走 resolve_annotation_type 的 Name(T) 分支(gen.GenericTypeArgs),非 resolve_generic_type_name。 在此打印 T 实际替换值,确认 list[str].get 的 T→str 还是 T→Value。 --- App/lib/core/Gen/TypeGenResolve.vp | 3 +++ 1 file changed, 3 insertions(+) diff --git a/App/lib/core/Gen/TypeGenResolve.vp b/App/lib/core/Gen/TypeGenResolve.vp index 5e3c90a..549f1ff 100644 --- a/App/lib/core/Gen/TypeGenResolve.vp +++ b/App/lib/core/Gen/TypeGenResolve.vp @@ -963,6 +963,9 @@ class TypeGenResolve(TypeGenBase.TypeGenBase): if gp_tpn is not None and string.strcmp(nm.id, gp_tpn) == 0: gp_ta: str = self.GenericTypeArgs.get(gp_i) if gp_ta is not None: + # 诊断(8fbba list[str].get 类型不匹配):方法体 T 替换 + # 的实际值。list[str] 特化时 T→str;T→Value 则上下文污染。 + stdio.printf("[DIAG] T 替换: %s -> %s\n", nm.id, gp_ta) # 自映射/污染实参防护(泛型循环套用): # 1) 实参与参数名完全一致(T→T) # 2) 实参串包含任一类型参数名(如 "T | t.CPtr"、" T "、