TermiNexus
033c0a7771
fix(tpc): 修复 t.CVoid 清理暴露的三处类型解析缺口
SymbolTypeResolver: 裸 t.CPtr 作 typedef 值(无联合、无下标)时按 void* 展开。_find_base_type 把 attr==CPtr 归一为小写 ptr,而守卫 _PTR_MODIFIERS 写的是 CPtr 命不中,导致 ptr 被当成类型名存进 OriginalType,最终建成 %"<模块sha>.ptr" 幻影结构体(HANDLE/VOIDPTR/DIR 报 cannot store i8* to ...ptr*)。改前 t.CVoid | t.CPtr 走 BinOp 分支恰好绕过
HandlesExprAttr: 属性访问的成员查找补继承链回退(对齐 HandlesExprUtils._get_var_class 的口径)。字段声明在基类时元素类表的键是声明类,而收件人是子类,原实现只查收件人类自身;方法调用侧早已做 MRO 查询,故 150 处 self.Gen.X.method() 未暴露。修后 self.Gen.TypeGenCType.ImportAliasBuf 可解析(该字段在基类 TypeGenBase),且此前被静默丢弃的 _register_import_alias malloc 分支恢复生效
TypeConvert._base_ctype_to_llvm: 注册表给出完整类型串(CPtr/CArrayPtr/CNeedPtr/CAutoPtr -> i8*)时不再返回 None(_llvm_str_to_ir 只认标量名),改走 _type_str_to_llvm——与同文件 _basic_type_to_llvm 既有口径一致;否则 PtrCount 循环会构造 ir.PointerType(None)(llvmlite opaque 指针,无 .pointee),在 HandlesFunctions._GetFunctionSignatureLlvm 抛 AttributeError(opendir 的 FATAL)。触发集合经全注册表扫描恰好 4 个类
等价性验证: 31614 个符号 + 37527 个真实注解点位逐条对比改前/改后差异 0 条(崩溃输入除外,由 opaque ptr 变为 typed i8**)
2026-09-16 18:16:38 +08:00
..
2026-08-21 12:36:00 +08:00
2026-09-14 16:45:26 +08:00
2026-08-17 09:36:38 +08:00
2026-09-08 11:02:37 +08:00
2026-09-13 23:29:32 +08:00
2026-08-17 09:36:38 +08:00
2026-09-12 12:50:35 +08:00
2026-08-17 09:36:38 +08:00
2026-09-13 23:29:32 +08:00
2026-08-17 09:36:38 +08:00
2026-08-21 12:36:00 +08:00
2026-08-17 09:36:38 +08:00
2026-09-16 18:16:38 +08:00
2026-09-07 14:46:02 +08:00
2026-09-14 16:45:26 +08:00
2026-09-11 22:47:21 +08:00
2026-09-13 23:29:32 +08:00
2026-08-28 07:34:58 +08:00
2026-09-12 11:51:42 +08:00
2026-08-17 09:36:38 +08:00
2026-09-13 23:29:32 +08:00
2026-08-17 09:36:38 +08:00
2026-09-12 11:51:42 +08:00
2026-08-17 09:36:38 +08:00
2026-08-17 09:36:38 +08:00
2026-08-17 09:36:38 +08:00
2026-08-19 21:14:13 +08:00
2026-08-17 09:36:38 +08:00
2026-09-07 14:46:02 +08:00
2026-08-03 02:00:49 +08:00
2026-08-17 09:36:38 +08:00