Patch 8.2.3308
Problem:    Vim9: no runtime check for argument type if a function only has
            varargs.
Solution:   Also check argument types if uf_va_type is set. (closes #8715)
Files:      src/vim9execute.c, src/testdir/test_vim9_func.vim


*** ../vim-8.2.3307/src/vim9execute.c   2021-08-07 15:05:44.707105779 +0200
--- src/vim9execute.c   2021-08-07 15:32:16.154608967 +0200
***************
*** 893,899 ****
  
      if (ufunc != NULL)
      {
!       if (ufunc->uf_arg_types != NULL)
        {
            int i;
            typval_T    *argv = STACK_TV_BOT(0) - argcount;
--- 893,899 ----
  
      if (ufunc != NULL)
      {
!       if (ufunc->uf_arg_types != NULL || ufunc->uf_va_type != NULL)
        {
            int i;
            typval_T    *argv = STACK_TV_BOT(0) - argcount;
***************
*** 904,910 ****
            {
                type_T *type = NULL;
  
!               if (i < ufunc->uf_args.ga_len)
                    type = ufunc->uf_arg_types[i];
                else if (ufunc->uf_va_type != NULL)
                    type = ufunc->uf_va_type->tt_member;
--- 904,910 ----
            {
                type_T *type = NULL;
  
!               if (i < ufunc->uf_args.ga_len && ufunc->uf_arg_types != NULL)
                    type = ufunc->uf_arg_types[i];
                else if (ufunc->uf_va_type != NULL)
                    type = ufunc->uf_va_type->tt_member;
*** ../vim-8.2.3307/src/testdir/test_vim9_func.vim      2021-08-03 
21:16:14.513239986 +0200
--- src/testdir/test_vim9_func.vim      2021-08-07 15:31:38.046713928 +0200
***************
*** 1149,1154 ****
--- 1149,1166 ----
        enddef
    END
    CheckScriptFailure(lines, 'E1160:')
+ 
+   lines =<< trim END
+       vim9script
+       def DoIt()
+         g:Later('')
+       enddef
+       defcompile
+       def g:Later(...l:  list<number>)
+       enddef
+       DoIt()
+   END
+   CheckScriptFailure(lines, 'E1013: Argument 1: type mismatch, expected 
number but got string')
  enddef
  
  let s:value = ''
*** ../vim-8.2.3307/src/version.c       2021-08-07 15:05:44.711105767 +0200
--- src/version.c       2021-08-07 15:34:08.218299196 +0200
***************
*** 757,758 ****
--- 757,760 ----
  {   /* Add new patch number below this line */
+ /**/
+     3308,
  /**/

-- 
There are 2 kinds of people in my world: those who know Unix, Perl, Vim, GNU,
Linux, etc, and those who know COBOL.  It gets very difficult for me at
parties, not knowing which group to socialise with :-)
                                                Sitaram Chamarty

 /// 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/202108071336.177DaGSV1842859%40masaka.moolenaar.net.

Raspunde prin e-mail lui