diff src/testdir/test_vim9_func.vim @ 24400:62e978382fa0 v8.2.2740

patch 8.2.2740: Vim9: lambda with varargs doesn't work Commit: https://github.com/vim/vim/commit/2a38908b05c1d3973a8edbeb5b3e05a11332faf0 Author: Bram Moolenaar <Bram@vim.org> Date: Fri Apr 9 20:24:31 2021 +0200 patch 8.2.2740: Vim9: lambda with varargs doesn't work Problem: Vim9: lambda with varargs doesn't work. Solution: Make "...name" work. Require type to be a list.
author Bram Moolenaar <Bram@vim.org>
date Fri, 09 Apr 2021 20:30:03 +0200
parents bed5ec739304
children 009a540f16a6
line wrap: on
line diff
--- a/src/testdir/test_vim9_func.vim
+++ b/src/testdir/test_vim9_func.vim
@@ -791,10 +791,18 @@ def Test_call_funcref_wrong_args()
 enddef
 
 def Test_call_lambda_args()
+  var lines =<< trim END
+    var Callback = (..._) => 'anything'
+    assert_equal('anything', Callback())
+    assert_equal('anything', Callback(1))
+    assert_equal('anything', Callback('a', 2))
+  END
+  CheckDefAndScriptSuccess(lines)
+
   CheckDefFailure(['echo ((i) => 0)()'],
                   'E119: Not enough arguments for function: ((i) => 0)()')
 
-  var lines =<< trim END
+  lines =<< trim END
       var Ref = (x: number, y: number) => x + y
       echo Ref(1, 'x')
   END
@@ -923,12 +931,21 @@ def Test_call_def_varargs()
 
   lines =<< trim END
       vim9script
+      def Func(...l: list<any>)
+        echo l
+      enddef
+      Func(0)
+  END
+  CheckScriptSuccess(lines)
+
+  lines =<< trim END
+      vim9script
       def Func(...l: any)
         echo l
       enddef
       Func(0)
   END
-  CheckScriptSuccess(lines)
+  CheckScriptFailure(lines, 'E1180:', 2)
 
   lines =<< trim END
       vim9script