TermiNexus
0392ccdea0
fix(tpc): fail-fast 报文补「属性基址取证事实」,属性读返回 None 不再靠反推
类别:a(编译器缺陷 —— fail-fast 报文缺取证事实,无法一眼定位根因)
现象:HandlesBase._RaiseUnresolvedExpr 与 HandlesExprCall._RequireArgValue 在
「属性读取值失败」时只报 Node 形态(Attribute),报错点与真因相隔数层调用,
需要人工从 Gen.var_struct_class / Gen.structs / Gen.class_members 反推。
改动:
1. HandlesBase 抽出公开方法 _DescribeAttrBase(Gen, Node) -> str(原 _RaiseUnresolvedExpr
内联代码抽出,行为不变),对两类基座给事实:
- Name 基座:var_struct_class / global_struct_class / alloca 类型 / 是否命中
Gen.structs / class_members 字段数与字段名单(前 12)。
- Call(func=BinOp(BitOr)) 强转基座:联合基类名 + 短名是否命中 Gen.structs +
字段数,并显式标注「强转基座本应走 _FailFastAttrCallBase 详细报文,此处仍是本条
⇒ 那条 fail-fast 未触发」,把「另一处缺口」这一事实直接写进报文。
2. _RaiseUnresolvedExpr 改调 _DescribeAttrBase(删除内联重复代码)。
3. HandlesExprCall._RequireArgValue 在实参是 Attribute 时追加同一份基址诊断
(与 HandlesBase 共用,保证两处口径逐字一致)。
不改变任何判定逻辑,仅补取证事实。
2026-09-29 17:40:23 +08:00
..
2026-09-29 17:40:23 +08:00
2026-09-29 16:37:03 +08:00
2026-09-28 13:57:04 +08:00
2026-07-18 19:25:40 +08:00
2026-08-17 09:36:38 +08:00
2026-07-18 19:25:40 +08:00
2026-07-18 19:25:40 +08:00
2026-07-18 19:25:40 +08:00
2026-07-18 19:25:40 +08:00
2026-09-29 13:17:36 +08:00
2026-07-30 16:33:56 +08:00
2026-09-26 19:27:22 +08:00
2026-09-26 19:27:22 +08:00
2026-09-28 18:14:45 +08:00
2026-07-18 19:25:40 +08:00
2026-09-26 19:27:22 +08:00
2026-09-28 18:14:45 +08:00
2026-09-28 18:25:57 +08:00
2026-09-29 13:17:36 +08:00
2026-07-18 19:25:40 +08:00
2026-09-29 13:17:36 +08:00
2026-07-18 19:25:40 +08:00
2026-09-29 16:16:01 +08:00