TermiNexus
43853bc455
fix(HandlesExprAttr): 基座 pointee 与 Gen.structs 的匹配补「同 sha1 前缀」与「同短名唯一候选」
现场(Repl.vp:802):`ct_names: list[str]* = GenApi._g_gen.TypeGenCType.CTypedefNames`
的基座 `.TypeGenCType` 取值后 pointee 为 `%"750b8c10137d273e.TypeGenCType"*`(= 撤销
6a287b9 后的新 sha1),而 Gen.structs(250 键)里没有该 IR 名的实例 ⇒ 旧判据只有
"身份相同 / IR 全名逐字相同" ⇒ 全部未命中 ⇒ 属性链求值为空 → 带注解赋值判定"无值可存"
而终止编译。(a18ca4da 的记账正是把"基座形态 / pointee / 键数"三项事实直接印了出来,
本轮不必再猜。)
改动(判据分级,强到弱;找不到仍留痕失败,不兜底造类型):
① 身份相同(原判据);
② IR 全名逐字相同(原判据,覆盖"同名第二份实例");
③ 同 sha1 前缀 —— IR 名形如 `<sha1>.<短名>`,前缀相等即"同一模块的同一类";
④ 同短名——**仅当候选唯一**时放行(调用点算 `_UniqShortCN`):两个及以上同名类无法
判定是哪一个,宁可留痕失败也不选错布局(同名类冲突在本仓一律以 sha1 全名区分)。
同时把"未命中"记账扩为:列出分级判据、同短名候选清单,以及"候选 >1 会被主动拒绝"。
验证:py_compile 通过;`_PointeeMatchesStruct` 冒烟 6 例(身份 / 同名第二份实例 /
同短名不同 sha1 / 裸短名 / 不同类 / 非 Identified 一侧)全部符合预期。
2026-09-30 12:20:20 +08:00
..
2026-08-21 12:36:00 +08:00
2026-09-30 09:53:41 +08:00
2026-08-17 09:36:38 +08:00
2026-09-30 11:57:07 +08:00
2026-09-30 09:53:41 +08:00
2026-09-27 00:19:44 +08:00
2026-09-30 09:53:41 +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 12:20:20 +08:00
2026-09-30 09:53:41 +08:00
2026-09-30 09:53:41 +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 11:18:07 +08:00
2026-09-29 11:21:19 +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