Patch 8.2.3036
Problem: Vim9: builtin function arguments not checked at compile time.
Solution: Add more argument type specs. Check arguments to test_setmouse()
and test_gui_mouse_event(). (Yegappan Lakshmanan, closes #8425)
Files: src/evalfunc.c, src/testdir/test_assert.vim,
src/testdir/test_gui.vim, src/testdir/test_popupwin.vim,
src/testdir/test_vim9_builtin.vim, src/testing.c
*** ../vim-8.2.3035/src/evalfunc.c 2021-06-21 18:43:46.136307978 +0200
--- src/evalfunc.c 2021-06-22 19:46:49.262532114 +0200
***************
*** 403,414 ****
* Lists of functions that check the argument types of a builtin function.
*/
argcheck_T arg1_string[] = {arg_string};
! argcheck_T arg3_string_nr_bool[] = {arg_string, arg_number, arg_bool};
argcheck_T arg1_float_or_nr[] = {arg_float_or_nr};
argcheck_T arg2_listblob_item[] = {arg_list_or_blob, arg_item_of_prev};
argcheck_T arg2_execute[] = {arg_string_or_list, arg_string};
argcheck_T arg23_extend[] = {arg_list_or_dict, arg_same_as_prev, arg_extend3};
argcheck_T arg23_extendnew[] = {arg_list_or_dict, arg_same_struct_as_prev,
arg_extend3};
argcheck_T arg3_insert[] = {arg_list_or_blob, arg_item_of_prev, arg_number};
/*
--- 403,418 ----
* Lists of functions that check the argument types of a builtin function.
*/
argcheck_T arg1_string[] = {arg_string};
! argcheck_T arg1_number[] = {arg_number};
argcheck_T arg1_float_or_nr[] = {arg_float_or_nr};
+ argcheck_T arg2_float_or_nr[] = {arg_float_or_nr, arg_float_or_nr};
+ argcheck_T arg2_number[] = {arg_number, arg_number};
argcheck_T arg2_listblob_item[] = {arg_list_or_blob, arg_item_of_prev};
argcheck_T arg2_execute[] = {arg_string_or_list, arg_string};
argcheck_T arg23_extend[] = {arg_list_or_dict, arg_same_as_prev, arg_extend3};
argcheck_T arg23_extendnew[] = {arg_list_or_dict, arg_same_struct_as_prev,
arg_extend3};
+ argcheck_T arg3_string[] = {arg_string, arg_string, arg_string};
+ argcheck_T arg3_string_nr_bool[] = {arg_string, arg_number, arg_bool};
argcheck_T arg3_insert[] = {arg_list_or_blob, arg_item_of_prev, arg_number};
/*
***************
*** 670,694 ****
{
{"abs", 1, 1, FEARG_1, arg1_float_or_nr,
ret_any, FLOAT_FUNC(f_abs)},
! {"acos", 1, 1, FEARG_1, NULL,
ret_float, FLOAT_FUNC(f_acos)},
{"add", 2, 2, FEARG_1, NULL /* arg2_listblob_item */,
ret_first_arg, f_add},
! {"and", 2, 2, FEARG_1, NULL,
ret_number, f_and},
{"append", 2, 2, FEARG_2, NULL,
ret_number_bool, f_append},
{"appendbufline", 3, 3, FEARG_3, NULL,
ret_number_bool, f_appendbufline},
! {"argc", 0, 1, 0, NULL,
ret_number, f_argc},
{"argidx", 0, 0, 0, NULL,
ret_number, f_argidx},
! {"arglistid", 0, 2, 0, NULL,
ret_number, f_arglistid},
! {"argv", 0, 2, 0, NULL,
ret_argv, f_argv},
! {"asin", 1, 1, FEARG_1, NULL,
ret_float, FLOAT_FUNC(f_asin)},
{"assert_beeps", 1, 2, FEARG_1, NULL,
ret_number_bool, f_assert_beeps},
--- 674,698 ----
{
{"abs", 1, 1, FEARG_1, arg1_float_or_nr,
ret_any, FLOAT_FUNC(f_abs)},
! {"acos", 1, 1, FEARG_1, arg1_float_or_nr,
ret_float, FLOAT_FUNC(f_acos)},
{"add", 2, 2, FEARG_1, NULL /* arg2_listblob_item */,
ret_first_arg, f_add},
! {"and", 2, 2, FEARG_1, arg2_number,
ret_number, f_and},
{"append", 2, 2, FEARG_2, NULL,
ret_number_bool, f_append},
{"appendbufline", 3, 3, FEARG_3, NULL,
ret_number_bool, f_appendbufline},
! {"argc", 0, 1, 0, arg1_number,
ret_number, f_argc},
{"argidx", 0, 0, 0, NULL,
ret_number, f_argidx},
! {"arglistid", 0, 2, 0, arg2_number,
ret_number, f_arglistid},
! {"argv", 0, 2, 0, arg2_number,
ret_argv, f_argv},
! {"asin", 1, 1, FEARG_1, arg1_float_or_nr,
ret_float, FLOAT_FUNC(f_asin)},
{"assert_beeps", 1, 2, FEARG_1, NULL,
ret_number_bool, f_assert_beeps},
***************
*** 716,724 ****
ret_number_bool, f_assert_report},
{"assert_true", 1, 2, FEARG_1, NULL,
ret_number_bool, f_assert_true},
! {"atan", 1, 1, FEARG_1, NULL,
ret_float, FLOAT_FUNC(f_atan)},
! {"atan2", 2, 2, FEARG_1, NULL,
ret_float, FLOAT_FUNC(f_atan2)},
{"balloon_gettext", 0, 0, 0, NULL,
ret_string,
--- 720,728 ----
ret_number_bool, f_assert_report},
{"assert_true", 1, 2, FEARG_1, NULL,
ret_number_bool, f_assert_true},
! {"atan", 1, 1, FEARG_1, arg1_float_or_nr,
ret_float, FLOAT_FUNC(f_atan)},
! {"atan2", 2, 2, FEARG_1, arg2_float_or_nr,
ret_float, FLOAT_FUNC(f_atan2)},
{"balloon_gettext", 0, 0, 0, NULL,
ret_string,
***************
*** 780,786 ****
ret_number, f_byteidxcomp},
{"call", 2, 3, FEARG_1, NULL,
ret_any, f_call},
! {"ceil", 1, 1, FEARG_1, NULL,
ret_float, FLOAT_FUNC(f_ceil)},
{"ch_canread", 1, 1, FEARG_1, NULL,
ret_number_bool, JOB_FUNC(f_ch_canread)},
--- 784,790 ----
ret_number, f_byteidxcomp},
{"call", 2, 3, FEARG_1, NULL,
ret_any, f_call},
! {"ceil", 1, 1, FEARG_1, arg1_float_or_nr,
ret_float, FLOAT_FUNC(f_ceil)},
{"ch_canread", 1, 1, FEARG_1, NULL,
ret_number_bool, JOB_FUNC(f_ch_canread)},
***************
*** 832,838 ****
ret_string, f_chdir},
{"cindent", 1, 1, FEARG_1, NULL,
ret_number, f_cindent},
! {"clearmatches", 0, 1, FEARG_1, NULL,
ret_void, f_clearmatches},
{"col", 1, 1, FEARG_1, NULL,
ret_number, f_col},
--- 836,842 ----
ret_string, f_chdir},
{"cindent", 1, 1, FEARG_1, NULL,
ret_number, f_cindent},
! {"clearmatches", 0, 1, FEARG_1, arg1_number,
ret_void, f_clearmatches},
{"col", 1, 1, FEARG_1, NULL,
ret_number, f_col},
***************
*** 848,856 ****
ret_number, f_confirm},
{"copy", 1, 1, FEARG_1, NULL,
ret_first_arg, f_copy},
! {"cos", 1, 1, FEARG_1, NULL,
ret_float, FLOAT_FUNC(f_cos)},
! {"cosh", 1, 1, FEARG_1, NULL,
ret_float, FLOAT_FUNC(f_cosh)},
{"count", 2, 4, FEARG_1, NULL,
ret_number, f_count},
--- 852,860 ----
ret_number, f_confirm},
{"copy", 1, 1, FEARG_1, NULL,
ret_first_arg, f_copy},
! {"cos", 1, 1, FEARG_1, arg1_float_or_nr,
ret_float, FLOAT_FUNC(f_cos)},
! {"cosh", 1, 1, FEARG_1, arg1_float_or_nr,
ret_float, FLOAT_FUNC(f_cosh)},
{"count", 2, 4, FEARG_1, NULL,
ret_number, f_count},
***************
*** 858,864 ****
ret_number, f_cscope_connection},
{"cursor", 1, 3, FEARG_1, NULL,
ret_number, f_cursor},
! {"debugbreak", 1, 1, FEARG_1, NULL,
ret_number,
#ifdef MSWIN
f_debugbreak
--- 862,868 ----
ret_number, f_cscope_connection},
{"cursor", 1, 3, FEARG_1, NULL,
ret_number, f_cursor},
! {"debugbreak", 1, 1, FEARG_1, arg1_number,
ret_number,
#ifdef MSWIN
f_debugbreak
***************
*** 898,904 ****
ret_string, f_exepath},
{"exists", 1, 1, FEARG_1, NULL,
ret_number_bool, f_exists},
! {"exp", 1, 1, FEARG_1, NULL,
ret_float, FLOAT_FUNC(f_exp)},
{"expand", 1, 3, FEARG_1, NULL,
ret_any, f_expand},
--- 902,908 ----
ret_string, f_exepath},
{"exists", 1, 1, FEARG_1, NULL,
ret_number_bool, f_exists},
! {"exp", 1, 1, FEARG_1, arg1_float_or_nr,
ret_float, FLOAT_FUNC(f_exp)},
{"expand", 1, 3, FEARG_1, NULL,
ret_any, f_expand},
***************
*** 926,936 ****
ret_list_any, f_flatten},
{"flattennew", 1, 2, FEARG_1, NULL,
ret_list_any, f_flattennew},
! {"float2nr", 1, 1, FEARG_1, NULL,
ret_number, FLOAT_FUNC(f_float2nr)},
! {"floor", 1, 1, FEARG_1, NULL,
ret_float, FLOAT_FUNC(f_floor)},
! {"fmod", 2, 2, FEARG_1, NULL,
ret_float, FLOAT_FUNC(f_fmod)},
{"fnameescape", 1, 1, FEARG_1, NULL,
ret_string, f_fnameescape},
--- 930,940 ----
ret_list_any, f_flatten},
{"flattennew", 1, 2, FEARG_1, NULL,
ret_list_any, f_flattennew},
! {"float2nr", 1, 1, FEARG_1, arg1_float_or_nr,
ret_number, FLOAT_FUNC(f_float2nr)},
! {"floor", 1, 1, FEARG_1, arg1_float_or_nr,
ret_float, FLOAT_FUNC(f_floor)},
! {"fmod", 2, 2, FEARG_1, arg2_float_or_nr,
ret_float, FLOAT_FUNC(f_fmod)},
{"fnameescape", 1, 1, FEARG_1, NULL,
ret_string, f_fnameescape},
***************
*** 986,996 ****
ret_string, f_getcmdwintype},
{"getcompletion", 2, 3, FEARG_1, NULL,
ret_list_string, f_getcompletion},
! {"getcurpos", 0, 1, FEARG_1, NULL,
ret_list_number, f_getcurpos},
! {"getcursorcharpos", 0, 1, FEARG_1, NULL,
ret_list_number, f_getcursorcharpos},
! {"getcwd", 0, 2, FEARG_1, NULL,
ret_string, f_getcwd},
{"getenv", 1, 1, FEARG_1, NULL,
ret_any, f_getenv},
--- 990,1000 ----
ret_string, f_getcmdwintype},
{"getcompletion", 2, 3, FEARG_1, NULL,
ret_list_string, f_getcompletion},
! {"getcurpos", 0, 1, FEARG_1, arg1_number,
ret_list_number, f_getcurpos},
! {"getcursorcharpos", 0, 1, FEARG_1, arg1_number,
ret_list_number, f_getcursorcharpos},
! {"getcwd", 0, 2, FEARG_1, arg2_number,
ret_string, f_getcwd},
{"getenv", 1, 1, FEARG_1, NULL,
ret_any, f_getenv},
***************
*** 1006,1012 ****
ret_string, f_getftype},
{"getimstatus", 0, 0, 0, NULL,
ret_number_bool, f_getimstatus},
! {"getjumplist", 0, 2, FEARG_1, NULL,
ret_list_any, f_getjumplist},
{"getline", 1, 2, FEARG_1, NULL,
ret_f_getline, f_getline},
--- 1010,1016 ----
ret_string, f_getftype},
{"getimstatus", 0, 0, 0, NULL,
ret_number_bool, f_getimstatus},
! {"getjumplist", 0, 2, FEARG_1, arg2_number,
ret_list_any, f_getjumplist},
{"getline", 1, 2, FEARG_1, NULL,
ret_f_getline, f_getline},
***************
*** 1014,1020 ****
ret_list_or_dict_1, f_getloclist},
{"getmarklist", 0, 1, FEARG_1, NULL,
ret_list_dict_any, f_getmarklist},
! {"getmatches", 0, 1, 0, NULL,
ret_list_dict_any, f_getmatches},
{"getmousepos", 0, 0, 0, NULL,
ret_dict_number, f_getmousepos},
--- 1018,1024 ----
ret_list_or_dict_1, f_getloclist},
{"getmarklist", 0, 1, FEARG_1, NULL,
ret_list_dict_any, f_getmarklist},
! {"getmatches", 0, 1, 0, arg1_number,
ret_list_dict_any, f_getmatches},
{"getmousepos", 0, 0, 0, NULL,
ret_dict_number, f_getmousepos},
***************
*** 1030,1048 ****
ret_dict_any, f_getreginfo},
{"getregtype", 0, 1, FEARG_1, NULL,
ret_string, f_getregtype},
! {"gettabinfo", 0, 1, FEARG_1, NULL,
ret_list_dict_any, f_gettabinfo},
{"gettabvar", 2, 3, FEARG_1, NULL,
ret_any, f_gettabvar},
{"gettabwinvar", 3, 4, FEARG_1, NULL,
ret_any, f_gettabwinvar},
! {"gettagstack", 0, 1, FEARG_1, NULL,
ret_dict_any, f_gettagstack},
{"gettext", 1, 1, FEARG_1, NULL,
ret_string, f_gettext},
! {"getwininfo", 0, 1, FEARG_1, NULL,
ret_list_dict_any, f_getwininfo},
! {"getwinpos", 0, 1, FEARG_1, NULL,
ret_list_number, f_getwinpos},
{"getwinposx", 0, 0, 0, NULL,
ret_number, f_getwinposx},
--- 1034,1052 ----
ret_dict_any, f_getreginfo},
{"getregtype", 0, 1, FEARG_1, NULL,
ret_string, f_getregtype},
! {"gettabinfo", 0, 1, FEARG_1, arg1_number,
ret_list_dict_any, f_gettabinfo},
{"gettabvar", 2, 3, FEARG_1, NULL,
ret_any, f_gettabvar},
{"gettabwinvar", 3, 4, FEARG_1, NULL,
ret_any, f_gettabwinvar},
! {"gettagstack", 0, 1, FEARG_1, arg1_number,
ret_dict_any, f_gettagstack},
{"gettext", 1, 1, FEARG_1, NULL,
ret_string, f_gettext},
! {"getwininfo", 0, 1, FEARG_1, arg1_number,
ret_list_dict_any, f_getwininfo},
! {"getwinpos", 0, 1, FEARG_1, arg1_number,
ret_list_number, f_getwinpos},
{"getwinposx", 0, 0, 0, NULL,
ret_number, f_getwinposx},
***************
*** 1060,1066 ****
ret_number_bool, f_has},
{"has_key", 2, 2, FEARG_1, NULL,
ret_number_bool, f_has_key},
! {"haslocaldir", 0, 2, FEARG_1, NULL,
ret_number, f_haslocaldir},
{"hasmapto", 1, 3, FEARG_1, NULL,
ret_number_bool, f_hasmapto},
--- 1064,1070 ----
ret_number_bool, f_has},
{"has_key", 2, 2, FEARG_1, NULL,
ret_number_bool, f_has_key},
! {"haslocaldir", 0, 2, FEARG_1, arg2_number,
ret_number, f_haslocaldir},
{"hasmapto", 1, 3, FEARG_1, NULL,
ret_number_bool, f_hasmapto},
***************
*** 1104,1118 ****
ret_first_arg, f_insert},
{"interrupt", 0, 0, 0, NULL,
ret_void, f_interrupt},
! {"invert", 1, 1, FEARG_1, NULL,
ret_number, f_invert},
{"isdirectory", 1, 1, FEARG_1, NULL,
ret_number_bool, f_isdirectory},
! {"isinf", 1, 1, FEARG_1, NULL,
ret_number, MATH_FUNC(f_isinf)},
{"islocked", 1, 1, FEARG_1, NULL,
ret_number_bool, f_islocked},
! {"isnan", 1, 1, FEARG_1, NULL,
ret_number_bool, MATH_FUNC(f_isnan)},
{"items", 1, 1, FEARG_1, NULL,
ret_list_any, f_items},
--- 1108,1122 ----
ret_first_arg, f_insert},
{"interrupt", 0, 0, 0, NULL,
ret_void, f_interrupt},
! {"invert", 1, 1, FEARG_1, arg1_number,
ret_number, f_invert},
{"isdirectory", 1, 1, FEARG_1, NULL,
ret_number_bool, f_isdirectory},
! {"isinf", 1, 1, FEARG_1, arg1_float_or_nr,
ret_number, MATH_FUNC(f_isinf)},
{"islocked", 1, 1, FEARG_1, NULL,
ret_number_bool, f_islocked},
! {"isnan", 1, 1, FEARG_1, arg1_float_or_nr,
ret_number_bool, MATH_FUNC(f_isnan)},
{"items", 1, 1, FEARG_1, NULL,
ret_list_any, f_items},
***************
*** 1160,1172 ****
ret_number, f_listener_add},
{"listener_flush", 0, 1, FEARG_1, NULL,
ret_void, f_listener_flush},
! {"listener_remove", 1, 1, FEARG_1, NULL,
ret_number_bool, f_listener_remove},
{"localtime", 0, 0, 0, NULL,
ret_number, f_localtime},
! {"log", 1, 1, FEARG_1, NULL,
ret_float, FLOAT_FUNC(f_log)},
! {"log10", 1, 1, FEARG_1, NULL,
ret_float, FLOAT_FUNC(f_log10)},
{"luaeval", 1, 2, FEARG_1, NULL,
ret_any,
--- 1164,1176 ----
ret_number, f_listener_add},
{"listener_flush", 0, 1, FEARG_1, NULL,
ret_void, f_listener_flush},
! {"listener_remove", 1, 1, FEARG_1, arg1_number,
ret_number_bool, f_listener_remove},
{"localtime", 0, 0, 0, NULL,
ret_number, f_localtime},
! {"log", 1, 1, FEARG_1, arg1_float_or_nr,
ret_float, FLOAT_FUNC(f_log)},
! {"log10", 1, 1, FEARG_1, arg1_float_or_nr,
ret_float, FLOAT_FUNC(f_log10)},
{"luaeval", 1, 2, FEARG_1, NULL,
ret_any,
***************
*** 1192,1200 ****
ret_number, f_matchadd},
{"matchaddpos", 2, 5, FEARG_1, NULL,
ret_number, f_matchaddpos},
! {"matcharg", 1, 1, FEARG_1, NULL,
ret_list_string, f_matcharg},
! {"matchdelete", 1, 2, FEARG_1, NULL,
ret_number_bool, f_matchdelete},
{"matchend", 2, 4, FEARG_1, NULL,
ret_number, f_matchend},
--- 1196,1204 ----
ret_number, f_matchadd},
{"matchaddpos", 2, 5, FEARG_1, NULL,
ret_number, f_matchaddpos},
! {"matcharg", 1, 1, FEARG_1, arg1_number,
ret_list_string, f_matcharg},
! {"matchdelete", 1, 2, FEARG_1, arg2_number,
ret_number_bool, f_matchdelete},
{"matchend", 2, 4, FEARG_1, NULL,
ret_number, f_matchend},
***************
*** 1236,1242 ****
ret_number, f_nextnonblank},
{"nr2char", 1, 2, FEARG_1, NULL,
ret_string, f_nr2char},
! {"or", 2, 2, FEARG_1, NULL,
ret_number, f_or},
{"pathshorten", 1, 2, FEARG_1, NULL,
ret_string, f_pathshorten},
--- 1240,1246 ----
ret_number, f_nextnonblank},
{"nr2char", 1, 2, FEARG_1, NULL,
ret_string, f_nr2char},
! {"or", 2, 2, FEARG_1, arg2_number,
ret_number, f_or},
{"pathshorten", 1, 2, FEARG_1, NULL,
ret_string, f_pathshorten},
***************
*** 1290,1296 ****
ret_void, PROP_FUNC(f_popup_settext)},
{"popup_show", 1, 1, FEARG_1, NULL,
ret_void, PROP_FUNC(f_popup_show)},
! {"pow", 2, 2, FEARG_1, NULL,
ret_float, FLOAT_FUNC(f_pow)},
{"prevnonblank", 1, 1, FEARG_1, NULL,
ret_number, f_prevnonblank},
--- 1294,1300 ----
ret_void, PROP_FUNC(f_popup_settext)},
{"popup_show", 1, 1, FEARG_1, NULL,
ret_void, PROP_FUNC(f_popup_show)},
! {"pow", 2, 2, FEARG_1, arg2_float_or_nr,
ret_float, FLOAT_FUNC(f_pow)},
{"prevnonblank", 1, 1, FEARG_1, NULL,
ret_number, f_prevnonblank},
***************
*** 1398,1404 ****
ret_string, f_resolve},
{"reverse", 1, 1, FEARG_1, NULL,
ret_first_arg, f_reverse},
! {"round", 1, 1, FEARG_1, NULL,
ret_float, FLOAT_FUNC(f_round)},
{"rubyeval", 1, 1, FEARG_1, NULL,
ret_any,
--- 1402,1408 ----
ret_string, f_resolve},
{"reverse", 1, 1, FEARG_1, NULL,
ret_first_arg, f_reverse},
! {"round", 1, 1, FEARG_1, arg1_float_or_nr,
ret_float, FLOAT_FUNC(f_round)},
{"rubyeval", 1, 1, FEARG_1, NULL,
ret_any,
***************
*** 1408,1418 ****
NULL
#endif
},
! {"screenattr", 2, 2, FEARG_1, NULL,
ret_number, f_screenattr},
! {"screenchar", 2, 2, FEARG_1, NULL,
ret_number, f_screenchar},
! {"screenchars", 2, 2, FEARG_1, NULL,
ret_list_number, f_screenchars},
{"screencol", 0, 0, 0, NULL,
ret_number, f_screencol},
--- 1412,1422 ----
NULL
#endif
},
! {"screenattr", 2, 2, FEARG_1, arg2_number,
ret_number, f_screenattr},
! {"screenchar", 2, 2, FEARG_1, arg2_number,
ret_number, f_screenchar},
! {"screenchars", 2, 2, FEARG_1, arg2_number,
ret_list_number, f_screenchars},
{"screencol", 0, 0, 0, NULL,
ret_number, f_screencol},
***************
*** 1420,1426 ****
ret_dict_number, f_screenpos},
{"screenrow", 0, 0, 0, NULL,
ret_number, f_screenrow},
! {"screenstring", 2, 2, FEARG_1, NULL,
ret_string, f_screenstring},
{"search", 1, 5, FEARG_1, NULL,
ret_number, f_search},
--- 1424,1430 ----
ret_dict_number, f_screenpos},
{"screenrow", 0, 0, 0, NULL,
ret_number, f_screenrow},
! {"screenstring", 2, 2, FEARG_1, arg2_number,
ret_string, f_screenstring},
{"search", 1, 5, FEARG_1, NULL,
ret_number, f_search},
***************
*** 1448,1454 ****
ret_number_bool, f_setcharpos},
{"setcharsearch", 1, 1, FEARG_1, NULL,
ret_void, f_setcharsearch},
! {"setcmdpos", 1, 1, FEARG_1, NULL,
ret_number_bool, f_setcmdpos},
{"setcursorcharpos", 1, 3, FEARG_1, NULL,
ret_number_bool, f_setcursorcharpos},
--- 1452,1458 ----
ret_number_bool, f_setcharpos},
{"setcharsearch", 1, 1, FEARG_1, NULL,
ret_void, f_setcharsearch},
! {"setcmdpos", 1, 1, FEARG_1, arg1_number,
ret_number_bool, f_setcmdpos},
{"setcursorcharpos", 1, 3, FEARG_1, NULL,
ret_number_bool, f_setcursorcharpos},
***************
*** 1486,1492 ****
},
{"shellescape", 1, 2, FEARG_1, NULL,
ret_string, f_shellescape},
! {"shiftwidth", 0, 1, FEARG_1, NULL,
ret_number, f_shiftwidth},
{"sign_define", 1, 2, FEARG_1, NULL,
ret_any, SIGN_FUNC(f_sign_define)},
--- 1490,1496 ----
},
{"shellescape", 1, 2, FEARG_1, NULL,
ret_string, f_shellescape},
! {"shiftwidth", 0, 1, FEARG_1, arg1_number,
ret_number, f_shiftwidth},
{"sign_define", 1, 2, FEARG_1, NULL,
ret_any, SIGN_FUNC(f_sign_define)},
***************
*** 1508,1516 ****
ret_list_number, SIGN_FUNC(f_sign_unplacelist)},
{"simplify", 1, 1, FEARG_1, NULL,
ret_string, f_simplify},
! {"sin", 1, 1, FEARG_1, NULL,
ret_float, FLOAT_FUNC(f_sin)},
! {"sinh", 1, 1, FEARG_1, NULL,
ret_float, FLOAT_FUNC(f_sinh)},
{"slice", 2, 3, FEARG_1, NULL,
ret_first_arg, f_slice},
--- 1512,1520 ----
ret_list_number, SIGN_FUNC(f_sign_unplacelist)},
{"simplify", 1, 1, FEARG_1, NULL,
ret_string, f_simplify},
! {"sin", 1, 1, FEARG_1, arg1_float_or_nr,
ret_float, FLOAT_FUNC(f_sin)},
! {"sinh", 1, 1, FEARG_1, arg1_float_or_nr,
ret_float, FLOAT_FUNC(f_sinh)},
{"slice", 2, 3, FEARG_1, NULL,
ret_first_arg, f_slice},
***************
*** 1532,1538 ****
ret_list_string, f_spellsuggest},
{"split", 1, 3, FEARG_1, NULL,
ret_list_string, f_split},
! {"sqrt", 1, 1, FEARG_1, NULL,
ret_float, FLOAT_FUNC(f_sqrt)},
{"srand", 0, 1, FEARG_1, NULL,
ret_list_number, f_srand},
--- 1536,1542 ----
ret_list_string, f_spellsuggest},
{"split", 1, 3, FEARG_1, NULL,
ret_list_string, f_split},
! {"sqrt", 1, 1, FEARG_1, arg1_float_or_nr,
ret_float, FLOAT_FUNC(f_sqrt)},
{"srand", 0, 1, FEARG_1, NULL,
ret_list_number, f_srand},
***************
*** 1616,1624 ****
ret_list_string, f_tagfiles},
{"taglist", 1, 2, FEARG_1, NULL,
ret_list_dict_any, f_taglist},
! {"tan", 1, 1, FEARG_1, NULL,
ret_float, FLOAT_FUNC(f_tan)},
! {"tanh", 1, 1, FEARG_1, NULL,
ret_float, FLOAT_FUNC(f_tanh)},
{"tempname", 0, 0, 0, NULL,
ret_string, f_tempname},
--- 1620,1628 ----
ret_list_string, f_tagfiles},
{"taglist", 1, 2, FEARG_1, NULL,
ret_list_dict_any, f_taglist},
! {"tan", 1, 1, FEARG_1, arg1_float_or_nr,
ret_float, FLOAT_FUNC(f_tan)},
! {"tanh", 1, 1, FEARG_1, arg1_float_or_nr,
ret_float, FLOAT_FUNC(f_tanh)},
{"tempname", 0, 0, 0, NULL,
ret_string, f_tempname},
***************
*** 1750,1764 ****
ret_void, TIMER_FUNC(f_timer_stop)},
{"timer_stopall", 0, 0, 0, NULL,
ret_void, TIMER_FUNC(f_timer_stopall)},
! {"tolower", 1, 1, FEARG_1, NULL,
ret_string, f_tolower},
! {"toupper", 1, 1, FEARG_1, NULL,
ret_string, f_toupper},
! {"tr", 3, 3, FEARG_1, NULL,
ret_string, f_tr},
{"trim", 1, 3, FEARG_1, NULL,
ret_string, f_trim},
! {"trunc", 1, 1, FEARG_1, NULL,
ret_float, FLOAT_FUNC(f_trunc)},
{"type", 1, 1, FEARG_1, NULL,
ret_number, f_type},
--- 1754,1768 ----
ret_void, TIMER_FUNC(f_timer_stop)},
{"timer_stopall", 0, 0, 0, NULL,
ret_void, TIMER_FUNC(f_timer_stopall)},
! {"tolower", 1, 1, FEARG_1, arg1_string,
ret_string, f_tolower},
! {"toupper", 1, 1, FEARG_1, arg1_string,
ret_string, f_toupper},
! {"tr", 3, 3, FEARG_1, arg3_string,
ret_string, f_tr},
{"trim", 1, 3, FEARG_1, NULL,
ret_string, f_trim},
! {"trunc", 1, 1, FEARG_1, arg1_float_or_nr,
ret_float, FLOAT_FUNC(f_trunc)},
{"type", 1, 1, FEARG_1, NULL,
ret_number, f_type},
***************
*** 1784,1810 ****
ret_list_number, f_win_findbuf},
{"win_getid", 0, 2, FEARG_1, NULL,
ret_number, f_win_getid},
! {"win_gettype", 0, 1, FEARG_1, NULL,
ret_string, f_win_gettype},
! {"win_gotoid", 1, 1, FEARG_1, NULL,
ret_number_bool, f_win_gotoid},
! {"win_id2tabwin", 1, 1, FEARG_1, NULL,
ret_list_number, f_win_id2tabwin},
! {"win_id2win", 1, 1, FEARG_1, NULL,
ret_number, f_win_id2win},
! {"win_screenpos", 1, 1, FEARG_1, NULL,
ret_list_number, f_win_screenpos},
{"win_splitmove", 2, 3, FEARG_1, NULL,
ret_number_bool, f_win_splitmove},
! {"winbufnr", 1, 1, FEARG_1, NULL,
ret_number, f_winbufnr},
{"wincol", 0, 0, 0, NULL,
ret_number, f_wincol},
{"windowsversion", 0, 0, 0, NULL,
ret_string, f_windowsversion},
! {"winheight", 1, 1, FEARG_1, NULL,
ret_number, f_winheight},
! {"winlayout", 0, 1, FEARG_1, NULL,
ret_list_any, f_winlayout},
{"winline", 0, 0, 0, NULL,
ret_number, f_winline},
--- 1788,1814 ----
ret_list_number, f_win_findbuf},
{"win_getid", 0, 2, FEARG_1, NULL,
ret_number, f_win_getid},
! {"win_gettype", 0, 1, FEARG_1, arg1_number,
ret_string, f_win_gettype},
! {"win_gotoid", 1, 1, FEARG_1, arg1_number,
ret_number_bool, f_win_gotoid},
! {"win_id2tabwin", 1, 1, FEARG_1, arg1_number,
ret_list_number, f_win_id2tabwin},
! {"win_id2win", 1, 1, FEARG_1, arg1_number,
ret_number, f_win_id2win},
! {"win_screenpos", 1, 1, FEARG_1, arg1_number,
ret_list_number, f_win_screenpos},
{"win_splitmove", 2, 3, FEARG_1, NULL,
ret_number_bool, f_win_splitmove},
! {"winbufnr", 1, 1, FEARG_1, arg1_number,
ret_number, f_winbufnr},
{"wincol", 0, 0, 0, NULL,
ret_number, f_wincol},
{"windowsversion", 0, 0, 0, NULL,
ret_string, f_windowsversion},
! {"winheight", 1, 1, FEARG_1, arg1_number,
ret_number, f_winheight},
! {"winlayout", 0, 1, FEARG_1, arg1_number,
ret_list_any, f_winlayout},
{"winline", 0, 0, 0, NULL,
ret_number, f_winline},
***************
*** 1816,1828 ****
ret_void, f_winrestview},
{"winsaveview", 0, 0, 0, NULL,
ret_dict_number, f_winsaveview},
! {"winwidth", 1, 1, FEARG_1, NULL,
ret_number, f_winwidth},
{"wordcount", 0, 0, 0, NULL,
ret_dict_number, f_wordcount},
{"writefile", 2, 3, FEARG_1, NULL,
ret_number_bool, f_writefile},
! {"xor", 2, 2, FEARG_1, NULL,
ret_number, f_xor},
};
--- 1820,1832 ----
ret_void, f_winrestview},
{"winsaveview", 0, 0, 0, NULL,
ret_dict_number, f_winsaveview},
! {"winwidth", 1, 1, FEARG_1, arg1_number,
ret_number, f_winwidth},
{"wordcount", 0, 0, 0, NULL,
ret_dict_number, f_wordcount},
{"writefile", 2, 3, FEARG_1, NULL,
ret_number_bool, f_writefile},
! {"xor", 2, 2, FEARG_1, arg2_number,
ret_number, f_xor},
};
*** ../vim-8.2.3035/src/testdir/test_assert.vim 2020-11-04 15:07:13.057780706
+0100
--- src/testdir/test_assert.vim 2021-06-22 19:46:49.262532114 +0200
***************
*** 374,379 ****
--- 374,381 ----
call test_setmouse(5, 1)
call feedkeys("\<LeftMouse>", "xt")
call assert_equal([0, 2, 1, 0], getpos('.'))
+ call assert_fails('call test_setmouse("", 2)', 'E474:')
+ call assert_fails('call test_setmouse(1, "")', 'E474:')
bwipe!
let &mouse = save_mouse
endfunc
*** ../vim-8.2.3035/src/testdir/test_gui.vim 2021-06-21 18:43:46.136307978
+0200
--- src/testdir/test_gui.vim 2021-06-22 19:46:49.262532114 +0200
***************
*** 882,888 ****
new
call setline(1, ['one two three', 'four five six'])
! " place the cursor using left click
call cursor(1, 1)
call test_gui_mouse_event(0, 2, 4, 0, 0)
call test_gui_mouse_event(3, 2, 4, 0, 0)
--- 882,888 ----
new
call setline(1, ['one two three', 'four five six'])
! " place the cursor using left click in normal mode
call cursor(1, 1)
call test_gui_mouse_event(0, 2, 4, 0, 0)
call test_gui_mouse_event(3, 2, 4, 0, 0)
***************
*** 1092,1100 ****
--- 1092,1161 ----
set mouse&
let &guioptions = save_guioptions
+ " Test invalid parameters for test_gui_mouse_event()
+ call assert_fails('call test_gui_mouse_event("", 1, 2, 3, 4)', 'E474:')
+ call assert_fails('call test_gui_mouse_event(0, "", 2, 3, 4)', 'E474:')
+ call assert_fails('call test_gui_mouse_event(0, 1, "", 3, 4)', 'E474:')
+ call assert_fails('call test_gui_mouse_event(0, 1, 2, "", 4)', 'E474:')
+ call assert_fails('call test_gui_mouse_event(0, 1, 2, 3, "")', 'E474:')
+
bw!
call test_override('no_query_mouse', 0)
set mousemodel&
endfunc
+ " Test for 'guitablabel' and 'guitabtooltip' options
+ func TestGuiTabLabel()
+ call add(g:TabLabels, v:lnum + 100)
+ let bufnrlist = tabpagebuflist(v:lnum)
+ return bufname(bufnrlist[tabpagewinnr(v:lnum) - 1])
+ endfunc
+
+ func TestGuiTabToolTip()
+ call add(g:TabToolTips, v:lnum + 200)
+ let bufnrlist = tabpagebuflist(v:lnum)
+ return bufname(bufnrlist[tabpagewinnr(v:lnum) - 1])
+ endfunc
+
+ func Test_gui_tablabel_tooltip()
+ %bw!
+ " Removing the tabline at the end of this test, reduces the window height by
+ " one. Save and restore it after the test.
+ let save_lines = &lines
+ edit one
+ set modified
+ tabnew two
+ set modified
+ tabnew three
+ set modified
+ let g:TabLabels = []
+ set guitablabel=%{TestGuiTabLabel()}
+ call test_override('starting', 1)
+ redrawtabline
+ call test_override('starting', 0)
+ call assert_true(index(g:TabLabels, 101) != -1)
+ call assert_true(index(g:TabLabels, 102) != -1)
+ call assert_true(index(g:TabLabels, 103) != -1)
+ set guitablabel&
+ unlet g:TabLabels
+
+ if has('gui_gtk')
+ " Only on GTK+, the tooltip function is called even if the mouse is not
+ " on the tabline. on Win32 and Motif, the tooltip function is called only
+ " when the mouse pointer is over the tabline.
+ let g:TabToolTips = []
+ set guitabtooltip=%{TestGuiTabToolTip()}
+ call test_override('starting', 1)
+ redrawtabline
+ call test_override('starting', 0)
+ call assert_true(index(g:TabToolTips, 201) != -1)
+ call assert_true(index(g:TabToolTips, 202) != -1)
+ call assert_true(index(g:TabToolTips, 203) != -1)
+ set guitabtooltip&
+ unlet g:TabToolTips
+ endif
+ %bw!
+ let &lines = save_lines
+ endfunc
+
" vim: shiftwidth=2 sts=2 expandtab
*** ../vim-8.2.3035/src/testdir/test_popupwin.vim 2021-06-12
13:59:00.417806488 +0200
--- src/testdir/test_popupwin.vim 2021-06-22 19:46:49.262532114 +0200
***************
*** 1552,1559 ****
call assert_equal(9, getcurpos()[2])
call feedkeys('0', 'xt')
call assert_equal('0', g:ignored)
! redraw
! call assert_equal(1, getcurpos()[2])
" x closes the popup
call feedkeys('x', 'xt')
--- 1552,1559 ----
call assert_equal(9, getcurpos()[2])
call feedkeys('0', 'xt')
call assert_equal('0', g:ignored)
! normal! l
! call assert_equal(2, getcurpos()[2])
" x closes the popup
call feedkeys('x', 'xt')
*** ../vim-8.2.3035/src/testdir/test_vim9_builtin.vim 2021-06-20
14:40:57.584007589 +0200
--- src/testdir/test_vim9_builtin.vim 2021-06-22 19:46:49.266532105 +0200
***************
*** 141,146 ****
--- 141,151 ----
CheckScriptSuccess(lines)
enddef
+ def Test_and()
+ CheckDefFailure(['echo and("x", 0x2)'], 'E1013: Argument 1: type mismatch,
expected number but got string')
+ CheckDefFailure(['echo and(0x1, "x")'], 'E1013: Argument 2: type mismatch,
expected number but got string')
+ enddef
+
def Test_append()
new
setline(1, range(3))
***************
*** 155,160 ****
--- 160,181 ----
bwipe!
enddef
+ def Test_argc()
+ CheckDefFailure(['echo argc("x")'], 'E1013: Argument 1: type mismatch,
expected number but got string')
+ enddef
+
+ def Test_arglistid()
+ CheckDefFailure(['echo arglistid("x")'], 'E1013: Argument 1: type mismatch,
expected number but got string')
+ CheckDefFailure(['echo arglistid(1, "y")'], 'E1013: Argument 2: type
mismatch, expected number but got string')
+ CheckDefFailure(['echo arglistid("x", "y")'], 'E1013: Argument 1: type
mismatch, expected number but got string')
+ enddef
+
+ def Test_argv()
+ CheckDefFailure(['echo argv("x")'], 'E1013: Argument 1: type mismatch,
expected number but got string')
+ CheckDefFailure(['echo argv(1, "x")'], 'E1013: Argument 2: type mismatch,
expected number but got string')
+ CheckDefFailure(['echo argv("x", "y")'], 'E1013: Argument 1: type mismatch,
expected number but got string')
+ enddef
+
def Test_balloon_show()
CheckGui
CheckFeature balloon_eval
***************
*** 256,261 ****
--- 277,286 ----
assert_fails('chdir(true)', 'E1174')
enddef
+ def Test_clearmatches()
+ CheckDefFailure(['echo clearmatches("x")'], 'E1013: Argument 1: type
mismatch, expected number but got string')
+ enddef
+
def Test_col()
new
setline(1, 'asdf')
***************
*** 311,316 ****
--- 336,346 ----
CheckDefExecAndScriptFailure(lines, 'E475:')
enddef
+ def Test_debugbreak()
+ CheckMSWindows
+ CheckDefFailure(['echo debugbreak("x")'], 'E1013: Argument 1: type
mismatch, expected number but got string')
+ enddef
+
def Test_delete()
var res: bool = delete('doesnotexist')
assert_equal(true, res)
***************
*** 532,537 ****
--- 562,625 ----
CheckDefAndScriptFailure(lines, 'E1158:')
enddef
+ " Test for float functions argument type
+ def Test_float_funcs_args()
+ CheckFeature float
+
+ # acos()
+ CheckDefFailure(['echo acos("a")'], 'E1013: Argument 1: type mismatch,
expected number but got string')
+ # asin()
+ CheckDefFailure(['echo asin("a")'], 'E1013: Argument 1: type mismatch,
expected number but got string')
+ # atan()
+ CheckDefFailure(['echo atan("a")'], 'E1013: Argument 1: type mismatch,
expected number but got string')
+ # atan2()
+ CheckDefFailure(['echo atan2("a", 1.1)'], 'E1013: Argument 1: type
mismatch, expected number but got string')
+ CheckDefFailure(['echo atan2(1.2, "a")'], 'E1013: Argument 2: type
mismatch, expected number but got string')
+ CheckDefFailure(['echo atan2(1.2)'], 'E119:')
+ # ceil()
+ CheckDefFailure(['echo ceil("a")'], 'E1013: Argument 1: type mismatch,
expected number but got string')
+ # cos()
+ CheckDefFailure(['echo cos("a")'], 'E1013: Argument 1: type mismatch,
expected number but got string')
+ # cosh()
+ CheckDefFailure(['echo cosh("a")'], 'E1013: Argument 1: type mismatch,
expected number but got string')
+ # exp()
+ CheckDefFailure(['echo exp("a")'], 'E1013: Argument 1: type mismatch,
expected number but got string')
+ # float2nr()
+ CheckDefFailure(['echo float2nr("a")'], 'E1013: Argument 1: type mismatch,
expected number but got string')
+ # floor()
+ CheckDefFailure(['echo floor("a")'], 'E1013: Argument 1: type mismatch,
expected number but got string')
+ # fmod()
+ CheckDefFailure(['echo fmod(1.1, "a")'], 'E1013: Argument 2: type mismatch,
expected number but got string')
+ CheckDefFailure(['echo fmod("a", 1.1)'], 'E1013: Argument 1: type mismatch,
expected number but got string')
+ CheckDefFailure(['echo fmod(1.1)'], 'E119:')
+ # isinf()
+ CheckDefFailure(['echo isinf("a")'], 'E1013: Argument 1: type mismatch,
expected number but got string')
+ # isnan()
+ CheckDefFailure(['echo isnan("a")'], 'E1013: Argument 1: type mismatch,
expected number but got string')
+ # log()
+ CheckDefFailure(['echo log("a")'], 'E1013: Argument 1: type mismatch,
expected number but got string')
+ # log10()
+ CheckDefFailure(['echo log10("a")'], 'E1013: Argument 1: type mismatch,
expected number but got string')
+ # pow()
+ CheckDefFailure(['echo pow("a", 1.1)'], 'E1013: Argument 1: type mismatch,
expected number but got string')
+ CheckDefFailure(['echo pow(1.1, "a")'], 'E1013: Argument 2: type mismatch,
expected number but got string')
+ CheckDefFailure(['echo pow(1.1)'], 'E119:')
+ # round()
+ CheckDefFailure(['echo round("a")'], 'E1013: Argument 1: type mismatch,
expected number but got string')
+ # sin()
+ CheckDefFailure(['echo sin("a")'], 'E1013: Argument 1: type mismatch,
expected number but got string')
+ # sinh()
+ CheckDefFailure(['echo sinh("a")'], 'E1013: Argument 1: type mismatch,
expected number but got string')
+ # sqrt()
+ CheckDefFailure(['echo sqrt("a")'], 'E1013: Argument 1: type mismatch,
expected number but got string')
+ # tan()
+ CheckDefFailure(['echo tan("a")'], 'E1013: Argument 1: type mismatch,
expected number but got string')
+ # tanh()
+ CheckDefFailure(['echo tanh("a")'], 'E1013: Argument 1: type mismatch,
expected number but got string')
+ # trunc()
+ CheckDefFailure(['echo trunc("a")'], 'E1013: Argument 1: type mismatch,
expected number but got string')
+ enddef
+
def Test_fnamemodify()
CheckDefSuccess(['echo fnamemodify(test_null_string(), ":p")'])
CheckDefSuccess(['echo fnamemodify("", ":p")'])
***************
*** 652,657 ****
--- 740,759 ----
set wildignore&
enddef
+ def Test_getcurpos()
+ CheckDefFailure(['echo getcursorcharpos("x")'], 'E1013: Argument 1: type
mismatch, expected number but got string')
+ enddef
+
+ def Test_getcursorcharpos()
+ CheckDefFailure(['echo getcursorcharpos("x")'], 'E1013: Argument 1: type
mismatch, expected number but got string')
+ enddef
+
+ def Test_getcwd()
+ CheckDefFailure(['echo getcwd("x")'], 'E1013: Argument 1: type mismatch,
expected number but got string')
+ CheckDefFailure(['echo getcwd("x", 1)'], 'E1013: Argument 1: type mismatch,
expected number but got string')
+ CheckDefFailure(['echo getcwd(1, "x")'], 'E1013: Argument 2: type mismatch,
expected number but got string')
+ enddef
+
def Test_getloclist_return_type()
var l = getloclist(1)
l->assert_equal([])
***************
*** 692,697 ****
--- 794,809 ----
CheckDefExecFailure(['echo getftype(v:null)'], 'E1174:')
enddef
+ def Test_getjumplist()
+ CheckDefFailure(['echo getjumplist("x")'], 'E1013: Argument 1: type
mismatch, expected number but got string')
+ CheckDefFailure(['echo getjumplist("x", 1)'], 'E1013: Argument 1: type
mismatch, expected number but got string')
+ CheckDefFailure(['echo getjumplist(1, "x")'], 'E1013: Argument 2: type
mismatch, expected number but got string')
+ enddef
+
+ def Test_getmatches()
+ CheckDefFailure(['echo getmatches("x")'], 'E1013: Argument 1: type
mismatch, expected number but got string')
+ enddef
+
def Test_getqflist_return_type()
var l = getqflist()
l->assert_equal([])
***************
*** 727,732 ****
--- 839,860 ----
assert_fails('getregtype("ab")', 'E1162:')
enddef
+ def Test_gettabinfo()
+ CheckDefFailure(['echo gettabinfo("x")'], 'E1013: Argument 1: type
mismatch, expected number but got string')
+ enddef
+
+ def Test_gettagstack()
+ CheckDefFailure(['echo gettagstack("x")'], 'E1013: Argument 1: type
mismatch, expected number but got string')
+ enddef
+
+ def Test_getwininfo()
+ CheckDefFailure(['echo getwininfo("x")'], 'E1013: Argument 1: type
mismatch, expected number but got string')
+ enddef
+
+ def Test_getwinpos()
+ CheckDefFailure(['echo getwinpos("x")'], 'E1013: Argument 1: type mismatch,
expected number but got string')
+ enddef
+
def Test_glob()
glob('runtest.vim', true, true, true)->assert_equal(['runtest.vim'])
enddef
***************
*** 739,744 ****
--- 867,878 ----
has('eval', true)->assert_equal(1)
enddef
+ def Test_haslocaldir()
+ CheckDefFailure(['echo haslocaldir("x")'], 'E1013: Argument 1: type
mismatch, expected number but got string')
+ CheckDefFailure(['echo haslocaldir("x", 1)'], 'E1013: Argument 1: type
mismatch, expected number but got string')
+ CheckDefFailure(['echo haslocaldir(1, "x")'], 'E1013: Argument 2: type
mismatch, expected number but got string')
+ enddef
+
def Test_hasmapto()
hasmapto('foobar', 'i', true)->assert_equal(0)
iabbrev foo foobar
***************
*** 790,795 ****
--- 924,933 ----
CheckDefFailure(['insert([2, 3], 1, "x")'], 'E1013: Argument 3: type
mismatch, expected number but got string', 1)
enddef
+ def Test_invert()
+ CheckDefFailure(['echo invert("x")'], 'E1013: Argument 1: type mismatch,
expected number but got string')
+ enddef
+
def Test_keys_return_type()
const var: list<string> = {a: 1, b: 2}->keys()
var->assert_equal(['a', 'b'])
***************
*** 812,817 ****
--- 950,959 ----
->str2nr()
enddef
+ def Test_listener_remove()
+ CheckDefFailure(['echo listener_remove("x")'], 'E1013: Argument 1: type
mismatch, expected number but got string')
+ enddef
+
def Test_map_function_arg()
var lines =<< trim END
def MapOne(i: number, v: string): string
***************
*** 914,919 ****
--- 1056,1071 ----
delete('Xtmpfile')
enddef
+ def Test_matcharg()
+ CheckDefFailure(['echo matcharg("x")'], 'E1013: Argument 1: type mismatch,
expected number but got string')
+ enddef
+
+ def Test_matchdelete()
+ CheckDefFailure(['echo matchdelete("x")'], 'E1013: Argument 1: type
mismatch, expected number but got string')
+ CheckDefFailure(['echo matchdelete("x", 1)'], 'E1013: Argument 1: type
mismatch, expected number but got string')
+ CheckDefFailure(['echo matchdelete(1, "x")'], 'E1013: Argument 2: type
mismatch, expected number but got string')
+ enddef
+
def Test_max()
g:flag = true
var l1: list<number> = g:flag
***************
*** 946,951 ****
--- 1098,1108 ----
nr2char(97, true)->assert_equal('a')
enddef
+ def Test_or()
+ CheckDefFailure(['echo or("x", 0x2)'], 'E1013: Argument 1: type mismatch,
expected number but got string')
+ CheckDefFailure(['echo or(0x1, "x")'], 'E1013: Argument 2: type mismatch,
expected number but got string')
+ enddef
+
def Test_readdir()
eval expand('sautest')->readdir((e) => e[0] !=# '.')
eval expand('sautest')->readdirex((e) => e.name[0] !=# '.')
***************
*** 995,1000 ****
--- 1152,1177 ----
res->assert_equal(6)
enddef
+ def Test_screenattr()
+ CheckDefFailure(['echo screenattr("x", 1)'], 'E1013: Argument 1: type
mismatch, expected number but got string')
+ CheckDefFailure(['echo screenattr(1, "x")'], 'E1013: Argument 2: type
mismatch, expected number but got string')
+ enddef
+
+ def Test_screenchar()
+ CheckDefFailure(['echo screenchar("x", 1)'], 'E1013: Argument 1: type
mismatch, expected number but got string')
+ CheckDefFailure(['echo screenchar(1, "x")'], 'E1013: Argument 2: type
mismatch, expected number but got string')
+ enddef
+
+ def Test_screenchars()
+ CheckDefFailure(['echo screenchars("x", 1)'], 'E1013: Argument 1: type
mismatch, expected number but got string')
+ CheckDefFailure(['echo screenchars(1, "x")'], 'E1013: Argument 2: type
mismatch, expected number but got string')
+ enddef
+
+ def Test_screenstring()
+ CheckDefFailure(['echo screenstring("x", 1)'], 'E1013: Argument 1: type
mismatch, expected number but got string')
+ CheckDefFailure(['echo screenstring(1, "x")'], 'E1013: Argument 2: type
mismatch, expected number but got string')
+ enddef
+
def Test_search()
new
setline(1, ['foo', 'bar'])
***************
*** 1157,1162 ****
--- 1334,1343 ----
getbufvar('%', 'myvar')->assert_equal(123)
enddef
+ def Test_setcmdpos()
+ CheckDefFailure(['echo setcmdpos("x")'], 'E1013: Argument 1: type mismatch,
expected number but got string')
+ enddef
+
def Test_setloclist()
var items = [{filename: '/tmp/file', lnum: 1, valid: true}]
var what = {items: items}
***************
*** 1172,1177 ****
--- 1353,1362 ----
assert_fails('setreg("ab", 0)', 'E1162:')
enddef
+ def Test_shiftwidth()
+ CheckDefFailure(['echo shiftwidth("x")'], 'E1013: Argument 1: type
mismatch, expected number but got string')
+ enddef
+
def Test_slice()
assert_equal('12345', slice('012345', 1))
assert_equal('123', slice('012345', 1, 4))
***************
*** 1309,1314 ****
--- 1494,1513 ----
timer_stop(id)
enddef
+ def Test_tolower()
+ CheckDefFailure(['echo tolower(1)'], 'E1013: Argument 1: type mismatch,
expected string but got number')
+ enddef
+
+ def Test_toupper()
+ CheckDefFailure(['echo toupper(1)'], 'E1013: Argument 1: type mismatch,
expected string but got number')
+ enddef
+
+ def Test_tr()
+ CheckDefFailure(['echo tr(1, "a", "b")'], 'E1013: Argument 1: type
mismatch, expected string but got number')
+ CheckDefFailure(['echo tr("a", 1, "b")'], 'E1013: Argument 2: type
mismatch, expected string but got number')
+ CheckDefFailure(['echo tr("a", "a", 1)'], 'E1013: Argument 3: type
mismatch, expected string but got number')
+ enddef
+
def Test_win_execute()
assert_equal("\n" .. winnr(), win_execute(win_getid(), 'echo winnr()'))
assert_equal('', win_execute(342343, 'echo winnr()'))
***************
*** 1338,1344 ****
--- 1537,1581 ----
CheckDefAndScriptFailure(lines, 'E1012: Type mismatch; expected
list<number> but got dict<number>', 1)
enddef
+ def Test_win_gettype()
+ CheckDefFailure(['echo win_gettype("x")'], 'E1013: Argument 1: type
mismatch, expected number but got string')
+ enddef
+
+ def Test_win_gotoid()
+ CheckDefFailure(['echo win_gotoid("x")'], 'E1013: Argument 1: type
mismatch, expected number but got string')
+ enddef
+
+ def Test_win_id2tabwin()
+ CheckDefFailure(['echo win_id2tabwin("x")'], 'E1013: Argument 1: type
mismatch, expected number but got string')
+ enddef
+ def Test_win_id2win()
+ CheckDefFailure(['echo win_id2win("x")'], 'E1013: Argument 1: type
mismatch, expected number but got string')
+ enddef
+
+ def Test_win_screenpos()
+ CheckDefFailure(['echo win_screenpos("x")'], 'E1013: Argument 1: type
mismatch, expected number but got string')
+ enddef
+ def Test_winbufnr()
+ CheckDefFailure(['echo winbufnr("x")'], 'E1013: Argument 1: type mismatch,
expected number but got string')
+ enddef
+
+ def Test_winheight()
+ CheckDefFailure(['echo winheight("x")'], 'E1013: Argument 1: type mismatch,
expected number but got string')
+ enddef
+
+ def Test_winlayout()
+ CheckDefFailure(['echo winlayout("x")'], 'E1013: Argument 1: type mismatch,
expected number but got string')
+ enddef
+
+ def Test_winwidth()
+ CheckDefFailure(['echo winwidth("x")'], 'E1013: Argument 1: type mismatch,
expected number but got string')
+ enddef
+
+ def Test_xor()
+ CheckDefFailure(['echo xor("x", 0x2)'], 'E1013: Argument 1: type mismatch,
expected number but got string')
+ CheckDefFailure(['echo xor(0x1, "x")'], 'E1013: Argument 2: type mismatch,
expected number but got string')
+ enddef
" vim: ts=8 sw=2 sts=2 expandtab tw=80 fdm=marker
*** ../vim-8.2.3035/src/testing.c 2021-06-21 18:43:46.136307978 +0200
--- src/testing.c 2021-06-22 19:46:49.266532105 +0200
***************
*** 1211,1216 ****
--- 1211,1222 ----
void
f_test_setmouse(typval_T *argvars, typval_T *rettv UNUSED)
{
+ if (argvars[0].v_type != VAR_NUMBER || (argvars[1].v_type) != VAR_NUMBER)
+ {
+ emsg(_(e_invarg));
+ return;
+ }
+
mouse_row = (time_t)tv_get_number(&argvars[0]) - 1;
mouse_col = (time_t)tv_get_number(&argvars[1]) - 1;
}
***************
*** 1219,1229 ****
f_test_gui_mouse_event(typval_T *argvars UNUSED, typval_T *rettv UNUSED)
{
#ifdef FEAT_GUI
! int button = tv_get_number(&argvars[0]);
! int row = tv_get_number(&argvars[1]);
! int col = tv_get_number(&argvars[2]);
! int repeated_click = tv_get_number(&argvars[3]);
! int_u mods = tv_get_number(&argvars[4]);
gui_send_mouse_event(button, TEXT_X(col - 1), TEXT_Y(row - 1),
repeated_click, mods);
#endif
--- 1225,1251 ----
f_test_gui_mouse_event(typval_T *argvars UNUSED, typval_T *rettv UNUSED)
{
#ifdef FEAT_GUI
! int button;
! int row;
! int col;
! int repeated_click;
! int_u mods;
!
! if (argvars[0].v_type != VAR_NUMBER
! || (argvars[1].v_type) != VAR_NUMBER
! || (argvars[2].v_type) != VAR_NUMBER
! || (argvars[3].v_type) != VAR_NUMBER
! || (argvars[4].v_type) != VAR_NUMBER)
! {
! emsg(_(e_invarg));
! return;
! }
!
! button = tv_get_number(&argvars[0]);
! row = tv_get_number(&argvars[1]);
! col = tv_get_number(&argvars[2]);
! repeated_click = tv_get_number(&argvars[3]);
! mods = tv_get_number(&argvars[4]);
gui_send_mouse_event(button, TEXT_X(col - 1), TEXT_Y(row - 1),
repeated_click, mods);
#endif
*** ../vim-8.2.3035/src/version.c 2021-06-22 19:32:13.356374012 +0200
--- src/version.c 2021-06-22 19:49:39.330163893 +0200
***************
*** 757,758 ****
--- 757,760 ----
{ /* Add new patch number below this line */
+ /**/
+ 3036,
/**/
--
How To Keep A Healthy Level Of Insanity:
9. As often as possible, skip rather than walk.
/// Bram Moolenaar -- [email protected] -- http://www.Moolenaar.net \\\
/// \\\
\\\ sponsor Vim, vote for features -- http://www.Vim.org/sponsor/ ///
\\\ help me help AIDS victims -- http://ICCF-Holland.org ///
--
--
You received this message from the "vim_dev" maillist.
Do not top-post! Type your reply below the text you are replying to.
For more information, visit http://www.vim.org/maillist.php
---
You received this message because you are subscribed to the Google Groups
"vim_dev" group.
To unsubscribe from this group and stop receiving emails from it, send an email
to [email protected].
To view this discussion on the web visit
https://groups.google.com/d/msgid/vim_dev/202106221752.15MHqvaY939938%40masaka.moolenaar.net.