refactor(tpv): _deps_pending 置位收敛到唯一入口 _MarkDepsPending(S4 第一步)

- CallGenBase 新增 _MarkDepsPending(trans,kind,cls,method,dep,extra):一处实现「置标志 + 统一格式 [DEPDBG] + 持久化 _phaseA_pending.log」三连

- 14 处置位点(D7-1 清单:attr_read/attr_write/method_ret/mro_ret/mro_anc/special_ret/prop_ret/dispatch_ret/dispatch_sp/func_ret/func_mangled/global_stub/class_parent/class_field_ty)全部改经该入口

- 行为不变;DEPDBG 行格式统一为 pending(<kind>): mod=.. cls=.. method=.. dep=.. extra=..,供下一步按 kind 统计命中数、删除死点
This commit is contained in:
TermiNexus committed 2026-09-12 13:53:20 +08:00
1 parent 7e68e76ec4
commit 967095df5b
8 files changed
+81 -161

No files matched your search

+8 -22
View File
@@ -239,17 +239,10 @@ class ClassGenDef(ClassGenBase.ClassGenBase):
# 整类 defer(不注册)+ 标记 _deps_pending 下遍重译;模块级
# 变量/函数参数解析失败静默降级 i32(handle_module_level_var
# L422-426 / FuncGenMixin L482-483),不致命,本遍文件不写盘。
if trans is not None:
trans._deps_pending = 1
# [DEPDBG] 临时诊断:父类未注册即 pending(用后移除)
dbg_p: str = trans.ModuleSha1 if trans.ModuleSha1 is not None else "?"
stdio.printf("[DEPDBG] pending(class_parent): mod=%s cls=%s parent=%s\n",
dbg_p, class_name, pname if pname is not None else "none")
# 持久化(用后移除):供 Phase2 收敛失败最终诊断按调用方过滤
if trans.ModuleSha1 is not None:
self.Gen.CallGenBase._AppendPhaseAPending(
trans.ModuleSha1, "class_parent", class_name,
"-", "-", pname if pname is not None else "-")
# 触发面唯一入口(S4 收敛):置 _deps_pending + 诊断 + 持久化
self.Gen.CallGenBase._MarkDepsPending(
trans, "class_parent", class_name,
"-", "-", pname if pname is not None else "-")
return 0
pfc: int = parent_entry.FieldCount
for pfi in range(pfc):
@@ -404,17 +397,10 @@ class ClassGenDef(ClassGenBase.ClassGenBase):
# _deps_pending 下遍重译,不在本遍以残缺字段注册结构体。
# 真正的类型错误由 Phase A 收敛检查暴露("Phase A 无法完成
# 翻译: <file>,请检查依赖模块是否已编译/注册"),不静默掩盖。
if trans is not None:
trans._deps_pending = 1
# [DEPDBG] 临时诊断:字段注解类型未注册即 pending(用后移除)
dbg_f: str = trans.ModuleSha1 if trans.ModuleSha1 is not None else "?"
stdio.printf("[DEPDBG] pending(class_field_ty): mod=%s cls=%s field=%s\n",
dbg_f, class_name, tgt.id if tgt.id is not None else "none")
# 持久化(用后移除):供 Phase2 收敛失败最终诊断按调用方过滤
if trans.ModuleSha1 is not None:
self.Gen.CallGenBase._AppendPhaseAPending(
trans.ModuleSha1, "class_field_ty", class_name,
tgt.id if tgt.id is not None else "-", "-", "-")
# 触发面唯一入口(S4 收敛):置 _deps_pending + 诊断 + 持久化
self.Gen.CallGenBase._MarkDepsPending(
trans, "class_field_ty", class_name,
tgt.id if tgt.id is not None else "-", "-", "-")
return 0
# 旧行为:fast-fail NameError(已移除——Phase A 依赖未就绪时
# 误报真实错误,中断多遍收敛;真实错误交给收敛检查兜底)