TermiNexus
07ea8e2fd9
fix(tpc): 布局校验/修复排除 REnum 镜像布局 + set_body 失败带回滚与上下文
a 编译器缺陷(承接 b8ed33a2 / 7fb0e498):REnum 的 struct body 是 **max-variant
镜像布局** —— class_members 里的名字是*变体*而非字段,变体嵌套结构体也必须逐字
镜像主结构体。此前两处按"声明类型 vs 槽类型"的校验/修复会把这类布局当成错位:
- Step 4 前置校验可能据此清 _elements 重建;
- _SyncStructBodyTypes 可能据此改写布局(跨模块 GEP 偏移随即与定义端失配)。
新增 _IsRenumLayoutClass(主 REnum 自身 / `<REnum>_<Variant>`,判据走 SymbolTable 的
IsRenum)并在两处排除。
另外:就地修复的 `_elements = None` + `set_body` 一旦被 llvmlite 拒绝
(`<name> is already defined`,现场 fd4cd0ec583f42b9.Generator),原来会抛出这句
毫无上下文的裸 RuntimeError。现改为:捕获后**直接写回原 _elements 回滚**,再抛
FailFastError 带上类名 / struct / 原异常 / 元素数前后值,既不留中间状态也不再含糊。
2026-09-29 11:34:17 +08:00
..
2026-07-18 19:25:40 +08:00
2026-09-28 23:23:02 +08:00
2026-09-17 14:52:37 +08:00
2026-09-28 15:10:39 +08:00
2026-09-29 00:19:06 +08:00
2026-09-26 19:27:22 +08:00
2026-09-28 23:32:23 +08:00
2026-09-29 11:34:17 +08:00
2026-09-26 19:27:22 +08:00
2026-07-18 19:25:40 +08:00