patch 8.2.3854: Vim9: inconsistent arguments for test functions

Problem:    Vim9: inconsistent arguments for test functions.
Solution:   When :def function and script have different arguments use a list
            with two items instead of a separate function.
diff --git a/src/testdir/vim9.vim b/src/testdir/vim9.vim
index a40b444..cb6e385 100644
--- a/src/testdir/vim9.vim
+++ b/src/testdir/vim9.vim
@@ -100,36 +100,46 @@
   CheckScriptSuccess(['vim9script'] + lines)
 enddef
 
-" Check that a command fails with the same error when used in a :def function
-" and when used in Vim9 script.
-def CheckDefAndScriptFailure(lines: list<string>, error: string, lnum = -3)
-  CheckDefFailure(lines, error, lnum)
-  CheckScriptFailure(['vim9script'] + lines, error, lnum + 1)
-enddef
-
-" As CheckDefAndScriptFailure() but with two different expected errors.
-def CheckDefAndScriptFailure2(
-  	lines: list<string>,
-	errorDef: string,
-	errorScript: string,
-	lnum = -3)
+" Check that a command fails when used in a :def function and when used in
+" Vim9 script.
+" When "error" is a string, both with the same error.
+" When "error" is a list, the :def function fails with "error[0]" , the script
+" fails with "error[1]".
+def CheckDefAndScriptFailure(lines: list<string>, error: any, lnum = -3)
+  var errorDef: string
+  var errorScript: string
+  if type(error) == v:t_string
+    errorDef = error
+    errorScript = error
+  elseif type(error) == v:t_list && len(error) == 2
+    errorDef = error[0]
+    errorScript = error[1]
+  else
+    echoerr 'error argument must be a string or a list with two items'
+    return
+  endif
   CheckDefFailure(lines, errorDef, lnum)
   CheckScriptFailure(['vim9script'] + lines, errorScript, lnum + 1)
 enddef
 
-" Check that a command fails with the same error  when executed in a :def
-" function and when used in Vim9 script.
-def CheckDefExecAndScriptFailure(lines: list<string>, error: string, lnum = -3)
-  CheckDefExecFailure(lines, error, lnum)
-  CheckScriptFailure(['vim9script'] + lines, error, lnum + 1)
-enddef
-
-" As CheckDefExecAndScriptFailure() but with two different expected errors.
-def CheckDefExecAndScriptFailure2(
-  	lines: list<string>,
-	errorDef: string,
-	errorScript: string,
-	lnum = -3)
+" Check that a command fails when executed in a :def function and when used in
+" Vim9 script.
+" When "error" is a string, both with the same error.
+" When "error" is a list, the :def function fails with "error[0]" , the script
+" fails with "error[1]".
+def CheckDefExecAndScriptFailure(lines: list<string>, error: any, lnum = -3)
+  var errorDef: string
+  var errorScript: string
+  if type(error) == v:t_string
+    errorDef = error
+    errorScript = error
+  elseif type(error) == v:t_list && len(error) == 2
+    errorDef = error[0]
+    errorScript = error[1]
+  else
+    echoerr 'error argument must be a string or a list with two items'
+    return
+  endif
   CheckDefExecFailure(lines, errorDef, lnum)
   CheckScriptFailure(['vim9script'] + lines, errorScript, lnum + 1)
 enddef