revert(transpyv): 回滚跨模块链表 Next 改访问器(改由编译器沿继承链解析字段名)

回滚 13080f6 的 110 处访问器调用,恢复裸字段访问 `x.Next`。

理由:该批访问器是把访问移到定义模块内执行,**绕开**了"继承字段名解析",
属于规避而非修复;缺陷本体在 TPC 侧(导入侧继承展平把泛型基类的继承字段
记成 __inherited_N 占位名,名字丢失)。TPC 已按语义修正:
  · e6451a07 继承展平沿继承链取真实字段名(泛型特化回退模板名),
    展平表直接落 `[("Next", <槽位类型>), ...]`,属性访问是普通表命中;
  · 3ca46c01 顺带修掉 _get_or_create_struct 里"同名枚举成员遮蔽类定义"的 i32 出口。
因此源码侧恢复为唯一写法(裸字段访问),由编译器负责解析。

注:本 commit 只回滚访问器;13080f6 里夹带的 CallGenProp.vp 续行合并(非访问器改动)
已在工作区保留(未提交)。
This commit is contained in:
TermiNexus committed 2026-09-28 21:48:53 +08:00
1 parent 13080f646f
commit aa52cf157d
24 files changed
+114 -118

No files matched your search

+3 -3
View File
@@ -2694,7 +2694,7 @@ def _inject_class_struct_declare(pool: memhub.MemBuddy*,
if first_node_c is None:
first_node_c = pnode_c
if prev_node_c is not None:
llvmlite.paramnode_set_next(prev_node_c, pnode_c)
prev_node_c.Next = pnode_c
prev_node_c = pnode_c
# 4. 命名结构体类型名 "sha1.ClassName"(与定义侧 ClassGenDef 一致)
type_name_c: str = cls_name
@@ -2868,7 +2868,7 @@ def _inject_global_variable_declare(pool: memhub.MemBuddy*,
while cur_v is not None:
if cur_v.Name is not None and string.strcmp(cur_v.Name, gv_name_m) == 0:
return
cur_v = llvmlite.globalvariable_get_next(cur_v)
cur_v = cur_v.Next
# 解析注解类型(裸类 → Ptr(struct),CArray → 元素指针)
resolved_v: llvmlite.LLVMType* = None
if aa.annotation is not None:
@@ -4065,7 +4065,7 @@ def _repl_stub_try(e: rawptr[ReplStubClass], mod: llvmlite.LLVMModule*) -> int:
if first_node is None:
first_node = nd
if prev_node is not None:
llvmlite.paramnode_set_next(prev_node, nd)
prev_node.Next = nd
prev_node = nd
struct_ty: llvmlite.LLVMType* = llvmlite.Struct(pool, first_node, total, e.Key)
if struct_ty is None: