diff --git a/nac3core/src/codegen/concrete_type.rs b/nac3core/src/codegen/concrete_type.rs index d52c18bb..8680beee 100644 --- a/nac3core/src/codegen/concrete_type.rs +++ b/nac3core/src/codegen/concrete_type.rs @@ -25,6 +25,7 @@ pub struct ConcreteFuncArg { pub name: StrRef, pub ty: ConcreteType, pub default_value: Option, + pub is_vararg: bool, } #[derive(Clone, Debug)] @@ -112,6 +113,7 @@ impl ConcreteTypeStore { self.from_unifier_type(unifier, primitives, arg.ty, cache) }, default_value: arg.default_value.clone(), + is_vararg: arg.is_vararg, }) .collect(), ret: self.from_unifier_type(unifier, primitives, signature.ret, cache), diff --git a/nac3core/src/codegen/expr.rs b/nac3core/src/codegen/expr.rs index 53e38363..f070e6b2 100644 --- a/nac3core/src/codegen/expr.rs +++ b/nac3core/src/codegen/expr.rs @@ -734,7 +734,15 @@ pub fn gen_func_instance<'ctx>( let zelf = store.from_unifier_type(&mut ctx.unifier, &ctx.primitives, obj.0, &mut cache); let ConcreteTypeEnum::TFunc { args, .. } = &mut signature else { unreachable!() }; - args.insert(0, ConcreteFuncArg { name: "self".into(), ty: zelf, default_value: None }); + args.insert( + 0, + ConcreteFuncArg { + name: "self".into(), + ty: zelf, + default_value: None, + is_vararg: false, + }, + ); } let signature = store.add_cty(signature); diff --git a/nac3core/src/codegen/mod.rs b/nac3core/src/codegen/mod.rs index cb58f84d..3dd49423 100644 --- a/nac3core/src/codegen/mod.rs +++ b/nac3core/src/codegen/mod.rs @@ -702,7 +702,7 @@ pub fn gen_func_impl< name: arg.name, ty: task.store.to_unifier_type(&mut unifier, &primitives, arg.ty, &mut cache), default_value: arg.default_value.clone(), - is_vararg: false, + is_vararg: arg.is_vararg, }) .collect_vec(), task.store.to_unifier_type(&mut unifier, &primitives, *ret, &mut cache),