From cf9207f171250c3e47cad9c5ea35462890849112 Mon Sep 17 00:00:00 2001 From: TermiNexus Date: Wed, 19 Aug 2026 05:11:51 +0800 Subject: [PATCH] =?UTF-8?q?fix(struct):=20PARENT=5FMAX=2016=E2=86=9264=20?= =?UTF-8?q?=E4=BF=AE=E5=A4=8D=20Generator=2043=20=E7=88=B6=E7=B1=BB?= =?UTF-8?q?=E5=AD=97=E6=AE=B5=E6=88=AA=E6=96=AD?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit 拆分重构使 Generator 父类增至 43 个,PARENT_MAX=16 使 _collect_parents/ set_parent_names 只收前 16 个父类 → StmtGenMixin(#40) 等字段丢失 → 结构体 缺 DiagStmtCount → __init__ 写 self.DiagStmtCount "属性写入失败"。FIELD_MAX 128→256 防字段静默截断;MRO_MAX 16→64 保证父类方法解析可达。两处常量 (HandlesStruct/StructGenMixin)同步提升。 --- App/lib/core/Gen/StructGenMixin.vp | 10 ++++++---- App/lib/core/Handles/HandlesStruct.vp | 15 +++++++++------ 2 files changed, 15 insertions(+), 10 deletions(-) diff --git a/App/lib/core/Gen/StructGenMixin.vp b/App/lib/core/Gen/StructGenMixin.vp index 4ddb51e..05927a3 100644 --- a/App/lib/core/Gen/StructGenMixin.vp +++ b/App/lib/core/Gen/StructGenMixin.vp @@ -35,13 +35,15 @@ import lib.core.Handles.HandlesStruct as HandlesStruct # 常量(与 HandlesStruct 保持一致) # ============================================================ STRUCT_MAX: t.CDefine = 512 -# 字段槽位上限制(与 HandlesStruct 保持一致;Generator 12 Mixin 展平 ~97 字段, +# 字段槽位上限制(与 HandlesStruct 保持一致;Generator 43 Mixin 展平 ~120 字段, # 2026-08-16 追加78:64 截断导致第 9+ 父类字段(StmtGenMixin.DiagStmtCount 等) # 丢失 → __init__ 写 self.DiagStmtCount "属性写入失败") -FIELD_MAX: t.CDefine = 128 +FIELD_MAX: t.CDefine = 256 FIELD_NAME_MAX: t.CDefine = 64 -PARENT_MAX: t.CDefine = 16 -MRO_MAX: t.CDefine = 16 +# 多继承(MRO)支持:单类最大父类数 / MRO 链最大长度(Generator 43 父类; +# PARENT_MAX=16 时第 17+ 父类字段丢失 → __init__ 写 self.DiagStmtCount 失败) +PARENT_MAX: t.CDefine = 64 +MRO_MAX: t.CDefine = 64 # ============================================================ diff --git a/App/lib/core/Handles/HandlesStruct.vp b/App/lib/core/Handles/HandlesStruct.vp index 06a64f0..255f2ed 100644 --- a/App/lib/core/Handles/HandlesStruct.vp +++ b/App/lib/core/Handles/HandlesStruct.vp @@ -28,13 +28,16 @@ import lib.core.VLogger as VLogger # ============================================================ STRUCT_MAX: t.CDefine = 512 -# 字段槽位上限制(Generator 12 Mixin 展平 ~97 字段;2026-08-16 追加78:64 -# 截断导致第 9+ 父类字段丢失 → __init__ 写 self.DiagStmtCount "属性写入失败") -FIELD_MAX: t.CDefine = 128 +# 字段槽位上限制(Generator 43 Mixin 展平 ~120 字段;2026-08-16 追加78:64 +# 截断导致第 9+ 父类字段丢失 → __init__ 写 self.DiagStmtCount "属性写入失败"。 +# 拆分重构使 Generator 父类数增至 43,FIELD_MAX 提至 256 防静默截断) +FIELD_MAX: t.CDefine = 256 FIELD_NAME_MAX: t.CDefine = 64 -# 多继承(MRO)支持:单类最大父类数 / MRO 链最大长度(Generator 12 父类) -PARENT_MAX: t.CDefine = 16 -MRO_MAX: t.CDefine = 16 +# 多继承(MRO)支持:单类最大父类数 / MRO 链最大长度(Generator 43 父类; +# PARENT_MAX=16 时 _collect_parents/set_parent_names 只收前 16 个 → 第 17+ +# 父类字段丢失 → __init__ 写 self.DiagStmtCount "属性写入失败" 根因) +PARENT_MAX: t.CDefine = 64 +MRO_MAX: t.CDefine = 64 # ============================================================