TermiNexus
393ffefcd5
fix(HandlesAssign): self 属性写入的基址收口统一为 _ConcretizeGepBase;收口失败不再静默丢写
类别:a(编译器缺陷)。
1) 收口统一:`self.字段 = v` 的基址此前走**内联**孪生体搜索,缺
`_TryLoadStructFromStub` 一步 —— 类键那份仍 opaque 且 Gen.structs 里尚无已具化
孪生体时(body 只在 stub 文件里待加载),内联版会一路走到 GEP 撞 opaque 守卫
(现场:includes/ast/astaux.vp:165 `self.arg = _copy_str(pool, arg)`,基址 pointee
是 opaque 的 %"8312ce86a2fd82c0.Keyword"*,而同短名 'Keyword' 键那份已具化 10 槽)。
现改为调用读路径的**同一判据源** HandlesExprAttr._ConcretizeGepBase /
_ConcretePointeeFor:① 类键那份 + stub 补 body → ② 同短名已具化孪生体 →
③ 都拿不到则原样返回、由守卫报根因。偏移与 GEP 同源(返回实例同时作为
_get_member_offset 的 StructHint)。
2) 收口失败改 fail-fast:三条路都拿不到 elements 时,此前会落回
`offset >= max_offset` 的「存回临时变量」分支 —— 该临时变量不在对象布局里,
后续 `self.attr` 读路径按 GEP 取值,写入被**静默丢弃**。现直接 FailFastError,
并报出三次尝试的结果(不兜底)。
静态核验:py_compile 通过;全仓 symtable 未定义名扫描 0 条;以 _GuardIrBuilder +
真实 _ConcretizeGepBase 复现现场实例形状(opaque '8312ce86a2fd82c0.Keyword' +
已具化 'fef783da4d24330d.Keyword'(10 槽))→ 解析成功、GEP 正常发出(索引 3);
未收口的裸 opaque 基址仍被守卫拦下。
2026-09-30 15:14:31 +08:00
..
2026-08-21 12:36:00 +08:00
2026-09-30 15:14:31 +08:00
2026-08-17 09:36:38 +08:00
2026-09-30 15:14:31 +08:00
2026-09-30 09:53:41 +08:00
2026-09-27 00:19:44 +08:00
2026-09-30 14:45:55 +08:00
2026-09-26 19:27:22 +08:00
2026-09-30 10:58:23 +08:00
2026-08-17 09:36:38 +08:00
2026-09-30 09:53:41 +08:00
2026-09-29 13:00:11 +08:00
2026-09-30 14:42:56 +08:00
2026-09-30 14:42:56 +08:00
2026-09-30 15:14:31 +08:00
2026-09-11 22:47:21 +08:00
2026-09-30 09:53:41 +08:00
2026-09-27 15:16:08 +08:00
2026-09-26 19:27:22 +08:00
2026-09-28 13:57:04 +08:00
2026-09-30 09:53:41 +08:00
2026-08-17 09:36:38 +08:00
2026-09-30 14:55:40 +08:00
2026-09-30 14:42:56 +08:00
2026-08-17 09:36:38 +08:00
2026-09-28 15:10:39 +08:00
2026-09-26 19:27:22 +08:00
2026-08-17 09:36:38 +08:00
2026-09-29 17:35:56 +08:00
2026-08-03 02:00:49 +08:00
2026-09-26 19:27:22 +08:00