Mercurial > vim
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