diff --git a/lib/core/Handles/HandlesImports.py b/lib/core/Handles/HandlesImports.py index c187f63..d9e7688 100644 --- a/lib/core/Handles/HandlesImports.py +++ b/lib/core/Handles/HandlesImports.py @@ -1920,6 +1920,10 @@ class ImportHandle(BaseHandle): # 同时处理父类 class_members 全为占位符的情况(清除后重新加载)。 _any_parent_loaded: bool = False _all_inherited: list[tuple] = [] + # 按继承源去重的跨父类共享 seen 集合(必须在 for 循环外,跨所有父类 + # 共享——否则每个父类新建 seen,菱形祖先(如 ClassGenBase)被每个 + # 继承它的 ClassGen* 父类各展平一次 → 重复(Generator 曾 707 字段) + _seen_flat_cls: set[str] = set() for _ParentClass in _ParentClasses: if not _ParentClass: continue @@ -1954,7 +1958,6 @@ class ImportHandle(BaseHandle): # stub struct 布局不一致 → 并行 worker 里 this_adjust 算不出偏移 → 继承 # 方法 self 不调整 → 运行时错位崩溃(register_reexport 写 0x3f)。 # 递归每类只处理一次,每类只贡献非祖先字段。 - _seen_flat_cls: set[str] = set() def _FlattenExt(cls_name: str) -> None: if cls_name in _seen_flat_cls: return