diff --git a/src/ir.cpp b/src/ir.cpp index c7c9c6490c66cf91a202ed189c761efda362c402..1176ac2845a6be51af7a8af524ae2f22b20b9e8e 100644 --- a/src/ir.cpp +++ b/src/ir.cpp @@ -8252,6 +8252,13 @@ static TypeTableEntry *ir_analyze_fn_call(IrAnalyze *ira, IrInstructionCall *cal return ira->codegen->builtin_types.entry_invalid; } + if (fn_proto_node->data.fn_proto.is_var_args) { + ir_add_error(ira, &call_instruction->base, + buf_sprintf("compiler bug: unable to call var args function at compile time. https://github.com/andrewrk/zig/issues/313")); + return ira->codegen->builtin_types.entry_invalid; + } + + for (size_t call_i = 0; call_i < call_instruction->arg_count; call_i += 1) { IrInstruction *old_arg = call_instruction->args[call_i]->other; if (type_is_invalid(old_arg->value.type)) diff --git a/test/cases/var_args.zig b/test/cases/var_args.zig index 655eb05195f7f744c1f353b873a72ddd19a7ace7..466f3c9ccf9c816efeeca08800889500e5a79631 100644 --- a/test/cases/var_args.zig +++ b/test/cases/var_args.zig @@ -37,6 +37,7 @@ test "runtime parameter before var args" { assert(extraFn(10, false) == 1); assert(extraFn(10, false, true) == 2); + // TODO issue #313 //comptime { // assert(extraFn(10) == 0); // assert(extraFn(10, false) == 1);