fix(gen): 补回拆分时丢失的 6 个常量(枚举/泛型/vtable/元数据)

- ENUM_MEMBER_MAX_LOCAL/RENUM_CLASS_MAX/RENUM_VARIANT_PER_CLASS/RENUM_ALIAS_MAX 补回 ClassGenEnum
  (未定义名在常量上下文折叠为 0 → 枚举成员收集被静默禁用 → register_enum 永不调用
  → EnumTable 恒空 → `OpKind.Add` 裸名 NameError,includes/ast/base.vp L241 根因)
- SPEC_CACHE_MAX 补回 ClassGenGeneric(原 HandlesClassDef 定义)
- VTBL_METHOD_MAX 补回 ClassGenVTable
- META_MAX/META_KEY_LEN 补回 ClassGenBase
This commit is contained in:
TermiNexus committed 2026-08-21 06:58:47 +08:00
1 parent 89995dffde
commit 426bff7daa
4 files changed
+19

No files matched your search

+3
View File
@@ -37,6 +37,9 @@ BUILTIN_EH_VALUE_ERROR: t.CDefine = 1
BUILTIN_EH_RUNTIME_ERROR: t.CDefine = 3
BUILTIN_EH_EXCEPTION: t.CDefine = 99
EH_USER_CODE_START: t.CDefine = 100
# 方法元数据表容量(原 HandlesClassDef.META_MAX/META_KEY_LEN,阶段 D 拆分遗漏)
META_MAX: t.CDefine = 512
META_KEY_LEN: t.CDefine = 128
# ============================================================
+12
View File
@@ -16,6 +16,18 @@ import lib.core.CompilerFactory as CompilerFactory
import lib.core.Gen.ClassGenBase as ClassGenBase
# ============================================================
# 本地常量副本(原 HandlesEnum.vp / HandlesClassDef.vp 定义,去除 Handles
# 层拆分时随文件删除而丢失——未定义名在常量上下文被 TPV 折叠为 0,曾导致
# 枚举成员收集被静默跳过、register_enum 永不调用 → 所有 CEnum 注册失败 →
# `OpKind.Add` 裸名 NameError(includes/ast/base.vp L241 根因))
# ============================================================
ENUM_MEMBER_MAX_LOCAL: t.CDefine = 128 # 与 StmtGenDeclMixin.ENUM_MEMBER_MAX 一致
RENUM_CLASS_MAX: t.CDefine = 64
RENUM_VARIANT_PER_CLASS: t.CDefine = 32
RENUM_ALIAS_MAX: t.CDefine = 512
# ============================================================
# ClassGenEnum - ClassGenMixin 拆分(阶段 D):enum/union/renum 定义与变体表
#
+2
View File
@@ -25,6 +25,8 @@ GENERIC_SPEC_MAX_DEPTH: t.CDefine = 64
# 泛型模板表容量上限(与 GenericClassNames 等 pool 表可容纳的模板数对齐;
# 原 ClassGenMixin 顶层常量,阶段 D 拆分时遗漏,补回)
GENERIC_TEMPLATE_MAX: t.CDefine = 512
# 泛型特化缓存表容量(原 HandlesClassDef.SPEC_CACHE_MAX,阶段 D 拆分遗漏)
SPEC_CACHE_MAX: t.CDefine = 512
# ============================================================
# ClassGenGeneric - ClassGenMixin 拆分(阶段 D):泛型模板注册/特化/克隆
+2
View File
@@ -20,6 +20,8 @@ import lib.core.Handles.ExprCallTable as ExprCallTable
# 方法元数据 flag:TLS(@t.TLS 装饰器,对齐 ClassGenBase 本地常量;本地副本避免跨模块 CDefine 查找)
META_TLS: t.CDefine = 32
# 虚表方法数上限(原 HandlesClassDef.VTBL_METHOD_MAX,阶段 D 拆分遗漏)
VTBL_METHOD_MAX: t.CDefine = 32
# ============================================================
# ClassGenVTable - ClassGenMixin 拆分(阶段 D):vtable 收集/生成/方法翻译