fix(tpc): 跨模块模块级变量类登记与 Mod.Var.Field 链解析;并停止跟踪 __pycache__/*.pyc

This commit is contained in:
TermiNexus committed 2026-09-12 11:51:42 +08:00
1 parent 9257dd841f
commit 015fbf17cf
100 files changed
+237 -1

No files matched your search

+22
View File
@@ -639,6 +639,28 @@ class BaseHandle:
struct_keys: list[str] = [k for k in (getattr(Gen, 'structs', {}) or {})
if _short(k) == _short(cn)]
seg.append(f"structs_keys={struct_keys or 'NONE'}")
# 模块别名链(Mod.Var.Field,如 CompilerFactory.factory.PermPool):
# 最内层 Name 是**模块名**,上面的登记 dump(var_struct_class 等)对它
# 恒为 None、无法定位断点。补逐跳诊断:Mod 的 sha1、`Mod.Var` 在全局量表
# 里的候选键命中与类型,直接指出断在哪一跳。
_chain: list[str] = []
_cur: ast.AST = Node
while isinstance(_cur, ast.Attribute):
_chain.append(_cur.attr)
_cur = _cur.value
_chain.reverse()
if _chain:
_sha1_map2: Any = getattr(Gen, 'ModuleSha1Map', {}) or {}
_gmap: Any = getattr(getattr(Gen, 'module', None), 'globals', {}) or {}
_mod_sha: Any = _sha1_map2.get(var)
seg.append(f"chain={var}.{'.'.join(_chain)} ModuleSha1Map[{var}]={_mod_sha!r}")
_hop: str = _chain[0]
_keys: list[str] = [f"{var}.{_hop}", _hop]
if _mod_sha:
_keys.append(f"{_mod_sha}.{_hop}")
for _k in _keys:
if _k in _gmap:
seg.append(f"globals[{_k}]={_ty_str(_gmap[_k])}")
return '\n'.join(seg)
except Exception:
return ''