diff --git a/src/interpreter.c b/src/interpreter.c index cdc4b01..e9428c0 100644 --- a/src/interpreter.c +++ b/src/interpreter.c @@ -1815,9 +1815,14 @@ GroundValue interpretGroundInstruction(GroundInstruction inst, GroundScope* scop if (in->args.args[i + 1].type != VALUE) { runtimeError(ARG_TYPE_MISMATCH, "Expecting a Value", in, currentInstruction); } - //if (in->args.args[i + 1].value.value.type != function->args[i].type) { - if (!checkFnTypes(&in->args.args[i + 1].value.value, &function->args[i])) { - runtimeError(ARG_TYPE_MISMATCH, "Mismatched function argument types", in, currentInstruction); + if (function->nativeFn) { + if (in->args.args[i + 1].value.value.type != function->args[i].type) { + runtimeError(ARG_TYPE_MISMATCH, "Mismatched function argument types", in, currentInstruction); + } + } else { + if (!checkFnTypes(&in->args.args[i + 1].value.value, &function->args[i])) { + runtimeError(ARG_TYPE_MISMATCH, "Mismatched function argument types", in, currentInstruction); + } } appendToList(&argsList, in->args.args[i + 1].value.value); }