TermiNexus
cad70fa8f3
chore(诊断): len 分派 fail-fast 追加成员槽来源明细(项数/base/下标/名序/布局槽/实例同源判定)
类别:b(机制漏豁免)/诊断增强,不改变任何成功路径。
现场:编译 StmtGenDeclMixin.vp:242 `len(mcc_pre.children)` 报
[fast-fail] len(mcc_pre.children) 分派 'list[10f3f43ddd447eec.AST*].__len__' 失败:
类='MatchCase' 偏移=6 接收者类型=i32
静态可查到的**正确**布局(temp/8c9751aec486f41c.stub.ll 实测 10 槽):
[0]i8*(vtable) [1]AST*(parent) [2]MemManager*(pool) [3..6]i32(lineno/col_offset/
end_lineno/end_col_offset) [7]list[AST*]*(children) [8]AST*(pattern) [9]AST*(guard)
声明侧(.vpi):`class AST` 7 字段 + `class MatchCase(AST)` 2 字段 ⇒ 表 9 项、
children 表内下标 6 ⇒ 正确 base=1 ⇒ 正确偏移 7。而失败现场是 6 ⇒ **base 被算成 0**
(表 10 项触发 `_Delta==0 ⇒ base=0`,或取值处实例与类键实例不同源)——
只看 `偏移=6` 无法区分,故把两侧读数打进报文。
- `AssignHandle._DescribeMemberSlot` 增可选 `StructHint`:base 与失败现场**同源**
(不传时行为与改前逐字一致)。
- `HandlesExprBuiltin._HandleLenLlvm` 的 len 分派失败路径(仅该路径)追加上述明细:
`class_members[类] 项数/base/下标/声明槽类型`、**完整名序**、
`布局 struct name+元素数+elements[offset]`、`structs[类] 与布局是否同一对象`。
明细生成失败只追加一行说明,绝不掩盖原始 TypeError。
静态核验:py_compile 通过;全仓 symtable 未定义名扫描 0 条。
2026-09-30 16:16:38 +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 16:16:38 +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 15:44:13 +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 16:16:38 +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 15:44:10 +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