Patch 9.0.0359
Problem: Error message for wrong argument type is not specific.
Solution: Include more information in the error. (Yegappan Lakshmanan,
closes #11037)
Files: src/blob.c, src/cmdexpand.c, src/evalfunc.c, src/popupwin.c,
src/sign.c, src/strings.c, src/testing.c, src/time.c,
src/testdir/test_assert.vim, src/testdir/test_cmdline.vim,
src/testdir/test_functions.vim, src/testdir/test_listdict.vim,
src/testdir/test_signs.vim, src/testdir/test_tagjump.vim,
src/testdir/test_timers.vim, src/testdir/test_vim9_builtin.vim
*** ../vim-9.0.0358/src/blob.c 2022-04-03 11:14:32.000000000 +0100
--- src/blob.c 2022-09-02 15:11:03.747872714 +0100
***************
*** 667,677 ****
initial.vval.v_number = blob_get(b, 0);
i = 1;
}
! else if (argvars[2].v_type != VAR_NUMBER)
! {
! emsg(_(e_number_expected));
return;
- }
else
{
initial = argvars[2];
--- 667,674 ----
initial.vval.v_number = blob_get(b, 0);
i = 1;
}
! else if (check_for_number_arg(argvars, 2) == FAIL)
return;
else
{
initial = argvars[2];
*** ../vim-9.0.0358/src/cmdexpand.c 2022-09-01 12:58:46.580970180 +0100
--- src/cmdexpand.c 2022-09-02 15:11:03.747872714 +0100
***************
*** 3679,3689 ****
return;
pat = tv_get_string(&argvars[0]);
! if (argvars[1].v_type != VAR_STRING)
! {
! semsg(_(e_invalid_argument_str), "type must be a string");
return;
- }
type = tv_get_string(&argvars[1]);
if (argvars[2].v_type != VAR_UNKNOWN)
--- 3679,3686 ----
return;
pat = tv_get_string(&argvars[0]);
! if (check_for_string_arg(argvars, 1) == FAIL)
return;
type = tv_get_string(&argvars[1]);
if (argvars[2].v_type != VAR_UNKNOWN)
*** ../vim-9.0.0358/src/evalfunc.c 2022-09-01 12:22:19.743659145 +0100
--- src/evalfunc.c 2022-09-02 15:11:03.747872714 +0100
***************
*** 3607,3623 ****
{
varnumber_T noref = 0;
! if (in_vim9script()
! && (check_for_opt_bool_arg(argvars, 1) == FAIL))
return;
if (argvars[1].v_type != VAR_UNKNOWN)
noref = tv_get_bool_chk(&argvars[1], NULL);
! if (noref < 0 || noref > 1)
! semsg(_(e_using_number_as_bool_nr), noref);
! else
! item_copy(&argvars[0], rettv, TRUE, TRUE,
! noref == 0 ? get_copyID() : 0);
}
/*
--- 3607,3619 ----
{
varnumber_T noref = 0;
! if (check_for_opt_bool_arg(argvars, 1) == FAIL)
return;
if (argvars[1].v_type != VAR_UNKNOWN)
noref = tv_get_bool_chk(&argvars[1], NULL);
!
! item_copy(&argvars[0], rettv, TRUE, TRUE, noref == 0 ? get_copyID() : 0);
}
/*
***************
*** 5257,5277 ****
static void
f_gettext(typval_T *argvars, typval_T *rettv)
{
! if (in_vim9script() && check_for_string_arg(argvars, 0) == FAIL)
return;
! if (argvars[0].v_type != VAR_STRING
! || argvars[0].vval.v_string == NULL
! || *argvars[0].vval.v_string == NUL)
! {
! semsg(_(e_invalid_argument_str), tv_get_string(&argvars[0]));
! }
! else
! {
! rettv->v_type = VAR_STRING;
! rettv->vval.v_string = vim_strsave(
! (char_u *)_(argvars[0].vval.v_string));
! }
}
// for VIM_VERSION_ defines
--- 5253,5263 ----
static void
f_gettext(typval_T *argvars, typval_T *rettv)
{
! if (check_for_nonempty_string_arg(argvars, 0) == FAIL)
return;
! rettv->v_type = VAR_STRING;
! rettv->vval.v_string = vim_strsave((char_u *)_(argvars[0].vval.v_string));
}
// for VIM_VERSION_ defines
***************
*** 9641,9647 ****
// default is to replace the stack.
if (argvars[2].v_type == VAR_UNKNOWN)
action = 'r';
! else if (argvars[2].v_type == VAR_STRING)
{
char_u *actstr;
actstr = tv_get_string_chk(&argvars[2]);
--- 9627,9635 ----
// default is to replace the stack.
if (argvars[2].v_type == VAR_UNKNOWN)
action = 'r';
! else if (check_for_string_arg(argvars, 2) == FAIL)
! return;
! else
{
char_u *actstr;
actstr = tv_get_string_chk(&argvars[2]);
***************
*** 9656,9666 ****
return;
}
}
- else
- {
- emsg(_(e_string_required));
- return;
- }
if (set_tagstack(wp, d, action) == OK)
rettv->vval.v_number = 0;
--- 9644,9649 ----
*** ../vim-9.0.0358/src/popupwin.c 2022-09-01 16:42:59.931897217 +0100
--- src/popupwin.c 2022-09-02 15:11:03.747872714 +0100
***************
*** 2769,2777 ****
wp = find_popup_win(id);
if (wp != NULL)
{
! if (argvars[1].v_type != VAR_STRING && argvars[1].v_type != VAR_LIST)
! semsg(_(e_invalid_argument_str), tv_get_string(&argvars[1]));
! else
{
popup_set_buffer_text(wp->w_buffer, argvars[1]);
redraw_win_later(wp, UPD_NOT_VALID);
--- 2769,2775 ----
wp = find_popup_win(id);
if (wp != NULL)
{
! if (check_for_string_or_list_arg(argvars, 1) != FAIL)
{
popup_set_buffer_text(wp->w_buffer, argvars[1]);
redraw_win_later(wp, UPD_NOT_VALID);
*** ../vim-9.0.0358/src/sign.c 2022-09-01 12:22:19.747659165 +0100
--- src/sign.c 2022-09-02 15:11:03.751872711 +0100
***************
*** 2849,2871 ****
rettv->vval.v_number = -1;
! if (in_vim9script()
! && (check_for_string_arg(argvars, 0) == FAIL
|| check_for_opt_dict_arg(argvars, 1) == FAIL))
return;
- if (argvars[0].v_type != VAR_STRING)
- {
- emsg(_(e_invalid_argument));
- return;
- }
-
if (argvars[1].v_type != VAR_UNKNOWN)
- {
- if (check_for_dict_arg(argvars, 1) == FAIL)
- return;
dict = argvars[1].vval.v_dict;
- }
rettv->vval.v_number = sign_unplace_from_dict(&argvars[0], dict);
}
--- 2849,2860 ----
rettv->vval.v_number = -1;
! if ((check_for_string_arg(argvars, 0) == FAIL
|| check_for_opt_dict_arg(argvars, 1) == FAIL))
return;
if (argvars[1].v_type != VAR_UNKNOWN)
dict = argvars[1].vval.v_dict;
rettv->vval.v_number = sign_unplace_from_dict(&argvars[0], dict);
}
*** ../vim-9.0.0358/src/strings.c 2022-05-06 10:59:56.000000000 +0100
--- src/strings.c 2022-09-02 15:11:03.751872711 +0100
***************
*** 960,970 ****
return;
p += STRLEN(rettv->vval.v_string);
}
! else if (argvars[2].v_type != VAR_STRING)
! {
! semsg(_(e_string_expected_for_argument_nr), 3);
return;
- }
else
copy_tv(&argvars[2], rettv);
--- 960,967 ----
return;
p += STRLEN(rettv->vval.v_string);
}
! else if (check_for_string_arg(argvars, 2) == FAIL)
return;
else
copy_tv(&argvars[2], rettv);
***************
*** 1047,1067 ****
rettv->vval.v_number = -1;
! if (in_vim9script()
! && (check_for_string_arg(argvars, 0) == FAIL
|| check_for_number_arg(argvars, 1) == FAIL
|| check_for_opt_bool_arg(argvars, 2) == FAIL))
return;
- if (argvars[0].v_type != VAR_STRING || argvars[1].v_type != VAR_NUMBER
- || (argvars[2].v_type != VAR_UNKNOWN
- && argvars[2].v_type != VAR_NUMBER
- && argvars[2].v_type != VAR_BOOL))
- {
- emsg(_(e_invalid_argument));
- return;
- }
-
str = tv_get_string_chk(&argvars[0]);
idx = tv_get_number_chk(&argvars[1], NULL);
if (str == NULL || idx < 0)
--- 1044,1054 ----
rettv->vval.v_number = -1;
! if ((check_for_string_arg(argvars, 0) == FAIL
|| check_for_number_arg(argvars, 1) == FAIL
|| check_for_opt_bool_arg(argvars, 2) == FAIL))
return;
str = tv_get_string_chk(&argvars[0]);
idx = tv_get_number_chk(&argvars[1], NULL);
if (str == NULL || idx < 0)
***************
*** 1783,1793 ****
if (head == NULL)
return;
! if (argvars[1].v_type != VAR_UNKNOWN && argvars[1].v_type != VAR_STRING)
! {
! semsg(_(e_invalid_argument_str), tv_get_string(&argvars[1]));
return;
- }
if (argvars[1].v_type == VAR_STRING)
{
--- 1770,1777 ----
if (head == NULL)
return;
! if (check_for_opt_string_arg(argvars, 1) == FAIL)
return;
if (argvars[1].v_type == VAR_STRING)
{
*** ../vim-9.0.0358/src/testing.c 2022-08-14 22:22:59.230654518 +0100
--- src/testing.c 2022-09-02 15:11:03.751872711 +0100
***************
*** 970,989 ****
void
f_test_getvalue(typval_T *argvars, typval_T *rettv)
{
! if (in_vim9script() && check_for_string_arg(argvars, 0) == FAIL)
return;
! if (argvars[0].v_type != VAR_STRING)
! emsg(_(e_invalid_argument));
! else
! {
! char_u *name = tv_get_string(&argvars[0]);
! if (STRCMP(name, (char_u *)"need_fileinfo") == 0)
! rettv->vval.v_number = need_fileinfo;
! else
! semsg(_(e_invalid_argument_str), name);
! }
}
/*
--- 970,986 ----
void
f_test_getvalue(typval_T *argvars, typval_T *rettv)
{
! char_u *name;
!
! if (check_for_string_arg(argvars, 0) == FAIL)
return;
! name = tv_get_string(&argvars[0]);
! if (STRCMP(name, (char_u *)"need_fileinfo") == 0)
! rettv->vval.v_number = need_fileinfo;
! else
! semsg(_(e_invalid_argument_str), name);
}
/*
***************
*** 994,1010 ****
{
char_u *name = (char_u *)"";
! if (in_vim9script() && check_for_string_arg(argvars, 0) == FAIL)
return;
! if (argvars[0].v_type != VAR_STRING)
! emsg(_(e_invalid_argument));
! else
! {
! name = tv_get_string(&argvars[0]);
! if (reset_option_was_set(name) == FAIL)
! semsg(_(e_invalid_argument_str), name);
! }
}
/*
--- 991,1002 ----
{
char_u *name = (char_u *)"";
! if (check_for_string_arg(argvars, 0) == FAIL)
return;
! name = tv_get_string(&argvars[0]);
! if (reset_option_was_set(name) == FAIL)
! semsg(_(e_invalid_argument_str), name);
}
/*
***************
*** 1017,1093 ****
int val;
static int save_starting = -1;
! if (in_vim9script()
! && (check_for_string_arg(argvars, 0) == FAIL
! || check_for_number_arg(argvars, 1) == FAIL))
return;
! if (argvars[0].v_type != VAR_STRING
! || (argvars[1].v_type) != VAR_NUMBER)
! emsg(_(e_invalid_argument));
! else
! {
! name = tv_get_string(&argvars[0]);
! val = (int)tv_get_number(&argvars[1]);
! if (STRCMP(name, (char_u *)"redraw") == 0)
! disable_redraw_for_testing = val;
! else if (STRCMP(name, (char_u *)"redraw_flag") == 0)
! ignore_redraw_flag_for_testing = val;
! else if (STRCMP(name, (char_u *)"char_avail") == 0)
! disable_char_avail_for_testing = val;
! else if (STRCMP(name, (char_u *)"starting") == 0)
{
! if (val)
! {
! if (save_starting < 0)
! save_starting = starting;
! starting = 0;
! }
! else
! {
! starting = save_starting;
! save_starting = -1;
! }
}
! else if (STRCMP(name, (char_u *)"nfa_fail") == 0)
! nfa_fail_for_testing = val;
! else if (STRCMP(name, (char_u *)"no_query_mouse") == 0)
! no_query_mouse_for_testing = val;
! else if (STRCMP(name, (char_u *)"no_wait_return") == 0)
! no_wait_return = val;
! else if (STRCMP(name, (char_u *)"ui_delay") == 0)
! ui_delay_for_testing = val;
! else if (STRCMP(name, (char_u *)"term_props") == 0)
! reset_term_props_on_termresponse = val;
! else if (STRCMP(name, (char_u *)"vterm_title") == 0)
! disable_vterm_title_for_testing = val;
! else if (STRCMP(name, (char_u *)"uptime") == 0)
! override_sysinfo_uptime = val;
! else if (STRCMP(name, (char_u *)"alloc_lines") == 0)
! ml_get_alloc_lines = val;
! else if (STRCMP(name, (char_u *)"autoload") == 0)
! override_autoload = val;
! else if (STRCMP(name, (char_u *)"ALL") == 0)
{
! disable_char_avail_for_testing = FALSE;
! disable_redraw_for_testing = FALSE;
! ignore_redraw_flag_for_testing = FALSE;
! nfa_fail_for_testing = FALSE;
! no_query_mouse_for_testing = FALSE;
! ui_delay_for_testing = 0;
! reset_term_props_on_termresponse = FALSE;
! override_sysinfo_uptime = -1;
! // ml_get_alloc_lines is not reset by "ALL"
! if (save_starting >= 0)
! {
! starting = save_starting;
! save_starting = -1;
! }
}
- else
- semsg(_(e_invalid_argument_str), name);
}
}
/*
--- 1009,1078 ----
int val;
static int save_starting = -1;
! if (check_for_string_arg(argvars, 0) == FAIL
! || check_for_number_arg(argvars, 1) == FAIL)
return;
! name = tv_get_string(&argvars[0]);
! val = (int)tv_get_number(&argvars[1]);
! if (STRCMP(name, (char_u *)"redraw") == 0)
! disable_redraw_for_testing = val;
! else if (STRCMP(name, (char_u *)"redraw_flag") == 0)
! ignore_redraw_flag_for_testing = val;
! else if (STRCMP(name, (char_u *)"char_avail") == 0)
! disable_char_avail_for_testing = val;
! else if (STRCMP(name, (char_u *)"starting") == 0)
! {
! if (val)
{
! if (save_starting < 0)
! save_starting = starting;
! starting = 0;
}
! else
{
! starting = save_starting;
! save_starting = -1;
! }
! }
! else if (STRCMP(name, (char_u *)"nfa_fail") == 0)
! nfa_fail_for_testing = val;
! else if (STRCMP(name, (char_u *)"no_query_mouse") == 0)
! no_query_mouse_for_testing = val;
! else if (STRCMP(name, (char_u *)"no_wait_return") == 0)
! no_wait_return = val;
! else if (STRCMP(name, (char_u *)"ui_delay") == 0)
! ui_delay_for_testing = val;
! else if (STRCMP(name, (char_u *)"term_props") == 0)
! reset_term_props_on_termresponse = val;
! else if (STRCMP(name, (char_u *)"vterm_title") == 0)
! disable_vterm_title_for_testing = val;
! else if (STRCMP(name, (char_u *)"uptime") == 0)
! override_sysinfo_uptime = val;
! else if (STRCMP(name, (char_u *)"alloc_lines") == 0)
! ml_get_alloc_lines = val;
! else if (STRCMP(name, (char_u *)"autoload") == 0)
! override_autoload = val;
! else if (STRCMP(name, (char_u *)"ALL") == 0)
! {
! disable_char_avail_for_testing = FALSE;
! disable_redraw_for_testing = FALSE;
! ignore_redraw_flag_for_testing = FALSE;
! nfa_fail_for_testing = FALSE;
! no_query_mouse_for_testing = FALSE;
! ui_delay_for_testing = 0;
! reset_term_props_on_termresponse = FALSE;
! override_sysinfo_uptime = -1;
! // ml_get_alloc_lines is not reset by "ALL"
! if (save_starting >= 0)
! {
! starting = save_starting;
! save_starting = -1;
}
}
+ else
+ semsg(_(e_invalid_argument_str), name);
}
/*
***************
*** 1184,1196 ****
void
f_test_ignore_error(typval_T *argvars, typval_T *rettv UNUSED)
{
! if (in_vim9script() && check_for_string_arg(argvars, 0) == FAIL)
return;
! if (argvars[0].v_type != VAR_STRING)
! emsg(_(e_invalid_argument));
! else
! ignore_error_for_testing(tv_get_string(&argvars[0]));
}
void
--- 1169,1178 ----
void
f_test_ignore_error(typval_T *argvars, typval_T *rettv UNUSED)
{
! if (check_for_string_arg(argvars, 0) == FAIL)
return;
! ignore_error_for_testing(tv_get_string(&argvars[0]));
}
void
***************
*** 1271,1277 ****
|| check_for_number_arg(argvars, 1) == FAIL))
return;
! if (argvars[0].v_type != VAR_NUMBER || (argvars[1].v_type) != VAR_NUMBER)
{
emsg(_(e_invalid_argument));
return;
--- 1253,1259 ----
|| check_for_number_arg(argvars, 1) == FAIL))
return;
! if (argvars[0].v_type != VAR_NUMBER || argvars[1].v_type != VAR_NUMBER)
{
emsg(_(e_invalid_argument));
return;
*** ../vim-9.0.0358/src/time.c 2022-08-30 19:48:17.206760205 +0100
--- src/time.c 2022-09-02 15:11:03.755872705 +0100
***************
*** 805,823 ****
if (rettv_list_alloc(rettv) == FAIL)
return;
! if (in_vim9script() && check_for_opt_number_arg(argvars, 0) == FAIL)
return;
if (argvars[0].v_type != VAR_UNKNOWN)
{
! if (argvars[0].v_type != VAR_NUMBER)
! emsg(_(e_number_expected));
! else
! {
! timer = find_timer((int)tv_get_number(&argvars[0]));
! if (timer != NULL)
! add_timer_info(rettv, timer);
! }
}
else
add_timer_info_all(rettv);
--- 805,818 ----
if (rettv_list_alloc(rettv) == FAIL)
return;
! if (check_for_opt_number_arg(argvars, 0) == FAIL)
return;
if (argvars[0].v_type != VAR_UNKNOWN)
{
! timer = find_timer((int)tv_get_number(&argvars[0]));
! if (timer != NULL)
! add_timer_info(rettv, timer);
}
else
add_timer_info_all(rettv);
***************
*** 909,922 ****
{
timer_T *timer;
! if (in_vim9script() && check_for_number_arg(argvars, 0) == FAIL)
return;
- if (argvars[0].v_type != VAR_NUMBER)
- {
- emsg(_(e_number_expected));
- return;
- }
timer = find_timer((int)tv_get_number(&argvars[0]));
if (timer != NULL)
stop_timer(timer);
--- 904,912 ----
{
timer_T *timer;
! if (check_for_number_arg(argvars, 0) == FAIL)
return;
timer = find_timer((int)tv_get_number(&argvars[0]));
if (timer != NULL)
stop_timer(timer);
*** ../vim-9.0.0358/src/testdir/test_assert.vim 2022-08-14 22:22:59.230654518 +0100
--- src/testdir/test_assert.vim 2022-09-02 15:11:03.751872711 +0100
***************
*** 368,374 ****
eval 1->test_override('redraw')
call test_override('ALL', 0)
call assert_fails("call test_override('xxx', 1)", 'E475:')
! call assert_fails("call test_override('redraw', 'yes')", 'E474:')
endfunc
func Test_mouse_position()
--- 368,374 ----
eval 1->test_override('redraw')
call test_override('ALL', 0)
call assert_fails("call test_override('xxx', 1)", 'E475:')
! call assert_fails("call test_override('redraw', 'yes')", 'E1210:')
endfunc
func Test_mouse_position()
*** ../vim-9.0.0358/src/testdir/test_cmdline.vim 2022-09-01 12:58:46.584970141 +0100
--- src/testdir/test_cmdline.vim 2022-09-02 15:11:03.751872711 +0100
***************
*** 605,611 ****
call assert_fails("call getcompletion('\\\\@!\\\\@=', 'buffer')", 'E871:')
call assert_fails('call getcompletion("", "burp")', 'E475:')
! call assert_fails('call getcompletion("abc", [])', 'E475:')
endfunc
" Test for getcompletion() with "fuzzy" in 'wildoptions'
--- 605,611 ----
call assert_fails("call getcompletion('\\\\@!\\\\@=', 'buffer')", 'E871:')
call assert_fails('call getcompletion("", "burp")', 'E475:')
! call assert_fails('call getcompletion("abc", [])', 'E1174:')
endfunc
" Test for getcompletion() with "fuzzy" in 'wildoptions'
*** ../vim-9.0.0358/src/testdir/test_functions.vim 2022-09-01 12:22:19.747659165 +0100
--- src/testdir/test_functions.vim 2022-09-02 15:11:03.751872711 +0100
***************
*** 1247,1257 ****
call assert_equal(-1, charidx(a, 8, 1))
call assert_equal(-1, charidx('', 0, 1))
! call assert_fails('let x = charidx([], 1)', 'E474:')
! call assert_fails('let x = charidx("abc", [])', 'E474:')
! call assert_fails('let x = charidx("abc", 1, [])', 'E474:')
! call assert_fails('let x = charidx("abc", 1, -1)', 'E1023:')
! call assert_fails('let x = charidx("abc", 1, 2)', 'E1023:')
endfunc
func Test_count()
--- 1247,1257 ----
call assert_equal(-1, charidx(a, 8, 1))
call assert_equal(-1, charidx('', 0, 1))
! call assert_fails('let x = charidx([], 1)', 'E1174:')
! call assert_fails('let x = charidx("abc", [])', 'E1210:')
! call assert_fails('let x = charidx("abc", 1, [])', 'E1212:')
! call assert_fails('let x = charidx("abc", 1, -1)', 'E1212:')
! call assert_fails('let x = charidx("abc", 1, 2)', 'E1212:')
endfunc
func Test_count()
***************
*** 1738,1744 ****
call assert_fails('eval trim(" vim ", " ", [])', 'E745:')
call assert_fails('eval trim(" vim ", " ", -1)', 'E475:')
call assert_fails('eval trim(" vim ", " ", 3)', 'E475:')
! call assert_fails('eval trim(" vim ", 0)', 'E475:')
let chars = join(map(range(1, 0x20) + [0xa0], {n -> n->nr2char()}), '')
call assert_equal("x", trim(chars . "x" . chars))
--- 1738,1744 ----
call assert_fails('eval trim(" vim ", " ", [])', 'E745:')
call assert_fails('eval trim(" vim ", " ", -1)', 'E475:')
call assert_fails('eval trim(" vim ", " ", 3)', 'E475:')
! call assert_fails('eval trim(" vim ", 0)', 'E1174:')
let chars = join(map(range(1, 0x20) + [0xa0], {n -> n->nr2char()}), '')
call assert_equal("x", trim(chars . "x" . chars))
***************
*** 2913,2919 ****
" Test for gettext()
func Test_gettext()
! call assert_fails('call gettext(1)', 'E475:')
endfunc
func Test_builtin_check()
--- 2913,2919 ----
" Test for gettext()
func Test_gettext()
! call assert_fails('call gettext(1)', 'E1174:')
endfunc
func Test_builtin_check()
*** ../vim-9.0.0358/src/testdir/test_listdict.vim 2022-08-30 19:48:17.206760205 +0100
--- src/testdir/test_listdict.vim 2022-09-02 15:11:03.751872711 +0100
***************
*** 568,574 ****
END
call v9.CheckLegacyAndVim9Success(lines)
! call assert_fails("call deepcopy([1, 2], 2)", 'E1023:')
endfunc
" Locked variables
--- 568,574 ----
END
call v9.CheckLegacyAndVim9Success(lines)
! call assert_fails("call deepcopy([1, 2], 2)", 'E1212:')
endfunc
" Locked variables
***************
*** 1044,1059 ****
call assert_fails("call reduce({}, { acc, val -> acc + val }, 1)", 'E1098:')
call assert_fails("call reduce(0, { acc, val -> acc + val }, 1)", 'E1098:')
call assert_fails("call reduce([1, 2], 'Xdoes_not_exist')", 'E117:')
! call assert_fails("echo reduce(0z01, { acc, val -> 2 * acc + val }, '')", 'E39:')
call assert_fails("vim9 reduce(0, (acc, val) => (acc .. val), '')", 'E1252:')
call assert_fails("vim9 reduce({}, (acc, val) => (acc .. val), '')", 'E1252:')
call assert_fails("vim9 reduce(0.1, (acc, val) => (acc .. val), '')", 'E1252:')
call assert_fails("vim9 reduce(function('tr'), (acc, val) => (acc .. val), '')", 'E1252:')
! call assert_fails("call reduce('', { acc, val -> acc + val }, 1)", 'E1253:')
! call assert_fails("call reduce('', { acc, val -> acc + val }, {})", 'E1253:')
! call assert_fails("call reduce('', { acc, val -> acc + val }, 0.1)", 'E1253:')
! call assert_fails("call reduce('', { acc, val -> acc + val }, function('tr'))", 'E1253:')
call assert_fails("call reduce('abc', { a, v -> a10}, '')", 'E121:')
call assert_fails("call reduce(0z0102, { a, v -> a10}, 1)", 'E121:')
call assert_fails("call reduce([1, 2], { a, v -> a10}, '')", 'E121:')
--- 1044,1059 ----
call assert_fails("call reduce({}, { acc, val -> acc + val }, 1)", 'E1098:')
call assert_fails("call reduce(0, { acc, val -> acc + val }, 1)", 'E1098:')
call assert_fails("call reduce([1, 2], 'Xdoes_not_exist')", 'E117:')
! call assert_fails("echo reduce(0z01, { acc, val -> 2 * acc + val }, '')", 'E1210:')
call assert_fails("vim9 reduce(0, (acc, val) => (acc .. val), '')", 'E1252:')
call assert_fails("vim9 reduce({}, (acc, val) => (acc .. val), '')", 'E1252:')
call assert_fails("vim9 reduce(0.1, (acc, val) => (acc .. val), '')", 'E1252:')
call assert_fails("vim9 reduce(function('tr'), (acc, val) => (acc .. val), '')", 'E1252:')
! call assert_fails("call reduce('', { acc, val -> acc + val }, 1)", 'E1174:')
! call assert_fails("call reduce('', { acc, val -> acc + val }, {})", 'E1174:')
! call assert_fails("call reduce('', { acc, val -> acc + val }, 0.1)", 'E1174:')
! call assert_fails("call reduce('', { acc, val -> acc + val }, function('tr'))", 'E1174:')
call assert_fails("call reduce('abc', { a, v -> a10}, '')", 'E121:')
call assert_fails("call reduce(0z0102, { a, v -> a10}, 1)", 'E121:')
call assert_fails("call reduce([1, 2], { a, v -> a10}, '')", 'E121:')
*** ../vim-9.0.0358/src/testdir/test_signs.vim 2022-09-01 12:22:19.751659183 +0100
--- src/testdir/test_signs.vim 2022-09-02 15:11:03.751872711 +0100
***************
*** 686,692 ****
call assert_equal([], sign_getplaced(bnum, {'group' : '*'})[0].signs)
" Error case
! call assert_fails("call sign_unplace({})", 'E474:')
" Place a sign in the global group and try to delete it using a group
call assert_equal(5, sign_place(5, '', 'sign1', bnum, {'lnum' : 10}))
--- 686,692 ----
call assert_equal([], sign_getplaced(bnum, {'group' : '*'})[0].signs)
" Error case
! call assert_fails("call sign_unplace({})", 'E1174:')
" Place a sign in the global group and try to delete it using a group
call assert_equal(5, sign_place(5, '', 'sign1', bnum, {'lnum' : 10}))
*** ../vim-9.0.0358/src/testdir/test_tagjump.vim 2022-08-30 19:48:17.210760193 +0100
--- src/testdir/test_tagjump.vim 2022-09-02 15:11:03.751872711 +0100
***************
*** 405,411 ****
call assert_equal(-1, settagstack(100, {'items' : []}))
call assert_fails('call settagstack(1, [1, 10])', 'E1206:')
call assert_fails("call settagstack(1, {'items' : 10})", 'E714:')
! call assert_fails("call settagstack(1, {'items' : []}, 10)", 'E928:')
call assert_fails("call settagstack(1, {'items' : []}, 'b')", 'E962:')
call assert_equal(-1, settagstack(0, test_null_dict()))
--- 405,411 ----
call assert_equal(-1, settagstack(100, {'items' : []}))
call assert_fails('call settagstack(1, [1, 10])', 'E1206:')
call assert_fails("call settagstack(1, {'items' : 10})", 'E714:')
! call assert_fails("call settagstack(1, {'items' : []}, 10)", 'E1174:')
call assert_fails("call settagstack(1, {'items' : []}, 'b')", 'E962:')
call assert_equal(-1, settagstack(0, test_null_dict()))
*** ../vim-9.0.0358/src/testdir/test_timers.vim 2022-08-30 19:48:17.210760193 +0100
--- src/testdir/test_timers.vim 2022-09-02 15:11:03.751872711 +0100
***************
*** 116,122 ****
call timer_stop(id)
call assert_equal([], timer_info(id))
! call assert_fails('call timer_info("abc")', 'E39:')
" check repeat count inside the callback
let g:timer_repeat = []
--- 116,122 ----
call timer_stop(id)
call assert_equal([], timer_info(id))
! call assert_fails('call timer_info("abc")', 'E1210:')
" check repeat count inside the callback
let g:timer_repeat = []
***************
*** 267,273 ****
call assert_fails('call timer_start(100, "MyHandler", "abc")', 'E1206:')
call assert_fails('call timer_start(100, [])', 'E921:')
! call assert_fails('call timer_stop("abc")', 'E39:')
endfunc
func FuncWithCaughtError(timer)
--- 267,273 ----
call assert_fails('call timer_start(100, "MyHandler", "abc")', 'E1206:')
call assert_fails('call timer_start(100, [])', 'E921:')
! call assert_fails('call timer_stop("abc")', 'E1210:')
endfunc
func FuncWithCaughtError(timer)
*** ../vim-9.0.0358/src/testdir/test_vim9_builtin.vim 2022-08-30 17:45:28.787606578 +0100
--- src/testdir/test_vim9_builtin.vim 2022-09-02 15:11:03.751872711 +0100
***************
*** 1961,1969 ****
def Test_gettext()
v9.CheckDefAndScriptFailure(['gettext(10)'], ['E1013: Argument 1: type mismatch, expected string but got number', 'E1174: String required for argument 1'])
! v9.CheckDefExecAndScriptFailure(['gettext("")'], 'E475: Invalid argument')
assert_equal('abc', gettext("abc"))
! assert_fails('gettext("")', 'E475:')
enddef
def Test_getwininfo()
--- 1961,1969 ----
def Test_gettext()
v9.CheckDefAndScriptFailure(['gettext(10)'], ['E1013: Argument 1: type mismatch, expected string but got number', 'E1174: String required for argument 1'])
! v9.CheckDefExecAndScriptFailure(['gettext("")'], 'E1175: Non-empty string required for argument 1')
assert_equal('abc', gettext("abc"))
! assert_fails('gettext("")', 'E1175:')
enddef
def Test_getwininfo()
*** ../vim-9.0.0358/src/version.c 2022-09-02 14:08:50.217794529 +0100
--- src/version.c 2022-09-02 15:11:47.639822363 +0100
***************
*** 709,710 ****
--- 709,712 ----
{ /* Add new patch number below this line */
+ /**/
+ 359,
/**/
--
Lower life forms have more fun!
/// Bram Moolenaar -- Br...@Moolenaar.net --
http://www.Moolenaar.net \\\
/// \\\
\\\ sponsor Vim, vote for features --
http://www.Vim.org/sponsor/ ///
\\\ help me help AIDS victims --
http://ICCF-Holland.org ///