TermiNexus
14af03577c
fix(tpc): 跨模块符号表保留类名,形参注解不再退化成 i32*
a 类(编译器缺陷):.vpi/.pyi 派生的函数签名经 LLVMTypeMapper._resolve_name 解析,
该方法只认内置名 / BuiltinTypeMap / typedef,不认类名 ⇒ rawptr[Constant] 被
_rawptr_subscript_type_str 变成 i32*,写进跨模块符号表(temp/_shared_sym.json 的
FuncPtrParams arg0=i32*),调用点据此声明出 i32 形参,与实参 %"sha1.Constant"* 冲突,
在指针隐式转换规则下报成"源码问题"(掩盖根因)。
修法:TypeResolver.resolve 注入本模块类名/枚举宽度;_resolve_name 按 本模块类名 → %struct.X*、
枚举 → i{width}、已加载模块类/枚举 → 同上、builtins CTypedef → 按定义展开;其余一律
raise TypeNameUnresolvedError(不再 warn + i32)。SymbolTable._LoadSymbolsFromFile 对该异常
re-raise(不再吞成"加载模块失败"返回空符号表)。
验证(vpi 探针):name_get_id/constant_get_str_val 形参 i32* → %struct.Name* / %struct.Constant*;
binop_get_left/binop_get_right/attribute_get_value 返回 %struct.AST*(跨模块类经符号表解析);
int64/size_t/sizet → i64;未知名 → 报错终止。
2026-09-28 18:06:07 +08:00
..
2026-09-14 13:42:14 +08:00
2026-09-28 18:06:07 +08:00
2026-09-28 13:57:04 +08:00
2026-09-28 16:48:58 +08:00
2026-09-26 19:27:22 +08:00
2026-09-26 19:27:22 +08:00
2026-09-12 11:51:42 +08:00
2026-09-28 13:49:28 +08:00
2026-09-26 19:27:22 +08:00
2026-08-17 09:36:38 +08:00
2026-08-17 09:36:38 +08:00