TermiNexus
bd5d2467ab
fix(exprcall): NoVTable 跨 Mixin self. 调用按定义类解析 + this 前移
缺陷(TPV bootstrap 的 undefined symbol: <sha1>.StmtGenDeclMixin.translate_return
同根因):NoVTable 多继承下,BaseB.caller 内 self.helper()(helper 定义在兄弟
Mixin BaseA,经 Combined(BaseA, BaseB) 组合)被 mangle 成 BaseB.helper —— 用
调用者类做前缀,而定义符号是 BaseA.helper -> ld.lld undefined symbol。
修复(HandlesExprCall.py):
1. 调用端 MRO 回退失败后,全局扫描已注册类找方法定义类(兄弟 Mixin 兜底);
2. _adjust_this_for_inherited_method 支持"调用类不含定义类字段"场景:
this 按组合布局前移 sizeof(定义类 struct)(BaseB* -> BaseA*)。
新增 Test/NoVTableCrossMixinTest 回归(caller()==42 通过),TestsOverview 记录。
2026-08-20 10:23:47 +08:00
..
2026-08-07 19:35:20 +08:00
2026-08-13 07:51:56 +08:00
2026-08-15 06:24:13 +08:00
2026-08-12 21:45:41 +08:00
2026-08-12 21:45:41 +08:00
2026-08-12 21:45:41 +08:00
2026-08-12 21:45:41 +08:00
2026-08-12 21:45:41 +08:00
2026-08-11 18:42:34 +08:00
2026-08-07 19:35:20 +08:00
2026-08-15 06:24:22 +08:00
2026-08-12 21:45:41 +08:00
2026-08-09 22:19:29 +08:00
2026-08-12 21:45:41 +08:00
2026-08-07 19:35:20 +08:00
2026-08-12 21:45:41 +08:00
2026-08-09 22:19:29 +08:00
2026-08-12 21:45:41 +08:00
2026-08-12 21:45:41 +08:00
2026-08-09 22:19:29 +08:00
2026-08-12 21:45:41 +08:00
2026-08-11 22:10:15 +08:00
2026-08-07 19:35:20 +08:00
2026-08-12 21:45:41 +08:00
2026-08-12 21:45:41 +08:00
2026-08-12 21:45:41 +08:00
2026-08-12 21:45:41 +08:00
2026-08-12 21:45:41 +08:00
2026-08-12 21:45:41 +08:00
2026-08-13 17:32:00 +08:00
2026-08-12 21:45:41 +08:00
2026-08-12 21:45:41 +08:00
2026-08-12 21:45:41 +08:00
2026-08-12 21:45:41 +08:00
2026-08-12 21:45:41 +08:00
2026-08-09 22:19:29 +08:00
2026-08-14 04:02:27 +08:00
2026-08-12 21:45:41 +08:00
2026-08-15 13:12:12 +08:00
2026-08-07 19:35:20 +08:00
2026-08-15 06:24:22 +08:00
2026-08-12 21:45:41 +08:00
2026-08-12 21:45:41 +08:00
2026-08-12 21:45:41 +08:00
2026-08-07 19:35:20 +08:00
2026-08-12 21:45:41 +08:00
2026-08-12 21:45:41 +08:00
2026-08-07 19:35:20 +08:00
2026-08-20 10:23:47 +08:00
2026-08-12 21:45:41 +08:00
2026-08-16 06:48:53 +08:00
2026-08-12 21:45:41 +08:00
2026-08-12 21:45:41 +08:00
2026-07-18 19:25:40 +08:00
2026-08-07 19:35:20 +08:00
2026-08-12 21:45:41 +08:00
2026-08-13 07:51:56 +08:00
2026-08-09 03:39:33 +08:00
2026-08-12 21:45:41 +08:00
2026-08-12 21:45:41 +08:00
2026-08-12 21:45:41 +08:00
2026-08-12 21:45:41 +08:00
2026-08-13 07:51:56 +08:00
2026-08-12 21:45:41 +08:00
2026-08-19 06:42:32 +08:00
2026-08-12 21:45:41 +08:00
2026-08-12 21:45:41 +08:00
2026-08-12 21:45:41 +08:00
2026-08-07 19:35:20 +08:00
2026-08-09 17:10:38 +08:00
2026-08-12 21:45:41 +08:00
2026-07-22 21:55:36 +08:00
2026-08-13 07:51:33 +08:00
2026-08-20 10:23:47 +08:00