错拼 rowptr 改为 rawptr
This commit is contained in:
1 parent
7cba4cbc95
commit
9a191daa8d
70 files changed
+585
-585
No files matched your search
@@ -156,7 +156,7 @@ class AssignGenMixin:
|
||||
# register_cdefine_double,否则 translate_value 查表得 0 生成
|
||||
# ret i32 0(llc 报错 "value doesn't match function result type")。
|
||||
# ============================================================
|
||||
def _register_cdefine_from_value(self, pool: rowptr[memhub.MemBuddy],
|
||||
def _register_cdefine_from_value(self, pool: rawptr[memhub.MemBuddy],
|
||||
name: str, val_node: ast.AST | t.CPtr) -> None:
|
||||
"""注册 CDefine 常量(浮点字面量 → register_cdefine_double,否则整数)"""
|
||||
if pool is None or name is None:
|
||||
@@ -220,7 +220,7 @@ class AssignGenMixin:
|
||||
fp: str = self.Gen.TypeGenResolve.get_current_file()
|
||||
if fp is None or name is None or out is None:
|
||||
return 0
|
||||
f: rowptr[fileio.File] = fileio.File(fp, fileio.MODE.R)
|
||||
f: rawptr[fileio.File] = fileio.File(fp, fileio.MODE.R)
|
||||
if f.closed:
|
||||
return 0
|
||||
BUF_SZ: sizet = 1048576
|
||||
@@ -418,7 +418,7 @@ class AssignGenMixin:
|
||||
return 1
|
||||
return 0
|
||||
|
||||
def _stg_ty_equal(self, pool: rowptr[memhub.MemBuddy],
|
||||
def _stg_ty_equal(self, pool: rawptr[memhub.MemBuddy],
|
||||
ta: llvmlite.LLVMType | t.CPtr,
|
||||
tb: llvmlite.LLVMType | t.CPtr) -> int:
|
||||
"""类型内容相等比较(storage 绑定判定用)。
|
||||
@@ -610,7 +610,7 @@ class AssignGenMixin:
|
||||
# 0 成功,1 失败
|
||||
# ============================================================
|
||||
def _init_global_array_from_list(self, builder: llvmlite.IRBuilder | t.CPtr,
|
||||
pool: rowptr[memhub.MemBuddy],
|
||||
pool: rawptr[memhub.MemBuddy],
|
||||
mod: llvmlite.LLVMModule | t.CPtr,
|
||||
array_alloca: llvmlite.Value | t.CPtr,
|
||||
list_node: ast.AST | t.CPtr,
|
||||
@@ -717,7 +717,7 @@ class AssignGenMixin:
|
||||
# 支持浮点运算、指针算术: ptr += int / ptr -= int
|
||||
# 整数运算自动类型提升
|
||||
# ============================================================
|
||||
def _apply_aug_op(self, pool: rowptr[memhub.MemBuddy],
|
||||
def _apply_aug_op(self, pool: rawptr[memhub.MemBuddy],
|
||||
builder: llvmlite.IRBuilder | t.CPtr,
|
||||
op: int,
|
||||
lhs: llvmlite.Value | t.CPtr,
|
||||
@@ -821,7 +821,7 @@ class AssignGenMixin:
|
||||
# Attribute 目标: self.field += 1
|
||||
# 流程: get_attribute_ptr → load → binop → store
|
||||
if tk == ast.ASTKind.Attribute:
|
||||
pool: rowptr[memhub.MemBuddy] = trans.Pool
|
||||
pool: rawptr[memhub.MemBuddy] = trans.Pool
|
||||
builder: llvmlite.IRBuilder | t.CPtr = trans._cur_builder
|
||||
mod: llvmlite.LLVMModule | t.CPtr = trans.Module
|
||||
|
||||
@@ -870,7 +870,7 @@ class AssignGenMixin:
|
||||
# Subscript 目标: self.state[i] += x / arr[i] += x
|
||||
# 流程: get_subscript_ptr → load → binop → store
|
||||
if tk == ast.ASTKind.Subscript:
|
||||
pool: rowptr[memhub.MemBuddy] = trans.Pool
|
||||
pool: rawptr[memhub.MemBuddy] = trans.Pool
|
||||
builder: llvmlite.IRBuilder | t.CPtr = trans._cur_builder
|
||||
mod: llvmlite.LLVMModule | t.CPtr = trans.Module
|
||||
|
||||
@@ -925,7 +925,7 @@ class AssignGenMixin:
|
||||
if nm is None or nm.id is None:
|
||||
return 0
|
||||
|
||||
pool: rowptr[memhub.MemBuddy] = trans.Pool
|
||||
pool: rawptr[memhub.MemBuddy] = trans.Pool
|
||||
builder: llvmlite.IRBuilder | t.CPtr = trans._cur_builder
|
||||
mod: llvmlite.LLVMModule | t.CPtr = trans.Module
|
||||
|
||||
@@ -1075,7 +1075,7 @@ class AssignGenMixin:
|
||||
# 单参 t.CArray[elem_ty] 本解析为 Ptr(elem_ty),RHS 为列表字面量时按 TPC
|
||||
# ParseListAnnotation 语义推断为静态数组(否则误走动态 list 构造 → 链接期 undefined)。
|
||||
# PreScan 与 Handle 都必须调用:两处 alloca 类型须一致,否则复用旧 alloca 使推断失效。
|
||||
def _infer_static_array_ty_from_literal(self, pool: rowptr[memhub.MemBuddy],
|
||||
def _infer_static_array_ty_from_literal(self, pool: rawptr[memhub.MemBuddy],
|
||||
annot: ast.AST | t.CPtr,
|
||||
value: ast.AST | t.CPtr,
|
||||
resolved_ty: llvmlite.LLVMType | t.CPtr) -> llvmlite.LLVMType | t.CPtr:
|
||||
@@ -1109,7 +1109,7 @@ class AssignGenMixin:
|
||||
# 以及 builtins 最后匹配的诊断结果(_lookup_builtins_typedef 记录),
|
||||
# 便于直接定位是"注解本身未注册"还是"builtins 扫描未命中/未展开"。
|
||||
# ============================================================
|
||||
def _build_ann_fail_msg(self, pool: rowptr[memhub.MemBuddy],
|
||||
def _build_ann_fail_msg(self, pool: rawptr[memhub.MemBuddy],
|
||||
annot: ast.AST | t.CPtr, nm_id: str) -> str:
|
||||
"""构建变量类型注解解析失败的详细报错信息
|
||||
|
||||
@@ -1166,7 +1166,7 @@ class AssignGenMixin:
|
||||
# 供后续 t.CArray[elem_ty, NAME] 编译期解析使用
|
||||
# 浮点/整数自动识别(与 Handle/handle_module_level_var 路径一致)
|
||||
if self.is_cdefine_annotation(aa.annotation) != 0:
|
||||
pool_ps: rowptr[memhub.MemBuddy] = trans.Pool
|
||||
pool_ps: rawptr[memhub.MemBuddy] = trans.Pool
|
||||
self._register_cdefine_from_value(pool_ps, nm.id, aa.value)
|
||||
return 0
|
||||
|
||||
@@ -1195,7 +1195,7 @@ class AssignGenMixin:
|
||||
if existing is not None:
|
||||
return 0
|
||||
|
||||
pool: rowptr[memhub.MemBuddy] = trans.Pool
|
||||
pool: rawptr[memhub.MemBuddy] = trans.Pool
|
||||
builder: llvmlite.IRBuilder | t.CPtr = trans._cur_builder
|
||||
|
||||
# 从 annotation 推断类型(修复:原硬编码 i32 导致 str 等类型错误)
|
||||
@@ -1264,7 +1264,7 @@ class AssignGenMixin:
|
||||
# _specialize_generic_class 幂等,重复调用安全。
|
||||
# 返回 1=执行过特化尝试;0=注解形态不适用(非泛型 Subscript)。
|
||||
def _prespecialize_generic_annotation(self, trans: HT.Translator | t.CPtr,
|
||||
pool: rowptr[memhub.MemBuddy],
|
||||
pool: rawptr[memhub.MemBuddy],
|
||||
annot: ast.AST | t.CPtr) -> int:
|
||||
"""泛型注解预特化(见上方注释),返回 1=已尝试 / 0=不适用"""
|
||||
if annot is None or trans is None:
|
||||
@@ -1384,7 +1384,7 @@ class AssignGenMixin:
|
||||
# 注册到全局 CDefine 表供 t.CArray[elem_ty, NAME] 解析
|
||||
# 注: PreScan 已注册过,此处保证即使跳过 PreScan 也能正确注册
|
||||
if self.is_cdefine_annotation(aa.annotation) != 0:
|
||||
pool_cd: rowptr[memhub.MemBuddy] = trans.Pool
|
||||
pool_cd: rawptr[memhub.MemBuddy] = trans.Pool
|
||||
self._register_cdefine_from_value(pool_cd, nm.id, aa.value)
|
||||
return 0
|
||||
|
||||
@@ -1395,13 +1395,13 @@ class AssignGenMixin:
|
||||
# 解析查表失败 → NameError: mode_t。仅登记类型表达式,不创建全局/
|
||||
# 局部存储——否则生成 @mode_t 符号,链接 duplicate symbol warning。
|
||||
if self.is_ctypedef_annotation(aa.annotation) != 0:
|
||||
pool_ct: rowptr[memhub.MemBuddy] = trans.Pool
|
||||
pool_ct: rawptr[memhub.MemBuddy] = trans.Pool
|
||||
ctd_str: str = self.Gen.TypeGenResolve._get_type_name_from_annotation(pool_ct, aa.value)
|
||||
if ctd_str is not None:
|
||||
self.Gen.TypeGenCType.register_ctypedef(pool_ct, nm.id, ctd_str)
|
||||
return 0
|
||||
|
||||
pool: rowptr[memhub.MemBuddy] = trans.Pool
|
||||
pool: rawptr[memhub.MemBuddy] = trans.Pool
|
||||
builder: llvmlite.IRBuilder | t.CPtr = trans._cur_builder
|
||||
mod: llvmlite.LLVMModule | t.CPtr = trans.Module
|
||||
|
||||
@@ -1917,7 +1917,7 @@ class AssignGenMixin:
|
||||
return 0
|
||||
|
||||
# 从 trans 取共享状态(替代 11 个参数)
|
||||
pool: rowptr[memhub.MemBuddy] = trans.Pool
|
||||
pool: rawptr[memhub.MemBuddy] = trans.Pool
|
||||
builder: llvmlite.IRBuilder | t.CPtr = trans._cur_builder
|
||||
mod: llvmlite.LLVMModule | t.CPtr = trans.Module
|
||||
|
||||
@@ -2423,7 +2423,7 @@ class AssignGenMixin:
|
||||
# Attribute → 字段注解类名(委托 Generator 单例 _resolve_attr_field_class)
|
||||
# 仅当目标为已注册结构体时采用,与"按需过滤,找不到 fast-fail"原则一致。
|
||||
# ============================================================
|
||||
def _infer_rhs_annot(self, pool: rowptr[memhub.MemBuddy],
|
||||
def _infer_rhs_annot(self, pool: rawptr[memhub.MemBuddy],
|
||||
mod: llvmlite.LLVMModule | t.CPtr,
|
||||
node: ast.AST | t.CPtr,
|
||||
trans: HT.Translator | t.CPtr,
|
||||
@@ -2545,7 +2545,7 @@ class AssignGenMixin:
|
||||
# CFloat64T/t.CPtr 等均不注册 struct,天然过滤)。"A | B" 联合
|
||||
# 多候选时取首个命中段。
|
||||
# ============================================================
|
||||
def _extract_annot_class_name(self, pool: rowptr[memhub.MemBuddy],
|
||||
def _extract_annot_class_name(self, pool: rawptr[memhub.MemBuddy],
|
||||
annot: str) -> str:
|
||||
"""从返回注解文本提取已注册结构体类名,无命中返回 None"""
|
||||
if pool is None or annot is None:
|
||||
@@ -2621,7 +2621,7 @@ class AssignGenMixin:
|
||||
# 或跨模块类有 SHA1(stub 中声明)即视为存在。仅在确实存在时
|
||||
# 才采用运算符重载推断的类名,避免把原生运算误标为类类型。
|
||||
# ============================================================
|
||||
def _cls_has_dunder(self, pool: rowptr[memhub.MemBuddy],
|
||||
def _cls_has_dunder(self, pool: rawptr[memhub.MemBuddy],
|
||||
mod: llvmlite.LLVMModule | t.CPtr,
|
||||
class_name: str, dunder: str) -> int:
|
||||
"""类及其 MRO 祖先链中是否存在 dunder 方法,存在返回 1"""
|
||||
|
||||
Reference in new issue
Block a user