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:
1 parent
7e68e76ec4
commit
967095df5b
8 files changed
+81
-161
No files matched your search
@@ -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 依赖未就绪时
|
||||
# 误报真实错误,中断多遍收敛;真实错误交给收敛检查兜底)
|
||||
|
||||
Reference in new issue
Block a user