diff --git a/lib/core/Handles/HandlesClassDef.py b/lib/core/Handles/HandlesClassDef.py index c4e85e2..73940f9 100644 --- a/lib/core/Handles/HandlesClassDef.py +++ b/lib/core/Handles/HandlesClassDef.py @@ -874,7 +874,21 @@ class ClassHandle(BaseHandle): _ec_target_c = _slc_name_c else: _st_sha1_c: str | None = (getattr(Gen, 'class_sha1_map', {}) or {}).get(_slc_name_c) - _ec_target_c = f'{_st_sha1_c}.{_slc_name_c}' if _st_sha1_c and f'{_st_sha1_c}.{_slc_name_c}' in Gen.structs else None + if _st_sha1_c and f'{_st_sha1_c}.{_slc_name_c}' in Gen.structs: + _ec_target_c = f'{_st_sha1_c}.{_slc_name_c}' + else: + # 短名模糊扫描(对齐 HandlesAnnAssign 变量侧 + # 补偿 L597-602):跨模块 `mod.Class` 形态的 + # rowptr[Class] 字段在 class_sha1_map 尚无该短名 + # 时上面两路全 miss → element_class 静默缺失 → + # 字段方法调用(factory.PermPool.alloc)链尾类名 + # 丢失 → TPC 调用分派返回 i32 0 哨兵 → 误报 + # "Unknown module: ...PermPool"。 + for _ec_k_c in Gen.structs: + _ec_short_c: str = _ec_k_c.split('.')[-1] if '.' in _ec_k_c else _ec_k_c + if _ec_short_c == _slc_name_c: + _ec_target_c = _ec_k_c + break if _ec_target_c: if ClassName not in Gen.class_member_element_class: Gen.class_member_element_class[ClassName] = {} diff --git a/lib/core/Handles/HandlesImports.py b/lib/core/Handles/HandlesImports.py index 5eb421d..7a7d3f5 100644 --- a/lib/core/Handles/HandlesImports.py +++ b/lib/core/Handles/HandlesImports.py @@ -1864,7 +1864,21 @@ class ImportHandle(BaseHandle): _ec_target_s = _slc_name_s else: _st_sha1_s: str | None = (getattr(Gen, 'class_sha1_map', {}) or {}).get(_slc_name_s) - _ec_target_s = f'{_st_sha1_s}.{_slc_name_s}' if _st_sha1_s and f'{_st_sha1_s}.{_slc_name_s}' in Gen.structs else None + if _st_sha1_s and f'{_st_sha1_s}.{_slc_name_s}' in Gen.structs: + _ec_target_s = f'{_st_sha1_s}.{_slc_name_s}' + else: + # 短名模糊扫描(对齐 HandlesAnnAssign 变量侧 + # 补偿 L597-602):跨模块 `mod.Class` 形态的 + # rowptr[Class] 字段在 class_sha1_map 尚无该短名 + # 时上面两路全 miss → element_class 静默缺失 → + # 字段方法调用(factory.PermPool.alloc)链尾类名 + # 丢失 → TPC 调用分派返回 i32 0 哨兵 → 误报 + # "Unknown module: ...PermPool"。 + for _ec_k_s in Gen.structs: + _ec_short_s: str = _ec_k_s.split('.')[-1] if '.' in _ec_k_s else _ec_k_s + if _ec_short_s == _slc_name_s: + _ec_target_s = _ec_k_s + break if _ec_target_s: if ClassName not in Gen.class_member_element_class: Gen.class_member_element_class[ClassName] = {} diff --git a/lib/core/Handles/__pycache__/HandlesClassDef.cpython-312.pyc b/lib/core/Handles/__pycache__/HandlesClassDef.cpython-312.pyc index 25f0f62..3aa8bb3 100644 Binary files a/lib/core/Handles/__pycache__/HandlesClassDef.cpython-312.pyc and b/lib/core/Handles/__pycache__/HandlesClassDef.cpython-312.pyc differ diff --git a/lib/core/Handles/__pycache__/HandlesImports.cpython-312.pyc b/lib/core/Handles/__pycache__/HandlesImports.cpython-312.pyc index c7a2ab3..aa14395 100644 Binary files a/lib/core/Handles/__pycache__/HandlesImports.cpython-312.pyc and b/lib/core/Handles/__pycache__/HandlesImports.cpython-312.pyc differ