TermiNexus
83baf5a4b6
fix(TypeGenResolve/ExprGenName): 指针类型实参统一为 T*,消泛型特化名分裂(假报错 CastError)
用户定口径:t.CPtr[T] / rawptr[T] / T|t.CPtr ≡ T*(与 TPC 侧
SymbolUtils.ResolveTypeArgStr+AddPointerLayers 逐字同形,两侧必须同票名)。
- _norm_type_arg_name:联合一侧为裸 CPtr 标记 ⇒ 折成 <另一侧>*;单实参的
指针标记容器 rawptr[T]/t.CPtr[T] ⇒ 折成 <实参>*(新增 _is_ptr_marker_text /
_ptr_star_text;刻意只认 CPtr 一族,与类型域 _is_cptr_marker 同判据,
避免名字说 T*、类型说 T 的不一致)
- _parse_type_string:能反解析尾随 '*'(按层包回 rawptr[...],供 ClassGenGeneric
克隆注解时替换实参文本)
- ExprGenName._list_elem_obj_ty_from_struct_name:元素段剥尾随 '*' 后再查结构体
(否则对象元素还原失败、静默退回 Ptr(i8) 丢元素类名)
现场:Test/AstTest/App/main.vp:63 classify_list(ifn.orelse, ...) 源
list[rawptr[<sha>.AST]] vs 目标 list[<sha>.AST|t.CPtr] ⇒ 严格指针规则按
「不同非基本类型」拒绝(假报错);改后同票名 ⇒ 同一结构体。
注意:特化名进结构体名与方法符号名 ⇒ 必须全量重编 includes
(--clean --rebuild-includes --clear-cache)。