diff --git a/vlib/v/fmt/tests/fn_with_variadic_arg_expected.vv b/vlib/v/fmt/tests/fn_with_variadic_arg_expected.vv new file mode 100644 index 0000000000..d714a995e0 --- /dev/null +++ b/vlib/v/fmt/tests/fn_with_variadic_arg_expected.vv @@ -0,0 +1,3 @@ +fn abc(a ...int) {} + +fn main() {} diff --git a/vlib/v/fmt/tests/fn_with_variadic_arg_input.vv b/vlib/v/fmt/tests/fn_with_variadic_arg_input.vv new file mode 100644 index 0000000000..ec65508247 --- /dev/null +++ b/vlib/v/fmt/tests/fn_with_variadic_arg_input.vv @@ -0,0 +1,3 @@ +fn abc(a ...int, ) {} + +fn main() {} diff --git a/vlib/v/parser/fn.v b/vlib/v/parser/fn.v index fa82f4281d..95b62ccabe 100644 --- a/vlib/v/parser/fn.v +++ b/vlib/v/parser/fn.v @@ -971,7 +971,7 @@ fn (mut p Parser) fn_args() ([]ast.Param, bool, bool) { type_pos: type_pos[i] } // if typ.typ.kind == .variadic && p.tok.kind == .comma { - if is_variadic && p.tok.kind == .comma { + if is_variadic && p.tok.kind == .comma && p.peek_tok.kind != .rpar { p.error_with_pos('cannot use ...(variadic) with non-final parameter $arg_name', arg_pos[i]) return []ast.Param{}, false, false