patch 8.2.1956: Vim9: cannot specify argument types for lambda
Problem: Vim9: cannot specify argument types for lambda.
Solution: Allow adding argument types. Check arguments when calling a
function reference.
diff --git a/src/testdir/test_vim9_func.vim b/src/testdir/test_vim9_func.vim
index 113e99e..a3f2149 100644
--- a/src/testdir/test_vim9_func.vim
+++ b/src/testdir/test_vim9_func.vim
@@ -322,8 +322,6 @@
CheckDefFailure(['bufnr(xxx)'], 'E1001:')
CheckScriptFailure(['def Func(Ref: func(s: string))'], 'E475:')
- CheckDefFailure(['echo {i -> 0}()'], 'E119: Not enough arguments for function: {i -> 0}()')
-
var lines =<< trim END
vim9script
def Func(s: string)
@@ -378,6 +376,17 @@
delete('Xscript')
enddef
+def Test_call_lambda_args()
+ CheckDefFailure(['echo {i -> 0}()'],
+ 'E119: Not enough arguments for function: {i -> 0}()')
+
+ var lines =<< trim END
+ var Ref = {x: number, y: number -> x + y}
+ echo Ref(1, 'x')
+ END
+ CheckDefFailure(lines, 'E1013: Argument 2: type mismatch, expected number but got string')
+enddef
+
" Default arg and varargs
def MyDefVarargs(one: string, two = 'foo', ...rest: list<string>): string
var res = one .. ',' .. two