diff --git a/App/lib/core/Gen/CallGenMixin.vp b/App/lib/core/Gen/CallGenMixin.vp index 4a1909b..fa14a5d 100644 --- a/App/lib/core/Gen/CallGenMixin.vp +++ b/App/lib/core/Gen/CallGenMixin.vp @@ -313,7 +313,7 @@ class CallGenMixin(CallGenBase.CallGenBase): ctor_is_oop = gen_ctor_entry.IsOOP if ctor_is_oop != 0: return self.Gen.CallGenCtor._translate_struct_ctor( - pool, builder, mod, struct_ty, func_name, cargs, 0, trans) + pool, builder, mod, struct_ty, func_name, cargs, t.CSizeT(0), trans) # @t.NoVTable 类(无方法、类语义/指针对象):无参构造也应分配内存 # 返回指针。否则按值结构体返回 ConstZero(struct_ty),LHS 联合注解 # (如 Plain|CPtr)存 0 指针 → p.v 解引用 NULL 段错误 @@ -323,7 +323,7 @@ class CallGenMixin(CallGenBase.CallGenBase): ctor_is_novt = gen_ctor_entry.IsNoVTable if ctor_is_novt != 0: return self.Gen.CallGenCtor._translate_struct_ctor( - pool, builder, mod, struct_ty, func_name, cargs, 0, trans) + pool, builder, mod, struct_ty, func_name, cargs, t.CSizeT(0), trans) # 普通结构体:检查是否有默认值(用 entry 直接访问) gen_has_defaults: int = 0 if gen_ctor_entry is not None: @@ -338,7 +338,7 @@ class CallGenMixin(CallGenBase.CallGenBase): if gen_has_defaults == 1: # 有默认值:走构造函数路径应用默认值 return self.Gen.CallGenCtor._translate_struct_ctor( - pool, builder, mod, struct_ty, func_name, cargs, 0, trans) + pool, builder, mod, struct_ty, func_name, cargs, t.CSizeT(0), trans) # 无默认值:返回 zeroinitializer ret: llvmlite.Value | t.CPtr = llvmlite.ConstZero(pool, struct_ty) return ret @@ -1254,7 +1254,7 @@ class CallGenMixin(CallGenBase.CallGenBase): # 检查被调用函数是否为变长函数(*args),若是则对变长参数进行 C ABI 提升 # (cargs 为本函数参数 AST 链表,self_offset=0 普通函数调用) is_variadic_call: int = self.Gen.CallGenVa._check_and_promote_variadic_call( - pool, builder, mod, call_name, head, can, cargs, 0, trans) + pool, builder, mod, call_name, head, can, cargs, t.CSizeT(0), trans) # try-except:被调函数带 EH 输出参数时,追加输出实参 + 调用后检测异常 return self.Gen.CallGenLeafKit._emit_eh_guarded_call( builder, pool, mod, trans, found_func, call_name, head, can,