call CheckDefFailure(["filter([1, 2], {k,v -> 1})"], 'E1069:')
call CheckDefFailure(["let L = {a -> a + b}"], 'E1001:')
+
+ assert_equal('xxxyyy', 'xxx'->{a, b -> a .. b}('yyy'))
+
+ CheckDefExecFailure(["let s = 'asdf'->{a -> a}('x')"],
+ 'E1106: one argument too many')
+ CheckDefExecFailure(["let s = 'asdf'->{a -> a}('x', 'y')"],
+ 'E1106: 2 arguments too many')
+ CheckDefFailure(["echo 'asdf'->{a -> a}(x)"], 'E1001:')
enddef
def Test_expr7_lambda_vim9script()
continue;
expected = ufunc->uf_arg_types[i];
}
+ else if (ufunc->uf_va_type == NULL)
+ // possibly a lambda
+ expected = &t_any;
else
expected = ufunc->uf_va_type->tt_member;
actual = ((type_T **)stack->ga_data)[stack->ga_len - argcount + i];
arg_to_add = ufunc->uf_args.ga_len - argcount;
if (arg_to_add < 0)
{
- iemsg("Argument count wrong?");
+ if (arg_to_add == -1)
+ emsg(_("E1106: one argument too many"));
+ else
+ semsg(_("E1106: %d arguments too many"), -arg_to_add);
return FAIL;
}
if (ga_grow(&ectx->ec_stack, arg_to_add + 3