fix(Translator): 类体 CDefine 预扫描扩展 + CDefine 类型修复(i32)
- GenerateLlvmDirect 预扫描扩展到类体 AnnAssign,注册类体 CDefine 常量 (方法内裸名如 ISINSTANCE_CLASS_MAX 不再解析为 0) - t.py CDefine Size/IsSigned 覆盖为 32 位有符号,修复 stub 生成 void 类型 - 新增 Test/TpvIsinstanceTest(TPV 侧 isinstance 回归测试)
This commit is contained in:
1 parent
1b89225130
commit
9c2dc45c03
4 files changed
+197
-19
No files matched your search
@@ -579,9 +579,19 @@ class CArray(CType):
|
||||
return cls
|
||||
|
||||
class CDefine(CType):
|
||||
"""编译期常量定义标记(X: t.CDefine = 64)。
|
||||
|
||||
Size/IsSigned 覆盖为 32 位有符号整数(2026-08-10 修复):基类 __init__
|
||||
将 Size/IsSigned 置 None,导致 CTypeToLLVM(CDefine) 推导为 'void',
|
||||
类字段注解 t.CDefine(如 Mixin 的常量声明)在 stub 生成时变成 void,
|
||||
LLVM struct 含 void 报 "void type only allowed for function results"。
|
||||
语义上 CDefine 常量即为 int;超大值由 TypeConvert 按 DefineValue 升 i64。
|
||||
"""
|
||||
position: ClassVar[frozenset[str]] = frozenset({CType.BASE})
|
||||
def __init__(self, value: Any = None) -> None:
|
||||
super().__init__(value)
|
||||
self.Size = 32
|
||||
self.IsSigned = True
|
||||
|
||||
class CPass(CType):
|
||||
position: ClassVar[frozenset[str]] = frozenset({CType.BASE})
|
||||
|
||||
Reference in new issue
Block a user