]> granicus.if.org Git - vim/commitdiff
patch 8.2.1301: Vim9: varargs argument type not parsed properly v8.2.1301
authorBram Moolenaar <Bram@vim.org>
Sun, 26 Jul 2020 16:16:58 +0000 (18:16 +0200)
committerBram Moolenaar <Bram@vim.org>
Sun, 26 Jul 2020 16:16:58 +0000 (18:16 +0200)
Problem:    Vim9: varargs argument type not parsed properly.
Solution:   Skip over the "...". (issue #6507)

src/testdir/test_vim9_func.vim
src/version.c
src/vim9compile.c

index ade1fd145914c78c8bca89f9edc48bf9a0346e7b..0d39d5764984082b01284f8053fd6ba3b3beb2b7 100644 (file)
@@ -363,6 +363,19 @@ def Test_call_funcref()
     assert_equal(123, g:echo)
   END
   CheckScriptSuccess(lines)
+
+  lines =<< trim END
+    vim9script
+    def EchoList(...l: list<number>)
+      g:echo = l
+    enddef
+    let Funcref: func(...list<number>) = function('EchoList')
+    Funcref()
+    assert_equal([], g:echo)
+    Funcref(1, 2, 3)
+    assert_equal([1, 2, 3], g:echo)
+  END
+  CheckScriptSuccess(lines)
 enddef
 
 let SomeFunc = function('len')
index 68c7cf5013512b6d279f57a8e3b3bb6a0e740b53..2481434407c52bc78b93e693b3ec2b3dc473445d 100644 (file)
@@ -754,6 +754,8 @@ static char *(features[]) =
 
 static int included_patches[] =
 {   /* Add new patch number below this line */
+/**/
+    1301,
 /**/
     1300,
 /**/
index 1354a38b2c79a18ead95b37505c81fef918be96c..31e761284e26ecf51e1aab003d7bc906dcf1d12c 100644 (file)
@@ -1956,6 +1956,8 @@ skip_type(char_u *start, int optional)
            {
                char_u *sp = p;
 
+               if (STRNCMP(p, "...", 3) == 0)
+                   p += 3;
                p = skip_type(p, TRUE);
                if (p == sp)
                    return p;  // syntax error