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

+1 -1
View File
@@ -477,7 +477,7 @@ novirtual class ClassGenDef(ClassGenBase.ClassGenBase):
if first_node is None:
first_node = pnode
if prev_node is not None:
llvmlite.paramnode_set_next(prev_node, pnode)
prev_node.Next = pnode
prev_node = pnode
# 构造命名结构体类型名: "sha1.ClassName" 或 "ClassName"
+2 -2
View File
@@ -547,7 +547,7 @@ novirtual class ClassGenEnum(ClassGenBase.ClassGenBase):
total += fsize
if is_packed == 0 and falign > max_align:
max_align = falign
cur = llvmlite.paramnode_get_next(cur)
cur = cur.Next
i += 1
# packed 无尾部对齐;非 packed 总大小对齐到最大字段对齐的倍数
if is_packed != 0:
@@ -595,7 +595,7 @@ novirtual class ClassGenEnum(ClassGenBase.ClassGenBase):
fa: int = self._get_type_align(fty)
if fa > max_align:
max_align = fa
cur = llvmlite.paramnode_get_next(cur)
cur = cur.Next
i += 1
return max_align
case _: