1
0
forked from aniani/vim

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.
This commit is contained in:
Bram Moolenaar
2021-04-09 20:24:31 +02:00
parent 767034c5b8
commit 2a38908b05
7 changed files with 71 additions and 34 deletions

View File

@@ -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,13 +931,22 @@ def Test_call_def_varargs()
lines =<< trim END
vim9script
def Func(...l: any)
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
CheckScriptFailure(lines, 'E1180:', 2)
lines =<< trim END
vim9script
def Func(..._l: list<string>)