fix(sizeof,parse): 尺寸链去静默兜底,解析报错可定位,补 C 解析器缺口
StructGen: _get_struct_size/_get_align 去 opaque→8/ptr_size、未知→4 兜底并补 VectorType;LiteralStructType.fields→.elements(llvmlite 无 fields,必然 AttributeError) HandlesClassDef: union 载荷尺寸经不存在的 ir.DataLayout 静默退化成 8 字节;HandlesExprCall/ExprBuiltin: sizeof 各静默 0 分支改 fail-fast,数组元素 sizeof 统一走 _get_struct_size HandlesFor: nonlocal struct/array 堆分配不再退化成 malloc(8) vast/vast_c: 补一元 * / & 解析,装饰器后 extern/export 分派修复,C 侧报错带 token 与行号;StubGen.Converter: 宏展开丢尾随空行修 .pyi 缩进非法 其余为 rawptr 迁移 / fail-fast 口径等历史改动一并入库
This commit is contained in:
1 parent
53a345a59a
commit
c83fc752c6
53 files changed
+6238
-887
No files matched your search
@@ -898,7 +898,7 @@ class FunctionHandle(BaseHandle):
|
||||
if '[' in replacement:
|
||||
SubNode: ast.AST | None = None
|
||||
try:
|
||||
SubNode = ast.parse(replacement, mode='eval').body
|
||||
SubNode = ast.parse(replacement, '<stub:type_expr>', mode='eval').body
|
||||
except Exception:
|
||||
SubNode = None
|
||||
if not isinstance(SubNode, ast.Subscript):
|
||||
@@ -936,7 +936,7 @@ class FunctionHandle(BaseHandle):
|
||||
slice_node = self._make_replacement_node(inner_name)
|
||||
else:
|
||||
try:
|
||||
slice_node = ast.parse(inner_name, mode='eval').body
|
||||
slice_node = ast.parse(inner_name, '<stub:type_expr>', mode='eval').body
|
||||
except Exception:
|
||||
slice_node = self._make_name_node(inner_name)
|
||||
if slice_node is None:
|
||||
@@ -1627,8 +1627,10 @@ class FunctionHandle(BaseHandle):
|
||||
if Arg.annotation:
|
||||
try:
|
||||
PInfo = self.ResolveAnnotationType(Arg.annotation)
|
||||
if PInfo and (PInfo.DataConst or PInfo.VarConst):
|
||||
Gen.var_const_flags[Arg.arg] = True
|
||||
# const/volatile 形参登记(统一登记入口)。const 判据沿用形参历史
|
||||
# 条件(IsParam=True,见 BaseGen.RegisterVarQualifiers 说明);
|
||||
# volatile / pointee-volatile 与 TransPyV 侧同口径。
|
||||
Gen.RegisterVarQualifiers(Arg.arg, PInfo, Arg.annotation, IsParam=True)
|
||||
except Exception as _e:
|
||||
if _config_mode == "strict":
|
||||
self.Trans.LogWarning(f"异常被忽略: {_e}")
|
||||
@@ -2140,6 +2142,10 @@ class FunctionHandle(BaseHandle):
|
||||
Gen.var_struct_class = {}
|
||||
Gen.var_ptr_element = {}
|
||||
Gen.var_const_flags = {}
|
||||
# const/volatile 的**函数作用域层**随函数出栈清空(模块级层 global_* 与
|
||||
# 类字段层 field_* 是持久的,不在此清;见 BaseGen 的登记说明)。
|
||||
Gen.var_volatile_flags = {}
|
||||
Gen.var_pointee_volatile_flags = {}
|
||||
# 恢复保存的 var_type_info
|
||||
Gen.var_type_info = saved_var_type_info
|
||||
Gen.var_type_assignments = saved_var_type_assignments
|
||||
|
||||
Reference in new issue
Block a user