TermiNexus
b3f72d675b
fix(ctx): 方法体编译失败路径也复位「当前方法」上下文,修 self 被按内层特化类解析
现象:编译 ExprGenFstr.translate_joined_str 时 self.Gen 被按 list[cfc4ca8da95a30e1.AST*] 解析 → 属性在类中找不到(连带错误)。
链路:parts.get(pi) 触发泛型特化按需补全(HandlesExprCall._try_complete_generic_specialization)→ 内层 list[...] 方法发射时 _EmitFunctionLlvm 先置 _CurrentCpythonObjectClass = 内层类(HandlesFunctions:1978)→ 方法体编译失败只 re-raise,末尾的类名/var_struct_class 复位被跳过 → 上层调用点**吞掉**该异常继续编译外层方法,于是外层 self.X 全按内层类解析、后续指令也会误插进内层函数的块。
两处修复:① _try_complete_generic_specialization 的 except 里同时复位 Gen.builder/func 与 _CurrentCpythonObjectClass/Gen._current_class_name(该点会吞异常,必须自己收尾);② _EmitFunctionLlvm 的失败路径在 re-raise 前复位 Gen._current_class_name / _CurrentCpythonObjectClass / var_struct_class / global_struct_class(对所有吞异常的调用点都成立)。
2026-09-28 16:52:03 +08:00
..
2026-08-21 12:36:00 +08:00
2026-09-28 16:48:52 +08:00
2026-08-17 09:36:38 +08:00
2026-09-28 16:48:52 +08:00
2026-09-26 19:27:22 +08:00
2026-09-27 00:19:44 +08:00
2026-09-27 16:18:37 +08:00
2026-09-26 19:27:22 +08:00
2026-09-26 21:25:52 +08:00
2026-08-17 09:36:38 +08:00
2026-09-28 15:10:39 +08:00
2026-09-26 19:27:22 +08:00
2026-09-27 16:02:40 +08:00
2026-09-28 15:53:02 +08:00
2026-09-28 16:52:03 +08:00
2026-09-11 22:47:21 +08:00
2026-09-28 15:10:39 +08:00
2026-09-27 15:16:08 +08:00
2026-09-26 19:27:22 +08:00
2026-09-28 13:57:04 +08:00
2026-09-28 16:52:03 +08:00
2026-08-17 09:36:38 +08:00
2026-09-28 13:57:04 +08:00
2026-08-17 09:36:38 +08:00
2026-08-17 09:36:38 +08:00
2026-09-28 15:10:39 +08:00
2026-09-26 19:27:22 +08:00
2026-08-17 09:36:38 +08:00
2026-09-18 20:00:59 +08:00
2026-08-03 02:00:49 +08:00
2026-09-26 19:27:22 +08:00