TermiNexus
833e8c7c33
fix(tpc): 识别点号写法的 REnum 变体构造 mod.REnumClass.Variant(...)
a 编译器缺陷(同一语义两种书写的判据不一致):HandlesExprCall 的跨模块 REnum 变体
构造分支只判 `isinstance(Node.func.value, ast.Name)`,即只认裸名写法
`LLVMType.Ptr(x)`;**点号写法** `llvmlite.LLVMType.Struct(fields, fcount, name)`
(Node.func.value 是 Attribute)漏掉,落到下方"模块函数 Struct"路径 ⇒
· 返回类型被当成普通函数返回值(实为 boxed 变体构造指针);
· 实参少一个 pool(arity 也不对)。
现场:ClassGenDef.vp:116 的 `*existing.Ty = llvmlite.LLVMType.Struct(...)`
报"不能把指针类型 %LLVMType* 隐式转为值类型 %LLVMType"。
补齐:新增同口径分支——Node.func.value 为 Attribute 时,按其 attr(REnum 类名)
在符号表(先试 f"{ModulePath}.{attr}" 再试裸名)取 IsRenum 条目,命中
RenumVariants 即走 _HandleREnumConstructLlvm(与裸名分支同一实现)。与
includes/llvmlite/__types.vp:195、__builder.vp:173 的既有用法一致。
2026-09-28 23:14:08 +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-28 22:20:09 +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 23:14:08 +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 21:46:30 +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-28 22:44:20 +08:00
2026-08-03 02:00:49 +08:00
2026-09-26 19:27:22 +08:00