Patch 8.2.3194
Problem:    Vim9: argument types are not checked at compile time.
Solution:   Add several more type checks, simplify some. (Yegappan
            Lakshmanan, closes #8598)
Files:      src/diff.c, src/evalbuffer.c, src/evalfunc.c, src/job.c,
            src/proto/typval.pro, src/sign.c, src/terminal.c,
            src/testdir/test_vim9_builtin.vim, src/typval.c


*** ../vim-8.2.3193/src/diff.c  2021-07-20 17:51:48.239744107 +0200
--- src/diff.c  2021-07-21 19:06:07.877106611 +0200
***************
*** 3294,3300 ****
      int                       col;
  
      if (in_vim9script()
!           && (check_for_string_or_number_arg(argvars,0) == FAIL
                || check_for_number_arg(argvars, 1) == FAIL))
        return;
  
--- 3294,3300 ----
      int                       col;
  
      if (in_vim9script()
!           && (check_for_lnum_arg(argvars,0) == FAIL
                || check_for_number_arg(argvars, 1) == FAIL))
        return;
  
*** ../vim-8.2.3193/src/evalbuffer.c    2021-07-20 17:51:48.243744105 +0200
--- src/evalbuffer.c    2021-07-21 19:06:07.877106611 +0200
***************
*** 388,394 ****
      char_u    *name;
  
      if (in_vim9script()
!           && (check_for_opt_string_or_number_arg(argvars, 0) == FAIL
                || (argvars[0].v_type != VAR_UNKNOWN
                    && check_for_opt_bool_arg(argvars, 1) == FAIL)))
        return;
--- 388,394 ----
      char_u    *name;
  
      if (in_vim9script()
!           && (check_for_opt_buffer_arg(argvars, 0) == FAIL
                || (argvars[0].v_type != VAR_UNKNOWN
                    && check_for_opt_bool_arg(argvars, 1) == FAIL)))
        return;
***************
*** 635,640 ****
--- 635,645 ----
      if (rettv_list_alloc(rettv) != OK)
        return;
  
+     if (in_vim9script()
+           && argvars[0].v_type != VAR_UNKNOWN
+           && check_for_buffer_or_dict_arg(argvars, 0) == FAIL)
+       return;
+ 
      // List of all the buffers or selected buffers
      if (argvars[0].v_type == VAR_DICT)
      {
***************
*** 774,779 ****
--- 779,789 ----
      linenr_T  end;
      int               retlist;
  
+     if (in_vim9script()
+           && (check_for_lnum_arg(argvars, 0) == FAIL
+               || check_for_opt_lnum_arg(argvars, 1) == FAIL))
+       return;
+ 
      lnum = tv_get_lnum(argvars);
      if (argvars[1].v_type == VAR_UNKNOWN)
      {
*** ../vim-8.2.3193/src/evalfunc.c      2021-07-20 17:51:48.243744105 +0200
--- src/evalfunc.c      2021-07-21 19:06:07.877106611 +0200
***************
*** 326,332 ****
  }
  
  /*
!  * Check "type" is a string or a number (buffer)
   */
      static int
  arg_buffer(type_T *type, argcontext_T *context)
--- 326,332 ----
  }
  
  /*
!  * Check "type" is a buffer (string or a number)
   */
      static int
  arg_buffer(type_T *type, argcontext_T *context)
***************
*** 339,345 ****
  }
  
  /*
!  * Check "type" is a string or a number (line)
   */
      static int
  arg_lnum(type_T *type, argcontext_T *context)
--- 339,360 ----
  }
  
  /*
!  * Check "type" is a buffer or a dict of any
!  */
!     static int
! arg_buffer_or_dict_any(type_T *type, argcontext_T *context)
! {
!     if (type->tt_type == VAR_ANY
!           || type->tt_type == VAR_STRING
!           || type->tt_type == VAR_NUMBER
!           || type->tt_type == VAR_DICT)
!       return OK;
!     arg_type_mismatch(&t_string, type, context->arg_idx + 1);
!     return FAIL;
! }
! 
! /*
!  * Check "type" is a line (string or a number)
   */
      static int
  arg_lnum(type_T *type, argcontext_T *context)
***************
*** 607,615 ****
  static argcheck_T arg1_string[] = {arg_string};
  static argcheck_T arg1_number[] = {arg_number};
  static argcheck_T arg1_bool[] = {arg_bool};
  static argcheck_T arg1_dict_any[] = {arg_dict_any};
  static argcheck_T arg1_job[] = {arg_job};
! static argcheck_T arg1_list_any[] = {arg_list_any};
  static argcheck_T arg1_list_number[] = {arg_list_number};
  static argcheck_T arg1_list_string[] = {arg_list_string};
  static argcheck_T arg1_float_or_nr[] = {arg_float_or_nr};
--- 622,632 ----
  static argcheck_T arg1_string[] = {arg_string};
  static argcheck_T arg1_number[] = {arg_number};
  static argcheck_T arg1_bool[] = {arg_bool};
+ static argcheck_T arg1_list_any[] = {arg_list_any};
  static argcheck_T arg1_dict_any[] = {arg_dict_any};
  static argcheck_T arg1_job[] = {arg_job};
! static argcheck_T arg1_buffer[] = {arg_buffer};
! static argcheck_T arg1_lnum[] = {arg_lnum};
  static argcheck_T arg1_list_number[] = {arg_list_number};
  static argcheck_T arg1_list_string[] = {arg_list_string};
  static argcheck_T arg1_float_or_nr[] = {arg_float_or_nr};
***************
*** 620,638 ****
  static argcheck_T arg1_list_or_dict[] = {arg_list_or_dict};
  static argcheck_T arg1_chan_or_job[] = {arg_chan_or_job};
  static argcheck_T arg1_dict_or_string[] = {arg_dict_any_or_string};
  static argcheck_T arg2_float_or_nr[] = {arg_float_or_nr, arg_float_or_nr};
  static argcheck_T arg2_number[] = {arg_number, arg_number};
  static argcheck_T arg2_string[] = {arg_string, arg_string};
  static argcheck_T arg2_string_number[] = {arg_string, arg_number};
! static argcheck_T arg2_list_nr[] = {arg_list_number, arg_list_number};
  static argcheck_T arg2_list_any_string[] = {arg_list_any, arg_string};
  static argcheck_T arg2_list_any_number[] = {arg_list_any, arg_number};
  static argcheck_T arg2_list_number_bool[] = {arg_list_number, arg_bool};
! static argcheck_T arg2_nr_string[] = {arg_number, arg_string};
! static argcheck_T arg2_nr_bool[] = {arg_number, arg_bool};
! static argcheck_T arg2_nr_list[] = {arg_number, arg_list_any};
  static argcheck_T arg2_dict_string[] = {arg_dict_any, arg_string};
! static argcheck_T arg2_dict_string_or_nr[] = {arg_dict_any, arg_string_or_nr};
  static argcheck_T arg2_string_dict[] = {arg_string, arg_dict_any};
  static argcheck_T arg2_string_list_nr[] = {arg_string, arg_list_number};
  static argcheck_T arg2_string_bool[] = {arg_string, arg_bool};
--- 637,657 ----
  static argcheck_T arg1_list_or_dict[] = {arg_list_or_dict};
  static argcheck_T arg1_chan_or_job[] = {arg_chan_or_job};
  static argcheck_T arg1_dict_or_string[] = {arg_dict_any_or_string};
+ static argcheck_T arg1_buffer_or_dict_any[] = {arg_buffer_or_dict_any};
  static argcheck_T arg2_float_or_nr[] = {arg_float_or_nr, arg_float_or_nr};
  static argcheck_T arg2_number[] = {arg_number, arg_number};
  static argcheck_T arg2_string[] = {arg_string, arg_string};
  static argcheck_T arg2_string_number[] = {arg_string, arg_number};
! static argcheck_T arg2_list_number[] = {arg_list_number, arg_list_number};
! static argcheck_T arg2_lnum[] = {arg_lnum, arg_lnum};
  static argcheck_T arg2_list_any_string[] = {arg_list_any, arg_string};
  static argcheck_T arg2_list_any_number[] = {arg_list_any, arg_number};
  static argcheck_T arg2_list_number_bool[] = {arg_list_number, arg_bool};
! static argcheck_T arg2_number_string[] = {arg_number, arg_string};
! static argcheck_T arg2_number_bool[] = {arg_number, arg_bool};
! static argcheck_T arg2_number_list[] = {arg_number, arg_list_any};
  static argcheck_T arg2_dict_string[] = {arg_dict_any, arg_string};
! static argcheck_T arg2_dict_any_string_or_nr[] = {arg_dict_any, 
arg_string_or_nr};
  static argcheck_T arg2_string_dict[] = {arg_string, arg_dict_any};
  static argcheck_T arg2_string_list_nr[] = {arg_string, arg_list_number};
  static argcheck_T arg2_string_bool[] = {arg_string, arg_bool};
***************
*** 641,652 ****
  //static argcheck_T arg2_listblob_item[] = {arg_list_or_blob, 
arg_item_of_prev};
  static argcheck_T arg2_str_or_nr_or_list_dict[] = {arg_str_or_nr_or_list, 
arg_dict_any};
  static argcheck_T arg2_string_or_list_dict[] = {arg_string_or_list_any, 
arg_dict_any};
! static argcheck_T arg2_string_or_nr_string[] = {arg_string_or_nr, arg_string};
! static argcheck_T arg2_string_or_nr_nr[] = {arg_string_or_nr, arg_number};
! static argcheck_T arg2_string_or_nr_bool[] = {arg_string_or_nr, arg_bool};
  static argcheck_T arg2_chan_or_job_dict[] = {arg_chan_or_job, arg_dict_any};
  static argcheck_T arg2_chan_or_job_string[] = {arg_chan_or_job, arg_string};
! static argcheck_T arg2_nr_dict_any[] = {arg_number, arg_dict_any};
  static argcheck_T arg3_string[] = {arg_string, arg_string, arg_string};
  static argcheck_T arg3_number[] = {arg_number, arg_number, arg_number};
  static argcheck_T arg3_number_number_dict[] = {arg_number, arg_number, 
arg_dict_any};
--- 660,674 ----
  //static argcheck_T arg2_listblob_item[] = {arg_list_or_blob, 
arg_item_of_prev};
  static argcheck_T arg2_str_or_nr_or_list_dict[] = {arg_str_or_nr_or_list, 
arg_dict_any};
  static argcheck_T arg2_string_or_list_dict[] = {arg_string_or_list_any, 
arg_dict_any};
! static argcheck_T arg2_lnum_number[] = {arg_lnum, arg_number};
  static argcheck_T arg2_chan_or_job_dict[] = {arg_chan_or_job, arg_dict_any};
  static argcheck_T arg2_chan_or_job_string[] = {arg_chan_or_job, arg_string};
! static argcheck_T arg2_number_dict_any[] = {arg_number, arg_dict_any};
! static argcheck_T arg2_buffer_string[] = {arg_buffer, arg_string};
! static argcheck_T arg2_buffer_number[] = {arg_buffer, arg_number};
! static argcheck_T arg2_buffer_bool[] = {arg_buffer, arg_bool};
! static argcheck_T arg2_buffer_lnum[] = {arg_buffer, arg_lnum};
! static argcheck_T arg2_buffer_list_any[] = {arg_buffer, arg_list_any};
  static argcheck_T arg3_string[] = {arg_string, arg_string, arg_string};
  static argcheck_T arg3_number[] = {arg_number, arg_number, arg_number};
  static argcheck_T arg3_number_number_dict[] = {arg_number, arg_number, 
arg_dict_any};
***************
*** 658,665 ****
  static argcheck_T arg3_string_bool_dict[] = {arg_string, arg_bool, 
arg_dict_any};
  static argcheck_T arg3_list_string_dict[] = {arg_list_any, arg_string, 
arg_dict_any};
  static argcheck_T arg3_dict_number_number[] = {arg_dict_any, arg_number, 
arg_number};
! static argcheck_T arg3_string_or_nr_nr_bool[] = {arg_string_or_nr, 
arg_number, arg_bool};
! static argcheck_T arg3_bufnr_lnum_lnum[] = {arg_buffer, arg_lnum, arg_lnum};
  static argcheck_T arg4_number_number_string_any[] = {arg_number, arg_number, 
arg_string, NULL};
  static argcheck_T arg5_number[] = {arg_number, arg_number, arg_number, 
arg_number, arg_number};
  static argcheck_T arg4_browse[] = {arg_bool, arg_string, arg_string, 
arg_string};
--- 680,688 ----
  static argcheck_T arg3_string_bool_dict[] = {arg_string, arg_bool, 
arg_dict_any};
  static argcheck_T arg3_list_string_dict[] = {arg_list_any, arg_string, 
arg_dict_any};
  static argcheck_T arg3_dict_number_number[] = {arg_dict_any, arg_number, 
arg_number};
! static argcheck_T arg3_lnum_number_bool[] = {arg_lnum, arg_number, arg_bool};
! static argcheck_T arg3_buffer_lnum_lnum[] = {arg_buffer, arg_lnum, arg_lnum};
! static argcheck_T arg3_buffer_number_number[] = {arg_buffer, arg_number, 
arg_number};
  static argcheck_T arg4_number_number_string_any[] = {arg_number, arg_number, 
arg_string, NULL};
  static argcheck_T arg5_number[] = {arg_number, arg_number, arg_number, 
arg_number, arg_number};
  static argcheck_T arg4_browse[] = {arg_bool, arg_string, arg_string, 
arg_string};
***************
*** 678,692 ****
  static argcheck_T arg4_maparg[] = {arg_string, arg_string, arg_bool, 
arg_bool};
  static argcheck_T arg4_remote_expr[] = {arg_string, arg_string, arg_string, 
arg_number};
  static argcheck_T arg3_remove[] = {arg_list_or_dict_or_blob, arg_remove2, 
arg_number};
! static argcheck_T arg3_setbufline[] = {arg_string_or_nr, arg_string_or_nr, 
arg_str_or_nr_or_list};
! static argcheck_T arg2_setline[] = {arg_string_or_nr, NULL};
  static argcheck_T arg4_setloclist[] = {arg_number, arg_list_any, arg_string, 
arg_dict_any};
  static argcheck_T arg3_setqflist[] = {arg_list_any, arg_string, arg_dict_any};
  static argcheck_T arg2_settagstack[] = {arg_number, arg_dict_any, arg_string};
! static argcheck_T arg2_sign_getplaced[] = {arg_string_or_nr, arg_dict_any};
  static argcheck_T arg3_slice[] = {arg_slice1, arg_number, arg_number};
  static argcheck_T arg4_strpart[] = {arg_string, arg_number, arg_number, 
arg_bool};
- static argcheck_T arg2_term_setansicolors[] = {arg_string_or_nr, 
arg_list_any};
  static argcheck_T arg23_win_execute[] = {arg_number, 
arg_string_or_list_string, arg_string};
  static argcheck_T arg4_match_func[] = {arg_string_or_list_any, arg_string, 
arg_number, arg_number};
  
--- 701,714 ----
  static argcheck_T arg4_maparg[] = {arg_string, arg_string, arg_bool, 
arg_bool};
  static argcheck_T arg4_remote_expr[] = {arg_string, arg_string, arg_string, 
arg_number};
  static argcheck_T arg3_remove[] = {arg_list_or_dict_or_blob, arg_remove2, 
arg_number};
! static argcheck_T arg3_setbufline[] = {arg_buffer, arg_lnum, 
arg_str_or_nr_or_list};
! static argcheck_T arg2_setline[] = {arg_lnum, NULL};
  static argcheck_T arg4_setloclist[] = {arg_number, arg_list_any, arg_string, 
arg_dict_any};
  static argcheck_T arg3_setqflist[] = {arg_list_any, arg_string, arg_dict_any};
  static argcheck_T arg2_settagstack[] = {arg_number, arg_dict_any, arg_string};
! static argcheck_T arg2_sign_getplaced[] = {arg_buffer, arg_dict_any};
  static argcheck_T arg3_slice[] = {arg_slice1, arg_number, arg_number};
  static argcheck_T arg4_strpart[] = {arg_string, arg_number, arg_number, 
arg_bool};
  static argcheck_T arg23_win_execute[] = {arg_number, 
arg_string_or_list_string, arg_string};
  static argcheck_T arg4_match_func[] = {arg_string_or_list_any, arg_string, 
arg_number, arg_number};
  
***************
*** 1040,1066 ****
                        ret_string,         f_browsedir},
      {"bufadd",                1, 1, FEARG_1,      arg1_string,
                        ret_number,         f_bufadd},
!     {"bufexists",     1, 1, FEARG_1,      arg1_string_or_nr,
                        ret_number_bool,    f_bufexists},
!     {"buffer_exists", 1, 1, FEARG_1,      arg1_string_or_nr,  // obsolete
                        ret_number_bool,    f_bufexists},
!     {"buffer_name",   0, 1, FEARG_1,      arg1_string_or_nr,  // obsolete
                        ret_string,         f_bufname},
!     {"buffer_number", 0, 1, FEARG_1,      arg2_string_or_nr_bool, // obsolete
                        ret_number,         f_bufnr},
!     {"buflisted",     1, 1, FEARG_1,      arg1_string_or_nr,
                        ret_number_bool,    f_buflisted},
!     {"bufload",               1, 1, FEARG_1,      arg1_string_or_nr,
                        ret_void,           f_bufload},
!     {"bufloaded",     1, 1, FEARG_1,      arg1_string_or_nr,
                        ret_number_bool,    f_bufloaded},
!     {"bufname",               0, 1, FEARG_1,      arg1_string_or_nr,
                        ret_string,         f_bufname},
!     {"bufnr",         0, 2, FEARG_1,      arg2_string_or_nr_bool,
                        ret_number,         f_bufnr},
!     {"bufwinid",      1, 1, FEARG_1,      arg1_string_or_nr,
                        ret_number,         f_bufwinid},
!     {"bufwinnr",      1, 1, FEARG_1,      arg1_string_or_nr,
                        ret_number,         f_bufwinnr},
      {"byte2line",     1, 1, FEARG_1,      arg1_number,
                        ret_number,         f_byte2line},
--- 1062,1088 ----
                        ret_string,         f_browsedir},
      {"bufadd",                1, 1, FEARG_1,      arg1_string,
                        ret_number,         f_bufadd},
!     {"bufexists",     1, 1, FEARG_1,      arg1_buffer,
                        ret_number_bool,    f_bufexists},
!     {"buffer_exists", 1, 1, FEARG_1,      arg1_buffer,        // obsolete
                        ret_number_bool,    f_bufexists},
!     {"buffer_name",   0, 1, FEARG_1,      arg1_buffer,        // obsolete
                        ret_string,         f_bufname},
!     {"buffer_number", 0, 1, FEARG_1,      arg1_buffer,        // obsolete
                        ret_number,         f_bufnr},
!     {"buflisted",     1, 1, FEARG_1,      arg1_buffer,
                        ret_number_bool,    f_buflisted},
!     {"bufload",               1, 1, FEARG_1,      arg1_buffer,
                        ret_void,           f_bufload},
!     {"bufloaded",     1, 1, FEARG_1,      arg1_buffer,
                        ret_number_bool,    f_bufloaded},
!     {"bufname",               0, 1, FEARG_1,      arg1_buffer,
                        ret_string,         f_bufname},
!     {"bufnr",         0, 2, FEARG_1,      arg2_buffer_bool,
                        ret_number,         f_bufnr},
!     {"bufwinid",      1, 1, FEARG_1,      arg1_buffer,
                        ret_number,         f_bufwinid},
!     {"bufwinnr",      1, 1, FEARG_1,      arg1_buffer,
                        ret_number,         f_bufwinnr},
      {"byte2line",     1, 1, FEARG_1,      arg1_number,
                        ret_number,         f_byte2line},
***************
*** 1120,1132 ****
                        ret_number,         f_charidx},
      {"chdir",         1, 1, FEARG_1,      arg1_string,
                        ret_string,         f_chdir},
!     {"cindent",               1, 1, FEARG_1,      arg1_string_or_nr,
                        ret_number,         f_cindent},
      {"clearmatches",  0, 1, FEARG_1,      arg1_number,
                        ret_void,           f_clearmatches},
      {"col",           1, 1, FEARG_1,      arg1_string_or_list_any,
                        ret_number,         f_col},
!     {"complete",      2, 2, FEARG_2,      arg2_nr_list,
                        ret_void,           f_complete},
      {"complete_add",  1, 1, FEARG_1,      arg1_dict_or_string,
                        ret_number,         f_complete_add},
--- 1142,1154 ----
                        ret_number,         f_charidx},
      {"chdir",         1, 1, FEARG_1,      arg1_string,
                        ret_string,         f_chdir},
!     {"cindent",               1, 1, FEARG_1,      arg1_lnum,
                        ret_number,         f_cindent},
      {"clearmatches",  0, 1, FEARG_1,      arg1_number,
                        ret_void,           f_clearmatches},
      {"col",           1, 1, FEARG_1,      arg1_string_or_list_any,
                        ret_number,         f_col},
!     {"complete",      2, 2, FEARG_2,      arg2_number_list,
                        ret_void,           f_complete},
      {"complete_add",  1, 1, FEARG_1,      arg1_dict_or_string,
                        ret_number,         f_complete_add},
***************
*** 1160,1172 ****
                        ret_first_arg,      f_deepcopy},
      {"delete",                1, 2, FEARG_1,      arg2_string,
                        ret_number_bool,    f_delete},
!     {"deletebufline", 2, 3, FEARG_1,      arg3_bufnr_lnum_lnum,
                        ret_number_bool,    f_deletebufline},
      {"did_filetype",  0, 0, 0,            NULL,
                        ret_number_bool,    f_did_filetype},
!     {"diff_filler",   1, 1, FEARG_1,      arg1_string_or_nr,
                        ret_number,         f_diff_filler},
!     {"diff_hlID",     2, 2, FEARG_1,      arg2_string_or_nr_nr,
                        ret_number,         f_diff_hlID},
      {"echoraw",               1, 1, FEARG_1,      arg1_string,
                        ret_void,           f_echoraw},
--- 1182,1194 ----
                        ret_first_arg,      f_deepcopy},
      {"delete",                1, 2, FEARG_1,      arg2_string,
                        ret_number_bool,    f_delete},
!     {"deletebufline", 2, 3, FEARG_1,      arg3_buffer_lnum_lnum,
                        ret_number_bool,    f_deletebufline},
      {"did_filetype",  0, 0, 0,            NULL,
                        ret_number_bool,    f_did_filetype},
!     {"diff_filler",   1, 1, FEARG_1,      arg1_lnum,
                        ret_number,         f_diff_filler},
!     {"diff_hlID",     2, 2, FEARG_1,      arg2_lnum_number,
                        ret_number,         f_diff_hlID},
      {"echoraw",               1, 1, FEARG_1,      arg1_string,
                        ret_void,           f_echoraw},
***************
*** 1226,1240 ****
                        ret_string,         f_fnameescape},
      {"fnamemodify",   2, 2, FEARG_1,      arg2_string,
                        ret_string,         f_fnamemodify},
!     {"foldclosed",    1, 1, FEARG_1,      arg1_string_or_nr,
                        ret_number,         f_foldclosed},
!     {"foldclosedend", 1, 1, FEARG_1,      arg1_string_or_nr,
                        ret_number,         f_foldclosedend},
!     {"foldlevel",     1, 1, FEARG_1,      arg1_string_or_nr,
                        ret_number,         f_foldlevel},
      {"foldtext",      0, 0, 0,            NULL,
                        ret_string,         f_foldtext},
!     {"foldtextresult",        1, 1, FEARG_1,      arg1_string_or_nr,
                        ret_string,         f_foldtextresult},
      {"foreground",    0, 0, 0,            NULL,
                        ret_void,           f_foreground},
--- 1248,1262 ----
                        ret_string,         f_fnameescape},
      {"fnamemodify",   2, 2, FEARG_1,      arg2_string,
                        ret_string,         f_fnamemodify},
!     {"foldclosed",    1, 1, FEARG_1,      arg1_lnum,
                        ret_number,         f_foldclosed},
!     {"foldclosedend", 1, 1, FEARG_1,      arg1_lnum,
                        ret_number,         f_foldclosedend},
!     {"foldlevel",     1, 1, FEARG_1,      arg1_lnum,
                        ret_number,         f_foldlevel},
      {"foldtext",      0, 0, 0,            NULL,
                        ret_string,         f_foldtext},
!     {"foldtextresult",        1, 1, FEARG_1,      arg1_lnum,
                        ret_string,         f_foldtextresult},
      {"foreground",    0, 0, 0,            NULL,
                        ret_void,           f_foreground},
***************
*** 1248,1260 ****
                        ret_void,           f_garbagecollect},
      {"get",           2, 3, FEARG_1,      NULL,
                        ret_any,            f_get},
!     {"getbufinfo",    0, 1, FEARG_1,      NULL,
                        ret_list_dict_any,  f_getbufinfo},
!     {"getbufline",    2, 3, FEARG_1,      arg3_bufnr_lnum_lnum,
                        ret_list_string,    f_getbufline},
      {"getbufvar",     2, 3, FEARG_1,      NULL,
                        ret_any,            f_getbufvar},
!     {"getchangelist", 0, 1, FEARG_1,      arg1_string_or_nr,
                        ret_list_any,       f_getchangelist},
      {"getchar",               0, 1, 0,            arg1_bool,
                        ret_any,            f_getchar},
--- 1270,1282 ----
                        ret_void,           f_garbagecollect},
      {"get",           2, 3, FEARG_1,      NULL,
                        ret_any,            f_get},
!     {"getbufinfo",    0, 1, FEARG_1,      arg1_buffer_or_dict_any,
                        ret_list_dict_any,  f_getbufinfo},
!     {"getbufline",    2, 3, FEARG_1,      arg3_buffer_lnum_lnum,
                        ret_list_string,    f_getbufline},
      {"getbufvar",     2, 3, FEARG_1,      NULL,
                        ret_any,            f_getbufvar},
!     {"getchangelist", 0, 1, FEARG_1,      arg1_buffer,
                        ret_list_any,       f_getchangelist},
      {"getchar",               0, 1, 0,            arg1_bool,
                        ret_any,            f_getchar},
***************
*** 1302,1312 ****
                        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},
!     {"getloclist",    1, 2, 0,            arg2_nr_dict_any,
                        ret_list_or_dict_1, f_getloclist},
!     {"getmarklist",   0, 1, FEARG_1,      arg1_string_or_nr,
                        ret_list_dict_any,  f_getmarklist},
      {"getmatches",    0, 1, 0,            arg1_number,
                        ret_list_dict_any,  f_getmatches},
--- 1324,1334 ----
                        ret_number_bool,    f_getimstatus},
      {"getjumplist",   0, 2, FEARG_1,      arg2_number,
                        ret_list_any,       f_getjumplist},
!     {"getline",               1, 2, FEARG_1,      arg2_lnum,
                        ret_f_getline,      f_getline},
!     {"getloclist",    1, 2, 0,            arg2_number_dict_any,
                        ret_list_or_dict_1, f_getloclist},
!     {"getmarklist",   0, 1, FEARG_1,      arg1_buffer,
                        ret_list_dict_any,  f_getmarklist},
      {"getmatches",    0, 1, 0,            arg1_number,
                        ret_list_dict_any,  f_getmatches},
***************
*** 1352,1358 ****
                        ret_any,            f_globpath},
      {"has",           1, 2, 0,            arg2_string_bool,
                        ret_number_bool,    f_has},
!     {"has_key",               2, 2, FEARG_1,      arg2_dict_string_or_nr,
                        ret_number_bool,    f_has_key},
      {"haslocaldir",   0, 2, FEARG_1,      arg2_number,
                        ret_number,         f_haslocaldir},
--- 1374,1380 ----
                        ret_any,            f_globpath},
      {"has",           1, 2, 0,            arg2_string_bool,
                        ret_number_bool,    f_has},
!     {"has_key",               2, 2, FEARG_1,      arg2_dict_any_string_or_nr,
                        ret_number_bool,    f_has_key},
      {"haslocaldir",   0, 2, FEARG_1,      arg2_number,
                        ret_number,         f_haslocaldir},
***************
*** 1378,1384 ****
                        ret_string,         f_hostname},
      {"iconv",         3, 3, FEARG_1,      arg3_string,
                        ret_string,         f_iconv},
!     {"indent",                1, 1, FEARG_1,      arg1_string_or_nr,
                        ret_number,         f_indent},
      {"index",         2, 4, FEARG_1,      arg4_index,
                        ret_number,         f_index},
--- 1400,1406 ----
                        ret_string,         f_hostname},
      {"iconv",         3, 3, FEARG_1,      arg3_string,
                        ret_string,         f_iconv},
!     {"indent",                1, 1, FEARG_1,      arg1_lnum,
                        ret_number,         f_indent},
      {"index",         2, 4, FEARG_1,      arg4_index,
                        ret_number,         f_index},
***************
*** 1444,1458 ****
                        ret_number,         f_libcallnr},
      {"line",          1, 2, FEARG_1,      arg2_string_number,
                        ret_number,         f_line},
!     {"line2byte",     1, 1, FEARG_1,      arg1_string_or_nr,
                        ret_number,         f_line2byte},
!     {"lispindent",    1, 1, FEARG_1,      arg1_string_or_nr,
                        ret_number,         f_lispindent},
      {"list2str",      1, 2, FEARG_1,      arg2_list_number_bool,
                        ret_string,         f_list2str},
      {"listener_add",  1, 2, FEARG_2,      NULL,
                        ret_number,         f_listener_add},
!     {"listener_flush",        0, 1, FEARG_1,      arg1_string_or_nr,
                        ret_void,           f_listener_flush},
      {"listener_remove",       1, 1, FEARG_1,      arg1_number,
                        ret_number_bool,    f_listener_remove},
--- 1466,1480 ----
                        ret_number,         f_libcallnr},
      {"line",          1, 2, FEARG_1,      arg2_string_number,
                        ret_number,         f_line},
!     {"line2byte",     1, 1, FEARG_1,      arg1_lnum,
                        ret_number,         f_line2byte},
!     {"lispindent",    1, 1, FEARG_1,      arg1_lnum,
                        ret_number,         f_lispindent},
      {"list2str",      1, 2, FEARG_1,      arg2_list_number_bool,
                        ret_string,         f_list2str},
      {"listener_add",  1, 2, FEARG_2,      NULL,
                        ret_number,         f_listener_add},
!     {"listener_flush",        0, 1, FEARG_1,      arg1_buffer,
                        ret_void,           f_listener_flush},
      {"listener_remove",       1, 1, FEARG_1,      arg1_number,
                        ret_number_bool,    f_listener_remove},
***************
*** 1526,1534 ****
            NULL
  #endif
                        },
!     {"nextnonblank",  1, 1, FEARG_1,      arg1_string_or_nr,
                        ret_number,         f_nextnonblank},
!     {"nr2char",               1, 2, FEARG_1,      arg2_nr_bool,
                        ret_string,         f_nr2char},
      {"or",            2, 2, FEARG_1,      arg2_number,
                        ret_number,         f_or},
--- 1548,1556 ----
            NULL
  #endif
                        },
!     {"nextnonblank",  1, 1, FEARG_1,      arg1_lnum,
                        ret_number,         f_nextnonblank},
!     {"nr2char",               1, 2, FEARG_1,      arg2_number_bool,
                        ret_string,         f_nr2char},
      {"or",            2, 2, FEARG_1,      arg2_number,
                        ret_number,         f_or},
***************
*** 1554,1562 ****
                        ret_number,         PROP_FUNC(f_popup_create)},
      {"popup_dialog",  2, 2, FEARG_1,      arg2_str_or_nr_or_list_dict,
                        ret_number,         PROP_FUNC(f_popup_dialog)},
!     {"popup_filter_menu", 2, 2, 0,        arg2_nr_string,
                        ret_bool,           PROP_FUNC(f_popup_filter_menu)},
!     {"popup_filter_yesno", 2, 2, 0,       arg2_nr_string,
                        ret_bool,           PROP_FUNC(f_popup_filter_yesno)},
      {"popup_findinfo",        0, 0, 0,            NULL,
                        ret_number,         PROP_FUNC(f_popup_findinfo)},
--- 1576,1584 ----
                        ret_number,         PROP_FUNC(f_popup_create)},
      {"popup_dialog",  2, 2, FEARG_1,      arg2_str_or_nr_or_list_dict,
                        ret_number,         PROP_FUNC(f_popup_dialog)},
!     {"popup_filter_menu", 2, 2, 0,        arg2_number_string,
                        ret_bool,           PROP_FUNC(f_popup_filter_menu)},
!     {"popup_filter_yesno", 2, 2, 0,       arg2_number_string,
                        ret_bool,           PROP_FUNC(f_popup_filter_yesno)},
      {"popup_findinfo",        0, 0, 0,            NULL,
                        ret_number,         PROP_FUNC(f_popup_findinfo)},
***************
*** 1574,1584 ****
                        ret_number,         PROP_FUNC(f_popup_locate)},
      {"popup_menu",    2, 2, FEARG_1,      arg2_str_or_nr_or_list_dict,
                        ret_number,         PROP_FUNC(f_popup_menu)},
!     {"popup_move",    2, 2, FEARG_1,      arg2_nr_dict_any,
                        ret_void,           PROP_FUNC(f_popup_move)},
      {"popup_notification", 2, 2, FEARG_1,   arg2_str_or_nr_or_list_dict,
                        ret_number,         PROP_FUNC(f_popup_notification)},
!     {"popup_setoptions", 2, 2, FEARG_1,           arg2_nr_dict_any,
                        ret_void,           PROP_FUNC(f_popup_setoptions)},
      {"popup_settext", 2, 2, FEARG_1,      NULL,
                        ret_void,           PROP_FUNC(f_popup_settext)},
--- 1596,1606 ----
                        ret_number,         PROP_FUNC(f_popup_locate)},
      {"popup_menu",    2, 2, FEARG_1,      arg2_str_or_nr_or_list_dict,
                        ret_number,         PROP_FUNC(f_popup_menu)},
!     {"popup_move",    2, 2, FEARG_1,      arg2_number_dict_any,
                        ret_void,           PROP_FUNC(f_popup_move)},
      {"popup_notification", 2, 2, FEARG_1,   arg2_str_or_nr_or_list_dict,
                        ret_number,         PROP_FUNC(f_popup_notification)},
!     {"popup_setoptions", 2, 2, FEARG_1,           arg2_number_dict_any,
                        ret_void,           PROP_FUNC(f_popup_setoptions)},
      {"popup_settext", 2, 2, FEARG_1,      NULL,
                        ret_void,           PROP_FUNC(f_popup_settext)},
***************
*** 1586,1602 ****
                        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,      arg1_string_or_nr,
                        ret_number,         f_prevnonblank},
      {"printf",                1, 19, FEARG_2,     NULL,
                        ret_string,         f_printf},
!     {"prompt_getprompt", 1, 1, FEARG_1,           arg1_string_or_nr,
                        ret_string,         JOB_FUNC(f_prompt_getprompt)},
      {"prompt_setcallback", 2, 2, FEARG_1,   NULL,
                        ret_void,           JOB_FUNC(f_prompt_setcallback)},
      {"prompt_setinterrupt", 2, 2, FEARG_1,  NULL,
                        ret_void,           JOB_FUNC(f_prompt_setinterrupt)},
!     {"prompt_setprompt", 2, 2, FEARG_1,           arg2_string_or_nr_string,
                        ret_void,           JOB_FUNC(f_prompt_setprompt)},
      {"prop_add",      3, 3, FEARG_1,      arg3_number_number_dict,
                        ret_void,           PROP_FUNC(f_prop_add)},
--- 1608,1624 ----
                        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,      arg1_lnum,
                        ret_number,         f_prevnonblank},
      {"printf",                1, 19, FEARG_2,     NULL,
                        ret_string,         f_printf},
!     {"prompt_getprompt", 1, 1, FEARG_1,           arg1_buffer,
                        ret_string,         JOB_FUNC(f_prompt_getprompt)},
      {"prompt_setcallback", 2, 2, FEARG_1,   NULL,
                        ret_void,           JOB_FUNC(f_prompt_setcallback)},
      {"prompt_setinterrupt", 2, 2, FEARG_1,  NULL,
                        ret_void,           JOB_FUNC(f_prompt_setinterrupt)},
!     {"prompt_setprompt", 2, 2, FEARG_1,           arg2_buffer_string,
                        ret_void,           JOB_FUNC(f_prompt_setprompt)},
      {"prop_add",      3, 3, FEARG_1,      arg3_number_number_dict,
                        ret_void,           PROP_FUNC(f_prop_add)},
***************
*** 1604,1610 ****
                        ret_void,           PROP_FUNC(f_prop_clear)},
      {"prop_find",     1, 2, FEARG_1,      arg2_dict_string,
                        ret_dict_any,       PROP_FUNC(f_prop_find)},
!     {"prop_list",     1, 2, FEARG_1,      arg2_nr_dict_any,
                        ret_list_dict_any,  PROP_FUNC(f_prop_list)},
      {"prop_remove",   1, 3, FEARG_1,      arg3_dict_number_number,
                        ret_number,         PROP_FUNC(f_prop_remove)},
--- 1626,1632 ----
                        ret_void,           PROP_FUNC(f_prop_clear)},
      {"prop_find",     1, 2, FEARG_1,      arg2_dict_string,
                        ret_dict_any,       PROP_FUNC(f_prop_find)},
!     {"prop_list",     1, 2, FEARG_1,      arg2_number_dict_any,
                        ret_list_dict_any,  PROP_FUNC(f_prop_list)},
      {"prop_remove",   1, 3, FEARG_1,      arg3_dict_number_number,
                        ret_number,         PROP_FUNC(f_prop_remove)},
***************
*** 1664,1670 ****
                        ret_string,         f_reg_executing},
      {"reg_recording", 0, 0, 0,            NULL,
                        ret_string,         f_reg_recording},
!     {"reltime",               0, 2, FEARG_1,      arg2_list_nr,
                        ret_list_any,       f_reltime},
      {"reltimefloat",  1, 1, FEARG_1,      arg1_list_number,
                        ret_float,          FLOAT_FUNC(f_reltimefloat)},
--- 1686,1692 ----
                        ret_string,         f_reg_executing},
      {"reg_recording", 0, 0, 0,            NULL,
                        ret_string,         f_reg_recording},
!     {"reltime",               0, 2, FEARG_1,      arg2_list_number,
                        ret_list_any,       f_reltime},
      {"reltimefloat",  1, 1, FEARG_1,      arg1_list_number,
                        ret_float,          FLOAT_FUNC(f_reltimefloat)},
***************
*** 1882,1904 ****
                        ret_string,         f_strtrans},
      {"strwidth",      1, 1, FEARG_1,      arg1_string,
                        ret_number,         f_strwidth},
!     {"submatch",      1, 2, FEARG_1,      arg2_nr_bool,
                        ret_string,         f_submatch},
      {"substitute",    4, 4, FEARG_1,      NULL,
                        ret_string,         f_substitute},
      {"swapinfo",      1, 1, FEARG_1,      arg1_string,
                        ret_dict_any,       f_swapinfo},
!     {"swapname",      1, 1, FEARG_1,      arg1_string_or_nr,
                        ret_string,         f_swapname},
!     {"synID",         3, 3, 0,            arg3_string_or_nr_nr_bool,
                        ret_number,         f_synID},
      {"synIDattr",     2, 3, FEARG_1,      NULL,
                        ret_string,         f_synIDattr},
      {"synIDtrans",    1, 1, FEARG_1,      arg1_number,
                        ret_number,         f_synIDtrans},
!     {"synconcealed",  2, 2, 0,            arg2_string_or_nr_nr,
                        ret_list_any,       f_synconcealed},
!     {"synstack",      2, 2, 0,            arg2_string_or_nr_nr,
                        ret_list_number,    f_synstack},
      {"system",                1, 2, FEARG_1,      NULL,
                        ret_string,         f_system},
--- 1904,1926 ----
                        ret_string,         f_strtrans},
      {"strwidth",      1, 1, FEARG_1,      arg1_string,
                        ret_number,         f_strwidth},
!     {"submatch",      1, 2, FEARG_1,      arg2_number_bool,
                        ret_string,         f_submatch},
      {"substitute",    4, 4, FEARG_1,      NULL,
                        ret_string,         f_substitute},
      {"swapinfo",      1, 1, FEARG_1,      arg1_string,
                        ret_dict_any,       f_swapinfo},
!     {"swapname",      1, 1, FEARG_1,      arg1_buffer,
                        ret_string,         f_swapname},
!     {"synID",         3, 3, 0,            arg3_lnum_number_bool,
                        ret_number,         f_synID},
      {"synIDattr",     2, 3, FEARG_1,      NULL,
                        ret_string,         f_synIDattr},
      {"synIDtrans",    1, 1, FEARG_1,      arg1_number,
                        ret_number,         f_synIDtrans},
!     {"synconcealed",  2, 2, 0,            arg2_lnum_number,
                        ret_list_any,       f_synconcealed},
!     {"synstack",      2, 2, 0,            arg2_lnum_number,
                        ret_list_number,    f_synstack},
      {"system",                1, 2, FEARG_1,      NULL,
                        ret_string,         f_system},
***************
*** 1908,1914 ****
                        ret_list_number,    f_tabpagebuflist},
      {"tabpagenr",     0, 1, 0,            arg1_string,
                        ret_number,         f_tabpagenr},
!     {"tabpagewinnr",  1, 2, FEARG_1,      arg2_nr_string,
                        ret_number,         f_tabpagewinnr},
      {"tagfiles",      0, 0, 0,            NULL,
                        ret_list_string,    f_tagfiles},
--- 1930,1936 ----
                        ret_list_number,    f_tabpagebuflist},
      {"tabpagenr",     0, 1, 0,            arg1_string,
                        ret_number,         f_tabpagenr},
!     {"tabpagewinnr",  1, 2, FEARG_1,      arg2_number_string,
                        ret_number,         f_tabpagewinnr},
      {"tagfiles",      0, 0, 0,            NULL,
                        ret_list_string,    f_tagfiles},
***************
*** 1926,1934 ****
                        ret_number,         TERM_FUNC(f_term_dumpload)},
      {"term_dumpwrite",        2, 3, FEARG_2,      NULL,
                        ret_void,           TERM_FUNC(f_term_dumpwrite)},
!     {"term_getaltscreen", 1, 1, FEARG_1,    arg1_string_or_nr,
                        ret_number,         TERM_FUNC(f_term_getaltscreen)},
!     {"term_getansicolors", 1, 1, FEARG_1,   arg1_string_or_nr,
                        ret_list_string,
  #if defined(FEAT_TERMINAL) && (defined(FEAT_GUI) || 
defined(FEAT_TERMGUICOLORS))
            f_term_getansicolors
--- 1948,1956 ----
                        ret_number,         TERM_FUNC(f_term_dumpload)},
      {"term_dumpwrite",        2, 3, FEARG_2,      NULL,
                        ret_void,           TERM_FUNC(f_term_dumpwrite)},
!     {"term_getaltscreen", 1, 1, FEARG_1,    arg1_buffer,
                        ret_number,         TERM_FUNC(f_term_getaltscreen)},
!     {"term_getansicolors", 1, 1, FEARG_1,   arg1_buffer,
                        ret_list_string,
  #if defined(FEAT_TERMINAL) && (defined(FEAT_GUI) || 
defined(FEAT_TERMGUICOLORS))
            f_term_getansicolors
***************
*** 1936,1966 ****
            NULL
  #endif
                        },
!     {"term_getattr",  2, 2, FEARG_1,      arg2_nr_string,
                        ret_number,         TERM_FUNC(f_term_getattr)},
!     {"term_getcursor",        1, 1, FEARG_1,      arg1_string_or_nr,
                        ret_list_any,       TERM_FUNC(f_term_getcursor)},
!     {"term_getjob",   1, 1, FEARG_1,      arg1_string_or_nr,
                        ret_job,            TERM_FUNC(f_term_getjob)},
!     {"term_getline",  2, 2, FEARG_1,      NULL,
                        ret_string,         TERM_FUNC(f_term_getline)},
!     {"term_getscrolled", 1, 1, FEARG_1,           arg1_string_or_nr,
                        ret_number,         TERM_FUNC(f_term_getscrolled)},
!     {"term_getsize",  1, 1, FEARG_1,      arg1_string_or_nr,
                        ret_list_number,    TERM_FUNC(f_term_getsize)},
!     {"term_getstatus",        1, 1, FEARG_1,      arg1_string_or_nr,
                        ret_string,         TERM_FUNC(f_term_getstatus)},
!     {"term_gettitle", 1, 1, FEARG_1,      arg1_string_or_nr,
                        ret_string,         TERM_FUNC(f_term_gettitle)},
!     {"term_gettty",   1, 2, FEARG_1,      arg2_string_or_nr_bool,
                        ret_string,         TERM_FUNC(f_term_gettty)},
      {"term_list",     0, 0, 0,            NULL,
                        ret_list_number,    TERM_FUNC(f_term_list)},
!     {"term_scrape",   2, 2, FEARG_1,      NULL,
                        ret_list_dict_any,  TERM_FUNC(f_term_scrape)},
!     {"term_sendkeys", 2, 2, FEARG_1,      arg2_string_or_nr_string,
                        ret_void,           TERM_FUNC(f_term_sendkeys)},
!     {"term_setansicolors", 2, 2, FEARG_1,   arg2_term_setansicolors,
                        ret_void,
  #if defined(FEAT_TERMINAL) && (defined(FEAT_GUI) || 
defined(FEAT_TERMGUICOLORS))
            f_term_setansicolors
--- 1958,1988 ----
            NULL
  #endif
                        },
!     {"term_getattr",  2, 2, FEARG_1,      arg2_number_string,
                        ret_number,         TERM_FUNC(f_term_getattr)},
!     {"term_getcursor",        1, 1, FEARG_1,      arg1_buffer,
                        ret_list_any,       TERM_FUNC(f_term_getcursor)},
!     {"term_getjob",   1, 1, FEARG_1,      arg1_buffer,
                        ret_job,            TERM_FUNC(f_term_getjob)},
!     {"term_getline",  2, 2, FEARG_1,      arg2_buffer_lnum,
                        ret_string,         TERM_FUNC(f_term_getline)},
!     {"term_getscrolled", 1, 1, FEARG_1,           arg1_buffer,
                        ret_number,         TERM_FUNC(f_term_getscrolled)},
!     {"term_getsize",  1, 1, FEARG_1,      arg1_buffer,
                        ret_list_number,    TERM_FUNC(f_term_getsize)},
!     {"term_getstatus",        1, 1, FEARG_1,      arg1_buffer,
                        ret_string,         TERM_FUNC(f_term_getstatus)},
!     {"term_gettitle", 1, 1, FEARG_1,      arg1_buffer,
                        ret_string,         TERM_FUNC(f_term_gettitle)},
!     {"term_gettty",   1, 2, FEARG_1,      arg2_buffer_bool,
                        ret_string,         TERM_FUNC(f_term_gettty)},
      {"term_list",     0, 0, 0,            NULL,
                        ret_list_number,    TERM_FUNC(f_term_list)},
!     {"term_scrape",   2, 2, FEARG_1,      arg2_buffer_lnum,
                        ret_list_dict_any,  TERM_FUNC(f_term_scrape)},
!     {"term_sendkeys", 2, 2, FEARG_1,      arg2_buffer_string,
                        ret_void,           TERM_FUNC(f_term_sendkeys)},
!     {"term_setansicolors", 2, 2, FEARG_1,   arg2_buffer_list_any,
                        ret_void,
  #if defined(FEAT_TERMINAL) && (defined(FEAT_GUI) || 
defined(FEAT_TERMGUICOLORS))
            f_term_setansicolors
***************
*** 1968,1984 ****
            NULL
  #endif
                        },
!     {"term_setapi",   2, 2, FEARG_1,      arg2_string_or_nr_string,
                        ret_void,           TERM_FUNC(f_term_setapi)},
!     {"term_setkill",  2, 2, FEARG_1,      arg2_string_or_nr_string,
                        ret_void,           TERM_FUNC(f_term_setkill)},
!     {"term_setrestore",       2, 2, FEARG_1,      arg2_string_or_nr_string,
                        ret_void,           TERM_FUNC(f_term_setrestore)},
!     {"term_setsize",  3, 3, FEARG_1,      NULL,
                        ret_void,           TERM_FUNC(f_term_setsize)},
!     {"term_start",    1, 2, FEARG_1,      NULL,
                        ret_number,         TERM_FUNC(f_term_start)},
!     {"term_wait",     1, 2, FEARG_1,      arg2_string_or_nr_nr,
                        ret_void,           TERM_FUNC(f_term_wait)},
      {"terminalprops", 0, 0, 0,            NULL,
                        ret_dict_string,    f_terminalprops},
--- 1990,2006 ----
            NULL
  #endif
                        },
!     {"term_setapi",   2, 2, FEARG_1,      arg2_buffer_string,
                        ret_void,           TERM_FUNC(f_term_setapi)},
!     {"term_setkill",  2, 2, FEARG_1,      arg2_buffer_string,
                        ret_void,           TERM_FUNC(f_term_setkill)},
!     {"term_setrestore",       2, 2, FEARG_1,      arg2_buffer_string,
                        ret_void,           TERM_FUNC(f_term_setrestore)},
!     {"term_setsize",  3, 3, FEARG_1,      arg3_buffer_number_number,
                        ret_void,           TERM_FUNC(f_term_setsize)},
!     {"term_start",    1, 2, FEARG_1,      arg2_string_or_list_dict,
                        ret_number,         TERM_FUNC(f_term_start)},
!     {"term_wait",     1, 2, FEARG_1,      arg2_buffer_number,
                        ret_void,           TERM_FUNC(f_term_wait)},
      {"terminalprops", 0, 0, 0,            NULL,
                        ret_dict_string,    f_terminalprops},
***************
*** 2042,2048 ****
                        ret_void,           f_test_void},
      {"timer_info",    0, 1, FEARG_1,      arg1_number,
                        ret_list_dict_any,  TIMER_FUNC(f_timer_info)},
!     {"timer_pause",   2, 2, FEARG_1,      arg2_nr_bool,
                        ret_void,           TIMER_FUNC(f_timer_pause)},
      {"timer_start",   2, 3, FEARG_1,      NULL,
                        ret_number,         TIMER_FUNC(f_timer_start)},
--- 2064,2070 ----
                        ret_void,           f_test_void},
      {"timer_info",    0, 1, FEARG_1,      arg1_number,
                        ret_list_dict_any,  TIMER_FUNC(f_timer_info)},
!     {"timer_pause",   2, 2, FEARG_1,      arg2_number_bool,
                        ret_void,           TIMER_FUNC(f_timer_pause)},
      {"timer_start",   2, 3, FEARG_1,      NULL,
                        ret_number,         TIMER_FUNC(f_timer_start)},
***************
*** 2851,2858 ****
                    && argvars[0].v_type != VAR_STRING
                    && argvars[0].v_type != VAR_LIST
                    && check_for_number_arg(argvars, 0) == FAIL)
!               || check_for_number_arg(argvars, 1) == FAIL
!               || check_for_opt_number_arg(argvars, 2) == FAIL))
        return;
  
      rettv->vval.v_number = -1;
--- 2873,2881 ----
                    && argvars[0].v_type != VAR_STRING
                    && argvars[0].v_type != VAR_LIST
                    && check_for_number_arg(argvars, 0) == FAIL)
!               || check_for_opt_number_arg(argvars, 1) == FAIL
!               || (argvars[1].v_type != VAR_UNKNOWN
!                   && check_for_opt_number_arg(argvars, 2) == FAIL)))
        return;
  
      rettv->vval.v_number = -1;
***************
*** 9133,9139 ****
      int               transerr = FALSE;
  
      if (in_vim9script()
!           && (check_for_string_or_number_arg(argvars, 0) == FAIL
                || check_for_number_arg(argvars, 1) == FAIL
                || check_for_bool_arg(argvars, 2) == FAIL))
        return;
--- 9156,9162 ----
      int               transerr = FALSE;
  
      if (in_vim9script()
!           && (check_for_lnum_arg(argvars, 0) == FAIL
                || check_for_number_arg(argvars, 1) == FAIL
                || check_for_bool_arg(argvars, 2) == FAIL))
        return;
***************
*** 9282,9288 ****
      rettv_list_set(rettv, NULL);
  
      if (in_vim9script()
!           && (check_for_string_or_number_arg(argvars, 0) == FAIL
                || check_for_number_arg(argvars, 1) == FAIL))
        return;
  
--- 9305,9311 ----
      rettv_list_set(rettv, NULL);
  
      if (in_vim9script()
!           && (check_for_lnum_arg(argvars, 0) == FAIL
                || check_for_number_arg(argvars, 1) == FAIL))
        return;
  
***************
*** 9343,9349 ****
      rettv_list_set(rettv, NULL);
  
      if (in_vim9script()
!           && (check_for_string_or_number_arg(argvars, 0) == FAIL
                || check_for_number_arg(argvars, 1) == FAIL))
        return;
  
--- 9366,9372 ----
      rettv_list_set(rettv, NULL);
  
      if (in_vim9script()
!           && (check_for_lnum_arg(argvars, 0) == FAIL
                || check_for_number_arg(argvars, 1) == FAIL))
        return;
  
*** ../vim-8.2.3193/src/job.c   2021-07-20 17:51:48.247744104 +0200
--- src/job.c   2021-07-21 19:06:07.877106611 +0200
***************
*** 1726,1732 ****
      char_u    *text;
  
      if (in_vim9script()
!           && (check_for_string_or_number_arg(argvars, 0) == FAIL
                || check_for_string_arg(argvars, 1) == FAIL))
        return;
  
--- 1726,1732 ----
      char_u    *text;
  
      if (in_vim9script()
!           && (check_for_buffer_arg(argvars, 0) == FAIL
                || check_for_string_arg(argvars, 1) == FAIL))
        return;
  
*** ../vim-8.2.3193/src/proto/typval.pro        2021-07-20 17:51:48.247744104 
+0200
--- src/proto/typval.pro        2021-07-21 19:06:07.881106600 +0200
***************
*** 25,34 ****
--- 25,37 ----
  int check_for_job_arg(typval_T *args, int idx);
  int check_for_string_or_number_arg(typval_T *args, int idx);
  int check_for_buffer_arg(typval_T *args, int idx);
+ int check_for_opt_buffer_arg(typval_T *args, int idx);
  int check_for_lnum_arg(typval_T *args, int idx);
  int check_for_opt_lnum_arg(typval_T *args, int idx);
  int check_for_opt_string_or_number_arg(typval_T *args, int idx);
  int check_for_string_or_blob_arg(typval_T *args, int idx);
+ int check_for_string_or_list_arg(typval_T *args, int idx);
+ int check_for_buffer_or_dict_arg(typval_T *args, int idx);
  char_u *tv_get_string(typval_T *varp);
  char_u *tv_get_string_strict(typval_T *varp);
  char_u *tv_get_string_buf(typval_T *varp, char_u *buf);
*** ../vim-8.2.3193/src/sign.c  2021-07-20 17:51:48.247744104 +0200
--- src/sign.c  2021-07-21 19:06:07.881106600 +0200
***************
*** 2301,2307 ****
        return;
  
      if (in_vim9script()
!           && (check_for_opt_string_or_number_arg(argvars, 0) == FAIL
                || (argvars[0].v_type != VAR_UNKNOWN
                    && check_for_opt_dict_arg(argvars, 1) == FAIL)))
        return;
--- 2301,2307 ----
        return;
  
      if (in_vim9script()
!           && (check_for_opt_buffer_arg(argvars, 0) == FAIL
                || (argvars[0].v_type != VAR_UNKNOWN
                    && check_for_opt_dict_arg(argvars, 1) == FAIL)))
        return;
*** ../vim-8.2.3193/src/terminal.c      2021-07-20 17:51:48.247744104 +0200
--- src/terminal.c      2021-07-21 19:06:07.881106600 +0200
***************
*** 5779,5789 ****
      void
  f_term_getline(typval_T *argvars, typval_T *rettv)
  {
!     buf_T         *buf = term_get_buf(argvars, "term_getline()");
      term_T        *term;
      int                   row;
  
      rettv->v_type = VAR_STRING;
      if (buf == NULL)
        return;
      term = buf->b_term;
--- 5779,5796 ----
      void
  f_term_getline(typval_T *argvars, typval_T *rettv)
  {
!     buf_T         *buf;
      term_T        *term;
      int                   row;
  
      rettv->v_type = VAR_STRING;
+ 
+     if (in_vim9script()
+           && (check_for_buffer_arg(argvars, 0) == FAIL
+               || check_for_lnum_arg(argvars, 1) == FAIL))
+       return;
+ 
+     buf = term_get_buf(argvars, "term_getline()");
      if (buf == NULL)
        return;
      term = buf->b_term;
***************
*** 5858,5867 ****
      void
  f_term_setsize(typval_T *argvars UNUSED, typval_T *rettv UNUSED)
  {
!     buf_T     *buf = term_get_buf(argvars, "term_setsize()");
      term_T    *term;
      varnumber_T rows, cols;
  
      if (buf == NULL)
      {
        emsg(_("E955: Not a terminal buffer"));
--- 5865,5881 ----
      void
  f_term_setsize(typval_T *argvars UNUSED, typval_T *rettv UNUSED)
  {
!     buf_T     *buf;
      term_T    *term;
      varnumber_T rows, cols;
  
+     if (in_vim9script()
+           && (check_for_buffer_arg(argvars, 0) == FAIL
+               || check_for_number_arg(argvars, 1) == FAIL
+               || check_for_number_arg(argvars, 2) == FAIL))
+       return;
+ 
+     buf = term_get_buf(argvars, "term_setsize()");
      if (buf == NULL)
      {
        emsg(_("E955: Not a terminal buffer"));
***************
*** 5933,5939 ****
      int               num = 0;
  
      if (in_vim9script()
!           && (check_for_string_or_number_arg(argvars, 0) == FAIL
                || check_for_opt_bool_arg(argvars, 1) == FAIL))
        return;
  
--- 5947,5953 ----
      int               num = 0;
  
      if (in_vim9script()
!           && (check_for_buffer_arg(argvars, 0) == FAIL
                || check_for_opt_bool_arg(argvars, 1) == FAIL))
        return;
  
***************
*** 5988,5994 ****
      void
  f_term_scrape(typval_T *argvars, typval_T *rettv)
  {
!     buf_T         *buf = term_get_buf(argvars, "term_scrape()");
      VTermScreen           *screen = NULL;
      VTermPos      pos;
      list_T        *l;
--- 6002,6008 ----
      void
  f_term_scrape(typval_T *argvars, typval_T *rettv)
  {
!     buf_T         *buf;
      VTermScreen           *screen = NULL;
      VTermPos      pos;
      list_T        *l;
***************
*** 5998,6003 ****
--- 6012,6024 ----
  
      if (rettv_list_alloc(rettv) == FAIL)
        return;
+ 
+     if (in_vim9script()
+           && (check_for_buffer_arg(argvars, 0) == FAIL
+               || check_for_lnum_arg(argvars, 1) == FAIL))
+       return;
+ 
+     buf = term_get_buf(argvars, "term_scrape()");
      if (buf == NULL)
        return;
      term = buf->b_term;
***************
*** 6104,6110 ****
      term_T    *term;
  
      if (in_vim9script()
!           && (check_for_string_or_number_arg(argvars, 0) == FAIL
                || check_for_string_arg(argvars, 1) == FAIL))
        return;
  
--- 6125,6131 ----
      term_T    *term;
  
      if (in_vim9script()
!           && (check_for_buffer_arg(argvars, 0) == FAIL
                || check_for_string_arg(argvars, 1) == FAIL))
        return;
  
***************
*** 6183,6189 ****
      term_T    *term;
  
      if (in_vim9script()
!           && (check_for_opt_string_or_number_arg(argvars, 0) == FAIL
                || (argvars[0].v_type != VAR_UNKNOWN
                    && check_for_opt_list_arg(argvars, 1) == FAIL)))
        return;
--- 6204,6210 ----
      term_T    *term;
  
      if (in_vim9script()
!           && (check_for_opt_buffer_arg(argvars, 0) == FAIL
                || (argvars[0].v_type != VAR_UNKNOWN
                    && check_for_opt_list_arg(argvars, 1) == FAIL)))
        return;
***************
*** 6217,6223 ****
      char_u    *api;
  
      if (in_vim9script()
!           && (check_for_string_or_number_arg(argvars, 0) == FAIL
                || check_for_string_arg(argvars, 1) == FAIL))
        return;
  
--- 6238,6244 ----
      char_u    *api;
  
      if (in_vim9script()
!           && (check_for_buffer_arg(argvars, 0) == FAIL
                || check_for_string_arg(argvars, 1) == FAIL))
        return;
  
***************
*** 6245,6251 ****
      char_u    *cmd;
  
      if (in_vim9script()
!           && (check_for_string_or_number_arg(argvars, 0) == FAIL
                || check_for_string_arg(argvars, 1) == FAIL))
        return;
  
--- 6266,6272 ----
      char_u    *cmd;
  
      if (in_vim9script()
!           && (check_for_buffer_arg(argvars, 0) == FAIL
                || check_for_string_arg(argvars, 1) == FAIL))
        return;
  
***************
*** 6273,6279 ****
      char_u    *how;
  
      if (in_vim9script()
!           && (check_for_string_or_number_arg(argvars, 0) == FAIL
                || check_for_string_arg(argvars, 1) == FAIL))
        return;
  
--- 6294,6300 ----
      char_u    *how;
  
      if (in_vim9script()
!           && (check_for_buffer_arg(argvars, 0) == FAIL
                || check_for_string_arg(argvars, 1) == FAIL))
        return;
  
***************
*** 6298,6303 ****
--- 6319,6329 ----
      jobopt_T  opt;
      buf_T     *buf;
  
+     if (in_vim9script()
+           && (check_for_string_or_list_arg(argvars, 0) == FAIL
+               || check_for_opt_dict_arg(argvars, 1) == FAIL))
+       return;
+ 
      init_job_options(&opt);
      if (argvars[1].v_type != VAR_UNKNOWN
            && get_job_options(&argvars[1], &opt,
***************
*** 6326,6332 ****
      buf_T     *buf;
  
      if (in_vim9script()
!           && (check_for_string_or_number_arg(argvars, 0) == FAIL
                || check_for_opt_number_arg(argvars, 1) == FAIL))
        return;
  
--- 6352,6358 ----
      buf_T     *buf;
  
      if (in_vim9script()
!           && (check_for_buffer_arg(argvars, 0) == FAIL
                || check_for_opt_number_arg(argvars, 1) == FAIL))
        return;
  
*** ../vim-8.2.3193/src/testdir/test_vim9_builtin.vim   2021-07-20 
17:51:48.251744105 +0200
--- src/testdir/test_vim9_builtin.vim   2021-07-21 19:06:07.881106600 +0200
***************
*** 652,657 ****
--- 652,659 ----
    assert_equal(2, getcurpos()[1])
    cursor('$', 1)
    assert_equal(4, getcurpos()[1])
+   cursor([2, 1])
+   assert_equal(2, getcurpos()[1])
  
    var lines =<< trim END
      cursor('2', 1)
***************
*** 1105,1110 ****
--- 1107,1113 ----
    getbufinfo({bufloaded: true, buflisted: true, bufmodified: false})
        ->len()->assert_equal(3)
    bwipe Xtestfile1 Xtestfile2
+   CheckDefAndScriptFailure2(['getbufinfo(true)'], 'E1013: Argument 1: type 
mismatch, expected string but got bool', 'E1174: String required for argument 
1')
  enddef
  
  def Test_getbufline()
***************
*** 1246,1251 ****
--- 1249,1256 ----
        echo getline('1')
    END
    CheckDefExecAndScriptFailure(lines, 'E1209:')
+   CheckDefAndScriptFailure2(['getline(true)'], 'E1013: Argument 1: type 
mismatch, expected string but got bool', 'E1174: String required for argument 
1')
+   CheckDefAndScriptFailure2(['getline(1, true)'], 'E1013: Argument 2: type 
mismatch, expected string but got bool', 'E1174: String required for argument 
2')
  enddef
  
  def Test_getloclist()
***************
*** 3066,3071 ****
--- 3071,3082 ----
    CheckDefAndScriptFailure2(['term_getjob(0z10)'], 'E1013: Argument 1: type 
mismatch, expected string but got blob', 'E974: Using a Blob as a Number')
  enddef
  
+ def Test_term_getline()
+   CheckRunVimInTerminal
+   CheckDefAndScriptFailure2(['term_getline(1.1, 1)'], 'E1013: Argument 1: 
type mismatch, expected string but got float', 'E1174: String required for 
argument 1')
+   CheckDefAndScriptFailure2(['term_getline(1, 1.1)'], 'E1013: Argument 2: 
type mismatch, expected string but got float', 'E1174: String required for 
argument 2')
+ enddef
+ 
  def Test_term_getscrolled()
    CheckRunVimInTerminal
    CheckDefAndScriptFailure2(['term_getscrolled(1.1)'], 'E1013: Argument 1: 
type mismatch, expected string but got float', 'E805: Using a Float as a 
Number')
***************
*** 3098,3103 ****
--- 3109,3120 ----
    CheckDefAndScriptFailure2(['term_gettty(1, 2)'], 'E1013: Argument 2: type 
mismatch, expected bool but got number', 'E1212: Bool required for argument 2')
  enddef
  
+ def Test_term_scrape()
+   CheckRunVimInTerminal
+   CheckDefAndScriptFailure2(['term_scrape(1.1, 1)'], 'E1013: Argument 1: type 
mismatch, expected string but got float', 'E1174: String required for argument 
1')
+   CheckDefAndScriptFailure2(['term_scrape(1, 1.1)'], 'E1013: Argument 2: type 
mismatch, expected string but got float', 'E1174: String required for argument 
2')
+ enddef
+ 
  def Test_term_sendkeys()
    CheckRunVimInTerminal
    CheckDefAndScriptFailure2(['term_sendkeys([], "p")'], 'E1013: Argument 1: 
type mismatch, expected string but got list<unknown>', 'E1174: String required 
for argument 1')
***************
*** 3127,3132 ****
--- 3144,3157 ----
    CheckDefAndScriptFailure2(['term_setrestore([], "p")'], 'E1013: Argument 1: 
type mismatch, expected string but got list<unknown>', 'E1174: String required 
for argument 1')
    CheckDefAndScriptFailure2(['term_setrestore(1, [])'], 'E1013: Argument 2: 
type mismatch, expected string but got list<unknown>', 'E1174: String required 
for argument 2')
  enddef
+ 
+ def Test_term_setsize()
+   CheckRunVimInTerminal
+   CheckDefAndScriptFailure2(['term_setsize(1.1, 2, 3)'], 'E1013: Argument 1: 
type mismatch, expected string but got float', 'E1174: String required for 
argument 1')
+   CheckDefAndScriptFailure2(['term_setsize(1, "2", 3)'], 'E1013: Argument 2: 
type mismatch, expected number but got string', 'E1210: Number required for 
argument 2')
+   CheckDefAndScriptFailure2(['term_setsize(1, 2, "3")'], 'E1013: Argument 3: 
type mismatch, expected number but got string', 'E1210: Number required for 
argument 3')
+ enddef
+ 
  def Test_term_start()
    if !has('terminal')
      CheckFeature terminal
***************
*** 3137,3142 ****
--- 3162,3170 ----
      winnr()->assert_equal(winnr)
      bwipe!
    endif
+   CheckDefAndScriptFailure2(['term_start({})'], 'E1013: Argument 1: type 
mismatch, expected string but got dict<unknown>', 'E1174: String required for 
argument 1')
+   CheckDefAndScriptFailure2(['term_start([], [])'], 'E1013: Argument 2: type 
mismatch, expected dict<any> but got list<unknown>', 'E1206: Dictionary 
required for argument 2')
+   CheckDefAndScriptFailure2(['term_start("", "")'], 'E1013: Argument 2: type 
mismatch, expected dict<any> but got string', 'E1206: Dictionary required for 
argument 2')
  enddef
  
  def Test_term_wait()
*** ../vim-8.2.3193/src/typval.c        2021-07-20 17:51:48.251744105 +0200
--- src/typval.c        2021-07-21 19:06:07.881106600 +0200
***************
*** 575,605 ****
  }
  
  /*
!  * Give an error and return FAIL unless "args[idx]" is a string or
!  * a number (buffer)
   */
      int
  check_for_buffer_arg(typval_T *args, int idx)
  {
!     if (args[idx].v_type != VAR_STRING && args[idx].v_type != VAR_NUMBER)
!     {
!       if (idx >= 0)
!           semsg(_(e_string_required_for_argument_nr), idx + 1);
!       else
!           emsg(_(e_stringreq));
!       return FAIL;
!     }
!     return OK;
  }
  
  /*
!  * Give an error and return FAIL unless "args[idx]" is a string or
!  * a number (line)
   */
      int
  check_for_lnum_arg(typval_T *args, int idx)
  {
!     if (args[idx].v_type != VAR_STRING && args[idx].v_type != VAR_NUMBER)
      {
        if (idx >= 0)
            semsg(_(e_string_required_for_argument_nr), idx + 1);
--- 575,637 ----
  }
  
  /*
!  * Check for an optional string or number argument at 'idx'.
!  */
!     int
! check_for_opt_string_or_number_arg(typval_T *args, int idx)
! {
!     return (args[idx].v_type == VAR_UNKNOWN
!           || check_for_string_or_number_arg(args, idx) != FAIL);
! }
! 
! /*
!  * Give an error and return FAIL unless "args[idx]" is a buffer number.
!  * Buffer number can be a number or a string.
   */
      int
  check_for_buffer_arg(typval_T *args, int idx)
  {
!     return check_for_string_or_number_arg(args, idx);
  }
  
  /*
!  * Check for an optional buffer argument at 'idx'
!  */
!     int
! check_for_opt_buffer_arg(typval_T *args, int idx)
! {
!     return (args[idx].v_type == VAR_UNKNOWN
!           || check_for_buffer_arg(args, idx));
! }
! 
! /*
!  * Give an error and return FAIL unless "args[idx]" is a line number.
!  * Line number can be a number or a string.
   */
      int
  check_for_lnum_arg(typval_T *args, int idx)
  {
!     return check_for_string_or_number_arg(args, idx);
! }
! 
! /*
!  * Check for an optional line number argument at 'idx'
!  */
!     int
! check_for_opt_lnum_arg(typval_T *args, int idx)
! {
!     return (args[idx].v_type == VAR_UNKNOWN
!           || check_for_lnum_arg(args, idx));
! }
! 
! /*
!  * Give an error and return FAIL unless "args[idx]" is a string or
!  * a blob.
!  */
!     int
! check_for_string_or_blob_arg(typval_T *args, int idx)
! {
!     if (args[idx].v_type != VAR_STRING && args[idx].v_type != VAR_BLOB)
      {
        if (idx >= 0)
            semsg(_(e_string_required_for_argument_nr), idx + 1);
***************
*** 612,625 ****
  
  /*
   * Give an error and return FAIL unless "args[idx]" is a string or
!  * a number (line)
   */
      int
! check_for_opt_lnum_arg(typval_T *args, int idx)
  {
!     if (args[idx].v_type != VAR_UNKNOWN
!           && args[idx].v_type != VAR_STRING
!           && args[idx].v_type != VAR_NUMBER)
      {
        if (idx >= 0)
            semsg(_(e_string_required_for_argument_nr), idx + 1);
--- 644,655 ----
  
  /*
   * Give an error and return FAIL unless "args[idx]" is a string or
!  * a list.
   */
      int
! check_for_string_or_list_arg(typval_T *args, int idx)
  {
!     if (args[idx].v_type != VAR_STRING && args[idx].v_type != VAR_LIST)
      {
        if (idx >= 0)
            semsg(_(e_string_required_for_argument_nr), idx + 1);
***************
*** 631,653 ****
  }
  
  /*
!  * Check for an optional string or number argument at 'idx'
!  */
!     int
! check_for_opt_string_or_number_arg(typval_T *args, int idx)
! {
!     return (args[idx].v_type == VAR_UNKNOWN
!           || check_for_string_or_number_arg(args, idx) != FAIL);
! }
! 
! /*
!  * Give an error and return FAIL unless "args[idx]" is a string or
!  * a blob.
   */
      int
! check_for_string_or_blob_arg(typval_T *args, int idx)
  {
!     if (args[idx].v_type != VAR_STRING && args[idx].v_type != VAR_BLOB)
      {
        if (idx >= 0)
            semsg(_(e_string_required_for_argument_nr), idx + 1);
--- 661,675 ----
  }
  
  /*
!  * Give an error and return FAIL unless "args[idx]" is a buffer
!  * number or a dict.
   */
      int
! check_for_buffer_or_dict_arg(typval_T *args, int idx)
  {
!     if (args[idx].v_type != VAR_STRING
!           && args[idx].v_type != VAR_NUMBER
!           && args[idx].v_type != VAR_DICT)
      {
        if (idx >= 0)
            semsg(_(e_string_required_for_argument_nr), idx + 1);
*** ../vim-8.2.3193/src/version.c       2021-07-21 18:04:53.343910544 +0200
--- src/version.c       2021-07-21 19:07:49.584858848 +0200
***************
*** 757,758 ****
--- 757,760 ----
  {   /* Add new patch number below this line */
+ /**/
+     3194,
  /**/

-- 
Some of the well known MS-Windows errors:
        EMEMORY         Memory error caused by..., eh...
        ELICENSE        Your license has expired, give us more money!
        EMOUSE          Mouse moved, reinstall Windows
        EILLEGAL        Illegal error, you are not allowed to see this
        EVIRUS          Undetectable virus found

 /// 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/202107211709.16LH9ghZ050429%40masaka.moolenaar.net.

Raspunde prin e-mail lui