fix(gen): ClassGen 拆分遗漏的 12 个顶层 CDefine 常量补回
GSListNode 泛型特化报'深度=1'递归过深根因:GENERIC_SPEC_MAX_DEPTH 在阶段 D 拆分时从 ClassGenMixin 顶层遗漏,TPC 解析为 0 → 任何特化 立即触发守卫。对比拆分前后顶层 CDefine 全量比对,补回遗漏 12 个: - ClassGenGeneric: GENERIC_SPEC_MAX_DEPTH=64 / GENERIC_TEMPLATE_MAX=512 - ClassGenBase: META_TLS / CLASS_META_MAX / DECOR_FUNC_MAX / DECOR_NAME_LEN / EXCEPTION_MAX / EXCEPTION_NAME_LEN / BUILTIN_EH_* / EH_USER_CODE_START - ClassGenVTable: META_TLS(本地副本) 全部本地副本模式,避免跨模块 CDefine 查找 bug
This commit is contained in:
1 parent
ebfc74063f
commit
d0cf283228
3 files changed
+36
No files matched your search
@@ -20,6 +20,29 @@ import lib.core.StubMerger as StubMerger
|
||||
import lib.core.CompilerFactory as CompilerFactory
|
||||
|
||||
|
||||
# ============================================================
|
||||
# 本地常量(阶段 D 拆分时从 ClassGenMixin 顶层遗漏,补回:
|
||||
# 方法元数据/类元数据/装饰器/异常表容量与编码;本地副本避免跨模块 CDefine 查找)
|
||||
# ============================================================
|
||||
# 方法元数据 flag 位(对齐 TPC HandlesBase _METHOD_META_*)
|
||||
META_TLS: t.CDefine = 32
|
||||
# 类编译期元数据表容量上限(__provides__/__requires__/__require_must__)
|
||||
CLASS_META_MAX: t.CDefine = 256
|
||||
# 自定义装饰器 wrapper 表容量上限(带 @decor 的函数数)
|
||||
DECOR_FUNC_MAX: t.CDefine = 64
|
||||
# 装饰器表槽内函数名/wrapper 名长度(含 NUL)
|
||||
DECOR_NAME_LEN: t.CDefine = 128
|
||||
# 异常类注册表容量上限(class X(Exception) 自定义异常类)
|
||||
EXCEPTION_MAX: t.CDefine = 64
|
||||
# 异常类表槽内类名/父类名长度(含 NUL)
|
||||
EXCEPTION_NAME_LEN: t.CDefine = 128
|
||||
# 内置异常编码(对齐 TPC HandlesBase.py EXCEPTION_CODE_MAP);
|
||||
# KeyError=6 IOError=7 OSError=8 AssertionError=9 Exception=99;用户类从 100 起
|
||||
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
|
||||
|
||||
|
||||
# ============================================================
|
||||
# ClassGenBase - ClassGenMixin 拆分(阶段 D):字段 + 方法元数据/异常/继承检测/装饰器(Meta)
|
||||
|
||||
@@ -22,6 +22,15 @@ import lib.core.CompilerFactory as CompilerFactory
|
||||
|
||||
import lib.core.Gen.ClassGenBase as ClassGenBase
|
||||
|
||||
|
||||
# 泛型特化递归深度上限(泛型循环套用防护)
|
||||
# 正常嵌套特化深度 ≤ 3(如 list[list[str]]);64 远超合理值,命中即循环。
|
||||
# (原 HandlesClassDef/ClassGenMixin 顶层常量,阶段 D 拆分时遗漏,补回)
|
||||
GENERIC_SPEC_MAX_DEPTH: t.CDefine = 64
|
||||
# 泛型模板表容量上限(与 GenericClassNames 等 pool 表可容纳的模板数对齐;
|
||||
# 原 ClassGenMixin 顶层常量,阶段 D 拆分时遗漏,补回)
|
||||
GENERIC_TEMPLATE_MAX: t.CDefine = 512
|
||||
|
||||
# ============================================================
|
||||
# ClassGenGeneric - ClassGenMixin 拆分(阶段 D):泛型模板注册/特化/克隆
|
||||
#
|
||||
|
||||
@@ -22,6 +22,10 @@ import lib.core.CompilerFactory as CompilerFactory
|
||||
|
||||
import lib.core.Gen.ClassGenBase as ClassGenBase
|
||||
|
||||
|
||||
# 方法元数据 flag:TLS(@t.TLS 装饰器,对齐 ClassGenBase 本地常量;本地副本避免跨模块 CDefine 查找)
|
||||
META_TLS: t.CDefine = 32
|
||||
|
||||
# ============================================================
|
||||
# ClassGenVTable - ClassGenMixin 拆分(阶段 D):vtable 收集/生成/方法翻译
|
||||
#
|
||||
|
||||
Reference in new issue
Block a user