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.
diff --git a/src/testdir/test_vim9_func.vim b/src/testdir/test_vim9_func.vim
index b0669fe..d48cab4 100644
--- a/src/testdir/test_vim9_func.vim
+++ b/src/testdir/test_vim9_func.vim
@@ -791,10 +791,18 @@
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,7 +931,7 @@
lines =<< trim END
vim9script
- def Func(...l: any)
+ def Func(...l: list<any>)
echo l
enddef
Func(0)
@@ -932,6 +940,15 @@
lines =<< trim END
vim9script
+ def Func(...l: any)
+ echo l
+ enddef
+ Func(0)
+ END
+ CheckScriptFailure(lines, 'E1180:', 2)
+
+ lines =<< trim END
+ vim9script
def Func(..._l: list<string>)
echo _l
enddef