patch 8.2.2172: Vim9: number of arguments is not always checked
Problem: Vim9: number of arguments is not always checked. (Yegappan
Lakshmanan)
Solution: Check number of arguments when calling function by name.
diff --git a/src/testdir/test_vim9_func.vim b/src/testdir/test_vim9_func.vim
index 61e909b..4a0c7a9 100644
--- a/src/testdir/test_vim9_func.vim
+++ b/src/testdir/test_vim9_func.vim
@@ -470,6 +470,25 @@
delete('Xscript')
enddef
+def Test_call_funcref_wrong_args()
+ var head =<< trim END
+ vim9script
+ def Func3(a1: string, a2: number, a3: list<number>)
+ echo a1 .. a2 .. a3[0]
+ enddef
+ def Testme()
+ var funcMap: dict<func> = {func: Func3}
+ END
+ var tail =<< trim END
+ enddef
+ Testme()
+ END
+ CheckScriptSuccess(head + ["funcMap['func']('str', 123, [1, 2, 3])"] + tail)
+
+ CheckScriptFailure(head + ["funcMap['func']('str', 123)"] + tail, 'E119:')
+ CheckScriptFailure(head + ["funcMap['func']('str', 123, [1], 4)"] + tail, 'E118:')
+enddef
+
def Test_call_lambda_args()
CheckDefFailure(['echo {i -> 0}()'],
'E119: Not enough arguments for function: {i -> 0}()')
diff --git a/src/testdir/test_vim9_script.vim b/src/testdir/test_vim9_script.vim
index b0e7635..5406391 100644
--- a/src/testdir/test_vim9_script.vim
+++ b/src/testdir/test_vim9_script.vim
@@ -1312,12 +1312,12 @@
# FuncNo() is not redefined
writefile(first_lines + nono_lines, 'Xreloaded.vim')
source Xreloaded.vim
- g:DoCheck()
+ g:DoCheck(false)
# FuncNo() is back
writefile(first_lines + withno_lines, 'Xreloaded.vim')
source Xreloaded.vim
- g:DoCheck()
+ g:DoCheck(false)
delete('Xreloaded.vim')
enddef