diff --git a/src/eval.c b/src/eval.c
index 86f103b..c235788 100644
--- a/src/eval.c
+++ b/src/eval.c
@@ -963,7 +963,7 @@
     if (lp->ll_name == NULL)
 	return p;
 
-    if (*p == '.' && in_vim9script())
+    if (*p == '.')
     {
 	imported_T *import = find_imported(lp->ll_name, p - lp->ll_name,
 								   TRUE, NULL);
diff --git a/src/evalfunc.c b/src/evalfunc.c
index cb5fcfe..711e2e6 100644
--- a/src/evalfunc.c
+++ b/src/evalfunc.c
@@ -3830,14 +3830,7 @@
     }
     else if (*p == '*')			// internal or user defined function
     {
-	int save_version = current_sctx.sc_version;
-
-	// Vim9 script assumes a function is script-local, but here we want to
-	// find any matching function.
-	if (current_sctx.sc_version == SCRIPT_VERSION_VIM9)
-	    current_sctx.sc_version = SCRIPT_VERSION_MAX;
 	n = function_exists(p + 1, FALSE);
-	current_sctx.sc_version = save_version;
     }
     else if (*p == '?')			// internal function only
     {
diff --git a/src/testdir/test_blob.vim b/src/testdir/test_blob.vim
index 69c8696..e8bc2c9 100644
--- a/src/testdir/test_blob.vim
+++ b/src/testdir/test_blob.vim
@@ -1,6 +1,6 @@
 " Tests for the Blob types
 
-source vim9.vim
+import './vim9.vim' as v9
 
 func TearDown()
   " Run garbage collection after every test
@@ -39,7 +39,7 @@
       call assert_equal(0, len(test_null_blob()))
       call assert_equal(0z, copy(test_null_blob()))
   END
-  call CheckLegacyAndVim9Success(lines)
+  call v9.CheckLegacyAndVim9Success(lines)
 endfunc
 
 " assignment to a blob
@@ -75,49 +75,49 @@
       VAR m = deepcopy(l)
       LET m[0] = 0z34	#" E742 or E741 should not occur.
   END
-  call CheckLegacyAndVim9Success(lines)
+  call v9.CheckLegacyAndVim9Success(lines)
 
   let lines =<< trim END
       VAR b = 0zDEADBEEF
       LET b[2 : 3] = 0z112233
   END
-  call CheckLegacyAndVim9Failure(lines, 'E972:')
+  call v9.CheckLegacyAndVim9Failure(lines, 'E972:')
 
   let lines =<< trim END
       VAR b = 0zDEADBEEF
       LET b[2 : 3] = 0z11
   END
-  call CheckLegacyAndVim9Failure(lines, 'E972:')
+  call v9.CheckLegacyAndVim9Failure(lines, 'E972:')
 
   let lines =<< trim END
       VAR b = 0zDEADBEEF
       LET b[3 : 2] = 0z
   END
-  call CheckLegacyAndVim9Failure(lines, 'E979:')
+  call v9.CheckLegacyAndVim9Failure(lines, 'E979:')
 
   let lines =<< trim END
       VAR b = 0zDEADBEEF
       LET b ..= 0z33
   END
-  call CheckLegacyAndVim9Failure(lines, ['E734:', 'E1019:', 'E734:'])
+  call v9.CheckLegacyAndVim9Failure(lines, ['E734:', 'E1019:', 'E734:'])
 
   let lines =<< trim END
       VAR b = 0zDEADBEEF
       LET b ..= "xx"
   END
-  call CheckLegacyAndVim9Failure(lines, ['E734:', 'E1019:', 'E734:'])
+  call v9.CheckLegacyAndVim9Failure(lines, ['E734:', 'E1019:', 'E734:'])
 
   let lines =<< trim END
       VAR b = 0zDEADBEEF
       LET b += "xx"
   END
-  call CheckLegacyAndVim9Failure(lines, ['E734:', 'E1012:', 'E734:'])
+  call v9.CheckLegacyAndVim9Failure(lines, ['E734:', 'E1012:', 'E734:'])
 
   let lines =<< trim END
       VAR b = 0zDEADBEEF
       LET b[1 : 1] ..= 0z55
   END
-  call CheckLegacyAndVim9Failure(lines, ['E734:', 'E1183:', 'E734:'])
+  call v9.CheckLegacyAndVim9Failure(lines, ['E734:', 'E1183:', 'E734:'])
 endfunc
 
 func Test_blob_get_range()
@@ -133,7 +133,7 @@
       call assert_equal(0z, b[5 : 6])
       call assert_equal(0z0011, b[-10 : 1])
   END
-  call CheckLegacyAndVim9Success(lines)
+  call v9.CheckLegacyAndVim9Success(lines)
 
   " legacy script white space
   let b = 0z0011223344
@@ -158,19 +158,19 @@
       call assert_equal(0x44, b[4])
       call assert_equal(0x44, b[-1])
   END
-  call CheckLegacyAndVim9Success(lines)
+  call v9.CheckLegacyAndVim9Success(lines)
 
   let lines =<< trim END
       VAR b = 0z0011223344
       echo b[5]
   END
-  call CheckLegacyAndVim9Failure(lines, 'E979:')
+  call v9.CheckLegacyAndVim9Failure(lines, 'E979:')
 
   let lines =<< trim END
       VAR b = 0z0011223344
       echo b[-8]
   END
-  call CheckLegacyAndVim9Failure(lines, 'E979:')
+  call v9.CheckLegacyAndVim9Failure(lines, 'E979:')
 endfunc
 
 func Test_blob_to_string()
@@ -184,7 +184,7 @@
       call assert_equal('0z', string(b))
       call assert_equal('0z', string(test_null_blob()))
   END
-  call CheckLegacyAndVim9Success(lines)
+  call v9.CheckLegacyAndVim9Success(lines)
 endfunc
 
 func Test_blob_compare()
@@ -211,54 +211,54 @@
       call assert_false(b1 is b2)
       call assert_true(b1 isnot b2)
   END
-  call CheckLegacyAndVim9Success(lines)
+  call v9.CheckLegacyAndVim9Success(lines)
 
   let lines =<< trim END
       VAR b1 = 0z0011
       echo b1 == 9
   END
-  call CheckLegacyAndVim9Failure(lines, ['E977:', 'E1072', 'E1072'])
+  call v9.CheckLegacyAndVim9Failure(lines, ['E977:', 'E1072', 'E1072'])
 
   let lines =<< trim END
       VAR b1 = 0z0011
       echo b1 != 9
   END
-  call CheckLegacyAndVim9Failure(lines, ['E977:', 'E1072', 'E1072'])
+  call v9.CheckLegacyAndVim9Failure(lines, ['E977:', 'E1072', 'E1072'])
 
   let lines =<< trim END
       VAR b1 = 0z0011
       VAR b2 = 0z1100
       VAR x = b1 > b2
   END
-  call CheckLegacyAndVim9Failure(lines, ['E978:', 'E1072:', 'E1072:'])
+  call v9.CheckLegacyAndVim9Failure(lines, ['E978:', 'E1072:', 'E1072:'])
 
   let lines =<< trim END
       VAR b1 = 0z0011
       VAR b2 = 0z1100
       VAR x = b1 < b2
   END
-  call CheckLegacyAndVim9Failure(lines, ['E978:', 'E1072:', 'E1072:'])
+  call v9.CheckLegacyAndVim9Failure(lines, ['E978:', 'E1072:', 'E1072:'])
 
   let lines =<< trim END
       VAR b1 = 0z0011
       VAR b2 = 0z1100
       VAR x = b1 - b2
   END
-  call CheckLegacyAndVim9Failure(lines, ['E974:', 'E1036:', 'E974:'])
+  call v9.CheckLegacyAndVim9Failure(lines, ['E974:', 'E1036:', 'E974:'])
 
   let lines =<< trim END
       VAR b1 = 0z0011
       VAR b2 = 0z1100
       VAR x = b1 / b2
   END
-  call CheckLegacyAndVim9Failure(lines, ['E974:', 'E1036:', 'E974:'])
+  call v9.CheckLegacyAndVim9Failure(lines, ['E974:', 'E1036:', 'E974:'])
 
   let lines =<< trim END
       VAR b1 = 0z0011
       VAR b2 = 0z1100
       VAR x = b1 * b2
   END
-  call CheckLegacyAndVim9Failure(lines, ['E974:', 'E1036:', 'E974:'])
+  call v9.CheckLegacyAndVim9Failure(lines, ['E974:', 'E1036:', 'E974:'])
 endfunc
 
 func Test_blob_index_assign()
@@ -268,19 +268,19 @@
       LET b[2] = 0x22
       call assert_equal(0z001122, b)
   END
-  call CheckLegacyAndVim9Success(lines)
+  call v9.CheckLegacyAndVim9Success(lines)
 
   let lines =<< trim END
       VAR b = 0z00
       LET b[2] = 0x33
   END
-  call CheckLegacyAndVim9Failure(lines, 'E979:')
+  call v9.CheckLegacyAndVim9Failure(lines, 'E979:')
 
   let lines =<< trim END
       VAR b = 0z00
       LET b[-2] = 0x33
   END
-  call CheckLegacyAndVim9Failure(lines, 'E979:')
+  call v9.CheckLegacyAndVim9Failure(lines, 'E979:')
 endfunc
 
 func Test_blob_for_loop()
@@ -313,7 +313,7 @@
       endfor
       call assert_equal(5, i)
   END
-  call CheckLegacyAndVim9Success(lines)
+  call v9.CheckLegacyAndVim9Success(lines)
 endfunc
 
 func Test_blob_concatenate()
@@ -325,19 +325,19 @@
       LET b = 0zDEAD + 0zBEEF
       call assert_equal(0zDEADBEEF, b)
   END
-  call CheckLegacyAndVim9Success(lines)
+  call v9.CheckLegacyAndVim9Success(lines)
 
   let lines =<< trim END
       VAR b = 0z0011
       LET b += "a"
   END
-  call CheckLegacyAndVim9Failure(lines, ['E734:', 'E1012:', 'E734:'])
+  call v9.CheckLegacyAndVim9Failure(lines, ['E734:', 'E1012:', 'E734:'])
 
   let lines =<< trim END
       VAR b = 0z0011
       LET b += 88
   END
-  call CheckLegacyAndVim9Failure(lines, ['E734:', 'E1012:', 'E734:'])
+  call v9.CheckLegacyAndVim9Failure(lines, ['E734:', 'E1012:', 'E734:'])
 endfunc
 
 func Test_blob_add()
@@ -346,7 +346,7 @@
       call add(b, 0x22)
       call assert_equal(0z001122, b)
   END
-  call CheckLegacyAndVim9Success(lines)
+  call v9.CheckLegacyAndVim9Success(lines)
 
   " Only works in legacy script
   let b = 0z0011
@@ -358,18 +358,18 @@
       VAR b = 0z0011
       call add(b, [9])
   END
-  call CheckLegacyAndVim9Failure(lines, ['E745:', 'E1012:', 'E1210:'])
+  call v9.CheckLegacyAndVim9Failure(lines, ['E745:', 'E1012:', 'E1210:'])
 
   let lines =<< trim END
       VAR b = 0z0011
       call add("", 0x01)
   END
-  call CheckLegacyAndVim9Failure(lines, ['E897:', 'E1013:', 'E1226:'])
+  call v9.CheckLegacyAndVim9Failure(lines, ['E897:', 'E1013:', 'E1226:'])
 
   let lines =<< trim END
       add(test_null_blob(), 0x22)
   END
-  call CheckDefExecAndScriptFailure(lines, 'E1131:')
+  call v9.CheckDefExecAndScriptFailure(lines, 'E1131:')
 
   let lines =<< trim END
       let b = 0zDEADBEEF
@@ -377,7 +377,7 @@
       call add(b, 0)
       unlockvar b
   END
-  call CheckScriptFailure(lines, 'E741:')
+  call v9.CheckScriptFailure(lines, 'E741:')
 endfunc
 
 func Test_blob_empty()
@@ -411,32 +411,32 @@
       call assert_equal(0zADBE, remove(b, 1, 2))
       call assert_equal(0zDEEF, b)
   END
-  call CheckLegacyAndVim9Success(lines)
+  call v9.CheckLegacyAndVim9Success(lines)
 
   " Test invalid cases
   let lines =<< trim END
       VAR b = 0zDEADBEEF
       call remove(b, 5)
   END
-  call CheckLegacyAndVim9Failure(lines, 'E979:')
+  call v9.CheckLegacyAndVim9Failure(lines, 'E979:')
 
   let lines =<< trim END
       VAR b = 0zDEADBEEF
       call remove(b, 1, 5)
   END
-  call CheckLegacyAndVim9Failure(lines, 'E979:')
+  call v9.CheckLegacyAndVim9Failure(lines, 'E979:')
 
   let lines =<< trim END
       VAR b = 0zDEADBEEF
       call remove(b, 3, 2)
   END
-  call CheckLegacyAndVim9Failure(lines, 'E979:')
+  call v9.CheckLegacyAndVim9Failure(lines, 'E979:')
 
   let lines =<< trim END
       VAR b = 0zDEADBEEF
       call remove(test_null_blob(), 1, 2)
   END
-  call CheckLegacyAndVim9Failure(lines, 'E979:')
+  call v9.CheckLegacyAndVim9Failure(lines, 'E979:')
 
   let lines =<< trim END
       let b = 0zDEADBEEF
@@ -444,7 +444,7 @@
       call remove(b, 0)
       unlockvar b
   END
-  call CheckScriptFailure(lines, 'E741:')
+  call v9.CheckScriptFailure(lines, 'E741:')
 
   " can only check at script level, not in a :def function
   let lines =<< trim END
@@ -453,7 +453,7 @@
       lockvar b
       remove(b, 0)
   END
-  call CheckScriptFailure(lines, 'E741:')
+  call v9.CheckScriptFailure(lines, 'E741:')
 
   call assert_fails('echo remove(0z1020, [])', 'E745:')
   call assert_fails('echo remove(0z1020, 0, [])', 'E745:')
@@ -467,7 +467,7 @@
       call assert_equal(b, br)
       call delete('Xblob')
   END
-  call CheckLegacyAndVim9Success(lines)
+  call v9.CheckLegacyAndVim9Success(lines)
 
   " This was crashing when calling readfile() with a directory.
   call assert_fails("call readfile('.', 'B')", 'E17: "." is a directory')
@@ -485,7 +485,7 @@
       call assert_equal(0z01030103, filter(0z010203010203, 'v:val != 0x02'))
       call assert_equal(0zADEF, filter(0zDEADBEEF, 'v:key % 2'))
   END
-  call CheckLegacyAndVim9Success(lines)
+  call v9.CheckLegacyAndVim9Success(lines)
   call assert_fails('echo filter(0z10, "a10")', 'E121:')
 endfunc
 
@@ -496,12 +496,12 @@
       call assert_equal(0z00010203, map(0zDEADBEEF, 'v:key'))
       call assert_equal(0zDEAEC0F2, map(0zDEADBEEF, 'v:key + v:val'))
   END
-  call CheckLegacyAndVim9Success(lines)
+  call v9.CheckLegacyAndVim9Success(lines)
 
   let lines =<< trim END
       call map(0z00, '[9]')
   END
-  call CheckLegacyAndVim9Failure(lines, 'E978:')
+  call v9.CheckLegacyAndVim9Failure(lines, 'E978:')
   call assert_fails('echo map(0z10, "a10")', 'E121:')
 endfunc
 
@@ -516,7 +516,7 @@
       call assert_equal(0, index(0z11110111, 0x11, -10))
       call assert_equal(-1, index(test_null_blob(), 1))
   END
-  call CheckLegacyAndVim9Success(lines)
+  call v9.CheckLegacyAndVim9Success(lines)
 endfunc
 
 func Test_blob_insert()
@@ -529,7 +529,7 @@
       call insert(b, 0x33, 2)
       call assert_equal(0zDEAD33BEEF, b)
   END
-  call CheckLegacyAndVim9Success(lines)
+  call v9.CheckLegacyAndVim9Success(lines)
 
   " only works in legacy script
   call assert_equal(0, insert(test_null_blob(), 0x33))
@@ -538,42 +538,42 @@
       VAR b = 0zDEADBEEF
       call insert(b, -1)
   END
-  call CheckLegacyAndVim9Failure(lines, 'E475:')
+  call v9.CheckLegacyAndVim9Failure(lines, 'E475:')
 
   let lines =<< trim END
       VAR b = 0zDEADBEEF
       call insert(b, 257)
   END
-  call CheckLegacyAndVim9Failure(lines, 'E475:')
+  call v9.CheckLegacyAndVim9Failure(lines, 'E475:')
 
   let lines =<< trim END
       VAR b = 0zDEADBEEF
       call insert(b, 0, [9])
   END
-  call CheckLegacyAndVim9Failure(lines, ['E745:', 'E1013:', 'E1210:'])
+  call v9.CheckLegacyAndVim9Failure(lines, ['E745:', 'E1013:', 'E1210:'])
 
   let lines =<< trim END
       VAR b = 0zDEADBEEF
       call insert(b, 0, -20)
   END
-  call CheckLegacyAndVim9Failure(lines, 'E475:')
+  call v9.CheckLegacyAndVim9Failure(lines, 'E475:')
 
   let lines =<< trim END
       VAR b = 0zDEADBEEF
       call insert(b, 0, 20)
   END
-  call CheckLegacyAndVim9Failure(lines, 'E475:')
+  call v9.CheckLegacyAndVim9Failure(lines, 'E475:')
 
   let lines =<< trim END
       VAR b = 0zDEADBEEF
       call insert(b, [])
   END
-  call CheckLegacyAndVim9Failure(lines, ['E745:', 'E1013:', 'E1210:'])
+  call v9.CheckLegacyAndVim9Failure(lines, ['E745:', 'E1013:', 'E1210:'])
 
   let lines =<< trim END
       insert(test_null_blob(), 0x33)
   END
-  call CheckDefExecAndScriptFailure(lines, 'E1131:')
+  call v9.CheckDefExecAndScriptFailure(lines, 'E1131:')
 
   let lines =<< trim END
       let b = 0zDEADBEEF
@@ -581,7 +581,7 @@
       call insert(b, 3)
       unlockvar b
   END
-  call CheckScriptFailure(lines, 'E741:')
+  call v9.CheckScriptFailure(lines, 'E741:')
 
   let lines =<< trim END
       vim9script
@@ -589,7 +589,7 @@
       lockvar b
       insert(b, 3)
   END
-  call CheckScriptFailure(lines, 'E741:')
+  call v9.CheckScriptFailure(lines, 'E741:')
 endfunc
 
 func Test_blob_reverse()
@@ -600,7 +600,7 @@
       call assert_equal(0zDE, reverse(0zDE))
       call assert_equal(0z, reverse(test_null_blob()))
   END
-  call CheckLegacyAndVim9Success(lines)
+  call v9.CheckLegacyAndVim9Success(lines)
 endfunc
 
 func Test_blob_json_encode()
@@ -608,7 +608,7 @@
       call assert_equal('[222,173,190,239]', json_encode(0zDEADBEEF))
       call assert_equal('[]', json_encode(0z))
   END
-  call CheckLegacyAndVim9Success(lines)
+  call v9.CheckLegacyAndVim9Success(lines)
 endfunc
 
 func Test_blob_lock()
@@ -618,7 +618,7 @@
       unlockvar b
       let b = 0z44
   END
-  call CheckScriptSuccess(lines)
+  call v9.CheckScriptSuccess(lines)
 
   let lines =<< trim END
       vim9script
@@ -627,14 +627,14 @@
       unlockvar b
       b = 0z44
   END
-  call CheckScriptSuccess(lines)
+  call v9.CheckScriptSuccess(lines)
 
   let lines =<< trim END
       let b = 0z112233
       lockvar b
       let b = 0z44
   END
-  call CheckScriptFailure(lines, 'E741:')
+  call v9.CheckScriptFailure(lines, 'E741:')
 
   let lines =<< trim END
       vim9script
@@ -642,14 +642,14 @@
       lockvar b
       b = 0z44
   END
-  call CheckScriptFailure(lines, 'E741:')
+  call v9.CheckScriptFailure(lines, 'E741:')
 endfunc
 
 func Test_blob_sort()
   if has('float')
-    call CheckLegacyAndVim9Failure(['call sort([1.0, 0z11], "f")'], 'E975:')
+    call v9.CheckLegacyAndVim9Failure(['call sort([1.0, 0z11], "f")'], 'E975:')
   endif
-  call CheckLegacyAndVim9Failure(['call sort([11, 0z11], "N")'], 'E974:')
+  call v9.CheckLegacyAndVim9Failure(['call sort([11, 0z11], "N")'], 'E974:')
 endfunc
 
 " Tests for the blob2list() function
diff --git a/src/testdir/test_debugger.vim b/src/testdir/test_debugger.vim
index 0c4bc87..c05f4e1 100644
--- a/src/testdir/test_debugger.vim
+++ b/src/testdir/test_debugger.vim
@@ -360,16 +360,16 @@
   writefile(lines, 'Xtest.vim')
 
   # Start Vim in a terminal
-  var buf = RunVimInTerminal('-S Xtest.vim', {wait_for_ruler: 0})
-  call TermWait(buf)
+  var buf = g:RunVimInTerminal('-S Xtest.vim', {wait_for_ruler: 0})
+  call g:TermWait(buf)
 
   # Despite the failure the functions are defined
-  RunDbgCmd(buf, ':function g:EarlyFunc',
+  g:RunDbgCmd(buf, ':function g:EarlyFunc',
      ['function EarlyFunc()', 'endfunction'], {match: 'pattern'})
-  RunDbgCmd(buf, ':function g:LaterFunc',
+  g:RunDbgCmd(buf, ':function g:LaterFunc',
      ['function LaterFunc()', 'endfunction'], {match: 'pattern'})
 
-  call StopVimInTerminal(buf)
+  call g:StopVimInTerminal(buf)
   call delete('Xtest.vim')
 enddef
 
@@ -386,13 +386,13 @@
   writefile(lines, 'Xtest.vim')
 
   # Start Vim in a terminal
-  var buf = RunVimInTerminal('-S Xtest.vim', {wait_for_ruler: 0})
-  call TermWait(buf)
+  var buf = g:RunVimInTerminal('-S Xtest.vim', {wait_for_ruler: 0})
+  call g:TermWait(buf)
 
-  RunDbgCmd(buf, ':call GetNum()',
+  g:RunDbgCmd(buf, ':call GetNum()',
      ['line 1: return 1  + 2  + 3'], {match: 'pattern'})
 
-  call StopVimInTerminal(buf)
+  call g:StopVimInTerminal(buf)
   call delete('Xtest.vim')
 enddef
 
diff --git a/src/testdir/test_execute_func.vim b/src/testdir/test_execute_func.vim
index 8cd5e7d..3a8580e 100644
--- a/src/testdir/test_execute_func.vim
+++ b/src/testdir/test_execute_func.vim
@@ -2,7 +2,7 @@
 
 source view_util.vim
 source check.vim
-source vim9.vim
+import './vim9.vim' as v9
 source term_util.vim
 
 func NestedEval()
@@ -41,7 +41,7 @@
   if has('float')
     call assert_fails('call execute(3.4)', 'E492:')
     call assert_equal("\nx", execute("echo \"x\"", 3.4))
-    call CheckDefExecAndScriptFailure(['execute("echo \"x\"", 3.4)'], ['E1013: Argument 2: type mismatch, expected string but got float', 'E1174:'])
+    call v9.CheckDefExecAndScriptFailure(['execute("echo \"x\"", 3.4)'], ['E1013: Argument 2: type mismatch, expected string but got float', 'E1174:'])
   endif
 endfunc
 
diff --git a/src/testdir/test_expr.vim b/src/testdir/test_expr.vim
index 8a65a89..4d085de 100644
--- a/src/testdir/test_expr.vim
+++ b/src/testdir/test_expr.vim
@@ -1,7 +1,7 @@
 " Tests for expressions.
 
 source check.vim
-source vim9.vim
+import './vim9.vim' as v9
 
 func Test_equal()
   let base = {}
@@ -51,12 +51,12 @@
       call assert_fails('echo [1] ? "yes" : "no"', 'E745:')
       call assert_fails('echo {} ? "yes" : "no"', 'E728:')
   END
-  call CheckLegacyAndVim9Success(lines)
+  call v9.CheckLegacyAndVim9Success(lines)
 
   call assert_equal('no', 'x' ? 'yes' : 'no')
-  call CheckDefAndScriptFailure(["'x' ? 'yes' : 'no'"], 'E1135:')
+  call v9.CheckDefAndScriptFailure(["'x' ? 'yes' : 'no'"], 'E1135:')
   call assert_equal('yes', '1x' ? 'yes' : 'no')
-  call CheckDefAndScriptFailure(["'1x' ? 'yes' : 'no'"], 'E1135:')
+  call v9.CheckDefAndScriptFailure(["'1x' ? 'yes' : 'no'"], 'E1135:')
 endfunc
 
 func Test_op_falsy()
@@ -81,7 +81,7 @@
         call assert_equal(456, 0.0 ?? 456)
       endif
   END
-  call CheckLegacyAndVim9Success(lines)
+  call v9.CheckLegacyAndVim9Success(lines)
 endfunc
 
 func Test_dict()
@@ -101,9 +101,9 @@
       LET d[ 'b' ] = 'bbb'
       call assert_equal('bbb', d[ 'b' ])
   END
-  call CheckLegacyAndVim9Success(lines)
+  call v9.CheckLegacyAndVim9Success(lines)
 
-  call CheckLegacyAndVim9Failure(["VAR i = has_key([], 'a')"], ['E715:', 'E1013:', 'E1206:'])
+  call v9.CheckLegacyAndVim9Failure(["VAR i = has_key([], 'a')"], ['E715:', 'E1013:', 'E1206:'])
 endfunc
 
 func Test_strgetchar()
@@ -116,10 +116,10 @@
       call assert_equal(-1, strgetchar('axb', 3))
       call assert_equal(-1, strgetchar('', 0))
   END
-  call CheckLegacyAndVim9Success(lines)
+  call v9.CheckLegacyAndVim9Success(lines)
 
-  call CheckLegacyAndVim9Failure(["VAR c = strgetchar([], 1)"], ['E730:', 'E1013:', 'E1174:'])
-  call CheckLegacyAndVim9Failure(["VAR c = strgetchar('axb', [])"], ['E745:', 'E1013:', 'E1210:'])
+  call v9.CheckLegacyAndVim9Failure(["VAR c = strgetchar([], 1)"], ['E730:', 'E1013:', 'E1174:'])
+  call v9.CheckLegacyAndVim9Failure(["VAR c = strgetchar('axb', [])"], ['E745:', 'E1013:', 'E1210:'])
 endfunc
 
 func Test_strcharpart()
@@ -138,7 +138,7 @@
 
       call assert_equal('edit', "editor"[-10 : 3])
   END
-  call CheckLegacyAndVim9Success(lines)
+  call v9.CheckLegacyAndVim9Success(lines)
 endfunc
 
 func Test_getreg_empty_list()
@@ -150,9 +150,9 @@
       call add(x, 'foo')
       call assert_equal(['foo'], y)
   END
-  call CheckLegacyAndVim9Success(lines)
+  call v9.CheckLegacyAndVim9Success(lines)
 
-  call CheckLegacyAndVim9Failure(['call getreg([])'], ['E730:', 'E1013:', 'E1174:'])
+  call v9.CheckLegacyAndVim9Failure(['call getreg([])'], ['E730:', 'E1013:', 'E1174:'])
 endfunc
 
 func Test_loop_over_null_list()
@@ -162,19 +162,19 @@
         call assert_report('should not get here')
       endfor
   END
-  call CheckLegacyAndVim9Success(lines)
+  call v9.CheckLegacyAndVim9Success(lines)
 endfunc
 
 func Test_setreg_null_list()
   let lines =<< trim END
       call setreg('x', test_null_list())
   END
-  call CheckLegacyAndVim9Success(lines)
+  call v9.CheckLegacyAndVim9Success(lines)
 endfunc
 
 func Test_special_char()
   " The failure is only visible using valgrind.
-  call CheckLegacyAndVim9Failure(['echo "\<C-">'], ['E15:', 'E1004:', 'E1004:'])
+  call v9.CheckLegacyAndVim9Failure(['echo "\<C-">'], ['E15:', 'E1004:', 'E1004:'])
 endfunc
 
 func Test_method_with_prefix()
@@ -182,13 +182,13 @@
       call assert_equal(TRUE, !range(5)->empty())
       call assert_equal(FALSE, !-3)
   END
-  call CheckLegacyAndVim9Success(lines)
+  call v9.CheckLegacyAndVim9Success(lines)
 
   call assert_equal([0, 1, 2], --3->range())
-  call CheckDefAndScriptFailure(['eval --3->range()'], 'E15')
+  call v9.CheckDefAndScriptFailure(['eval --3->range()'], 'E15')
 
   call assert_equal(1, !+-+0)
-  call CheckDefAndScriptFailure(['eval !+-+0'], 'E15')
+  call v9.CheckDefAndScriptFailure(['eval !+-+0'], 'E15')
 endfunc
 
 func Test_option_value()
@@ -214,7 +214,7 @@
       call assert_equal("abcdefgi", &cpo)
       set cpo&vim
   END
-  call CheckLegacyAndVim9Success(lines)
+  call v9.CheckLegacyAndVim9Success(lines)
 endfunc
 
 func Test_printf_misc()
@@ -407,9 +407,9 @@
       call assert_equal('1%', printf('%d%%', 1))
       call assert_notequal('', printf('%p', "abc"))
   END
-  call CheckLegacyAndVim9Success(lines)
+  call v9.CheckLegacyAndVim9Success(lines)
 
-  call CheckLegacyAndVim9Failure(["call printf('123', 3)"], "E767:")
+  call v9.CheckLegacyAndVim9Failure(["call printf('123', 3)"], "E767:")
 endfunc
 
 func Test_printf_float()
@@ -519,21 +519,21 @@
         call assert_equal('nan', printf('%S', 0.0 / 0.0))
         call assert_equal('nan', printf('%S', -0.0 / 0.0))
     END
-    call CheckLegacyAndVim9Success(lines)
+    call v9.CheckLegacyAndVim9Success(lines)
 
-    call CheckLegacyAndVim9Failure(['echo printf("%f", "a")'], 'E807:')
+    call v9.CheckLegacyAndVim9Failure(['echo printf("%f", "a")'], 'E807:')
   endif
 endfunc
 
 func Test_printf_errors()
-  call CheckLegacyAndVim9Failure(['echo printf("%d", {})'], 'E728:')
-  call CheckLegacyAndVim9Failure(['echo printf("%d", [])'], 'E745:')
-  call CheckLegacyAndVim9Failure(['echo printf("%d", 1, 2)'], 'E767:')
-  call CheckLegacyAndVim9Failure(['echo printf("%*d", 1)'], 'E766:')
-  call CheckLegacyAndVim9Failure(['echo printf("%s")'], 'E766:')
+  call v9.CheckLegacyAndVim9Failure(['echo printf("%d", {})'], 'E728:')
+  call v9.CheckLegacyAndVim9Failure(['echo printf("%d", [])'], 'E745:')
+  call v9.CheckLegacyAndVim9Failure(['echo printf("%d", 1, 2)'], 'E767:')
+  call v9.CheckLegacyAndVim9Failure(['echo printf("%*d", 1)'], 'E766:')
+  call v9.CheckLegacyAndVim9Failure(['echo printf("%s")'], 'E766:')
   if has('float')
-    call CheckLegacyAndVim9Failure(['echo printf("%d", 1.2)'], 'E805:')
-    call CheckLegacyAndVim9Failure(['echo printf("%f")'], 'E766:')
+    call v9.CheckLegacyAndVim9Failure(['echo printf("%d", 1.2)'], 'E805:')
+    call v9.CheckLegacyAndVim9Failure(['echo printf("%f")'], 'E766:')
   endif
 endfunc
 
@@ -541,7 +541,7 @@
   let lines =<< trim END
       call assert_equal("123456789012345", printf('%d', 123456789012345))
   END
-  call CheckLegacyAndVim9Success(lines)
+  call v9.CheckLegacyAndVim9Success(lines)
 endfunc
 
 func Test_printf_spec_s()
@@ -571,7 +571,7 @@
       #" partial
       call assert_equal(string(function('printf', ['%s'])), printf('%s', function('printf', ['%s'])))
   END
-  call CheckLegacyAndVim9Success(lines)
+  call v9.CheckLegacyAndVim9Success(lines)
 endfunc
 
 func Test_printf_spec_b()
@@ -587,14 +587,14 @@
       call assert_equal("11100000100100010000110000011011101111101111001", printf('%b', 123456789012345))
       call assert_equal("1111111111111111111111111111111111111111111111111111111111111111", printf('%b', -1))
   END
-  call CheckLegacyAndVim9Success(lines)
+  call v9.CheckLegacyAndVim9Success(lines)
 endfunc
 
 func Test_max_min_errors()
-  call CheckLegacyAndVim9Failure(['call max(v:true)'], ['E712:', 'E1013:', 'E1227:'])
-  call CheckLegacyAndVim9Failure(['call max(v:true)'], ['max()', 'E1013:', 'E1227:'])
-  call CheckLegacyAndVim9Failure(['call min(v:true)'], ['E712:', 'E1013:', 'E1227:'])
-  call CheckLegacyAndVim9Failure(['call min(v:true)'], ['min()', 'E1013:', 'E1227:'])
+  call v9.CheckLegacyAndVim9Failure(['call max(v:true)'], ['E712:', 'E1013:', 'E1227:'])
+  call v9.CheckLegacyAndVim9Failure(['call max(v:true)'], ['max()', 'E1013:', 'E1227:'])
+  call v9.CheckLegacyAndVim9Failure(['call min(v:true)'], ['E712:', 'E1013:', 'E1227:'])
+  call v9.CheckLegacyAndVim9Failure(['call min(v:true)'], ['min()', 'E1013:', 'E1227:'])
 endfunc
 
 func Test_function_with_funcref()
@@ -615,9 +615,9 @@
       call execute('VAR Ref = ' .. name)
       call assert_equal(4, Ref('text'))
   END
-  call CheckTransLegacySuccess(lines)
+  call v9.CheckTransLegacySuccess(lines)
   " cannot create s: variable in :def function
-  call CheckTransVim9Success(lines)
+  call v9.CheckTransVim9Success(lines)
 endfunc
 
 func Test_funcref()
@@ -668,9 +668,9 @@
       eval set->setmatches()
       call assert_equal(exp, getmatches())
   END
-  call CheckLegacyAndVim9Success(lines)
+  call v9.CheckLegacyAndVim9Success(lines)
 
-  call CheckLegacyAndVim9Failure(['VAR m = setmatches([], [])'], ['E745:', 'E1013:', 'E1210:'])
+  call v9.CheckLegacyAndVim9Failure(['VAR m = setmatches([], [])'], ['E745:', 'E1013:', 'E1210:'])
 endfunc
 
 func Test_empty_concatenate()
@@ -678,19 +678,19 @@
       call assert_equal('b', 'a'[4 : 0] .. 'b')
       call assert_equal('b', 'b' .. 'a'[4 : 0])
   END
-  call CheckLegacyAndVim9Success(lines)
+  call v9.CheckLegacyAndVim9Success(lines)
 endfunc
 
 func Test_broken_number()
-  call CheckLegacyAndVim9Failure(['VAR X = "bad"', 'echo 1X'], 'E15:')
-  call CheckLegacyAndVim9Failure(['VAR X = "bad"', 'echo 0b1X'], 'E15:')
-  call CheckLegacyAndVim9Failure(['echo 0b12'], 'E15:')
-  call CheckLegacyAndVim9Failure(['VAR X = "bad"', 'echo 0x1X'], 'E15:')
-  call CheckLegacyAndVim9Failure(['VAR X = "bad"', 'echo 011X'], 'E15:')
+  call v9.CheckLegacyAndVim9Failure(['VAR X = "bad"', 'echo 1X'], 'E15:')
+  call v9.CheckLegacyAndVim9Failure(['VAR X = "bad"', 'echo 0b1X'], 'E15:')
+  call v9.CheckLegacyAndVim9Failure(['echo 0b12'], 'E15:')
+  call v9.CheckLegacyAndVim9Failure(['VAR X = "bad"', 'echo 0x1X'], 'E15:')
+  call v9.CheckLegacyAndVim9Failure(['VAR X = "bad"', 'echo 011X'], 'E15:')
 
-  call CheckLegacyAndVim9Success(['call assert_equal(2, str2nr("2a"))'])
+  call v9.CheckLegacyAndVim9Success(['call assert_equal(2, str2nr("2a"))'])
 
-  call CheckLegacyAndVim9Failure(['inoremap <Char-0b1z> b'], 'E474:')
+  call v9.CheckLegacyAndVim9Failure(['inoremap <Char-0b1z> b'], 'E474:')
 endfunc
 
 func Test_eval_after_if()
@@ -783,11 +783,11 @@
 
 " Test for errors in expression evaluation
 func Test_expr_eval_error()
-  call CheckLegacyAndVim9Failure(["VAR i = 'abc' .. []"], ['E730:', 'E1105:', 'E730:'])
-  call CheckLegacyAndVim9Failure(["VAR l = [] + 10"], ['E745:', 'E1051:', 'E745'])
-  call CheckLegacyAndVim9Failure(["VAR v = 10 + []"], ['E745:', 'E1051:', 'E745:'])
-  call CheckLegacyAndVim9Failure(["VAR v = 10 / []"], ['E745:', 'E1036:', 'E745:'])
-  call CheckLegacyAndVim9Failure(["VAR v = -{}"], ['E728:', 'E1012:', 'E728:'])
+  call v9.CheckLegacyAndVim9Failure(["VAR i = 'abc' .. []"], ['E730:', 'E1105:', 'E730:'])
+  call v9.CheckLegacyAndVim9Failure(["VAR l = [] + 10"], ['E745:', 'E1051:', 'E745'])
+  call v9.CheckLegacyAndVim9Failure(["VAR v = 10 + []"], ['E745:', 'E1051:', 'E745:'])
+  call v9.CheckLegacyAndVim9Failure(["VAR v = 10 / []"], ['E745:', 'E1036:', 'E745:'])
+  call v9.CheckLegacyAndVim9Failure(["VAR v = -{}"], ['E728:', 'E1012:', 'E728:'])
 endfunc
 
 func Test_white_in_function_call()
@@ -795,13 +795,13 @@
       VAR text = substitute ( 'some text' , 't' , 'T' , 'g' )
       call assert_equal('some TexT', text)
   END
-  call CheckTransLegacySuccess(lines)
+  call v9.CheckTransLegacySuccess(lines)
 
   let lines =<< trim END
       var text = substitute ( 'some text' , 't' , 'T' , 'g' )
       call assert_equal('some TexT', text)
   END
-  call CheckDefAndScriptFailure(lines, ['E1001:', 'E121:'])
+  call v9.CheckDefAndScriptFailure(lines, ['E1001:', 'E121:'])
 endfunc
 
 " Test for float value comparison
@@ -825,7 +825,7 @@
       #" +infinity != -infinity
       call assert_true((1.0 / 0) != -(2.0 / 0))
   END
-  call CheckLegacyAndVim9Success(lines)
+  call v9.CheckLegacyAndVim9Success(lines)
 endfunc
 
 " vim: shiftwidth=2 sts=2 expandtab
diff --git a/src/testdir/test_filter_map.vim b/src/testdir/test_filter_map.vim
index 072e7cb..f06059b 100644
--- a/src/testdir/test_filter_map.vim
+++ b/src/testdir/test_filter_map.vim
@@ -1,6 +1,6 @@
 " Test filter() and map()
 
-source vim9.vim
+import './vim9.vim' as v9
 
 " list with expression string
 func Test_filter_map_list_expr_string()
@@ -166,7 +166,7 @@
     call assert_equal('', filter('', "v:val == 'a'"))
     call assert_equal('', filter(test_null_string(), "v:val == 'a'"))
   END
-  call CheckLegacyAndVim9Success(lines)
+  call v9.CheckLegacyAndVim9Success(lines)
 
   " map()
   let lines =<< trim END
@@ -185,7 +185,7 @@
     call assert_fails('echo map("abc", "10")', 'E928:')
     call assert_fails('echo map("abc", "a10")', 'E121:')
   END
-  call CheckLegacyAndVim9Success(lines)
+  call v9.CheckLegacyAndVim9Success(lines)
 
   " mapnew()
   let lines =<< trim END
@@ -202,7 +202,7 @@
     call assert_equal('', mapnew('', "v:val == 'a'"))
     call assert_equal('', mapnew(test_null_string(), "v:val == 'a'"))
   END
-  call CheckLegacyAndVim9Success(lines)
+  call v9.CheckLegacyAndVim9Success(lines)
 
   let lines =<< trim END
     #" map() and filter()
@@ -228,7 +228,7 @@
     call assert_equal('@ström', map('Åström', LSTART i, x LMIDDLE x =~ nr2char(0xc5) .. '\%C' ? '@' : x LEND))
     call assert_equal('Åstr@m', map('Åström', LSTART i, x LMIDDLE x =~ nr2char(0xf6) .. '\%C' ? '@' : x LEND))
   END
-  call CheckLegacyAndVim9Success(lines)
+  call v9.CheckLegacyAndVim9Success(lines)
 endfunc
 
 " vim: shiftwidth=2 sts=2 expandtab
diff --git a/src/testdir/test_float_func.vim b/src/testdir/test_float_func.vim
index 41ae815..8ef1b9d 100644
--- a/src/testdir/test_float_func.vim
+++ b/src/testdir/test_float_func.vim
@@ -2,7 +2,7 @@
 
 source check.vim
 CheckFeature float
-source vim9.vim
+import './vim9.vim' as v9
 
 func Test_abs()
   call assert_equal('1.23', string(abs(1.23)))
@@ -246,7 +246,7 @@
   call assert_equal('123456.7', string(str2float("123'456.7'89", 1)))
 
   call assert_equal(1.2, str2float(1.2, 0))
-  call CheckDefAndScriptFailure(['str2float(1.2)'], ['E1013: Argument 1: type mismatch, expected string but got float', 'E1174: String required for argument 1'])
+  call v9.CheckDefAndScriptFailure(['str2float(1.2)'], ['E1013: Argument 1: type mismatch, expected string but got float', 'E1174: String required for argument 1'])
   call assert_fails("call str2float([])", 'E730:')
   call assert_fails("call str2float({})", 'E731:')
   call assert_fails("call str2float(function('string'))", 'E729:')
diff --git a/src/testdir/test_functions.vim b/src/testdir/test_functions.vim
index ff07916..6baba97 100644
--- a/src/testdir/test_functions.vim
+++ b/src/testdir/test_functions.vim
@@ -4,7 +4,7 @@
 source check.vim
 source term_util.vim
 source screendump.vim
-source vim9.vim
+import './vim9.vim' as v9
 
 " Must be done first, since the alternate buffer must be unset.
 func Test_00_bufexists()
@@ -174,7 +174,7 @@
 
   if has('float')
     call assert_equal(3, strwidth(1.2))
-    call CheckDefAndScriptFailure(['echo strwidth(1.2)'], ['E1013: Argument 1: type mismatch, expected string but got float', 'E1174: String required for argument 1'])
+    call v9.CheckDefAndScriptFailure(['echo strwidth(1.2)'], ['E1013: Argument 1: type mismatch, expected string but got float', 'E1174: String required for argument 1'])
   endif
 
   set ambiwidth&
@@ -241,7 +241,7 @@
   call assert_fails('call str2nr({->2})', 'E729:')
   if has('float')
     call assert_equal(1, str2nr(1.2))
-    call CheckDefAndScriptFailure(['echo str2nr(1.2)'], ['E1013: Argument 1: type mismatch, expected string but got float', 'E1174: String required for argument 1'])
+    call v9.CheckDefAndScriptFailure(['echo str2nr(1.2)'], ['E1013: Argument 1: type mismatch, expected string but got float', 'E1174: String required for argument 1'])
   endif
   call assert_fails('call str2nr(10, [])', 'E745:')
 endfunc
@@ -503,7 +503,7 @@
   call assert_fails('call simplify({})', 'E731:')
   if has('float')
     call assert_equal('1.2', simplify(1.2))
-    call CheckDefAndScriptFailure(['echo simplify(1.2)'], ['E1013: Argument 1: type mismatch, expected string but got float', 'E1174: String required for argument 1'])
+    call v9.CheckDefAndScriptFailure(['echo simplify(1.2)'], ['E1013: Argument 1: type mismatch, expected string but got float', 'E1174: String required for argument 1'])
   endif
 endfunc
 
@@ -2265,7 +2265,7 @@
       let Time = 'localtime'
       call Time()
   END
-  call CheckScriptFailure(lines, 'E1085:')
+  call v9.CheckScriptFailure(lines, 'E1085:')
 endfunc
 
 func Test_char2nr()
@@ -2800,7 +2800,7 @@
     vim9script
     var s:trim = (x) => " " .. x
   END
-  call CheckScriptFailure(lines, 'E704:')
+  call v9.CheckScriptFailure(lines, 'E704:')
 
   call assert_fails('call extend(g:, #{foo: { -> "foo" }})', 'E704:')
   let g:bar = 123
diff --git a/src/testdir/test_glob2regpat.vim b/src/testdir/test_glob2regpat.vim
index 824693d..17ae3fc 100644
--- a/src/testdir/test_glob2regpat.vim
+++ b/src/testdir/test_glob2regpat.vim
@@ -1,11 +1,11 @@
 " Test glob2regpat()
 
-source vim9.vim
+import './vim9.vim' as v9
 
 func Test_glob2regpat_invalid()
   if has('float')
     call assert_equal('^1\.33$', glob2regpat(1.33))
-    call CheckDefAndScriptFailure(['echo glob2regpat(1.2)'], ['E1013: Argument 1: type mismatch, expected string but got float', 'E1174: String required for argument 1'])
+    call v9.CheckDefAndScriptFailure(['echo glob2regpat(1.2)'], ['E1013: Argument 1: type mismatch, expected string but got float', 'E1174: String required for argument 1'])
   endif
   call assert_fails('call glob2regpat("}")', 'E219:')
   call assert_fails('call glob2regpat("{")', 'E220:')
diff --git a/src/testdir/test_highlight.vim b/src/testdir/test_highlight.vim
index 5476008..9870b2e 100644
--- a/src/testdir/test_highlight.vim
+++ b/src/testdir/test_highlight.vim
@@ -4,7 +4,7 @@
 source screendump.vim
 source check.vim
 source script_util.vim
-source vim9.vim
+import './vim9.vim' as v9
 
 func ClearDict(d)
   for k in keys(a:d)
@@ -1011,7 +1011,7 @@
     call assert_equal([], hlget(test_null_string()))
     call assert_equal([], hlget(""))
   END
-  call CheckLegacyAndVim9Success(lines)
+  call v9.CheckLegacyAndVim9Success(lines)
 
   " Test for resolving highlight group links
   let lines =<< trim END
@@ -1042,7 +1042,7 @@
     call assert_equal([{'id': hlgCid, 'name': 'hlgC',
                       \ 'term': {'bold': v:true}}], hlget('hlgC', v:true))
   END
-  call CheckLegacyAndVim9Success(lines)
+  call v9.CheckLegacyAndVim9Success(lines)
 
   call assert_fails('call hlget([])', 'E1174:')
   call assert_fails('call hlget("abc", "xyz")', 'E1212:')
@@ -1098,7 +1098,7 @@
     call assert_equal('Search', hlget('NewHLGroup')[0].linksto)
     highlight clear NewHLGroup
   END
-  call CheckLegacyAndVim9Success(lines)
+  call v9.CheckLegacyAndVim9Success(lines)
 
   " Test for clearing the 'term', 'cterm' and 'gui' attributes of a highlight
   " group.
@@ -1117,7 +1117,7 @@
                 \ hlget('myhlg1'))
     highlight clear myhlg1
   END
-  call CheckLegacyAndVim9Success(lines)
+  call v9.CheckLegacyAndVim9Success(lines)
 
   " Test for setting all the 'term', 'cterm' and 'gui' attributes of a
   " highlight group
@@ -1134,7 +1134,7 @@
     call assert_equal([{'id': id2, 'name': 'myhlg2', 'gui': attr,
                       \ 'term': attr, 'cterm': attr}], hlget('myhlg2'))
   END
-  call CheckLegacyAndVim9Success(lines)
+  call v9.CheckLegacyAndVim9Success(lines)
 
   " Test for clearing some of the 'term', 'cterm' and 'gui' attributes of a
   " highlight group
@@ -1150,7 +1150,7 @@
     call assert_equal([{'id': id2, 'name': 'myhlg2', 'gui': attr,
                       \ 'term': attr, 'cterm': attr}], hlget('myhlg2'))
   END
-  call CheckLegacyAndVim9Success(lines)
+  call v9.CheckLegacyAndVim9Success(lines)
 
   " Test for clearing the attributes and link of a highlight group
   let lines =<< trim END
@@ -1162,7 +1162,7 @@
                       \ hlget('myhlg3'))
     highlight clear hlg3
   END
-  call CheckLegacyAndVim9Success(lines)
+  call v9.CheckLegacyAndVim9Success(lines)
 
   " Test for setting default attributes for a highlight group
   let lines =<< trim END
@@ -1187,7 +1187,7 @@
                     \ hlget('hlg6'))
     highlight clear hlg6
   END
-  call CheckLegacyAndVim9Success(lines)
+  call v9.CheckLegacyAndVim9Success(lines)
 
   " Test for setting default links for a highlight group
   let lines =<< trim END
@@ -1217,7 +1217,7 @@
                     \ 'linksto': 'ErrorMsg'}], hlget('hlg9dup'))
     highlight clear hlg9
   END
-  call CheckLegacyAndVim9Success(lines)
+  call v9.CheckLegacyAndVim9Success(lines)
 
   " Test for force creating a link to a highlight group
   let lines =<< trim END
@@ -1231,7 +1231,7 @@
                     \ 'linksto': 'Search'}], hlget('hlg10'))
     highlight clear hlg10
   END
-  call CheckLegacyAndVim9Success(lines)
+  call v9.CheckLegacyAndVim9Success(lines)
 
   " Test for empty values of attributes
   call hlset([{'name': 'hlg11', 'cterm': {}}])
diff --git a/src/testdir/test_iminsert.vim b/src/testdir/test_iminsert.vim
index db6152f..e5ded58 100644
--- a/src/testdir/test_iminsert.vim
+++ b/src/testdir/test_iminsert.vim
@@ -2,7 +2,7 @@
 
 source view_util.vim
 source check.vim
-source vim9.vim
+import './vim9.vim' as v9
 
 let s:imactivatefunc_called = 0
 let s:imstatusfunc_called = 0
@@ -165,28 +165,28 @@
     normal! i
 
     #" Test for using a lambda function
-    VAR optval = "LSTART a LMIDDLE IMactivatefunc1(a) LEND"
+    VAR optval = "LSTART a LMIDDLE g:IMactivatefunc1(a) LEND"
     LET optval = substitute(optval, ' ', '\\ ', 'g')
     exe "set imactivatefunc=" .. optval
-    LET optval = "LSTART LMIDDLE IMstatusfunc1() LEND"
+    LET optval = "LSTART LMIDDLE g:IMstatusfunc1() LEND"
     LET optval = substitute(optval, ' ', '\\ ', 'g')
     exe "set imstatusfunc=" .. optval
     normal! i
 
     #" Set 'imactivatefunc' and 'imstatusfunc' to a lambda expression
-    LET &imactivatefunc = LSTART a LMIDDLE IMactivatefunc1(a) LEND
-    LET &imstatusfunc = LSTART LMIDDLE IMstatusfunc1() LEND
+    LET &imactivatefunc = LSTART a LMIDDLE g:IMactivatefunc1(a) LEND
+    LET &imstatusfunc = LSTART LMIDDLE g:IMstatusfunc1() LEND
     normal! i
 
     #" Set 'imactivatefunc' and 'imstatusfunc' to a string(lambda expression)
-    LET &imactivatefunc = 'LSTART a LMIDDLE IMactivatefunc1(a) LEND'
-    LET &imstatusfunc = 'LSTART LMIDDLE IMstatusfunc1() LEND'
+    LET &imactivatefunc = 'LSTART a LMIDDLE g:IMactivatefunc1(a) LEND'
+    LET &imstatusfunc = 'LSTART LMIDDLE g:IMstatusfunc1() LEND'
     normal! i
 
     #" Set 'imactivatefunc' 'imstatusfunc' to a variable with a lambda
     #" expression
-    VAR Lambda1 = LSTART a LMIDDLE IMactivatefunc1(a) LEND
-    VAR Lambda2 = LSTART LMIDDLE IMstatusfunc1() LEND
+    VAR Lambda1 = LSTART a LMIDDLE g:IMactivatefunc1(a) LEND
+    VAR Lambda2 = LSTART LMIDDLE g:IMstatusfunc1() LEND
     LET &imactivatefunc = Lambda1
     LET &imstatusfunc = Lambda2
     normal! i
@@ -223,7 +223,7 @@
     call assert_equal(14, g:IMactivatefunc_called)
     call assert_equal(28, g:IMstatusfunc_called)
   END
-  call CheckLegacyAndVim9Success(lines)
+  call v9.CheckLegacyAndVim9Success(lines)
 
   " Using Vim9 lambda expression in legacy context should fail
   set imactivatefunc=(a)\ =>\ IMactivatefunc1(a)
@@ -285,7 +285,7 @@
     set imactivatefunc=
     set imstatusfunc=
   END
-  call CheckScriptSuccess(lines)
+  call v9.CheckScriptSuccess(lines)
 
   " cleanup
   set iminsert=0
diff --git a/src/testdir/test_ins_complete.vim b/src/testdir/test_ins_complete.vim
index 5f7d0e3..5cfa462 100644
--- a/src/testdir/test_ins_complete.vim
+++ b/src/testdir/test_ins_complete.vim
@@ -2,7 +2,7 @@
 
 source screendump.vim
 source check.vim
-source vim9.vim
+import './vim9.vim' as v9
 
 " Test for insert expansion
 func Test_ins_complete()
@@ -1359,7 +1359,7 @@
     bw!
 
     #" Test for using a lambda function with set
-    VAR optval = "LSTART a, b LMIDDLE CompleteFunc1(16, a, b) LEND"
+    VAR optval = "LSTART a, b LMIDDLE g:CompleteFunc1(16, a, b) LEND"
     LET optval = substitute(optval, ' ', '\\ ', 'g')
     exe "set completefunc=" .. optval
     new
@@ -1370,7 +1370,7 @@
     bw!
 
     #" Set 'completefunc' to a lambda expression
-    LET &completefunc = LSTART a, b LMIDDLE CompleteFunc1(17, a, b) LEND
+    LET &completefunc = LSTART a, b LMIDDLE g:CompleteFunc1(17, a, b) LEND
     new
     call setline(1, 'six')
     LET g:CompleteFunc1Args = []
@@ -1379,7 +1379,7 @@
     bw!
 
     #" Set 'completefunc' to string(lambda_expression)
-    LET &completefunc = 'LSTART a, b LMIDDLE CompleteFunc1(18, a, b) LEND'
+    LET &completefunc = 'LSTART a, b LMIDDLE g:CompleteFunc1(18, a, b) LEND'
     new
     call setline(1, 'six')
     LET g:CompleteFunc1Args = []
@@ -1388,7 +1388,7 @@
     bw!
 
     #" Set 'completefunc' to a variable with a lambda expression
-    VAR Lambda = LSTART a, b LMIDDLE CompleteFunc1(19, a, b) LEND
+    VAR Lambda = LSTART a, b LMIDDLE g:CompleteFunc1(19, a, b) LEND
     LET &completefunc = Lambda
     new
     call setline(1, 'seven')
@@ -1398,7 +1398,7 @@
     bw!
 
     #" Set 'completefunc' to a string(variable with a lambda expression)
-    LET Lambda = LSTART a, b LMIDDLE CompleteFunc1(20, a, b) LEND
+    LET Lambda = LSTART a, b LMIDDLE g:CompleteFunc1(20, a, b) LEND
     LET &completefunc = string(Lambda)
     new
     call setline(1, 'seven')
@@ -1431,7 +1431,7 @@
     call assert_equal([[1, ''], [0, 'five']], g:CompleteFunc2Args)
     bw!
   END
-  call CheckLegacyAndVim9Success(lines)
+  call v9.CheckLegacyAndVim9Success(lines)
 
   " Test for using a script-local function name
   func s:CompleteFunc3(findstart, base)
@@ -1460,7 +1460,7 @@
   call feedkeys("A\<C-X>\<C-U>\<Esc>", 'x')
 
   " Using Vim9 lambda expression in legacy context should fail
-  set completefunc=(a,\ b)\ =>\ CompleteFunc1(21,\ a,\ b)
+  set completefunc=(a,\ b)\ =>\ g:CompleteFunc1(21,\ a,\ b)
   new | only
   let g:CompleteFunc1Args = []
   call assert_fails('call feedkeys("A\<C-X>\<C-U>\<Esc>", "x")', 'E117:')
@@ -1526,7 +1526,7 @@
     assert_equal([[1, ''], [0, 'three']], g:LocalCompleteFuncArgs)
     bw!
   END
-  call CheckScriptSuccess(lines)
+  call v9.CheckScriptSuccess(lines)
 
   " cleanup
   set completefunc&
@@ -1616,7 +1616,7 @@
     bw!
 
     #" Test for using a lambda function with set
-    VAR optval = "LSTART a, b LMIDDLE OmniFunc1(16, a, b) LEND"
+    VAR optval = "LSTART a, b LMIDDLE g:OmniFunc1(16, a, b) LEND"
     LET optval = substitute(optval, ' ', '\\ ', 'g')
     exe "set omnifunc=" .. optval
     new
@@ -1627,7 +1627,7 @@
     bw!
 
     #" Set 'omnifunc' to a lambda expression
-    LET &omnifunc = LSTART a, b LMIDDLE OmniFunc1(17, a, b) LEND
+    LET &omnifunc = LSTART a, b LMIDDLE g:OmniFunc1(17, a, b) LEND
     new
     call setline(1, 'six')
     LET g:OmniFunc1Args = []
@@ -1636,7 +1636,7 @@
     bw!
 
     #" Set 'omnifunc' to a string(lambda_expression)
-    LET &omnifunc = 'LSTART a, b LMIDDLE OmniFunc1(18, a, b) LEND'
+    LET &omnifunc = 'LSTART a, b LMIDDLE g:OmniFunc1(18, a, b) LEND'
     new
     call setline(1, 'six')
     LET g:OmniFunc1Args = []
@@ -1645,7 +1645,7 @@
     bw!
 
     #" Set 'omnifunc' to a variable with a lambda expression
-    VAR Lambda = LSTART a, b LMIDDLE OmniFunc1(19, a, b) LEND
+    VAR Lambda = LSTART a, b LMIDDLE g:OmniFunc1(19, a, b) LEND
     LET &omnifunc = Lambda
     new
     call setline(1, 'seven')
@@ -1655,7 +1655,7 @@
     bw!
 
     #" Set 'omnifunc' to a string(variable with a lambda expression)
-    LET Lambda = LSTART a, b LMIDDLE OmniFunc1(20, a, b) LEND
+    LET Lambda = LSTART a, b LMIDDLE g:OmniFunc1(20, a, b) LEND
     LET &omnifunc = string(Lambda)
     new
     call setline(1, 'seven')
@@ -1688,7 +1688,7 @@
     call assert_equal([[1, ''], [0, 'nine']], g:OmniFunc2Args)
     bw!
   END
-  call CheckLegacyAndVim9Success(lines)
+  call v9.CheckLegacyAndVim9Success(lines)
 
   " Test for using a script-local function name
   func s:OmniFunc3(findstart, base)
@@ -1783,7 +1783,7 @@
     assert_equal([[1, ''], [0, 'three']], g:LocalOmniFuncArgs)
     bw!
   END
-  call CheckScriptSuccess(lines)
+  call v9.CheckScriptSuccess(lines)
 
   " cleanup
   set omnifunc&
@@ -1873,7 +1873,7 @@
     bw!
 
     #" Test for using a lambda function
-    VAR optval = "LSTART a, b LMIDDLE TsrFunc1(16, a, b) LEND"
+    VAR optval = "LSTART a, b LMIDDLE g:TsrFunc1(16, a, b) LEND"
     LET optval = substitute(optval, ' ', '\\ ', 'g')
     exe "set thesaurusfunc=" .. optval
     new
@@ -1884,7 +1884,7 @@
     bw!
 
     #" Test for using a lambda function with set
-    LET &thesaurusfunc = LSTART a, b LMIDDLE TsrFunc1(17, a, b) LEND
+    LET &thesaurusfunc = LSTART a, b LMIDDLE g:TsrFunc1(17, a, b) LEND
     new
     call setline(1, 'six')
     LET g:TsrFunc1Args = []
@@ -1893,7 +1893,7 @@
     bw!
 
     #" Set 'thesaurusfunc' to a string(lambda expression)
-    LET &thesaurusfunc = 'LSTART a, b LMIDDLE TsrFunc1(18, a, b) LEND'
+    LET &thesaurusfunc = 'LSTART a, b LMIDDLE g:TsrFunc1(18, a, b) LEND'
     new
     call setline(1, 'six')
     LET g:TsrFunc1Args = []
@@ -1902,7 +1902,7 @@
     bw!
 
     #" Set 'thesaurusfunc' to a variable with a lambda expression
-    VAR Lambda = LSTART a, b LMIDDLE TsrFunc1(19, a, b) LEND
+    VAR Lambda = LSTART a, b LMIDDLE g:TsrFunc1(19, a, b) LEND
     LET &thesaurusfunc = Lambda
     new
     call setline(1, 'seven')
@@ -1912,7 +1912,7 @@
     bw!
 
     #" Set 'thesaurusfunc' to a string(variable with a lambda expression)
-    LET Lambda = LSTART a, b LMIDDLE TsrFunc1(20, a, b) LEND
+    LET Lambda = LSTART a, b LMIDDLE g:TsrFunc1(20, a, b) LEND
     LET &thesaurusfunc = string(Lambda)
     new
     call setline(1, 'seven')
@@ -1968,7 +1968,7 @@
     call assert_equal([[22, 1, ''], [22, 0, 'sun']], g:TsrFunc1Args)
     :%bw!
   END
-  call CheckLegacyAndVim9Success(lines)
+  call v9.CheckLegacyAndVim9Success(lines)
 
   " Test for using a script-local function name
   func s:TsrFunc3(findstart, base)
@@ -2076,7 +2076,7 @@
     assert_equal([[1, ''], [0, 'three']], g:LocalTsrFuncArgs)
     bw!
   END
-  call CheckScriptSuccess(lines)
+  call v9.CheckScriptSuccess(lines)
 
   " cleanup
   set thesaurusfunc&
diff --git a/src/testdir/test_listdict.vim b/src/testdir/test_listdict.vim
index fbb917b..5337254 100644
--- a/src/testdir/test_listdict.vim
+++ b/src/testdir/test_listdict.vim
@@ -1,7 +1,7 @@
 " Tests for the List and Dict types
 scriptencoding utf-8
 
-source vim9.vim
+import './vim9.vim' as v9
 
 func TearDown()
   " Run garbage collection after every test
@@ -50,7 +50,7 @@
       call assert_equal([2], l[-1 : -1])
       call assert_equal([1, 2], l[-2 : -1])
   END
-  call CheckLegacyAndVim9Success(lines)
+  call v9.CheckLegacyAndVim9Success(lines)
 
   let l = [1, 2]
   call assert_equal([], l[-3 : -1])
@@ -59,7 +59,7 @@
       var l = [1, 2]
       assert_equal([1, 2], l[-3 : -1])
   END
-  call CheckDefAndScriptSuccess(lines)
+  call v9.CheckDefAndScriptSuccess(lines)
 endfunc
 
 " List identity
@@ -75,7 +75,7 @@
       call assert_false(l is lx)
       call assert_true(l isnot lx)
   END
-  call CheckLegacyAndVim9Success(lines)
+  call v9.CheckLegacyAndVim9Success(lines)
 endfunc
 
 " removing items with :unlet
@@ -118,7 +118,7 @@
       unlet l[-6 : 2]
       call assert_equal([3], l)
   END
-  call CheckLegacyAndVim9Success(lines)
+  call v9.CheckLegacyAndVim9Success(lines)
 
   let l = [0, 1, 2, 3]
   unlet l[2:2]
@@ -131,13 +131,13 @@
       VAR l = [0, 1, 2, 3]
       unlet l[2 : 1]
   END
-  call CheckLegacyAndVim9Failure(lines, 'E684:')
+  call v9.CheckLegacyAndVim9Failure(lines, 'E684:')
 
   let lines =<< trim END
       VAR l = [0, 1, 2, 3]
       unlet l[-1 : 2]
   END
-  call CheckLegacyAndVim9Failure(lines, 'E684:')
+  call v9.CheckLegacyAndVim9Failure(lines, 'E684:')
 endfunc
 
 " assignment to a list
@@ -149,35 +149,35 @@
       LET [va, vb] = l[2 : 3]
       call assert_equal([2, 3], [va, vb])
   END
-  call CheckLegacyAndVim9Success(lines)
+  call v9.CheckLegacyAndVim9Success(lines)
 
   let lines =<< trim END
       let l = [0, 1, 2, 3]
       let [va, vb] = l
   END
-  call CheckScriptFailure(lines, 'E687:')
+  call v9.CheckScriptFailure(lines, 'E687:')
   let lines =<< trim END
       var l = [0, 1, 2, 3]
       var va = 0
       var vb = 0
       [va, vb] = l
   END
-  call CheckScriptFailure(['vim9script'] + lines, 'E687:')
-  call CheckDefExecFailure(lines, 'E1093: Expected 2 items but got 4')
+  call v9.CheckScriptFailure(['vim9script'] + lines, 'E687:')
+  call v9.CheckDefExecFailure(lines, 'E1093: Expected 2 items but got 4')
 
   let lines =<< trim END
       let l = [0, 1, 2, 3]
       let [va, vb] = l[1:1]
   END
-  call CheckScriptFailure(lines, 'E688:')
+  call v9.CheckScriptFailure(lines, 'E688:')
   let lines =<< trim END
       var l = [0, 1, 2, 3]
       var va = 0
       var vb = 0
       [va, vb] = l[1 : 1]
   END
-  call CheckScriptFailure(['vim9script'] + lines, 'E688:')
-  call CheckDefExecFailure(lines, 'E1093: Expected 2 items but got 1')
+  call v9.CheckScriptFailure(['vim9script'] + lines, 'E688:')
+  call v9.CheckDefExecFailure(lines, 'E1093: Expected 2 items but got 1')
 endfunc
 
 " test for range assign
@@ -189,13 +189,13 @@
       LET l[-4 : -1] = [5, 6]
       call assert_equal([5, 6], l)
   END
-  call CheckLegacyAndVim9Success(lines)
+  call v9.CheckLegacyAndVim9Success(lines)
 
   let lines =<< trim END
     var l = [7]
     l[:] = ['text']
   END
-  call CheckDefAndScriptFailure(lines, 'E1012:', 2)
+  call v9.CheckDefAndScriptFailure(lines, 'E1012:', 2)
 endfunc
 
 " Test removing items in list
@@ -227,7 +227,7 @@
       call assert_equal([2, 3], remove(l, -3, -2))
       call assert_equal([1, 4], l)
   END
-  call CheckLegacyAndVim9Success(lines)
+  call v9.CheckLegacyAndVim9Success(lines)
 
   " Test invalid cases
   let l = [1, 2, 3, 4]
@@ -251,7 +251,7 @@
       call add(l, test_null_dict())
       call assert_equal([1, [2, 3], [], [], {'k': 3}, {}, {}], l)
   END
-  call CheckLegacyAndVim9Success(lines)
+  call v9.CheckLegacyAndVim9Success(lines)
 
   " weird legacy behavior
   call assert_equal(1, add(test_null_list(), 4))
@@ -271,7 +271,7 @@
       call extend(d, {'b': 'bbb', 'c': 'ccc'}, "keep")
       call assert_equal({'c': 'ccc', '1': 99, 'b': [1, 2, function('strlen')], '3': 33, '-1': {'a': 1}}, d)
   END
-  call CheckLegacyAndVim9Success(lines)
+  call v9.CheckLegacyAndVim9Success(lines)
 
   let d = {001: 'asd', 'b': [1, 2, function('strlen')], -1: {'a': 1},}
   call assert_equal("{'1': 'asd', 'b': [1, 2, function('strlen')], '-1': {'a': 1}}", string(d))
@@ -320,7 +320,7 @@
       call assert_false(d is dx)
       call assert_true(d isnot dx)
   END
-  call CheckLegacyAndVim9Success(lines)
+  call v9.CheckLegacyAndVim9Success(lines)
 endfunc
 
 " removing items with :unlet
@@ -331,7 +331,7 @@
       unlet d[-1]
       call assert_equal({'1': 99, '3': 33}, d)
   END
-  call CheckLegacyAndVim9Success(lines)
+  call v9.CheckLegacyAndVim9Success(lines)
 endfunc
 
 " manipulating a big Dictionary (hashtable.c has a border of 1000 entries)
@@ -405,24 +405,24 @@
       LET d._ = 2
       call assert_equal({'a': 1, '_': 2}, d)
   END
-  call CheckLegacyAndVim9Success(lines)
+  call v9.CheckLegacyAndVim9Success(lines)
 
   let lines =<< trim END
     let n = 0
     let n.key = 3
   END
-  call CheckScriptFailure(lines, 'E1203: Dot can only be used on a dictionary: n.key = 3')
+  call v9.CheckScriptFailure(lines, 'E1203: Dot can only be used on a dictionary: n.key = 3')
   let lines =<< trim END
     vim9script
     var n = 0
     n.key = 3
   END
-  call CheckScriptFailure(lines, 'E1203: Dot can only be used on a dictionary: n.key = 3')
+  call v9.CheckScriptFailure(lines, 'E1203: Dot can only be used on a dictionary: n.key = 3')
   let lines =<< trim END
     var n = 0
     n.key = 3
   END
-  call CheckDefFailure(lines, 'E1141:')
+  call v9.CheckDefFailure(lines, 'E1141:')
 endfunc
 
 " Function in script-local List or Dict
@@ -444,55 +444,55 @@
       call assert_equal('b', remove(d, 2))
       call assert_equal({1: 'a', 3: 'c'}, d)
   END
-  call CheckLegacyAndVim9Success(lines)
+  call v9.CheckLegacyAndVim9Success(lines)
 
   let lines =<< trim END
       VAR d = {1: 'a', 3: 'c'}
       call remove(d, 1, 2)
   END
-  call CheckLegacyAndVim9Failure(lines, 'E118:')
+  call v9.CheckLegacyAndVim9Failure(lines, 'E118:')
 
   let lines =<< trim END
       VAR d = {1: 'a', 3: 'c'}
       call remove(d, 'a')
   END
-  call CheckLegacyAndVim9Failure(lines, 'E716:')
+  call v9.CheckLegacyAndVim9Failure(lines, 'E716:')
 
   let lines =<< trim END
       let d = {'a-b': 55}
       echo d.a-b
   END
-  call CheckScriptFailure(lines, 'E716: Key not present in Dictionary: "a"')
+  call v9.CheckScriptFailure(lines, 'E716: Key not present in Dictionary: "a"')
 
   let lines =<< trim END
       vim9script
       var d = {'a-b': 55}
       echo d.a-b
   END
-  call CheckScriptFailure(lines, 'E716: Key not present in Dictionary: "a"')
+  call v9.CheckScriptFailure(lines, 'E716: Key not present in Dictionary: "a"')
 
   let lines =<< trim END
       var d = {'a-b': 55}
       echo d.a-b
   END
-  call CheckDefFailure(lines, 'E1004: White space required before and after ''-''')
+  call v9.CheckDefFailure(lines, 'E1004: White space required before and after ''-''')
 
   let lines =<< trim END
       let d = {1: 'a', 3: 'c'}
       call remove(d, [])
   END
-  call CheckScriptFailure(lines, 'E730:')
+  call v9.CheckScriptFailure(lines, 'E730:')
   let lines =<< trim END
       vim9script
       var d = {1: 'a', 3: 'c'}
       call remove(d, [])
   END
-  call CheckScriptFailure(lines, 'E1220: String or Number required for argument 2')
+  call v9.CheckScriptFailure(lines, 'E1220: String or Number required for argument 2')
   let lines =<< trim END
       var d = {1: 'a', 3: 'c'}
       call remove(d, [])
   END
-  call CheckDefExecFailure(lines, 'E1013: Argument 2: type mismatch, expected string but got list<unknown>')
+  call v9.CheckDefExecFailure(lines, 'E1013: Argument 2: type mismatch, expected string but got list<unknown>')
 endfunc
 
 " Nasty: remove func from Dict that's being called (works)
@@ -514,8 +514,8 @@
       VAR expected = 'a:' .. string(get(d, 'func'))
       call assert_equal(expected, d.func(string(remove(d, 'func'))))
   END
-  call CheckTransLegacySuccess(lines)
-  call CheckTransVim9Success(lines)
+  call v9.CheckTransLegacySuccess(lines)
+  call v9.CheckTransVim9Success(lines)
 endfunc
 
 func Test_dict_literal_keys()
@@ -535,7 +535,7 @@
       VAR dc = deepcopy(d)
       call deepcopy(d, 1)
   END
-  call CheckLegacyAndVim9Failure(lines, 'E698:')
+  call v9.CheckLegacyAndVim9Failure(lines, 'E698:')
 
   let lines =<< trim END
       VAR d = {1: 1, 2: '2'}
@@ -546,7 +546,7 @@
       VAR l3 = deepcopy(l2)
       call assert_true(l3[1] is l3[2])
   END
-  call CheckLegacyAndVim9Success(lines)
+  call v9.CheckLegacyAndVim9Success(lines)
 
   call assert_fails("call deepcopy([1, 2], 2)", 'E1023:')
 endfunc
@@ -631,8 +631,8 @@
         endfor
       endfor
   END
-  call CheckTransLegacySuccess(lines)
-  call CheckTransVim9Success(lines)
+  call v9.CheckTransLegacySuccess(lines)
+  call v9.CheckTransVim9Success(lines)
 
   call assert_fails("let x=islocked('a b')", 'E488:')
   let mylist = [1, 2, 3]
@@ -745,7 +745,7 @@
       unlet d.a
       call assert_equal({'b': 100}, d)
   END
-  call CheckLegacyAndVim9Success(lines)
+  call v9.CheckLegacyAndVim9Success(lines)
 endfunc
 
 " filter() after lock on dict item
@@ -756,7 +756,7 @@
       call filter(d, 'v:key != "a"')
       call assert_equal({'b': 100}, d)
   END
-  call CheckLegacyAndVim9Success(lines)
+  call v9.CheckLegacyAndVim9Success(lines)
 endfunc
 
 " map() after lock on dict
@@ -768,8 +768,8 @@
       call assert_equal({'a': 299, 'b': 300}, d)
   END
   " This won't work in a :def function
-  call CheckTransLegacySuccess(lines)
-  call CheckTransVim9Success(lines)
+  call v9.CheckTransLegacySuccess(lines)
+  call v9.CheckTransVim9Success(lines)
 
   " For a :def function use a global dict.
   let lines =<< trim END
@@ -780,7 +780,7 @@
       enddef
       call Delkey()
   END
-  call CheckScriptFailure(lines, 'E741:')
+  call v9.CheckScriptFailure(lines, 'E741:')
 endfunc
 
 " Lock one item in a list
@@ -792,8 +792,8 @@
       call assert_equal([299, 100, 101], l)
   END
   " This won't work in a :def function
-  call CheckTransLegacySuccess(lines)
-  call CheckTransVim9Success(lines)
+  call v9.CheckTransLegacySuccess(lines)
+  call v9.CheckTransVim9Success(lines)
 endfunc
 
 " Lock one item in a dict
@@ -805,8 +805,8 @@
       call assert_equal({'a': 299, 'b': 100, 'c': 101}, d)
   END
   " This won't work in a :def function
-  call CheckTransLegacySuccess(lines)
-  call CheckTransVim9Success(lines)
+  call v9.CheckTransLegacySuccess(lines)
+  call v9.CheckTransVim9Success(lines)
 endfunc
 
 " No extend() after lock on dict item
@@ -885,7 +885,7 @@
       lockvar! l
       call TryUnletListItem(l)
   END
-  call CheckScriptFailure(lines, 'E741:')
+  call v9.CheckScriptFailure(lines, 'E741:')
   unlet g:l
 endfunc
 
@@ -954,7 +954,7 @@
         call assert_equal(['BAR', 'Bar', 'FOO', 'FOOBAR', 'Foo', 'bar', 'foo', -1, 0, 0, 0.22, 1.0e-15, 12, 18, 22, 255, 7, 9, [], {}], sort(copy(l)))
       endif
   END
-  call CheckLegacyAndVim9Success(lines)
+  call v9.CheckLegacyAndVim9Success(lines)
 
   call assert_fails('call reverse("")', 'E899:')
   call assert_fails('call uniq([1, 2], {x, y -> []})', 'E745:')
@@ -997,7 +997,7 @@
       call assert_equal('Å,s,t,r,ö,m', reduce('Åström', LSTART acc, val LMIDDLE acc .. ',' .. val LEND))
       call assert_equal(',a,b,c', reduce('abc', LSTART acc, val LMIDDLE acc .. ',' .. val LEND, test_null_string()))
   END
-  call CheckLegacyAndVim9Success(lines)
+  call v9.CheckLegacyAndVim9Success(lines)
 
   call assert_equal({'x': 1, 'y': 1, 'z': 1 }, ['x', 'y', 'z']->reduce({ acc, val -> extend(acc, { val: 1 }) }, {}))
   vim9 assert_equal({'x': 1, 'y': 1, 'z': 1 }, ['x', 'y', 'z']->reduce((acc, val) => extend(acc, {[val]: 1 }), {}))
@@ -1055,7 +1055,7 @@
       call assert_equal(['', 'a', '', 'b', '', 'c', ''], split('abc', '\zs', 1))
       call assert_equal(['abc'], split('abc', '\\%('))
   END
-  call CheckLegacyAndVim9Success(lines)
+  call v9.CheckLegacyAndVim9Success(lines)
 
   call assert_fails("call split('abc', [])", 'E730:')
   call assert_fails("call split('abc', 'b', [])", 'E745:')
@@ -1072,7 +1072,7 @@
       call assert_false(l != deepcopy(l))
       call assert_false(d != deepcopy(d))
   END
-  call CheckLegacyAndVim9Success(lines)
+  call v9.CheckLegacyAndVim9Success(lines)
 
   " comparison errors
   call assert_fails('echo [1, 2] =~ {}', 'E691:')
@@ -1093,7 +1093,7 @@
       call assert_true(l == lcopy)
       call assert_true(dict4 == dict4copy)
   END
-  call CheckLegacyAndVim9Success(lines)
+  call v9.CheckLegacyAndVim9Success(lines)
 endfunc
 
 " Test for extending lists and dictionaries
@@ -1130,7 +1130,7 @@
       call extend(l, [4, 5, 6], -3)
       call assert_equal([4, 5, 6, 1, 2,  3], l)
   END
-  call CheckLegacyAndVim9Success(lines)
+  call v9.CheckLegacyAndVim9Success(lines)
 
   let l = [1, 2, 3]
   call assert_fails("call extend(l, [4, 5, 6], 4)", 'E684:')
@@ -1159,7 +1159,7 @@
       call extend(d, {'b': 0, 'c': 'C'}, "keep")
       call assert_equal({'a': 'A', 'b': 9, 'c': 'C'}, d)
   END
-  call CheckLegacyAndVim9Success(lines)
+  call v9.CheckLegacyAndVim9Success(lines)
 
   let d = {'a': 'A', 'b': 'B'}
   call assert_fails("call extend(d, {'b': 0, 'c':'C'}, 'error')", 'E737:')
@@ -1191,7 +1191,7 @@
       call extend(l, l, 3)
       call assert_equal([1, 5, 7, 1, 5, 7], l)
   END
-  call CheckLegacyAndVim9Success(lines)
+  call v9.CheckLegacyAndVim9Success(lines)
 endfunc
 
 func Test_listdict_extendnew()
@@ -1318,30 +1318,30 @@
 
 " List and dict indexing tests
 func Test_listdict_index()
-  call CheckLegacyAndVim9Failure(['echo function("min")[0]'], 'E695:')
-  call CheckLegacyAndVim9Failure(['echo v:true[0]'], 'E909:')
-  call CheckLegacyAndVim9Failure(['echo v:null[0]'], 'E909:')
-  call CheckLegacyAndVim9Failure(['VAR d = {"k": 10}', 'echo d.'], ['E15:', 'E1127:', 'E15:'])
-  call CheckLegacyAndVim9Failure(['VAR d = {"k": 10}', 'echo d[1 : 2]'], 'E719:')
+  call v9.CheckLegacyAndVim9Failure(['echo function("min")[0]'], 'E695:')
+  call v9.CheckLegacyAndVim9Failure(['echo v:true[0]'], 'E909:')
+  call v9.CheckLegacyAndVim9Failure(['echo v:null[0]'], 'E909:')
+  call v9.CheckLegacyAndVim9Failure(['VAR d = {"k": 10}', 'echo d.'], ['E15:', 'E1127:', 'E15:'])
+  call v9.CheckLegacyAndVim9Failure(['VAR d = {"k": 10}', 'echo d[1 : 2]'], 'E719:')
 
   call assert_fails("let v = [4, 6][{-> 1}]", 'E729:')
-  call CheckDefAndScriptFailure(['var v = [4, 6][() => 1]'], ['E1012', 'E703:'])
+  call v9.CheckDefAndScriptFailure(['var v = [4, 6][() => 1]'], ['E1012', 'E703:'])
 
-  call CheckLegacyAndVim9Failure(['VAR v = range(5)[2 : []]'], ['E730:', 'E1012:', 'E730:'])
+  call v9.CheckLegacyAndVim9Failure(['VAR v = range(5)[2 : []]'], ['E730:', 'E1012:', 'E730:'])
 
   call assert_fails("let v = range(5)[2:{-> 2}(]", ['E15:', 'E116:'])
-  call CheckDefAndScriptFailure(['var v = range(5)[2 : () => 2(]'], 'E15:')
+  call v9.CheckDefAndScriptFailure(['var v = range(5)[2 : () => 2(]'], 'E15:')
 
-  call CheckLegacyAndVim9Failure(['VAR v = range(5)[2 : 3'], ['E111:', 'E1097:', 'E111:'])
-  call CheckLegacyAndVim9Failure(['VAR l = insert([1, 2, 3], 4, 10)'], 'E684:')
-  call CheckLegacyAndVim9Failure(['VAR l = insert([1, 2, 3], 4, -10)'], 'E684:')
-  call CheckLegacyAndVim9Failure(['VAR l = insert([1, 2, 3], 4, [])'], ['E745:', 'E1013:', 'E1210:'])
+  call v9.CheckLegacyAndVim9Failure(['VAR v = range(5)[2 : 3'], ['E111:', 'E1097:', 'E111:'])
+  call v9.CheckLegacyAndVim9Failure(['VAR l = insert([1, 2, 3], 4, 10)'], 'E684:')
+  call v9.CheckLegacyAndVim9Failure(['VAR l = insert([1, 2, 3], 4, -10)'], 'E684:')
+  call v9.CheckLegacyAndVim9Failure(['VAR l = insert([1, 2, 3], 4, [])'], ['E745:', 'E1013:', 'E1210:'])
 
-  call CheckLegacyAndVim9Failure(['VAR l = [1, 2, 3]', 'LET l[i] = 3'], ['E121:', 'E1001:', 'E121:'])
-  call CheckLegacyAndVim9Failure(['VAR l = [1, 2, 3]', 'LET l[1.1] = 4'], ['E805:', 'E1012:', 'E805:'])
-  call CheckLegacyAndVim9Failure(['VAR l = [1, 2, 3]', 'LET l[: i] = [4, 5]'], ['E121:', 'E1001:', 'E121:'])
-  call CheckLegacyAndVim9Failure(['VAR l = [1, 2, 3]', 'LET l[: 3.2] = [4, 5]'], ['E805:', 'E1012:', 'E805:'])
-  call CheckLegacyAndVim9Failure(['VAR t = test_unknown()', 'echo t[0]'], 'E685:')
+  call v9.CheckLegacyAndVim9Failure(['VAR l = [1, 2, 3]', 'LET l[i] = 3'], ['E121:', 'E1001:', 'E121:'])
+  call v9.CheckLegacyAndVim9Failure(['VAR l = [1, 2, 3]', 'LET l[1.1] = 4'], ['E805:', 'E1012:', 'E805:'])
+  call v9.CheckLegacyAndVim9Failure(['VAR l = [1, 2, 3]', 'LET l[: i] = [4, 5]'], ['E121:', 'E1001:', 'E121:'])
+  call v9.CheckLegacyAndVim9Failure(['VAR l = [1, 2, 3]', 'LET l[: 3.2] = [4, 5]'], ['E805:', 'E1012:', 'E805:'])
+  call v9.CheckLegacyAndVim9Failure(['VAR t = test_unknown()', 'echo t[0]'], 'E685:')
 endfunc
 
 " Test for a null list
@@ -1379,7 +1379,7 @@
       call assert_equal([], sort(l))
       call assert_equal('[]', string(l))
   END
-  call CheckLegacyAndVim9Success(lines)
+  call v9.CheckLegacyAndVim9Success(lines)
 
   let l = test_null_list()
   call assert_equal([], extend(l, l, 0))
@@ -1420,7 +1420,7 @@
       call assert_equal(0, remove(test_null_dict(), 'k'))
       call assert_equal('{}', string(d))
   END
-  call CheckLegacyAndVim9Success(lines)
+  call v9.CheckLegacyAndVim9Success(lines)
 
   let d = test_null_dict()
   call assert_equal({}, extend(d, d, 'keep'))
diff --git a/src/testdir/test_mapping.vim b/src/testdir/test_mapping.vim
index aae3444..b9c9fa5 100644
--- a/src/testdir/test_mapping.vim
+++ b/src/testdir/test_mapping.vim
@@ -4,7 +4,7 @@
 source check.vim
 source screendump.vim
 source term_util.vim
-source vim9.vim
+import './vim9.vim' as v9
 
 func Test_abbreviation()
   " abbreviation with 0x80 should work
@@ -1415,7 +1415,7 @@
       vim9script
       nnoremap <F3> <ScriptCmd>eval 1 + 2<CR>
   END
-  call CheckScriptSuccess(lines)
+  call v9.CheckScriptSuccess(lines)
   call feedkeys("\<F3>:let g:result = 3+4\<CR>", 'xtc')
   call assert_equal(7, g:result)
 
@@ -1431,7 +1431,7 @@
         g:func_called = 'yes'
       enddef
   END
-  call CheckScriptSuccess(lines)
+  call v9.CheckScriptSuccess(lines)
   call feedkeys("y\<F3>\<Esc>", 'xtc')
   call assert_equal('yes', g:func_called)
 
@@ -1449,7 +1449,7 @@
       feedkeys("\<F3>\<CR>", 'xct')
       assert_equal(123, b:result)
   END
-  call CheckScriptSuccess(lines)
+  call v9.CheckScriptSuccess(lines)
 
   nunmap <F3>
   unlet b:result
diff --git a/src/testdir/test_normal.vim b/src/testdir/test_normal.vim
index 9fcc9fd..2ed6a80 100644
--- a/src/testdir/test_normal.vim
+++ b/src/testdir/test_normal.vim
@@ -3,7 +3,7 @@
 source shared.vim
 source check.vim
 source view_util.vim
-source vim9.vim
+import './vim9.vim' as v9
 
 func Setup_NewWindow()
   10new
@@ -626,7 +626,7 @@
     normal! g@l
     call assert_equal([23, 'char'], g:OpFunc1Args)
   END
-  call CheckTransLegacySuccess(lines)
+  call v9.CheckTransLegacySuccess(lines)
 
   " Test for using a script-local function name
   func s:OpFunc3(type)
@@ -693,7 +693,7 @@
     assert_equal(['char'], g:LocalOpFuncArgs)
     bw!
   END
-  call CheckScriptSuccess(lines)
+  call v9.CheckScriptSuccess(lines)
 
   " setting 'opfunc' to a script local function outside of a script context
   " should fail
diff --git a/src/testdir/test_popupwin.vim b/src/testdir/test_popupwin.vim
index 45883b1..5a088b4 100644
--- a/src/testdir/test_popupwin.vim
+++ b/src/testdir/test_popupwin.vim
@@ -2801,7 +2801,7 @@
   assert_equal(2, winnr())
   var buf = term_start(&shell, {hidden: 1})
   popup_create(buf, {})
-  TermWait(buf, 100)
+  g:TermWait(buf, 100)
   popup_clear(true)
   assert_equal(2, winnr())
 
diff --git a/src/testdir/test_profile.vim b/src/testdir/test_profile.vim
index 13f5fae..1c7ef93 100644
--- a/src/testdir/test_profile.vim
+++ b/src/testdir/test_profile.vim
@@ -5,7 +5,6 @@
 
 source shared.vim
 source screendump.vim
-source vim9.vim
 
 func Test_profile_func()
   call RunProfileFunc('func', 'let', 'let')
diff --git a/src/testdir/test_quickfix.vim b/src/testdir/test_quickfix.vim
index 511896e..fb6d21f 100644
--- a/src/testdir/test_quickfix.vim
+++ b/src/testdir/test_quickfix.vim
@@ -1,7 +1,7 @@
 " Test for the quickfix feature.
 
 source check.vim
-source vim9.vim
+import './vim9.vim' as v9
 CheckFeature quickfix
 
 source screendump.vim
@@ -5347,7 +5347,7 @@
     cclose
 
     #" Test for using a lambda function with set
-    VAR optval = "LSTART a LMIDDLE Tqfexpr(a) LEND"
+    VAR optval = "LSTART a LMIDDLE g:Tqfexpr(a) LEND"
     LET optval = substitute(optval, ' ', '\\ ', 'g')
     exe "set qftf=" .. optval
     cexpr "F6:6:6:L6"
@@ -5356,21 +5356,21 @@
     cclose
 
     #" Set 'quickfixtextfunc' to a lambda expression
-    LET &qftf = LSTART a LMIDDLE Tqfexpr(a) LEND
+    LET &qftf = LSTART a LMIDDLE g:Tqfexpr(a) LEND
     cexpr "F7:7:7:L7"
     copen
     call assert_equal('F7-L7C7-L7', getline(1))
     cclose
 
     #" Set 'quickfixtextfunc' to string(lambda_expression)
-    LET &qftf = "LSTART a LMIDDLE Tqfexpr(a) LEND"
+    LET &qftf = "LSTART a LMIDDLE g:Tqfexpr(a) LEND"
     cexpr "F8:8:8:L8"
     copen
     call assert_equal('F8-L8C8-L8', getline(1))
     cclose
 
     #" Set 'quickfixtextfunc' to a variable with a lambda expression
-    VAR Lambda = LSTART a LMIDDLE Tqfexpr(a) LEND
+    VAR Lambda = LSTART a LMIDDLE g:Tqfexpr(a) LEND
     LET &qftf = Lambda
     cexpr "F9:9:9:L9"
     copen
@@ -5378,14 +5378,14 @@
     cclose
 
     #" Set 'quickfixtextfunc' to a string(variable with a lambda expression)
-    LET Lambda = LSTART a LMIDDLE Tqfexpr(a) LEND
+    LET Lambda = LSTART a LMIDDLE g:Tqfexpr(a) LEND
     LET &qftf = string(Lambda)
     cexpr "F9:9:9:L9"
     copen
     call assert_equal('F9-L9C9-L9', getline(1))
     cclose
   END
-  call CheckLegacyAndVim9Success(lines)
+  call v9.CheckLegacyAndVim9Success(lines)
 
   " Test for using a script-local function name
   func s:TqfFunc2(info)
diff --git a/src/testdir/test_tagfunc.vim b/src/testdir/test_tagfunc.vim
index 03394ac..66a58ec 100644
--- a/src/testdir/test_tagfunc.vim
+++ b/src/testdir/test_tagfunc.vim
@@ -1,6 +1,6 @@
 " Test 'tagfunc'
 
-source vim9.vim
+import './vim9.vim' as v9
 source check.vim
 source screendump.vim
 
@@ -200,7 +200,7 @@
     bw!
 
     #" Test for using a lambda function
-    VAR optval = "LSTART a, b, c LMIDDLE TagFunc1(16, a, b, c) LEND"
+    VAR optval = "LSTART a, b, c LMIDDLE g:TagFunc1(16, a, b, c) LEND"
     LET optval = substitute(optval, ' ', '\\ ', 'g')
     exe "set tagfunc=" .. optval
     new
@@ -210,7 +210,7 @@
     bw!
 
     #" Set 'tagfunc' to a lambda expression
-    LET &tagfunc = LSTART a, b, c LMIDDLE TagFunc1(17, a, b, c) LEND
+    LET &tagfunc = LSTART a, b, c LMIDDLE g:TagFunc1(17, a, b, c) LEND
     new
     LET g:TagFunc1Args = []
     call assert_fails('tag a18', 'E433:')
@@ -218,7 +218,7 @@
     bw!
 
     #" Set 'tagfunc' to a string(lambda expression)
-    LET &tagfunc = 'LSTART a, b, c LMIDDLE TagFunc1(18, a, b, c) LEND'
+    LET &tagfunc = 'LSTART a, b, c LMIDDLE g:TagFunc1(18, a, b, c) LEND'
     new
     LET g:TagFunc1Args = []
     call assert_fails('tag a18', 'E433:')
@@ -226,7 +226,7 @@
     bw!
 
     #" Set 'tagfunc' to a variable with a lambda expression
-    VAR Lambda = LSTART a, b, c LMIDDLE TagFunc1(19, a, b, c) LEND
+    VAR Lambda = LSTART a, b, c LMIDDLE g:TagFunc1(19, a, b, c) LEND
     LET &tagfunc = Lambda
     new
     LET g:TagFunc1Args = []
@@ -235,7 +235,7 @@
     bw!
 
     #" Set 'tagfunc' to a string(variable with a lambda expression)
-    LET Lambda = LSTART a, b, c LMIDDLE TagFunc1(20, a, b, c) LEND
+    LET Lambda = LSTART a, b, c LMIDDLE g:TagFunc1(20, a, b, c) LEND
     LET &tagfunc = string(Lambda)
     new
     LET g:TagFunc1Args = []
@@ -265,7 +265,7 @@
     call assert_equal([], g:TagFunc2Args)
     bw!
   END
-  call CheckLegacyAndVim9Success(lines)
+  call v9.CheckLegacyAndVim9Success(lines)
 
   " Test for using a script-local function name
   func s:TagFunc3(pat, flags, info)
@@ -380,7 +380,7 @@
     assert_equal(['a12', '', {}], g:LocalTagFuncArgs)
     bw!
   END
-  call CheckScriptSuccess(lines)
+  call v9.CheckScriptSuccess(lines)
 
   " cleanup
   delfunc TagFunc1
diff --git a/src/testdir/test_textprop.vim b/src/testdir/test_textprop.vim
index 036dd71..ed2856f 100644
--- a/src/testdir/test_textprop.vim
+++ b/src/testdir/test_textprop.vim
@@ -5,7 +5,7 @@
 CheckFeature textprop
 
 source screendump.vim
-source vim9.vim
+import './vim9.vim' as v9
 
 func Test_proptype_global()
   call prop_type_add('comment', {'highlight': 'Directory', 'priority': 123, 'start_incl': 1, 'end_incl': 1})
@@ -429,10 +429,10 @@
 
 def Test_prop_remove_vim9()
   new
-  AddPropTypes()
-  SetupPropsInFirstLine()
+  g:AddPropTypes()
+  g:SetupPropsInFirstLine()
   assert_equal(1, prop_remove({type: 'three', id: 13, both: true, all: true}))
-  DeletePropTypes()
+  g:DeletePropTypes()
   bwipe!
 enddef
 
@@ -1704,7 +1704,7 @@
 func Test_prop_list()
   let lines =<< trim END
     new
-    call AddPropTypes()
+    call g:AddPropTypes()
     call setline(1, repeat([repeat('a', 60)], 10))
     call prop_add(1, 4, {'type': 'one', 'id': 5, 'end_col': 6})
     call prop_add(1, 5, {'type': 'two', 'id': 10, 'end_col': 7})
@@ -1844,10 +1844,10 @@
     bunload! Xaaa
     call assert_equal([], prop_list(1, {'bufnr': bnr, 'end_lnum': -1}))
 
-    call DeletePropTypes()
+    call g:DeletePropTypes()
     :%bw!
   END
-  call CheckLegacyAndVim9Success(lines)
+  call v9.CheckLegacyAndVim9Success(lines)
 endfunc
 
 " vim: shiftwidth=2 sts=2 expandtab
diff --git a/src/testdir/test_usercommands.vim b/src/testdir/test_usercommands.vim
index b3ba620..331e55f 100644
--- a/src/testdir/test_usercommands.vim
+++ b/src/testdir/test_usercommands.vim
@@ -1,6 +1,6 @@
 " Tests for user defined commands
 
-source vim9.vim
+import './vim9.vim' as v9
 
 " Test for <mods> in user defined commands
 function Test_cmdmods()
@@ -287,13 +287,13 @@
       vim9script
       com! -complete=file DoCmd :
   END
-  call CheckScriptFailure(lines, 'E1208', 2)
+  call v9.CheckScriptFailure(lines, 'E1208', 2)
 
   let lines =<< trim END
       vim9script
       com! -nargs=0 -complete=file DoCmd :
   END
-  call CheckScriptFailure(lines, 'E1208', 2)
+  call v9.CheckScriptFailure(lines, 'E1208', 2)
 
   com! -nargs=0 DoCmd :
   call assert_fails('DoCmd x', 'E488:')
@@ -645,7 +645,7 @@
       command DoesNotEnd {
          echo 'hello'
   END
-  call CheckScriptFailure(lines, 'E1026:')
+  call v9.CheckScriptFailure(lines, 'E1026:')
 
   let lines =<< trim END
       command HelloThere {
@@ -653,7 +653,7 @@
         }
       HelloThere
   END
-  call CheckScriptSuccess(lines)
+  call v9.CheckScriptSuccess(lines)
   delcommand HelloThere
 
   let lines =<< trim END
@@ -664,7 +664,7 @@
           }
       BadCommand
   END
-  call CheckScriptFailure(lines, 'E1128:')
+  call v9.CheckScriptFailure(lines, 'E1128:')
 endfunc
 
 func Test_delcommand_buffer()
diff --git a/src/testdir/test_vim9_assign.vim b/src/testdir/test_vim9_assign.vim
index 0af1d5b..7eb7eae 100644
--- a/src/testdir/test_vim9_assign.vim
+++ b/src/testdir/test_vim9_assign.vim
@@ -1,7 +1,7 @@
 " Test Vim9 assignments
 
 source check.vim
-source vim9.vim
+import './vim9.vim' as v9
 source term_util.vim
 
 let s:appendToMe = 'xxx'
@@ -51,14 +51,14 @@
     var cp: bool = &cp
     var fen: bool = &l:fen
   END
-  CheckScriptSuccess(lines)
-  CheckDefAndScriptFailure(['var x: bool = 2'], 'E1012:')
-  CheckDefAndScriptFailure(['var x: bool = -1'], 'E1012:')
-  CheckDefAndScriptFailure(['var x: bool = [1]'], 'E1012:')
-  CheckDefAndScriptFailure(['var x: bool = {}'], 'E1012:')
-  CheckDefAndScriptFailure(['var x: bool = "x"'], 'E1012:')
+  v9.CheckScriptSuccess(lines)
+  v9.CheckDefAndScriptFailure(['var x: bool = 2'], 'E1012:')
+  v9.CheckDefAndScriptFailure(['var x: bool = -1'], 'E1012:')
+  v9.CheckDefAndScriptFailure(['var x: bool = [1]'], 'E1012:')
+  v9.CheckDefAndScriptFailure(['var x: bool = {}'], 'E1012:')
+  v9.CheckDefAndScriptFailure(['var x: bool = "x"'], 'E1012:')
 
-  CheckDefAndScriptFailure(['var x: bool = "x"', '', 'eval 0'], 'E1012:', 1)
+  v9.CheckDefAndScriptFailure(['var x: bool = "x"', '', 'eval 0'], 'E1012:', 1)
 enddef
 
 def Test_syntax()
@@ -67,21 +67,21 @@
 enddef
 
 def Test_assignment()
-  CheckDefFailure(['var x:string'], 'E1069:')
-  CheckDefFailure(['var x:string = "x"'], 'E1069:')
-  CheckDefFailure(['var a:string = "x"'], 'E1069:')
-  CheckDefFailure(['var lambda = () => "lambda"'], 'E704:')
-  CheckScriptFailure(['var x = "x"'], 'E1124:')
+  v9.CheckDefFailure(['var x:string'], 'E1069:')
+  v9.CheckDefFailure(['var x:string = "x"'], 'E1069:')
+  v9.CheckDefFailure(['var a:string = "x"'], 'E1069:')
+  v9.CheckDefFailure(['var lambda = () => "lambda"'], 'E704:')
+  v9.CheckScriptFailure(['var x = "x"'], 'E1124:')
 
   # lower case name is OK for a list
   var lambdaLines =<< trim END
       var lambdaList: list<func> = [Test_syntax]
       lambdaList[0] = () => "lambda"
   END
-  CheckDefAndScriptSuccess(lambdaLines)
+  v9.CheckDefAndScriptSuccess(lambdaLines)
 
   var nr: number = 1234
-  CheckDefFailure(['var nr: number = "asdf"'], 'E1012:')
+  v9.CheckDefFailure(['var nr: number = "asdf"'], 'E1012:')
 
   var a: number = 6 #comment
   assert_equal(6, a)
@@ -122,7 +122,7 @@
     assert_equal('barfoo', $ENVVAR)
     $ENVVAR = ''
   END
-  CheckScriptSuccess(lines)
+  v9.CheckScriptSuccess(lines)
 
   s:appendToMe ..= 'yyy'
   assert_equal('xxxyyy', s:appendToMe)
@@ -155,7 +155,7 @@
     f200 /= 5.0
     assert_equal(40.0, f200)
 
-    CheckDefFailure(['var nr: number = 200', 'nr /= 5.0'], 'E1012:')
+    v9.CheckDefFailure(['var nr: number = 200', 'nr /= 5.0'], 'E1012:')
   endif
 
   lines =<< trim END
@@ -182,18 +182,18 @@
     &number = false
     assert_equal(false, &number)
   END
-  CheckDefAndScriptSuccess(lines)
+  v9.CheckDefAndScriptSuccess(lines)
 
-  CheckDefFailure(['&notex += 3'], 'E113:')
-  CheckDefFailure(['&ts ..= "xxx"'], 'E1019:')
-  CheckDefFailure(['&ts = [7]'], 'E1012:')
-  CheckDefExecFailure(['&ts = g:alist'], 'E1012: Type mismatch; expected number but got list<number>')
-  CheckDefFailure(['&ts = "xx"'], 'E1012:')
-  CheckDefExecFailure(['&ts = g:astring'], 'E1012: Type mismatch; expected number but got string')
-  CheckDefFailure(['&path += 3'], 'E1012:')
-  CheckDefExecFailure(['&bs = "asdf"'], 'E474:')
+  v9.CheckDefFailure(['&notex += 3'], 'E113:')
+  v9.CheckDefFailure(['&ts ..= "xxx"'], 'E1019:')
+  v9.CheckDefFailure(['&ts = [7]'], 'E1012:')
+  v9.CheckDefExecFailure(['&ts = g:alist'], 'E1012: Type mismatch; expected number but got list<number>')
+  v9.CheckDefFailure(['&ts = "xx"'], 'E1012:')
+  v9.CheckDefExecFailure(['&ts = g:astring'], 'E1012: Type mismatch; expected number but got string')
+  v9.CheckDefFailure(['&path += 3'], 'E1012:')
+  v9.CheckDefExecFailure(['&bs = "asdf"'], 'E474:')
   # test freeing ISN_STOREOPT
-  CheckDefFailure(['&ts = 3', 'var asdf'], 'E1022:')
+  v9.CheckDefFailure(['&ts = 3', 'var asdf'], 'E1022:')
   &ts = 8
 
   lines =<< trim END
@@ -204,13 +204,13 @@
     assert_equal('xxx', &t_TI)
     &t_TI = save_TI
   END
-  CheckDefAndScriptSuccess(lines)
+  v9.CheckDefAndScriptSuccess(lines)
 
-  CheckDefFailure(['&t_TI = 123'], 'E1012:')
-  CheckScriptFailure(['vim9script', '&t_TI = 123'], 'E928:')
+  v9.CheckDefFailure(['&t_TI = 123'], 'E1012:')
+  v9.CheckScriptFailure(['vim9script', '&t_TI = 123'], 'E928:')
 
-  CheckDefFailure(['var s:var = 123'], 'E1101:')
-  CheckDefFailure(['var s:var: number'], 'E1101:')
+  v9.CheckDefFailure(['var s:var = 123'], 'E1101:')
+  v9.CheckDefFailure(['var s:var: number'], 'E1101:')
 
   lines =<< trim END
     vim9script
@@ -219,7 +219,7 @@
     enddef
     defcompile
   END
-  CheckScriptFailure(lines, 'E1089:')
+  v9.CheckScriptFailure(lines, 'E1089:')
 
   g:inc_counter += 1
   assert_equal(2, g:inc_counter)
@@ -232,14 +232,14 @@
 
   $SOME_ENV_VAR ..= 'more'
   assert_equal('somemore', $SOME_ENV_VAR)
-  CheckDefFailure(['$SOME_ENV_VAR += "more"'], 'E1051:')
-  CheckDefFailure(['$SOME_ENV_VAR += 123'], 'E1012:')
+  v9.CheckDefFailure(['$SOME_ENV_VAR += "more"'], 'E1051:')
+  v9.CheckDefFailure(['$SOME_ENV_VAR += 123'], 'E1012:')
 
   v:errmsg = 'none'
   v:errmsg ..= 'again'
   assert_equal('noneagain', v:errmsg)
-  CheckDefFailure(['v:errmsg += "more"'], 'E1051:')
-  CheckDefFailure(['v:errmsg += 123'], 'E1012:')
+  v9.CheckDefFailure(['v:errmsg += "more"'], 'E1051:')
+  v9.CheckDefFailure(['v:errmsg += 123'], 'E1012:')
 
   var text =<< trim END
     some text
@@ -259,7 +259,7 @@
          --f
          assert_equal(1.0, f)
     END
-    CheckDefAndScriptSuccess(lines)
+    v9.CheckDefAndScriptSuccess(lines)
   endif
 enddef
 
@@ -275,18 +275,18 @@
     s ..= g:someNumber
     assert_equal('-99true-null43', s)
   END
-  CheckDefAndScriptSuccess(lines)
+  v9.CheckDefAndScriptSuccess(lines)
 
   lines =<< trim END
     var s = '-'
     s ..= [1, 2]
   END
-  CheckDefAndScriptFailure(lines, ['E1105: Cannot convert list to string', 'E734: Wrong variable type for .='], 2)
+  v9.CheckDefAndScriptFailure(lines, ['E1105: Cannot convert list to string', 'E734: Wrong variable type for .='], 2)
   lines =<< trim END
     var s = '-'
     s ..= {a: 2}
   END
-  CheckDefAndScriptFailure(lines, ['E1105: Cannot convert dict to string', 'E734: Wrong variable type for .='], 2)
+  v9.CheckDefAndScriptFailure(lines, ['E1105: Cannot convert dict to string', 'E734: Wrong variable type for .='], 2)
 enddef
 
 def Test_assign_register()
@@ -298,16 +298,16 @@
     @@ = 'some text'
     assert_equal('some text', getreg('"'))
   END
-  CheckDefAndScriptSuccess(lines)
+  v9.CheckDefAndScriptSuccess(lines)
 
-  CheckDefFailure(['@a += "more"'], 'E1051:')
-  CheckDefFailure(['@a += 123'], 'E1012:')
+  v9.CheckDefFailure(['@a += "more"'], 'E1051:')
+  v9.CheckDefFailure(['@a += 123'], 'E1012:')
 enddef
 
 def Test_reserved_name()
   for name in ['true', 'false', 'null']
-    CheckDefExecAndScriptFailure(['var ' .. name .. ' =  0'], 'E1034:')
-    CheckDefExecAndScriptFailure(['var ' .. name .. ': bool'], 'E1034:')
+    v9.CheckDefExecAndScriptFailure(['var ' .. name .. ' =  0'], 'E1034:')
+    v9.CheckDefExecAndScriptFailure(['var ' .. name .. ': bool'], 'E1034:')
   endfor
 enddef
 
@@ -320,7 +320,7 @@
         endwhile
       endfor
   END
-  CheckDefAndScriptSuccess(lines)
+  v9.CheckDefAndScriptSuccess(lines)
 enddef
 
 def Test_assign_keep_type()
@@ -330,7 +330,7 @@
       l = [123]
       l->add('string')
   END
-  CheckScriptFailure(lines, 'E1012:', 4)
+  v9.CheckScriptFailure(lines, 'E1012:', 4)
 enddef
 
 def Test_assign_unpack()
@@ -382,62 +382,62 @@
     assert_equal(2, a)
     assert_equal(0, b)
   END
-  CheckDefAndScriptSuccess(lines)
+  v9.CheckDefAndScriptSuccess(lines)
 
   lines =<< trim END
       var v1: number
       var v2: number
       [v1, v2] = [1, 2, 3]
   END
-  CheckDefFailure(lines, 'E1093: Expected 2 items but got 3', 3)
+  v9.CheckDefFailure(lines, 'E1093: Expected 2 items but got 3', 3)
 
   lines =<< trim END
       var v1: number
       var v2: number
       [v1, v2] = [1]
   END
-  CheckDefFailure(lines, 'E1093: Expected 2 items but got 1', 3)
+  v9.CheckDefFailure(lines, 'E1093: Expected 2 items but got 1', 3)
 
   lines =<< trim END
       var v1: number
       var v2: number
       [v1, v2; _] = [1]
   END
-  CheckDefFailure(lines, 'E1093: Expected 2 items but got 1', 3)
+  v9.CheckDefFailure(lines, 'E1093: Expected 2 items but got 1', 3)
 
   lines =<< trim END
       var v1: number
       var v2: number
       [v1, v2] = 
   END
-  CheckDefFailure(lines, 'E1097:', 5)
+  v9.CheckDefFailure(lines, 'E1097:', 5)
 
   lines =<< trim END
       var v1: number
       var v2: number
       [v1, v2] = xxx
   END
-  CheckDefFailure(lines, 'E1001:', 3)
+  v9.CheckDefFailure(lines, 'E1001:', 3)
 
   lines =<< trim END
       var v1: number
       var v2: number
       [v1, v2] = popup_clear()
   END
-  CheckDefFailure(lines, 'E1031:', 3)
+  v9.CheckDefFailure(lines, 'E1031:', 3)
 
   lines =<< trim END
       [v1, v2] = [1, 2]
   END
-  CheckDefFailure(lines, 'E1089', 1)
-  CheckScriptFailure(['vim9script'] + lines, 'E1089', 2)
+  v9.CheckDefFailure(lines, 'E1089', 1)
+  v9.CheckScriptFailure(['vim9script'] + lines, 'E1089', 2)
 
   lines =<< trim END
       var v1: number
       var v2: number
       [v1, v2] = ''
   END
-  CheckDefFailure(lines, 'E1012: Type mismatch; expected list<any> but got string', 3)
+  v9.CheckDefFailure(lines, 'E1012: Type mismatch; expected list<any> but got string', 3)
 
   lines =<< trim END
     g:values = [false, 0]
@@ -445,7 +445,7 @@
     var y: string
     [x, y] = g:values
   END
-  CheckDefExecAndScriptFailure(lines, 'E1163: Variable 2: type mismatch, expected string but got number')
+  v9.CheckDefExecAndScriptFailure(lines, 'E1163: Variable 2: type mismatch, expected string but got number')
 
   lines =<< trim END
     var x: number
@@ -453,7 +453,7 @@
     var z: string
     [x, y, z] = [1, 2, 3]
   END
-  CheckDefAndScriptFailure(lines, 'E1163: Variable 3: type mismatch, expected string but got number')
+  v9.CheckDefAndScriptFailure(lines, 'E1163: Variable 3: type mismatch, expected string but got number')
 
   lines =<< trim END
     var x: number
@@ -461,7 +461,7 @@
     var z: string
     [x, y, z] = [1, '2', 3]
   END
-  CheckDefExecAndScriptFailure(lines, 'E1163: Variable 3: type mismatch, expected string but got number')
+  v9.CheckDefExecAndScriptFailure(lines, 'E1163: Variable 3: type mismatch, expected string but got number')
 enddef
 
 def Test_assign_linebreak()
@@ -476,7 +476,7 @@
   assert_equal(12, nr)
   assert_equal(34, n2)
 
-  CheckDefFailure(["var x = #"], 'E1097:', 3)
+  v9.CheckDefFailure(["var x = #"], 'E1097:', 3)
 
   var lines =<< trim END
       var x: list<string> = ['a']
@@ -484,7 +484,7 @@
           ->copy()
           ->copy()
   END
-  CheckDefFailure(lines, 'E1012:', 2)
+  v9.CheckDefFailure(lines, 'E1012:', 2)
 
   lines =<< trim END
       var x: any
@@ -494,7 +494,7 @@
           + 4
           + 5
   END
-  CheckDefExecAndScriptFailure(lines, ['E1148:', 'E1203:'], 2)
+  v9.CheckDefExecAndScriptFailure(lines, ['E1148:', 'E1203:'], 2)
 enddef
 
 def Test_assign_index()
@@ -519,7 +519,7 @@
       l3[0] = []
       l3[0][0] = []
   END
-  CheckDefFailure(lines, 'E1012: Type mismatch; expected number but got list<unknown>', 3)
+  v9.CheckDefFailure(lines, 'E1012: Type mismatch; expected number but got list<unknown>', 3)
 
   # dict of dict
   var d1: dict<number>
@@ -548,19 +548,19 @@
       d3.one = {}
       d3.one.two = {}
   END
-  CheckDefFailure(lines, 'E1012: Type mismatch; expected number but got dict<unknown>', 3)
+  v9.CheckDefFailure(lines, 'E1012: Type mismatch; expected number but got dict<unknown>', 3)
 
   lines =<< trim END
     var lines: list<string>
     lines['a'] = 'asdf'
   END
-  CheckDefFailure(lines, 'E1012:', 2)
+  v9.CheckDefFailure(lines, 'E1012:', 2)
 
   lines =<< trim END
     var lines: string
     lines[9] = 'asdf'
   END
-  CheckDefFailure(lines, 'E1141:', 2)
+  v9.CheckDefFailure(lines, 'E1141:', 2)
 
   # list of dict
   var ld: list<dict<number>>
@@ -572,7 +572,7 @@
       var ld: list<dict<number>>
       ld[0] = []
   END
-  CheckDefFailure(lines, 'E1012: Type mismatch; expected dict<number> but got list<unknown>', 2)
+  v9.CheckDefFailure(lines, 'E1012: Type mismatch; expected dict<number> but got list<unknown>', 2)
 
   # dict of list
   var dl: dict<list<number>>
@@ -584,7 +584,7 @@
       var dl: dict<list<number>>
       dl.one = {}
   END
-  CheckDefFailure(lines, 'E1012: Type mismatch; expected list<number> but got dict<unknown>', 2)
+  v9.CheckDefFailure(lines, 'E1012: Type mismatch; expected list<number> but got dict<unknown>', 2)
 enddef
 
 def Test_init_in_for_loop()
@@ -597,7 +597,7 @@
       endfor
       assert_equal([0, 0], l)
   END
-  CheckDefAndScriptSuccess(lines)
+  v9.CheckDefAndScriptSuccess(lines)
 
   lines =<< trim END
       var l: list<number> = []
@@ -608,7 +608,7 @@
       endfor
       assert_equal([0, 0], l)
   END
-  CheckDefAndScriptSuccess(lines)
+  v9.CheckDefAndScriptSuccess(lines)
 
   lines =<< trim END
       var l: list<number> = []
@@ -619,7 +619,7 @@
       endfor
       assert_equal([3, 3], l)
   END
-  CheckDefAndScriptSuccess(lines)
+  v9.CheckDefAndScriptSuccess(lines)
 enddef
 
 def Test_extend_list()
@@ -631,14 +631,14 @@
       assert_equal([123], l1)
       assert_true(l1 is l2)
   END
-  CheckDefAndScriptSuccess(lines)
+  v9.CheckDefAndScriptSuccess(lines)
 
   lines =<< trim END
       var list: list<string>
       extend(list, ['x'])
       assert_equal(['x'], list)
   END
-  CheckDefAndScriptSuccess(lines)
+  v9.CheckDefAndScriptSuccess(lines)
 
   # appending to NULL list from a function
   lines =<< trim END
@@ -650,7 +650,7 @@
       Func()
       assert_equal(['a', 'b'], list)
   END
-  CheckScriptSuccess(lines)
+  v9.CheckScriptSuccess(lines)
   lines =<< trim END
       vim9script
       var list: list<string>
@@ -660,7 +660,7 @@
       Func()
       assert_equal(['x', 'b'], list)
   END
-  CheckScriptSuccess(lines)
+  v9.CheckScriptSuccess(lines)
 
   lines =<< trim END
       vim9script
@@ -668,13 +668,13 @@
       extend(l, ['x'])
       assert_equal(['x'], l)
   END
-  CheckScriptSuccess(lines)
+  v9.CheckScriptSuccess(lines)
 
   lines =<< trim END
       vim9script
       extend(test_null_list(), ['x'])
   END
-  CheckScriptFailure(lines, 'E1134:', 2)
+  v9.CheckScriptFailure(lines, 'E1134:', 2)
 
   # using global var has no declared type
   g:myList = []
@@ -690,7 +690,7 @@
       g:myList->extend([1])
       g:myList->extend(['x'])
   END
-  CheckDefExecAndScriptFailure(lines, 'E1013: Argument 2: type mismatch, expected list<number> but got list<string>', 4)
+  v9.CheckDefExecAndScriptFailure(lines, 'E1013: Argument 2: type mismatch, expected list<number> but got list<string>', 4)
   unlet g:myList
 enddef
 
@@ -705,7 +705,7 @@
       d2['one'] = 1
       assert_equal({one: 1}, d2)
   END
-  CheckScriptSuccess(lines)
+  v9.CheckScriptSuccess(lines)
 
   lines =<< trim END
       vim9script
@@ -713,13 +713,13 @@
       extend(d, {a: 'x'})
       assert_equal({a: 'x'}, d)
   END
-  CheckScriptSuccess(lines)
+  v9.CheckScriptSuccess(lines)
 
   lines =<< trim END
       vim9script
       extend(test_null_dict(), {a: 'x'})
   END
-  CheckScriptFailure(lines, 'E1133:', 2)
+  v9.CheckScriptFailure(lines, 'E1133:', 2)
 enddef
 
 def Test_single_letter_vars()
@@ -805,7 +805,7 @@
   list3 += ['end']
   assert_equal(['sdf', 'asdf', 'end'], list3)
 
-  CheckDefExecFailure(['var ll = [1, 2, 3]', 'll[-4] = 6'], 'E684:')
+  v9.CheckDefExecFailure(['var ll = [1, 2, 3]', 'll[-4] = 6'], 'E684:')
 
   # type becomes list<any>
   var somelist = rand() > 0 ? [1, 2, 3] : ['a', 'b', 'c']
@@ -818,7 +818,7 @@
     var d = {dd: test_null_list()}
     d.dd[0] = 0
   END
-  CheckDefExecFailure(lines, 'E1147:', 2)
+  v9.CheckDefExecFailure(lines, 'E1147:', 2)
 
   lines =<< trim END
       def OneArg(x: bool)
@@ -827,7 +827,7 @@
       enddef
       var fl: list<func(bool, bool, bool)> = [OneArg, TwoArgs]
   END
-  CheckDefExecAndScriptFailure(lines, 'E1012:', 5)
+  v9.CheckDefExecAndScriptFailure(lines, 'E1012:', 5)
 enddef
 
 def Test_list_declaration()
@@ -840,21 +840,21 @@
   var lines =<< trim END
       var [v1, v2] = [1]
   END
-  CheckDefExecAndScriptFailure(lines, ['E1093: Expected 2 items but got 1', 'E688:'])
+  v9.CheckDefExecAndScriptFailure(lines, ['E1093: Expected 2 items but got 1', 'E688:'])
   lines =<< trim END
       var testlist = [1]
       var [v1, v2] = testlist
   END
-  CheckDefExecAndScriptFailure(lines, ['E1093: Expected 2 items but got 1', 'E688:'])
+  v9.CheckDefExecAndScriptFailure(lines, ['E1093: Expected 2 items but got 1', 'E688:'])
   lines =<< trim END
       var [v1, v2] = [1, 2, 3]
   END
-  CheckDefExecAndScriptFailure(lines, ['E1093: Expected 2 items but got 3', 'E687:'])
+  v9.CheckDefExecAndScriptFailure(lines, ['E1093: Expected 2 items but got 3', 'E687:'])
   lines =<< trim END
       var testlist = [1, 2, 3]
       var [v1, v2] = testlist
   END
-  CheckDefExecAndScriptFailure(lines, ['E1093: Expected 2 items but got 3', 'E687:'])
+  v9.CheckDefExecAndScriptFailure(lines, ['E1093: Expected 2 items but got 3', 'E687:'])
 
   var [vnr, vstr] = [123, 'text']
   vnr += 3
@@ -876,12 +876,12 @@
   lines =<< trim END
       var [vnr2: number, vstr2: number] = [123, 'text']
   END
-  CheckDefExecAndScriptFailure(lines, ['E1163: Variable 2: type mismatch, expected number but got string', 'E1012: Type mismatch; expected number but got string'])
+  v9.CheckDefExecAndScriptFailure(lines, ['E1163: Variable 2: type mismatch, expected number but got string', 'E1012: Type mismatch; expected number but got string'])
   lines =<< trim END
       var testlist = [234, 'text']
       var [vnr2: number, vstr2: number] = testlist
   END
-  CheckDefExecAndScriptFailure(lines, ['E1163: Variable 2: type mismatch, expected number but got string', 'E1012: Type mismatch; expected number but got string'])
+  v9.CheckDefExecAndScriptFailure(lines, ['E1163: Variable 2: type mismatch, expected number but got string', 'E1012: Type mismatch; expected number but got string'])
 enddef
 
 def PartFuncBool(b: bool): string
@@ -893,7 +893,7 @@
       var Partial: func(): string = function(PartFuncBool, [true])
       assert_equal('done', Partial())
   END
-  CheckDefAndScriptSuccess(lines)
+  v9.CheckDefAndScriptSuccess(lines)
 
   lines =<< trim END
       vim9script
@@ -903,7 +903,7 @@
       assert_equal('func()', typename(Ref))
       Ref()
   END
-  CheckScriptSuccess(lines)
+  v9.CheckScriptSuccess(lines)
 
   lines =<< trim END
       vim9script
@@ -921,7 +921,7 @@
       assert_equal(0, nres)
       assert_equal('x', sres)
   END
-  CheckScriptSuccess(lines)
+  v9.CheckScriptSuccess(lines)
 
   lines =<< trim END
       vim9script
@@ -933,7 +933,7 @@
       var Ref = function(Func, [n])
       Ref(0)
   END
-  CheckScriptFailure(lines, 'E1013: Argument 2: type mismatch, expected string but got number')
+  v9.CheckScriptFailure(lines, 'E1013: Argument 2: type mismatch, expected string but got number')
 enddef
 
 def Test_assignment_list_any_index()
@@ -954,7 +954,7 @@
     [v1, v2, v3] = [1, 2, 3]
     assert_equal([1, 2, 3], [v1, v2, v3])
   END
-  CheckScriptSuccess(lines)
+  v9.CheckScriptSuccess(lines)
 enddef
 
 def Test_assignment_dict()
@@ -981,7 +981,7 @@
     dd.two = 2
     assert_equal({two: 2}, dd)
   END
-  CheckDefAndScriptSuccess(lines)
+  v9.CheckDefAndScriptSuccess(lines)
 
   lines =<< trim END
     var d = {dd: {}}
@@ -990,19 +990,19 @@
     d.dd.y = 4
     assert_equal({dd: {0: 2, x: 3, y: 4}}, d)
   END
-  CheckDefAndScriptSuccess(lines)
+  v9.CheckDefAndScriptSuccess(lines)
 
   lines =<< trim END
     var dd = {one: 1}
     dd.one) = 2
   END
-  CheckDefFailure(lines, 'E488:', 2)
+  v9.CheckDefFailure(lines, 'E488:', 2)
 
   lines =<< trim END
     var dd = {one: 1}
     var dd.one = 2
   END
-  CheckDefAndScriptFailure(lines, 'E1017:', 2)
+  v9.CheckDefAndScriptFailure(lines, 'E1017:', 2)
 
   # empty key can be used
   var dd = {}
@@ -1030,7 +1030,7 @@
       g:myDict->extend({a: 1})
       g:myDict->extend({b: 'x'})
   END
-  CheckDefExecAndScriptFailure(lines, 'E1013: Argument 2: type mismatch, expected dict<number> but got dict<string>', 4)
+  v9.CheckDefExecAndScriptFailure(lines, 'E1013: Argument 2: type mismatch, expected dict<number> but got dict<string>', 4)
   unlet g:myDict
 
   # assignment to script-local dict
@@ -1043,7 +1043,7 @@
     enddef
     assert_equal({a: 43}, FillDict())
   END
-  CheckScriptSuccess(lines)
+  v9.CheckScriptSuccess(lines)
 
   lines =<< trim END
     vim9script
@@ -1055,7 +1055,7 @@
     FillDict()
     assert_equal({a: 43}, test)
   END
-  CheckScriptSuccess(lines)
+  v9.CheckScriptSuccess(lines)
 
   # assignment to global dict
   lines =<< trim END
@@ -1067,7 +1067,7 @@
     enddef
     assert_equal({a: 43}, FillDict())
   END
-  CheckScriptSuccess(lines)
+  v9.CheckScriptSuccess(lines)
 
   # assignment to buffer dict
   lines =<< trim END
@@ -1079,25 +1079,25 @@
     enddef
     assert_equal({a: 43}, FillDict())
   END
-  CheckScriptSuccess(lines)
+  v9.CheckScriptSuccess(lines)
 
   lines =<< trim END
     var d = {dd: test_null_dict()}
     d.dd[0] = 0
   END
-  CheckDefExecFailure(lines, 'E1103:', 2)
+  v9.CheckDefExecFailure(lines, 'E1103:', 2)
 
   lines =<< trim END
     var d = {dd: 'string'}
     d.dd[0] = 0
   END
-  CheckDefExecFailure(lines, 'E1148:', 2)
+  v9.CheckDefExecFailure(lines, 'E1148:', 2)
 
   lines =<< trim END
     var n: any
     n.key = 5
   END
-  CheckDefExecAndScriptFailure(lines, ['E1148:', 'E1203: Dot can only be used on a dictionary: n.key = 5'], 2)
+  v9.CheckDefExecAndScriptFailure(lines, ['E1148:', 'E1203: Dot can only be used on a dictionary: n.key = 5'], 2)
 enddef
 
 def Test_assignment_local()
@@ -1135,7 +1135,7 @@
     enddef
     call Test_assignment_local_internal()
   END
-  CheckScriptSuccess(script_lines)
+  v9.CheckScriptSuccess(script_lines)
 enddef
 
 def Test_assignment_default()
@@ -1231,7 +1231,7 @@
       assert_equal('error', v:errmsg)
       unlet g:globalvar
   END
-  CheckDefAndScriptSuccess(lines)
+  v9.CheckDefAndScriptSuccess(lines)
 
   [g:globalvar, s:scriptvar, b:bufvar] = ['global', 'script', 'buf']
   assert_equal('global', g:globalvar)
@@ -1246,7 +1246,7 @@
       assert_equal('script', s:scriptvar)
       assert_equal('win', w:winvar)
   END
-  CheckScriptSuccess(lines)
+  v9.CheckScriptSuccess(lines)
 enddef
 
 def Test_assignment_vim9script()
@@ -1297,7 +1297,7 @@
     to_var = 3
     assert_equal(3, to_var)
   END
-  CheckScriptSuccess(lines)
+  v9.CheckScriptSuccess(lines)
 
   lines =<< trim END
       vim9script
@@ -1307,7 +1307,7 @@
       enddef
       defcompile
   END
-  CheckScriptFailure(lines, 'E1012: Type mismatch; expected number but got string')
+  v9.CheckScriptFailure(lines, 'E1012: Type mismatch; expected number but got string')
 enddef
 
 def Mess(): string
@@ -1316,93 +1316,93 @@
 enddef
 
 def Test_assignment_failure()
-  CheckDefFailure(['var name=234'], 'E1004:')
-  CheckDefFailure(['var name =234'], 'E1004:')
-  CheckDefFailure(['var name= 234'], 'E1004:')
+  v9.CheckDefFailure(['var name=234'], 'E1004:')
+  v9.CheckDefFailure(['var name =234'], 'E1004:')
+  v9.CheckDefFailure(['var name= 234'], 'E1004:')
 
-  CheckScriptFailure(['vim9script', 'var name=234'], 'E1004:')
-  CheckScriptFailure(['vim9script', 'var name=234'], "before and after '='")
-  CheckScriptFailure(['vim9script', 'var name =234'], 'E1004:')
-  CheckScriptFailure(['vim9script', 'var name= 234'], 'E1004:')
-  CheckScriptFailure(['vim9script', 'var name = 234', 'name+=234'], 'E1004:')
-  CheckScriptFailure(['vim9script', 'var name = 234', 'name+=234'], "before and after '+='")
-  CheckScriptFailure(['vim9script', 'var name = "x"', 'name..="y"'], 'E1004:')
-  CheckScriptFailure(['vim9script', 'var name = "x"', 'name..="y"'], "before and after '..='")
+  v9.CheckScriptFailure(['vim9script', 'var name=234'], 'E1004:')
+  v9.CheckScriptFailure(['vim9script', 'var name=234'], "before and after '='")
+  v9.CheckScriptFailure(['vim9script', 'var name =234'], 'E1004:')
+  v9.CheckScriptFailure(['vim9script', 'var name= 234'], 'E1004:')
+  v9.CheckScriptFailure(['vim9script', 'var name = 234', 'name+=234'], 'E1004:')
+  v9.CheckScriptFailure(['vim9script', 'var name = 234', 'name+=234'], "before and after '+='")
+  v9.CheckScriptFailure(['vim9script', 'var name = "x"', 'name..="y"'], 'E1004:')
+  v9.CheckScriptFailure(['vim9script', 'var name = "x"', 'name..="y"'], "before and after '..='")
 
-  CheckDefFailure(['var true = 1'], 'E1034:')
-  CheckDefFailure(['var false = 1'], 'E1034:')
-  CheckDefFailure(['var null = 1'], 'E1034:')
-  CheckDefFailure(['var this = 1'], 'E1034:')
+  v9.CheckDefFailure(['var true = 1'], 'E1034:')
+  v9.CheckDefFailure(['var false = 1'], 'E1034:')
+  v9.CheckDefFailure(['var null = 1'], 'E1034:')
+  v9.CheckDefFailure(['var this = 1'], 'E1034:')
 
-  CheckDefFailure(['[a; b; c] = g:list'], 'E452:')
-  CheckDefExecFailure(['var a: number',
+  v9.CheckDefFailure(['[a; b; c] = g:list'], 'E452:')
+  v9.CheckDefExecFailure(['var a: number',
                        '[a] = test_null_list()'], 'E1093:')
-  CheckDefExecFailure(['var a: number',
+  v9.CheckDefExecFailure(['var a: number',
                        '[a] = []'], 'E1093:')
-  CheckDefExecFailure(['var x: number',
+  v9.CheckDefExecFailure(['var x: number',
                        'var y: number',
                        '[x, y] = [1]'], 'E1093:')
-  CheckDefExecFailure(['var x: string',
+  v9.CheckDefExecFailure(['var x: string',
                        'var y: string',
                        '[x, y] = ["x"]'], 'E1093:')
-  CheckDefExecFailure(['var x: number',
+  v9.CheckDefExecFailure(['var x: number',
                        'var y: number',
                        'var z: list<number>',
                        '[x, y; z] = [1]'], 'E1093:')
 
-  CheckDefFailure(['var somevar'], "E1022:")
-  CheckDefFailure(['var &tabstop = 4'], 'E1052:')
-  CheckDefFailure(['&g:option = 5'], 'E113:')
-  CheckScriptFailure(['vim9script', 'var &tabstop = 4'], 'E1052:')
+  v9.CheckDefFailure(['var somevar'], "E1022:")
+  v9.CheckDefFailure(['var &tabstop = 4'], 'E1052:')
+  v9.CheckDefFailure(['&g:option = 5'], 'E113:')
+  v9.CheckScriptFailure(['vim9script', 'var &tabstop = 4'], 'E1052:')
 
-  CheckDefFailure(['var $VAR = 5'], 'E1016: Cannot declare an environment variable:')
-  CheckScriptFailure(['vim9script', 'var $ENV = "xxx"'], 'E1016:')
+  v9.CheckDefFailure(['var $VAR = 5'], 'E1016: Cannot declare an environment variable:')
+  v9.CheckScriptFailure(['vim9script', 'var $ENV = "xxx"'], 'E1016:')
 
   if has('dnd')
-    CheckDefFailure(['var @~ = 5'], 'E1066:')
+    v9.CheckDefFailure(['var @~ = 5'], 'E1066:')
   else
-    CheckDefFailure(['var @~ = 5'], 'E354:')
-    CheckDefFailure(['@~ = 5'], 'E354:')
+    v9.CheckDefFailure(['var @~ = 5'], 'E354:')
+    v9.CheckDefFailure(['@~ = 5'], 'E354:')
   endif
-  CheckDefFailure(['var @a = 5'], 'E1066:')
-  CheckDefFailure(['var @/ = "x"'], 'E1066:')
-  CheckScriptFailure(['vim9script', 'var @a = "abc"'], 'E1066:')
+  v9.CheckDefFailure(['var @a = 5'], 'E1066:')
+  v9.CheckDefFailure(['var @/ = "x"'], 'E1066:')
+  v9.CheckScriptFailure(['vim9script', 'var @a = "abc"'], 'E1066:')
 
-  CheckDefFailure(['var g:var = 5'], 'E1016: Cannot declare a global variable:')
-  CheckDefFailure(['var w:var = 5'], 'E1016: Cannot declare a window variable:')
-  CheckDefFailure(['var b:var = 5'], 'E1016: Cannot declare a buffer variable:')
-  CheckDefFailure(['var t:var = 5'], 'E1016: Cannot declare a tab variable:')
+  v9.CheckDefFailure(['var g:var = 5'], 'E1016: Cannot declare a global variable:')
+  v9.CheckDefFailure(['var w:var = 5'], 'E1016: Cannot declare a window variable:')
+  v9.CheckDefFailure(['var b:var = 5'], 'E1016: Cannot declare a buffer variable:')
+  v9.CheckDefFailure(['var t:var = 5'], 'E1016: Cannot declare a tab variable:')
 
-  CheckDefFailure(['var anr = 4', 'anr ..= "text"'], 'E1019:')
-  CheckDefFailure(['var xnr += 4'], 'E1020:', 1)
-  CheckScriptFailure(['vim9script', 'var xnr += 4'], 'E1020:')
-  CheckDefFailure(["var xnr = xnr + 1"], 'E1001:', 1)
-  CheckScriptFailure(['vim9script', 'var xnr = xnr + 4'], 'E121:')
+  v9.CheckDefFailure(['var anr = 4', 'anr ..= "text"'], 'E1019:')
+  v9.CheckDefFailure(['var xnr += 4'], 'E1020:', 1)
+  v9.CheckScriptFailure(['vim9script', 'var xnr += 4'], 'E1020:')
+  v9.CheckDefFailure(["var xnr = xnr + 1"], 'E1001:', 1)
+  v9.CheckScriptFailure(['vim9script', 'var xnr = xnr + 4'], 'E121:')
 
-  CheckScriptFailure(['vim9script', 'def Func()', 'var dummy = s:notfound', 'enddef', 'defcompile'], 'E1108:')
+  v9.CheckScriptFailure(['vim9script', 'def Func()', 'var dummy = s:notfound', 'enddef', 'defcompile'], 'E1108:')
 
-  CheckDefFailure(['var name: list<string> = [123]'], 'expected list<string> but got list<number>')
-  CheckDefFailure(['var name: list<number> = ["xx"]'], 'expected list<number> but got list<string>')
+  v9.CheckDefFailure(['var name: list<string> = [123]'], 'expected list<string> but got list<number>')
+  v9.CheckDefFailure(['var name: list<number> = ["xx"]'], 'expected list<number> but got list<string>')
 
-  CheckDefFailure(['var name: dict<string> = {key: 123}'], 'expected dict<string> but got dict<number>')
-  CheckDefFailure(['var name: dict<number> = {key: "xx"}'], 'expected dict<number> but got dict<string>')
+  v9.CheckDefFailure(['var name: dict<string> = {key: 123}'], 'expected dict<string> but got dict<number>')
+  v9.CheckDefFailure(['var name: dict<number> = {key: "xx"}'], 'expected dict<number> but got dict<string>')
 
-  CheckDefFailure(['var name = feedkeys("0")'], 'E1031:')
-  CheckDefFailure(['var name: number = feedkeys("0")'], 'expected number but got void')
+  v9.CheckDefFailure(['var name = feedkeys("0")'], 'E1031:')
+  v9.CheckDefFailure(['var name: number = feedkeys("0")'], 'expected number but got void')
 
-  CheckDefFailure(['var name: dict <number>'], 'E1068:')
-  CheckDefFailure(['var name: dict<number'], 'E1009:')
+  v9.CheckDefFailure(['var name: dict <number>'], 'E1068:')
+  v9.CheckDefFailure(['var name: dict<number'], 'E1009:')
 
   assert_fails('s/^/\=Mess()/n', 'E794:')
-  CheckDefFailure(['var name: dict<number'], 'E1009:')
+  v9.CheckDefFailure(['var name: dict<number'], 'E1009:')
 
-  CheckDefFailure(['w:foo: number = 10'],
+  v9.CheckDefFailure(['w:foo: number = 10'],
                   'E488: Trailing characters: : number = 1')
-  CheckDefFailure(['t:foo: bool = true'],
+  v9.CheckDefFailure(['t:foo: bool = true'],
                   'E488: Trailing characters: : bool = true')
-  CheckDefFailure(['b:foo: string = "x"'],
+  v9.CheckDefFailure(['b:foo: string = "x"'],
                   'E488: Trailing characters: : string = "x"')
-  CheckDefFailure(['g:foo: number = 123'],
+  v9.CheckDefFailure(['g:foo: number = 123'],
                   'E488: Trailing characters: : number = 123')
 enddef
 
@@ -1430,10 +1430,10 @@
       ul[2] = 3
       assert_equal([1, 2, 3], ul)
   END
-  CheckDefAndScriptSuccess(lines)
+  v9.CheckDefAndScriptSuccess(lines)
 
-  CheckDefFailure(["var l: list<number> = ['', true]"], 'E1012: Type mismatch; expected list<number> but got list<any>', 1)
-  CheckDefFailure(["var l: list<list<number>> = [['', true]]"], 'E1012: Type mismatch; expected list<list<number>> but got list<list<any>>', 1)
+  v9.CheckDefFailure(["var l: list<number> = ['', true]"], 'E1012: Type mismatch; expected list<number> but got list<any>', 1)
+  v9.CheckDefFailure(["var l: list<list<number>> = [['', true]]"], 'E1012: Type mismatch; expected list<list<number>> but got list<list<any>>', 1)
 enddef
 
 def Test_assign_dict()
@@ -1457,10 +1457,10 @@
       unlet d.somekey
       assert_equal({key: 'value', '123': 'qwerty'}, d)
   END
-  CheckDefAndScriptSuccess(lines)
+  v9.CheckDefAndScriptSuccess(lines)
 
-  CheckDefFailure(["var d: dict<number> = {a: '', b: true}"], 'E1012: Type mismatch; expected dict<number> but got dict<any>', 1)
-  CheckDefFailure(["var d: dict<dict<number>> = {x: {a: '', b: true}}"], 'E1012: Type mismatch; expected dict<dict<number>> but got dict<dict<any>>', 1)
+  v9.CheckDefFailure(["var d: dict<number> = {a: '', b: true}"], 'E1012: Type mismatch; expected dict<number> but got dict<any>', 1)
+  v9.CheckDefFailure(["var d: dict<dict<number>> = {x: {a: '', b: true}}"], 'E1012: Type mismatch; expected dict<dict<number>> but got dict<dict<any>>', 1)
 enddef
 
 def Test_assign_dict_unknown_type()
@@ -1474,7 +1474,7 @@
       enddef
       Func()
   END
-  CheckScriptSuccess(lines)
+  v9.CheckScriptSuccess(lines)
 
   lines =<< trim END
       vim9script
@@ -1486,7 +1486,7 @@
       enddef
       Func()
   END
-  CheckScriptSuccess(lines)
+  v9.CheckScriptSuccess(lines)
 enddef
 
 def Test_assign_dict_with_op()
@@ -1532,7 +1532,7 @@
     dab.a[0] ..= 'c'
     assert_equal({a: ['bc']}, dab)
   END
-  CheckDefAndScriptSuccess(lines)
+  v9.CheckDefAndScriptSuccess(lines)
 enddef
 
 def Test_assign_list_with_op()
@@ -1557,7 +1557,7 @@
     ln[0] %= 3
     assert_equal(2, ln[0])
   END
-  CheckDefAndScriptSuccess(lines)
+  v9.CheckDefAndScriptSuccess(lines)
 enddef
 
 def Test_assign_with_op_fails()
@@ -1565,20 +1565,20 @@
       var s = 'abc'
       s[1] += 'x'
   END
-  CheckDefAndScriptFailure(lines, ['E1141:', 'E689:'], 2)
+  v9.CheckDefAndScriptFailure(lines, ['E1141:', 'E689:'], 2)
 
   lines =<< trim END
       var s = 'abc'
       s[1] ..= 'x'
   END
-  CheckDefAndScriptFailure(lines, ['E1141:', 'E689:'], 2)
+  v9.CheckDefAndScriptFailure(lines, ['E1141:', 'E689:'], 2)
 
   lines =<< trim END
       var dd: dict<dict<list<any>>>
       dd.a = {}
       dd.a.b += [1]
   END
-  CheckDefExecAndScriptFailure(lines, 'E716:', 3)
+  v9.CheckDefExecAndScriptFailure(lines, 'E716:', 3)
 enddef
 
 def Test_assign_lambda()
@@ -1594,18 +1594,18 @@
       var FuncRef_Number: func(): number = () => 321
       assert_equal(321, FuncRef_Number())
   END
-  CheckScriptSuccess(lines)
+  v9.CheckScriptSuccess(lines)
 
   lines =<< trim END
       var Ref: func(number)
       Ref = (j) => !j
   END
-  CheckDefAndScriptFailure(lines, 'E1012: Type mismatch; expected func(number) but got func(any): bool')
+  v9.CheckDefAndScriptFailure(lines, 'E1012: Type mismatch; expected func(number) but got func(any): bool')
 
   lines =<< trim END
       echo filter([1, 2, 3], (_, v: string) => v + 1) 
   END
-  CheckDefAndScriptFailure(lines, 'E1051:')
+  v9.CheckDefAndScriptFailure(lines, 'E1051:')
 enddef
 
 def Test_heredoc()
@@ -1614,8 +1614,8 @@
   END
   assert_equal(['text'], lines)
 
-  CheckDefFailure(['var lines =<< trim END X', 'END'], 'E488:')
-  CheckDefFailure(['var lines =<< trim END " comment', 'END'], 'E488:')
+  v9.CheckDefFailure(['var lines =<< trim END X', 'END'], 'E488:')
+  v9.CheckDefFailure(['var lines =<< trim END " comment', 'END'], 'E488:')
 
   lines =<< trim [END]
       def Func()
@@ -1625,7 +1625,7 @@
       enddef
       defcompile
   [END]
-  CheckScriptFailure(lines, 'E1145: Missing heredoc end marker: END')
+  v9.CheckScriptFailure(lines, 'E1145: Missing heredoc end marker: END')
   delfunc! g:Func
 
   lines =<< trim [END]
@@ -1642,7 +1642,7 @@
       enddef
       call Func()
   [END]
-  CheckScriptFailure(lines, 'E1145: Missing heredoc end marker: END')
+  v9.CheckScriptFailure(lines, 'E1145: Missing heredoc end marker: END')
   delfunc! g:Func
 
   lines =<< trim END
@@ -1651,7 +1651,7 @@
         bbb
       STOP
   END
-  CheckDefAndScriptFailure(lines, 'E1012: Type mismatch; expected number but got list<string>', 1)
+  v9.CheckDefAndScriptFailure(lines, 'E1012: Type mismatch; expected number but got list<string>', 1)
 enddef
 
 def Test_var_func_call()
@@ -1683,14 +1683,14 @@
     vim9script
     var name = g:unknown
   END
-  CheckScriptFailure(lines, 'E121:')
+  v9.CheckScriptFailure(lines, 'E121:')
 
   lines =<< trim END
     vim9script
     var nr: number = 123
     var name = nr
   END
-  CheckScriptSuccess(lines)
+  v9.CheckScriptSuccess(lines)
 enddef
 
 def Test_var_declaration()
@@ -1757,7 +1757,7 @@
     enddef
     ChangeAdict()
   END
-  CheckScriptSuccess(lines)
+  v9.CheckScriptSuccess(lines)
   assert_equal('', g:var_uninit)
   assert_equal('text', g:var_test)
   assert_equal('prefixed', g:var_prefixed)
@@ -1782,14 +1782,14 @@
     vim9script
     final var: string
   END
-  CheckScriptFailure(lines, 'E1125:')
+  v9.CheckScriptFailure(lines, 'E1125:')
 
   lines =<< trim END
     vim9script
     const g:constvar = 'string'
     g:constvar = 'xx'
   END
-  CheckScriptFailure(lines, 'E741:')
+  v9.CheckScriptFailure(lines, 'E741:')
   unlet g:constvar
 
   lines =<< trim END
@@ -1801,7 +1801,7 @@
     enddef
     SetLocked()
   END
-  CheckScriptFailure(lines, 'E741: Value is locked: name', 1)
+  v9.CheckScriptFailure(lines, 'E741: Value is locked: name', 1)
 
   lines =<< trim END
     let s:legacy = 'one'
@@ -1811,7 +1811,7 @@
     enddef
     call SetLocked()
   END
-  CheckScriptFailure(lines, 'E741: Value is locked: s:legacy', 1)
+  v9.CheckScriptFailure(lines, 'E741: Value is locked: s:legacy', 1)
 
   lines =<< trim END
     vim9script
@@ -1821,7 +1821,7 @@
     SetGlobalConst()
     g:globConst = 234
   END
-  CheckScriptFailure(lines, 'E741: Value is locked: g:globConst', 6)
+  v9.CheckScriptFailure(lines, 'E741: Value is locked: g:globConst', 6)
   unlet g:globConst
 
   lines =<< trim END
@@ -1832,31 +1832,31 @@
     enddef
     defcompile
   END
-  CheckScriptFailure(lines, 'E46:')
+  v9.CheckScriptFailure(lines, 'E46:')
 
   lines =<< trim END
     vim9script
     final w:finalvar = [9]
     w:finalvar = [8]
   END
-  CheckScriptFailure(lines, 'E1122:')
+  v9.CheckScriptFailure(lines, 'E1122:')
   unlet w:finalvar
 
   lines =<< trim END
     vim9script
     const var: string
   END
-  CheckScriptFailure(lines, 'E1021:')
+  v9.CheckScriptFailure(lines, 'E1021:')
 
   lines =<< trim END
     vim9script
     var 9var: string
   END
-  CheckScriptFailure(lines, 'E488:')
+  v9.CheckScriptFailure(lines, 'E488:')
 
-  CheckDefFailure(['var foo.bar = 2'], 'E1087:')
-  CheckDefFailure(['var foo[3] = 2'], 'E1087:')
-  CheckDefFailure(['const foo: number'], 'E1021:')
+  v9.CheckDefFailure(['var foo.bar = 2'], 'E1087:')
+  v9.CheckDefFailure(['var foo[3] = 2'], 'E1087:')
+  v9.CheckDefFailure(['const foo: number'], 'E1021:')
 enddef
 
 def Test_script_local_in_legacy()
@@ -1870,7 +1870,7 @@
     call SetLater()
     call assert_equal('two', s:legvar)
   END
-  CheckScriptSuccess(lines)
+  v9.CheckScriptSuccess(lines)
 
   # OK to leave out s: prefix when script-local already defined
   lines =<< trim END
@@ -1881,7 +1881,7 @@
     call SetNoPrefix()
     call assert_equal('two', s:legvar)
   END
-  CheckScriptSuccess(lines)
+  v9.CheckScriptSuccess(lines)
 
   # Not OK to leave out s: prefix when script-local defined later
   lines =<< trim END
@@ -1891,14 +1891,14 @@
     defcompile
     let s:legvar = 'one'
   END
-  CheckScriptFailure(lines, 'E476:', 1)
+  v9.CheckScriptFailure(lines, 'E476:', 1)
 
   edit! Xfile
   lines =<< trim END
       var edit: bool
       legacy edit
   END
-  CheckDefAndScriptSuccess(lines)
+  v9.CheckDefAndScriptSuccess(lines)
 enddef
 
 def Test_var_type_check()
@@ -1907,35 +1907,35 @@
     var name: string
     name = 1234
   END
-  CheckScriptFailure(lines, 'E1012:')
+  v9.CheckScriptFailure(lines, 'E1012:')
 
   lines =<< trim END
     vim9script
     var name:string
   END
-  CheckScriptFailure(lines, 'E1069:')
+  v9.CheckScriptFailure(lines, 'E1069:')
 
-  CheckDefAndScriptFailure(['var n:number = 42'], 'E1069:')
+  v9.CheckDefAndScriptFailure(['var n:number = 42'], 'E1069:')
 
   lines =<< trim END
     vim9script
     var name: asdf
   END
-  CheckScriptFailure(lines, 'E1010:')
+  v9.CheckScriptFailure(lines, 'E1010:')
 
   lines =<< trim END
     vim9script
     var s:l: list<number>
     s:l = []
   END
-  CheckScriptSuccess(lines)
+  v9.CheckScriptSuccess(lines)
 
   lines =<< trim END
     vim9script
     var s:d: dict<number>
     s:d = {}
   END
-  CheckScriptSuccess(lines)
+  v9.CheckScriptSuccess(lines)
 
   lines =<< trim END
     vim9script
@@ -1945,7 +1945,7 @@
     enddef
     defcompile
   END
-  CheckScriptSuccess(lines)
+  v9.CheckScriptSuccess(lines)
 enddef
 
 let g:dict_number = #{one: 1, two: 2}
@@ -1963,11 +1963,11 @@
       var ll: list<number>
       ll = [1, 2, 3]->map('"one"')
   END
-  CheckDefExecFailure(lines, 'E1012: Type mismatch; expected list<number> but got list<string>')
+  v9.CheckDefExecFailure(lines, 'E1012: Type mismatch; expected list<number> but got list<string>')
 enddef
 
 def Test_cannot_use_let()
-  CheckDefAndScriptFailure(['let a = 34'], 'E1126:', 1)
+  v9.CheckDefAndScriptFailure(['let a = 34'], 'E1126:', 1)
 enddef
 
 def Test_unlet()
@@ -1984,7 +1984,7 @@
   assert_false(exists('s:somevar'))
   unlet! s:somevar
 
-  CheckDefExecFailure([
+  v9.CheckDefExecFailure([
     'var dd = 111',
     'unlet dd',
     ], 'E1081:', 2)
@@ -2013,41 +2013,41 @@
   unlet ll[-2 : -1]
   assert_equal([1, 2], ll)
 
-  CheckDefFailure([
+  v9.CheckDefFailure([
     'var ll = [1, 2]',
     'll[1 : 2] = 7',
     ], 'E1012: Type mismatch; expected list<number> but got number', 2)
-  CheckDefFailure([
+  v9.CheckDefFailure([
     'var dd = {a: 1}',
     'unlet dd["a" : "a"]',
     ], 'E1166:', 2)
-  CheckDefExecFailure([
+  v9.CheckDefExecFailure([
     'unlet g:adict[0 : 1]',
     ], 'E1148:', 1)
-  CheckDefFailure([
+  v9.CheckDefFailure([
     'var ll = [1, 2]',
     'unlet ll[0:1]',
     ], 'E1004:', 2)
-  CheckDefFailure([
+  v9.CheckDefFailure([
     'var ll = [1, 2]',
     'unlet ll[0 :1]',
     ], 'E1004:', 2)
-  CheckDefFailure([
+  v9.CheckDefFailure([
     'var ll = [1, 2]',
     'unlet ll[0: 1]',
     ], 'E1004:', 2)
   # command recognized as assignment when skipping, should not give an error
-  CheckScriptSuccess([
+  v9.CheckScriptSuccess([
     'vim9script',
     'for i in []',
     "  put =''",
     'endfor'])
 
-  CheckDefFailure([
+  v9.CheckDefFailure([
     'var ll = [1, 2]',
     'unlet ll["x" : 1]',
     ], 'E1012:', 2)
-  CheckDefFailure([
+  v9.CheckDefFailure([
     'var ll = [1, 2]',
     'unlet ll[0 : "x"]',
     ], 'E1012:', 2)
@@ -2057,27 +2057,27 @@
   unlet dl[0]['b']
   assert_equal([{a: 1}, {c: 3}], dl)
 
-  CheckDefExecFailure([
+  v9.CheckDefExecFailure([
     'var ll = test_null_list()',
     'unlet ll[0]',
     ], 'E684:', 2)
-  CheckDefExecFailure([
+  v9.CheckDefExecFailure([
     'var ll = [1]',
     'unlet ll[2]',
     ], 'E684:', 2)
-  CheckDefExecFailure([
+  v9.CheckDefExecFailure([
     'var ll = [1]',
     'unlet ll[g:astring]',
     ], 'E1012:', 2)
-  CheckDefExecFailure([
+  v9.CheckDefExecFailure([
     'var dd = test_null_dict()',
     'unlet dd["a"]',
     ], 'E716:', 2)
-  CheckDefExecFailure([
+  v9.CheckDefExecFailure([
     'var dd = {a: 1}',
     'unlet dd["b"]',
     ], 'E716:', 2)
-  CheckDefExecFailure([
+  v9.CheckDefExecFailure([
     'var dd = {a: 1}',
     'unlet dd[g:alist]',
     ], 'E1105:', 2)
@@ -2090,17 +2090,17 @@
   unlet g:someDict
   assert_false(exists('g:someDict'))
 
-  CheckScriptFailure([
+  v9.CheckScriptFailure([
    'vim9script',
    'var svar = 123',
    'unlet svar',
    ], 'E1081:')
-  CheckScriptFailure([
+  v9.CheckScriptFailure([
    'vim9script',
    'var svar = 123',
    'unlet s:svar',
    ], 'E1081:')
-  CheckScriptFailure([
+  v9.CheckScriptFailure([
    'vim9script',
    'var svar = 123',
    'def Func()',
@@ -2108,7 +2108,7 @@
    'enddef',
    'defcompile',
    ], 'E1081:')
-  CheckScriptFailure([
+  v9.CheckScriptFailure([
    'vim9script',
    'var svar = 123',
    'func Func()',
@@ -2116,7 +2116,7 @@
    'endfunc',
    'Func()',
    ], 'E1081:')
-  CheckScriptFailure([
+  v9.CheckScriptFailure([
    'vim9script',
    'var svar = 123',
    'def Func()',
@@ -2125,7 +2125,7 @@
    'defcompile',
    ], 'E1081:')
 
-  CheckScriptFailure([
+  v9.CheckScriptFailure([
    'vim9script',
    'def Delcount(dict: dict<any>)',
    '  unlet dict.count',
@@ -2133,7 +2133,7 @@
    'Delcount(v:)',
    ], 'E742:')
 
-  CheckScriptFailure([
+  v9.CheckScriptFailure([
    'vim9script',
    'def DelChangedtick(dict: dict<any>)',
    '  unlet dict.changedtick',
@@ -2150,7 +2150,7 @@
     enddef
     defcompile
   END
-  CheckScriptFailure(lines, 'E1260:', 1)
+  v9.CheckScriptFailure(lines, 'E1260:', 1)
   delete('XunletExport.vim')
 
   $ENVVAR = 'foobar'
@@ -2165,26 +2165,26 @@
       var x = invalid
       echo x
   END
-  CheckScriptFailureList(lines, ['E121:', 'E121:'])
+  v9.CheckScriptFailureList(lines, ['E121:', 'E121:'])
 
   lines =<< trim END
       vim9script
       var x = 1 / 0
       echo x
   END
-  CheckScriptFailure(lines, 'E1154:')
+  v9.CheckScriptFailure(lines, 'E1154:')
 
   lines =<< trim END
       vim9script
       var x = 1 % 0
       echo x
   END
-  CheckScriptFailure(lines, 'E1154:')
+  v9.CheckScriptFailure(lines, 'E1154:')
 
   lines =<< trim END
       var x: string  'string'
   END
-  CheckDefAndScriptFailure(lines, 'E488:')
+  v9.CheckDefAndScriptFailure(lines, 'E488:')
 enddef
 
 
@@ -2212,7 +2212,7 @@
       assert_equal(1, x)
       assert_equal(2, y)
   END
-  CheckDefAndScriptSuccess(lines)
+  v9.CheckDefAndScriptSuccess(lines)
 enddef
 
 def Test_assign_alt_buf_register()
@@ -2225,7 +2225,7 @@
       @# = b2
       assert_equal(b2, bufnr('#'))
   END
-  CheckDefAndScriptSuccess(lines)
+  v9.CheckDefAndScriptSuccess(lines)
 enddef
 
 def Test_script_funcref_case()
@@ -2233,25 +2233,25 @@
       var Len = (s: string): number => len(s) + 1
       assert_equal(5, Len('asdf'))
   END
-  CheckDefAndScriptSuccess(lines)
+  v9.CheckDefAndScriptSuccess(lines)
 
   lines =<< trim END
       var len = (s: string): number => len(s) + 1
   END
-  CheckDefAndScriptFailure(lines, 'E704:')
+  v9.CheckDefAndScriptFailure(lines, 'E704:')
 
   lines =<< trim END
       vim9script
       var s:Len = (s: string): number => len(s) + 2
       assert_equal(6, Len('asdf'))
   END
-  CheckScriptSuccess(lines)
+  v9.CheckScriptSuccess(lines)
 
   lines =<< trim END
       vim9script
       var s:len = (s: string): number => len(s) + 1
   END
-  CheckScriptFailure(lines, 'E704:')
+  v9.CheckScriptFailure(lines, 'E704:')
 enddef
 
 def Test_script_funcref_runtime_type_check()
@@ -2265,10 +2265,10 @@
       defcompile
   END
   # OK at compile time
-  CheckScriptSuccess(lines)
+  v9.CheckScriptSuccess(lines)
 
   # Type check fails at runtime
-  CheckScriptFailure(lines + ['Test()'], 'E1012: Type mismatch; expected func(string) but got func(number)')
+  v9.CheckScriptFailure(lines + ['Test()'], 'E1012: Type mismatch; expected func(string) but got func(number)')
 enddef
 
 def Test_inc_dec()
@@ -2294,13 +2294,13 @@
       assert_equal(1, g:count)
       unlet g:count
   END
-  CheckDefAndScriptSuccess(lines)
+  v9.CheckDefAndScriptSuccess(lines)
 
   lines =<< trim END
       var nr = 7
       ++ nr
   END
-  CheckDefAndScriptFailure(lines, "E1202: No white space allowed after '++': ++ nr")
+  v9.CheckDefAndScriptFailure(lines, "E1202: No white space allowed after '++': ++ nr")
 enddef
 
 def Test_abort_after_error()
@@ -2325,13 +2325,13 @@
 def Run_Test_declare_command_line()
   # On the command line the type is parsed but not used.
   # To get rid of the script context have to run this in another Vim instance.
-  var buf = RunVimInTerminal('', {'rows': 6})
+  var buf = g:RunVimInTerminal('', {'rows': 6})
   term_sendkeys(buf, ":vim9 var abc: list<list<number>> = [ [1, 2, 3], [4, 5, 6] ]\<CR>")
-  TermWait(buf)
+  g:TermWait(buf)
   term_sendkeys(buf, ":echo abc\<CR>")
-  TermWait(buf)
-  WaitForAssert(() => assert_match('\[\[1, 2, 3\], \[4, 5, 6\]\]', term_getline(buf, 6)))
-  StopVimInTerminal(buf)
+  g:TermWait(buf)
+  g:WaitForAssert(() => assert_match('\[\[1, 2, 3\], \[4, 5, 6\]\]', term_getline(buf, 6)))
+  g:StopVimInTerminal(buf)
 enddef
 
 
diff --git a/src/testdir/test_vim9_builtin.vim b/src/testdir/test_vim9_builtin.vim
index 32467b4..b3c4dd0 100644
--- a/src/testdir/test_vim9_builtin.vim
+++ b/src/testdir/test_vim9_builtin.vim
@@ -1,7 +1,7 @@
 " Test using builtin functions in the Vim9 script language.
 
 source check.vim
-source vim9.vim
+import './vim9.vim' as v9
 
 " Test for passing too many or too few arguments to builtin functions
 func Test_internalfunc_arg_error()
@@ -67,7 +67,7 @@
   assert_equal(0, abs(0))
   assert_equal(2, abs(-2))
   assert_equal(3, abs(3))
-  CheckDefAndScriptFailure(['abs("text")'], ['E1013: Argument 1: type mismatch, expected number but got string', 'E1219: Float or Number required for argument 1'])
+  v9.CheckDefAndScriptFailure(['abs("text")'], ['E1013: Argument 1: type mismatch, expected number but got string', 'E1219: Float or Number required for argument 1'])
   if has('float')
     assert_equal(0, abs(0))
     assert_equal(2.0, abs(-2.0))
@@ -76,8 +76,8 @@
 enddef
 
 def Test_add()
-  CheckDefAndScriptFailure(['add({}, 1)'], ['E1013: Argument 1: type mismatch, expected list<any> but got dict<unknown>', 'E1226: List or Blob required for argument 1'])
-  CheckDefFailure(['add([1], "a")'], 'E1012: Type mismatch; expected number but got string')
+  v9.CheckDefAndScriptFailure(['add({}, 1)'], ['E1013: Argument 1: type mismatch, expected list<any> but got dict<unknown>', 'E1226: List or Blob required for argument 1'])
+  v9.CheckDefFailure(['add([1], "a")'], 'E1012: Type mismatch; expected number but got string')
 
   var lines =<< trim END
     vim9script
@@ -88,7 +88,7 @@
     enddef
     TryChange()
   END
-  CheckScriptFailure(lines, 'E741:')
+  v9.CheckScriptFailure(lines, 'E741:')
 enddef
 
 def Test_add_blob()
@@ -104,18 +104,18 @@
       var b: blob
       add(b, "x")
   END
-  CheckDefFailure(lines, 'E1012:', 2)
+  v9.CheckDefFailure(lines, 'E1012:', 2)
 
   lines =<< trim END
       add(test_null_blob(), 123)
   END
-  CheckDefExecAndScriptFailure(lines, 'E1131:', 1)
+  v9.CheckDefExecAndScriptFailure(lines, 'E1131:', 1)
 
   lines =<< trim END
       var b: blob = test_null_blob()
       add(b, 123)
   END
-  CheckDefExecFailure(lines, 'E1131:', 2)
+  v9.CheckDefExecFailure(lines, 'E1131:', 2)
 
   # Getting variable with NULL blob allocates a new blob at script level
   lines =<< trim END
@@ -123,7 +123,7 @@
       var b: blob = test_null_blob()
       add(b, 123)
   END
-  CheckScriptSuccess(lines)
+  v9.CheckScriptSuccess(lines)
 enddef
 
 def Test_add_list()
@@ -135,18 +135,18 @@
       var l: list<number>
       add(l, "x")
   END
-  CheckDefFailure(lines, 'E1012:', 2)
+  v9.CheckDefFailure(lines, 'E1012:', 2)
 
   lines =<< trim END
       add(test_null_list(), 123)
   END
-  CheckDefExecAndScriptFailure(lines, 'E1130:', 1)
+  v9.CheckDefExecAndScriptFailure(lines, 'E1130:', 1)
 
   lines =<< trim END
       var l: list<number> = test_null_list()
       add(l, 123)
   END
-  CheckDefExecFailure(lines, 'E1130:', 2)
+  v9.CheckDefExecFailure(lines, 'E1130:', 2)
 
   # Getting variable with NULL list allocates a new list at script level
   lines =<< trim END
@@ -154,26 +154,26 @@
       var l: list<number> = test_null_list()
       add(l, 123)
   END
-  CheckScriptSuccess(lines)
+  v9.CheckScriptSuccess(lines)
 
   lines =<< trim END
       vim9script
       var l: list<string> = ['a']
       l->add(123)
   END
-  CheckScriptFailure(lines, 'E1012: Type mismatch; expected string but got number', 3)
+  v9.CheckScriptFailure(lines, 'E1012: Type mismatch; expected string but got number', 3)
 
   lines =<< trim END
       vim9script
       var l: list<string>
       l->add(123)
   END
-  CheckScriptFailure(lines, 'E1012: Type mismatch; expected string but got number', 3)
+  v9.CheckScriptFailure(lines, 'E1012: Type mismatch; expected string but got number', 3)
 enddef
 
 def Test_and()
-  CheckDefAndScriptFailure(['and("x", 0x2)'], ['E1013: Argument 1: type mismatch, expected number but got string', 'E1210: Number required for argument 1'])
-  CheckDefAndScriptFailure(['and(0x1, "x")'], ['E1013: Argument 2: type mismatch, expected number but got string', 'E1210: Number required for argument 2'])
+  v9.CheckDefAndScriptFailure(['and("x", 0x2)'], ['E1013: Argument 1: type mismatch, expected number but got string', 'E1210: Number required for argument 1'])
+  v9.CheckDefAndScriptFailure(['and(0x1, "x")'], ['E1013: Argument 2: type mismatch, expected number but got string', 'E1210: Number required for argument 2'])
 enddef
 
 def Test_append()
@@ -191,12 +191,12 @@
   assert_equal("{'a': 10}", getline(1))
   append(0, function('min'))
   assert_equal("function('min')", getline(1))
-  CheckDefAndScriptFailure(['append([1], "x")'], ['E1013: Argument 1: type mismatch, expected string but got list<number>', 'E1220: String or Number required for argument 1'])
-  CheckDefExecAndScriptFailure(['append("", "x")'], 'E1209: Invalid value for a line number')
-  CheckDefExecAndScriptFailure(['append(".a", "x")'], 'E1209: Invalid value for a line number')
+  v9.CheckDefAndScriptFailure(['append([1], "x")'], ['E1013: Argument 1: type mismatch, expected string but got list<number>', 'E1220: String or Number required for argument 1'])
+  v9.CheckDefExecAndScriptFailure(['append("", "x")'], 'E1209: Invalid value for a line number')
+  v9.CheckDefExecAndScriptFailure(['append(".a", "x")'], 'E1209: Invalid value for a line number')
   # only get one error
   assert_fails('append("''aa", "x")', ['E1209: Invalid value for a line number: "''aa"', 'E1209:'])
-  CheckDefExecAndScriptFailure(['append(-1, "x")'], 'E966: Invalid line number: -1')
+  v9.CheckDefExecAndScriptFailure(['append(-1, "x")'], 'E966: Invalid line number: -1')
   bwipe!
 enddef
 
@@ -212,12 +212,12 @@
   assert_equal(['0', 'one', '1', 'two', '2', ''], getbufline(bnum, 1, '$'))
   appendbufline(bnum, 0, 'zero')
   assert_equal(['zero'], getbufline(bnum, 1))
-  CheckDefAndScriptFailure(['appendbufline([1], 1, "x")'], ['E1013: Argument 1: type mismatch, expected string but got list<number>', 'E1220: String or Number required for argument 1'])
-  CheckDefAndScriptFailure(['appendbufline(1, [1], "x")'], ['E1013: Argument 2: type mismatch, expected string but got list<number>', 'E1220: String or Number required for argument 2'])
-  CheckDefExecAndScriptFailure(['appendbufline(' .. bnum .. ', -1, "x")'], 'E966: Invalid line number: -1')
-  CheckDefExecAndScriptFailure(['appendbufline(' .. bnum .. ', "$a", "x")'], 'E1030: Using a String as a Number: "$a"')
+  v9.CheckDefAndScriptFailure(['appendbufline([1], 1, "x")'], ['E1013: Argument 1: type mismatch, expected string but got list<number>', 'E1220: String or Number required for argument 1'])
+  v9.CheckDefAndScriptFailure(['appendbufline(1, [1], "x")'], ['E1013: Argument 2: type mismatch, expected string but got list<number>', 'E1220: String or Number required for argument 2'])
+  v9.CheckDefExecAndScriptFailure(['appendbufline(' .. bnum .. ', -1, "x")'], 'E966: Invalid line number: -1')
+  v9.CheckDefExecAndScriptFailure(['appendbufline(' .. bnum .. ', "$a", "x")'], 'E1030: Using a String as a Number: "$a"')
   assert_fails('appendbufline(' .. bnum .. ', "$a", "x")', ['E1030: Using a String as a Number: "$a"', 'E1030:'])
-  CheckDefAndScriptFailure(['appendbufline(1, 1, {"a": 10})'], ['E1013: Argument 3: type mismatch, expected string but got dict<number>', 'E1224: String, Number or List required for argument 3'])
+  v9.CheckDefAndScriptFailure(['appendbufline(1, 1, {"a": 10})'], ['E1013: Argument 3: type mismatch, expected string but got dict<number>', 'E1224: String, Number or List required for argument 3'])
   bnum->bufwinid()->win_gotoid()
   appendbufline('', 0, 'numbers')
   getline(1)->assert_equal('numbers')
@@ -225,68 +225,68 @@
 enddef
 
 def Test_argc()
-  CheckDefAndScriptFailure(['argc("x")'], ['E1013: Argument 1: type mismatch, expected number but got string', 'E1210: Number required for argument 1'])
+  v9.CheckDefAndScriptFailure(['argc("x")'], ['E1013: Argument 1: type mismatch, expected number but got string', 'E1210: Number required for argument 1'])
 enddef
 
 def Test_arglistid()
-  CheckDefAndScriptFailure(['arglistid("x")'], ['E1013: Argument 1: type mismatch, expected number but got string', 'E1210: Number required for argument 1'])
-  CheckDefAndScriptFailure(['arglistid(1, "y")'], ['E1013: Argument 2: type mismatch, expected number but got string', 'E1210: Number required for argument 2'])
-  CheckDefAndScriptFailure(['arglistid("x", "y")'], ['E1013: Argument 1: type mismatch, expected number but got string', 'E1210: Number required for argument 1'])
+  v9.CheckDefAndScriptFailure(['arglistid("x")'], ['E1013: Argument 1: type mismatch, expected number but got string', 'E1210: Number required for argument 1'])
+  v9.CheckDefAndScriptFailure(['arglistid(1, "y")'], ['E1013: Argument 2: type mismatch, expected number but got string', 'E1210: Number required for argument 2'])
+  v9.CheckDefAndScriptFailure(['arglistid("x", "y")'], ['E1013: Argument 1: type mismatch, expected number but got string', 'E1210: Number required for argument 1'])
 enddef
 
 def Test_argv()
-  CheckDefAndScriptFailure(['argv("x")'], ['E1013: Argument 1: type mismatch, expected number but got string', 'E1210: Number required for argument 1'])
-  CheckDefAndScriptFailure(['argv(1, "x")'], ['E1013: Argument 2: type mismatch, expected number but got string', 'E1210: Number required for argument 2'])
-  CheckDefAndScriptFailure(['argv("x", "y")'], ['E1013: Argument 1: type mismatch, expected number but got string', 'E1210: Number required for argument 1'])
+  v9.CheckDefAndScriptFailure(['argv("x")'], ['E1013: Argument 1: type mismatch, expected number but got string', 'E1210: Number required for argument 1'])
+  v9.CheckDefAndScriptFailure(['argv(1, "x")'], ['E1013: Argument 2: type mismatch, expected number but got string', 'E1210: Number required for argument 2'])
+  v9.CheckDefAndScriptFailure(['argv("x", "y")'], ['E1013: Argument 1: type mismatch, expected number but got string', 'E1210: Number required for argument 1'])
 enddef
 
 def Test_assert_beeps()
-  CheckDefAndScriptFailure(['assert_beeps(1)'], ['E1013: Argument 1: type mismatch, expected string but got number', 'E1174: String required for argument 1'])
+  v9.CheckDefAndScriptFailure(['assert_beeps(1)'], ['E1013: Argument 1: type mismatch, expected string but got number', 'E1174: String required for argument 1'])
 enddef
 
 def Test_assert_equalfile()
-  CheckDefAndScriptFailure(['assert_equalfile(1, "f2")'], ['E1013: Argument 1: type mismatch, expected string but got number', 'E1174: String required for argument 1'])
-  CheckDefAndScriptFailure(['assert_equalfile("f1", true)'], ['E1013: Argument 2: type mismatch, expected string but got bool', 'E1174: String required for argument 2'])
-  CheckDefAndScriptFailure(['assert_equalfile("f1", "f2", ["a"])'], ['E1013: Argument 3: type mismatch, expected string but got list<string>', 'E1174: String required for argument 3'])
+  v9.CheckDefAndScriptFailure(['assert_equalfile(1, "f2")'], ['E1013: Argument 1: type mismatch, expected string but got number', 'E1174: String required for argument 1'])
+  v9.CheckDefAndScriptFailure(['assert_equalfile("f1", true)'], ['E1013: Argument 2: type mismatch, expected string but got bool', 'E1174: String required for argument 2'])
+  v9.CheckDefAndScriptFailure(['assert_equalfile("f1", "f2", ["a"])'], ['E1013: Argument 3: type mismatch, expected string but got list<string>', 'E1174: String required for argument 3'])
 enddef
 
 def Test_assert_exception()
-  CheckDefAndScriptFailure(['assert_exception({})'], ['E1013: Argument 1: type mismatch, expected string but got dict<unknown>', 'E1174: String required for argument 1'])
-  CheckDefAndScriptFailure(['assert_exception("E1:", v:null)'], ['E1013: Argument 2: type mismatch, expected string but got special', 'E1174: String required for argument 2'])
+  v9.CheckDefAndScriptFailure(['assert_exception({})'], ['E1013: Argument 1: type mismatch, expected string but got dict<unknown>', 'E1174: String required for argument 1'])
+  v9.CheckDefAndScriptFailure(['assert_exception("E1:", v:null)'], ['E1013: Argument 2: type mismatch, expected string but got special', 'E1174: String required for argument 2'])
 enddef
 
 def Test_assert_fails()
-  CheckDefAndScriptFailure(['assert_fails([])'], ['E1013: Argument 1: type mismatch, expected string but got list<unknown>', 'E1220: String or Number required for argument 1'])
-  CheckDefAndScriptFailure(['assert_fails("a", true)'], ['E1013: Argument 2: type mismatch, expected string but got bool', 'E1222: String or List required for argument 2'])
-  CheckDefAndScriptFailure(['assert_fails("a", "b", "c", "d")'], ['E1013: Argument 4: type mismatch, expected number but got string', 'E1210: Number required for argument 4'])
-  CheckDefAndScriptFailure(['assert_fails("a", "b", "c", 4, 5)'], ['E1013: Argument 5: type mismatch, expected string but got number', 'E1174: String required for argument 5'])
+  v9.CheckDefAndScriptFailure(['assert_fails([])'], ['E1013: Argument 1: type mismatch, expected string but got list<unknown>', 'E1220: String or Number required for argument 1'])
+  v9.CheckDefAndScriptFailure(['assert_fails("a", true)'], ['E1013: Argument 2: type mismatch, expected string but got bool', 'E1222: String or List required for argument 2'])
+  v9.CheckDefAndScriptFailure(['assert_fails("a", "b", "c", "d")'], ['E1013: Argument 4: type mismatch, expected number but got string', 'E1210: Number required for argument 4'])
+  v9.CheckDefAndScriptFailure(['assert_fails("a", "b", "c", 4, 5)'], ['E1013: Argument 5: type mismatch, expected string but got number', 'E1174: String required for argument 5'])
 enddef
 
 def Test_assert_inrange()
-  CheckDefAndScriptFailure(['assert_inrange("a", 2, 3)'], ['E1013: Argument 1: type mismatch, expected number but got string', 'E1219: Float or Number required for argument 1'])
-  CheckDefAndScriptFailure(['assert_inrange(1, "b", 3)'], ['E1013: Argument 2: type mismatch, expected number but got string', 'E1219: Float or Number required for argument 2'])
-  CheckDefAndScriptFailure(['assert_inrange(1, 2, "c")'], ['E1013: Argument 3: type mismatch, expected number but got string', 'E1219: Float or Number required for argument 3'])
-  CheckDefAndScriptFailure(['assert_inrange(1, 2, 3, 4)'], ['E1013: Argument 4: type mismatch, expected string but got number', 'E1174: String required for argument 4'])
+  v9.CheckDefAndScriptFailure(['assert_inrange("a", 2, 3)'], ['E1013: Argument 1: type mismatch, expected number but got string', 'E1219: Float or Number required for argument 1'])
+  v9.CheckDefAndScriptFailure(['assert_inrange(1, "b", 3)'], ['E1013: Argument 2: type mismatch, expected number but got string', 'E1219: Float or Number required for argument 2'])
+  v9.CheckDefAndScriptFailure(['assert_inrange(1, 2, "c")'], ['E1013: Argument 3: type mismatch, expected number but got string', 'E1219: Float or Number required for argument 3'])
+  v9.CheckDefAndScriptFailure(['assert_inrange(1, 2, 3, 4)'], ['E1013: Argument 4: type mismatch, expected string but got number', 'E1174: String required for argument 4'])
 enddef
 
 def Test_assert_match()
-  CheckDefAndScriptFailure(['assert_match({}, "b")'], ['E1013: Argument 1: type mismatch, expected string but got dict<unknown>', ''])
-  CheckDefAndScriptFailure(['assert_match("a", 1)'], ['E1013: Argument 2: type mismatch, expected string but got number', ''])
-  CheckDefAndScriptFailure(['assert_match("a", "b", null)'], ['E1013: Argument 3: type mismatch, expected string but got special', ''])
+  v9.CheckDefAndScriptFailure(['assert_match({}, "b")'], ['E1013: Argument 1: type mismatch, expected string but got dict<unknown>', ''])
+  v9.CheckDefAndScriptFailure(['assert_match("a", 1)'], ['E1013: Argument 2: type mismatch, expected string but got number', ''])
+  v9.CheckDefAndScriptFailure(['assert_match("a", "b", null)'], ['E1013: Argument 3: type mismatch, expected string but got special', ''])
 enddef
 
 def Test_assert_nobeep()
-  CheckDefAndScriptFailure(['assert_nobeep(1)'], ['E1013: Argument 1: type mismatch, expected string but got number', 'E1174: String required for argument 1'])
+  v9.CheckDefAndScriptFailure(['assert_nobeep(1)'], ['E1013: Argument 1: type mismatch, expected string but got number', 'E1174: String required for argument 1'])
 enddef
 
 def Test_assert_notmatch()
-  CheckDefAndScriptFailure(['assert_notmatch({}, "b")'], ['E1013: Argument 1: type mismatch, expected string but got dict<unknown>', ''])
-  CheckDefAndScriptFailure(['assert_notmatch("a", 1)'], ['E1013: Argument 2: type mismatch, expected string but got number', ''])
-  CheckDefAndScriptFailure(['assert_notmatch("a", "b", null)'], ['E1013: Argument 3: type mismatch, expected string but got special', ''])
+  v9.CheckDefAndScriptFailure(['assert_notmatch({}, "b")'], ['E1013: Argument 1: type mismatch, expected string but got dict<unknown>', ''])
+  v9.CheckDefAndScriptFailure(['assert_notmatch("a", 1)'], ['E1013: Argument 2: type mismatch, expected string but got number', ''])
+  v9.CheckDefAndScriptFailure(['assert_notmatch("a", "b", null)'], ['E1013: Argument 3: type mismatch, expected string but got special', ''])
 enddef
 
 def Test_assert_report()
-  CheckDefAndScriptFailure(['assert_report([1, 2])'], ['E1013: Argument 1: type mismatch, expected string but got list<number>', 'E1174: String required for argument 1'])
+  v9.CheckDefAndScriptFailure(['assert_report([1, 2])'], ['E1013: Argument 1: type mismatch, expected string but got list<number>', 'E1174: String required for argument 1'])
 enddef
 
 def Test_balloon_show()
@@ -296,8 +296,8 @@
   assert_fails('balloon_show(10)', 'E1222:')
   assert_fails('balloon_show(true)', 'E1222:')
 
-  CheckDefAndScriptFailure(['balloon_show(1.2)'], ['E1013: Argument 1: type mismatch, expected string but got float', 'E1222: String or List required for argument 1'])
-  CheckDefAndScriptFailure(['balloon_show({"a": 10})'], ['E1013: Argument 1: type mismatch, expected string but got dict<number>', 'E1222: String or List required for argument 1'])
+  v9.CheckDefAndScriptFailure(['balloon_show(1.2)'], ['E1013: Argument 1: type mismatch, expected string but got float', 'E1222: String or List required for argument 1'])
+  v9.CheckDefAndScriptFailure(['balloon_show({"a": 10})'], ['E1013: Argument 1: type mismatch, expected string but got dict<number>', 'E1222: String or List required for argument 1'])
 enddef
 
 def Test_balloon_split()
@@ -308,22 +308,22 @@
 enddef
 
 def Test_blob2list()
-  CheckDefAndScriptFailure(['blob2list(10)'], ['E1013: Argument 1: type mismatch, expected blob but got number', 'E1238: Blob required for argument 1'])
+  v9.CheckDefAndScriptFailure(['blob2list(10)'], ['E1013: Argument 1: type mismatch, expected blob but got number', 'E1238: Blob required for argument 1'])
 enddef
 
 def Test_browse()
   CheckFeature browse
 
-  CheckDefAndScriptFailure(['browse(2, "title", "dir", "file")'], ['E1013: Argument 1: type mismatch, expected bool but got number', 'E1212: Bool required for argument 1'])
-  CheckDefAndScriptFailure(['browse(true, 2, "dir", "file")'], ['E1013: Argument 2: type mismatch, expected string but got number', 'E1174: String required for argument 2'])
-  CheckDefAndScriptFailure(['browse(true, "title", 3, "file")'], ['E1013: Argument 3: type mismatch, expected string but got number', 'E1174: String required for argument 3'])
-  CheckDefAndScriptFailure(['browse(true, "title", "dir", 4)'], ['E1013: Argument 4: type mismatch, expected string but got number', 'E1174: String required for argument 4'])
+  v9.CheckDefAndScriptFailure(['browse(2, "title", "dir", "file")'], ['E1013: Argument 1: type mismatch, expected bool but got number', 'E1212: Bool required for argument 1'])
+  v9.CheckDefAndScriptFailure(['browse(true, 2, "dir", "file")'], ['E1013: Argument 2: type mismatch, expected string but got number', 'E1174: String required for argument 2'])
+  v9.CheckDefAndScriptFailure(['browse(true, "title", 3, "file")'], ['E1013: Argument 3: type mismatch, expected string but got number', 'E1174: String required for argument 3'])
+  v9.CheckDefAndScriptFailure(['browse(true, "title", "dir", 4)'], ['E1013: Argument 4: type mismatch, expected string but got number', 'E1174: String required for argument 4'])
 enddef
 
 def Test_browsedir()
   if has('browse')
-    CheckDefAndScriptFailure(['browsedir({}, "b")'], ['E1013: Argument 1: type mismatch, expected string but got dict<unknown>', 'E1174: String required for argument 1'])
-    CheckDefAndScriptFailure(['browsedir("a", [])'], ['E1013: Argument 2: type mismatch, expected string but got list<unknown>', 'E1174: String required for argument 2'])
+    v9.CheckDefAndScriptFailure(['browsedir({}, "b")'], ['E1013: Argument 1: type mismatch, expected string but got dict<unknown>', 'E1174: String required for argument 1'])
+    v9.CheckDefAndScriptFailure(['browsedir("a", [])'], ['E1013: Argument 2: type mismatch, expected string but got list<unknown>', 'E1174: String required for argument 2'])
   endif
 enddef
 
@@ -372,8 +372,8 @@
   buf = bufnr('Xdummy', true)
   buf->assert_notequal(-1)
   exe 'bwipe! ' .. buf
-  CheckDefAndScriptFailure(['bufnr([1])'], ['E1013: Argument 1: type mismatch, expected string but got list<number>', 'E1220: String or Number required for argument 1'])
-  CheckDefAndScriptFailure(['bufnr(1, 2)'], ['E1013: Argument 2: type mismatch, expected bool but got number', 'E1212: Bool required for argument 2'])
+  v9.CheckDefAndScriptFailure(['bufnr([1])'], ['E1013: Argument 1: type mismatch, expected string but got list<number>', 'E1220: String or Number required for argument 1'])
+  v9.CheckDefAndScriptFailure(['bufnr(1, 2)'], ['E1013: Argument 2: type mismatch, expected bool but got number', 'E1212: Bool required for argument 2'])
 enddef
 
 def Test_bufwinid()
@@ -399,21 +399,21 @@
 enddef
 
 def Test_byte2line()
-  CheckDefAndScriptFailure(['byte2line("1")'], ['E1013: Argument 1: type mismatch, expected number but got string', 'E1210: Number required for argument 1'])
-  CheckDefAndScriptFailure(['byte2line([])'], ['E1013: Argument 1: type mismatch, expected number but got list<unknown>', 'E1210: Number required for argument 1'])
+  v9.CheckDefAndScriptFailure(['byte2line("1")'], ['E1013: Argument 1: type mismatch, expected number but got string', 'E1210: Number required for argument 1'])
+  v9.CheckDefAndScriptFailure(['byte2line([])'], ['E1013: Argument 1: type mismatch, expected number but got list<unknown>', 'E1210: Number required for argument 1'])
   byte2line(0)->assert_equal(-1)
 enddef
 
 def Test_byteidx()
-  CheckDefAndScriptFailure(['byteidx(1, 2)'], ['E1013: Argument 1: type mismatch, expected string but got number', 'E1174: String required for argument 1'])
-  CheckDefAndScriptFailure(['byteidx("a", "b")'], ['E1013: Argument 2: type mismatch, expected number but got string', 'E1210: Number required for argument 2'])
+  v9.CheckDefAndScriptFailure(['byteidx(1, 2)'], ['E1013: Argument 1: type mismatch, expected string but got number', 'E1174: String required for argument 1'])
+  v9.CheckDefAndScriptFailure(['byteidx("a", "b")'], ['E1013: Argument 2: type mismatch, expected number but got string', 'E1210: Number required for argument 2'])
   byteidx('', 0)->assert_equal(0)
   byteidx('', 1)->assert_equal(-1)
 enddef
 
 def Test_byteidxcomp()
-  CheckDefAndScriptFailure(['byteidxcomp(1, 2)'], ['E1013: Argument 1: type mismatch, expected string but got number', 'E1174: String required for argument 1'])
-  CheckDefAndScriptFailure(['byteidxcomp("a", "b")'], ['E1013: Argument 2: type mismatch, expected number but got string', 'E1210: Number required for argument 2'])
+  v9.CheckDefAndScriptFailure(['byteidxcomp(1, 2)'], ['E1013: Argument 1: type mismatch, expected string but got number', 'E1174: String required for argument 1'])
+  v9.CheckDefAndScriptFailure(['byteidxcomp("a", "b")'], ['E1013: Argument 2: type mismatch, expected number but got string', 'E1210: Number required for argument 2'])
 enddef
 
 def Test_call_call()
@@ -421,17 +421,17 @@
   call('reverse', [l])
   l->assert_equal([1, 2, 3])
 
-  CheckDefExecAndScriptFailure(['call(123, [2])'], 'E1256: String or function required for argument 1')
-  CheckDefExecAndScriptFailure(['call(true, [2])'], 'E1256: String or function required for argument 1')
-  CheckDefAndScriptFailure(['call("reverse", 2)'], ['E1013: Argument 2: type mismatch, expected list<any> but got number', 'E1211: List required for argument 2'])
-  CheckDefAndScriptFailure(['call("reverse", [2], [1])'], ['E1013: Argument 3: type mismatch, expected dict<any> but got list<number>', 'E1206: Dictionary required for argument 3'])
+  v9.CheckDefExecAndScriptFailure(['call(123, [2])'], 'E1256: String or function required for argument 1')
+  v9.CheckDefExecAndScriptFailure(['call(true, [2])'], 'E1256: String or function required for argument 1')
+  v9.CheckDefAndScriptFailure(['call("reverse", 2)'], ['E1013: Argument 2: type mismatch, expected list<any> but got number', 'E1211: List required for argument 2'])
+  v9.CheckDefAndScriptFailure(['call("reverse", [2], [1])'], ['E1013: Argument 3: type mismatch, expected dict<any> but got list<number>', 'E1206: Dictionary required for argument 3'])
 enddef
 
 def Test_ch_canread()
   if !has('channel')
     CheckFeature channel
   else
-    CheckDefAndScriptFailure(['ch_canread(10)'], ['E1013: Argument 1: type mismatch, expected channel but got number', 'E1217: Channel or Job required for argument 1'])
+    v9.CheckDefAndScriptFailure(['ch_canread(10)'], ['E1013: Argument 1: type mismatch, expected channel but got number', 'E1217: Channel or Job required for argument 1'])
   endif
 enddef
 
@@ -439,7 +439,7 @@
   if !has('channel')
     CheckFeature channel
   else
-    CheckDefAndScriptFailure(['ch_close("c")'], ['E1013: Argument 1: type mismatch, expected channel but got string', 'E1217: Channel or Job required for argument 1'])
+    v9.CheckDefAndScriptFailure(['ch_close("c")'], ['E1013: Argument 1: type mismatch, expected channel but got string', 'E1217: Channel or Job required for argument 1'])
   endif
 enddef
 
@@ -447,7 +447,7 @@
   if !has('channel')
     CheckFeature channel
   else
-    CheckDefAndScriptFailure(['ch_close_in(true)'], ['E1013: Argument 1: type mismatch, expected channel but got bool', 'E1217: Channel or Job required for argument 1'])
+    v9.CheckDefAndScriptFailure(['ch_close_in(true)'], ['E1013: Argument 1: type mismatch, expected channel but got bool', 'E1217: Channel or Job required for argument 1'])
   endif
 enddef
 
@@ -455,8 +455,8 @@
   if !has('channel')
     CheckFeature channel
   else
-    CheckDefAndScriptFailure(['ch_evalexpr(1, "a")'], ['E1013: Argument 1: type mismatch, expected channel but got number', 'E1217: Channel or Job required for argument 1'])
-    CheckDefAndScriptFailure(['ch_evalexpr(test_null_channel(), 1, [])'], ['E1013: Argument 3: type mismatch, expected dict<any> but got list<unknown>', 'E1206: Dictionary required for argument 3'])
+    v9.CheckDefAndScriptFailure(['ch_evalexpr(1, "a")'], ['E1013: Argument 1: type mismatch, expected channel but got number', 'E1217: Channel or Job required for argument 1'])
+    v9.CheckDefAndScriptFailure(['ch_evalexpr(test_null_channel(), 1, [])'], ['E1013: Argument 3: type mismatch, expected dict<any> but got list<unknown>', 'E1206: Dictionary required for argument 3'])
   endif
 enddef
 
@@ -464,9 +464,9 @@
   if !has('channel')
     CheckFeature channel
   else
-    CheckDefAndScriptFailure(['ch_evalraw(1, "")'], ['E1013: Argument 1: type mismatch, expected channel but got number', 'E1217: Channel or Job required for argument 1'])
-    CheckDefAndScriptFailure(['ch_evalraw(test_null_channel(), 1)'], ['E1013: Argument 2: type mismatch, expected string but got number', 'E1221: String or Blob required for argument 2'])
-    CheckDefAndScriptFailure(['ch_evalraw(test_null_channel(), "", [])'], ['E1013: Argument 3: type mismatch, expected dict<any> but got list<unknown>', 'E1206: Dictionary required for argument 3'])
+    v9.CheckDefAndScriptFailure(['ch_evalraw(1, "")'], ['E1013: Argument 1: type mismatch, expected channel but got number', 'E1217: Channel or Job required for argument 1'])
+    v9.CheckDefAndScriptFailure(['ch_evalraw(test_null_channel(), 1)'], ['E1013: Argument 2: type mismatch, expected string but got number', 'E1221: String or Blob required for argument 2'])
+    v9.CheckDefAndScriptFailure(['ch_evalraw(test_null_channel(), "", [])'], ['E1013: Argument 3: type mismatch, expected dict<any> but got list<unknown>', 'E1206: Dictionary required for argument 3'])
   endif
 enddef
 
@@ -474,8 +474,8 @@
   if !has('channel')
     CheckFeature channel
   else
-    CheckDefAndScriptFailure(['ch_getbufnr(1, "a")'], ['E1013: Argument 1: type mismatch, expected channel but got number', 'E1217: Channel or Job required for argument 1'])
-    CheckDefAndScriptFailure(['ch_getbufnr(test_null_channel(), 1)'], ['E1013: Argument 2: type mismatch, expected string but got number', 'E1174: String required for argument 2'])
+    v9.CheckDefAndScriptFailure(['ch_getbufnr(1, "a")'], ['E1013: Argument 1: type mismatch, expected channel but got number', 'E1217: Channel or Job required for argument 1'])
+    v9.CheckDefAndScriptFailure(['ch_getbufnr(test_null_channel(), 1)'], ['E1013: Argument 2: type mismatch, expected string but got number', 'E1174: String required for argument 2'])
     # test empty string argument for ch_getbufnr()
     var job: job = job_start(&shell)
     job->ch_getbufnr('')->assert_equal(-1)
@@ -487,8 +487,8 @@
   if !has('channel')
     CheckFeature channel
   else
-    CheckDefAndScriptFailure(['ch_getjob(1)'], ['E1013: Argument 1: type mismatch, expected channel but got number', 'E1217: Channel or Job required for argument 1'])
-    CheckDefAndScriptFailure(['ch_getjob({"a": 10})'], ['E1013: Argument 1: type mismatch, expected channel but got dict<number>', 'E1217: Channel or Job required for argument 1'])
+    v9.CheckDefAndScriptFailure(['ch_getjob(1)'], ['E1013: Argument 1: type mismatch, expected channel but got number', 'E1217: Channel or Job required for argument 1'])
+    v9.CheckDefAndScriptFailure(['ch_getjob({"a": 10})'], ['E1013: Argument 1: type mismatch, expected channel but got dict<number>', 'E1217: Channel or Job required for argument 1'])
     assert_equal(0, ch_getjob(test_null_channel()))
   endif
 enddef
@@ -497,7 +497,7 @@
   if !has('channel')
     CheckFeature channel
   else
-    CheckDefAndScriptFailure(['ch_info([1])'], ['E1013: Argument 1: type mismatch, expected channel but got list<number>', 'E1217: Channel or Job required for argument 1'])
+    v9.CheckDefAndScriptFailure(['ch_info([1])'], ['E1013: Argument 1: type mismatch, expected channel but got list<number>', 'E1217: Channel or Job required for argument 1'])
   endif
 enddef
 
@@ -505,8 +505,8 @@
   if !has('channel')
     CheckFeature channel
   else
-    CheckDefAndScriptFailure(['ch_log(true)'], ['E1013: Argument 1: type mismatch, expected string but got bool', 'E1174: String required for argument 1'])
-    CheckDefAndScriptFailure(['ch_log("a", 1)'], ['E1013: Argument 2: type mismatch, expected channel but got number', 'E1217: Channel or Job required for argument 2'])
+    v9.CheckDefAndScriptFailure(['ch_log(true)'], ['E1013: Argument 1: type mismatch, expected string but got bool', 'E1174: String required for argument 1'])
+    v9.CheckDefAndScriptFailure(['ch_log("a", 1)'], ['E1013: Argument 2: type mismatch, expected channel but got number', 'E1217: Channel or Job required for argument 2'])
   endif
 enddef
 
@@ -518,8 +518,8 @@
     assert_fails('ch_logfile("foo", true)', 'E1174:')
     ch_logfile('', '')->assert_equal(0)
 
-    CheckDefAndScriptFailure(['ch_logfile(1)'], ['E1013: Argument 1: type mismatch, expected string but got number', 'E1174: String required for argument 1'])
-    CheckDefAndScriptFailure(['ch_logfile("a", true)'], ['E1013: Argument 2: type mismatch, expected string but got bool', 'E1174: String required for argument 2'])
+    v9.CheckDefAndScriptFailure(['ch_logfile(1)'], ['E1013: Argument 1: type mismatch, expected string but got number', 'E1174: String required for argument 1'])
+    v9.CheckDefAndScriptFailure(['ch_logfile("a", true)'], ['E1013: Argument 2: type mismatch, expected string but got bool', 'E1174: String required for argument 2'])
   endif
 enddef
 
@@ -527,9 +527,9 @@
   if !has('channel')
     CheckFeature channel
   else
-    CheckDefAndScriptFailure(['ch_open({"a": 10}, "a")'], ['E1013: Argument 1: type mismatch, expected string but got dict<number>', 'E1174: String required for argument 1'])
-    CheckDefAndScriptFailure(['ch_open("a", [1])'], ['E1013: Argument 2: type mismatch, expected dict<any> but got list<number>', 'E1206: Dictionary required for argument 2'])
-    CheckDefExecAndScriptFailure(['ch_open("")'], 'E475: Invalid argument')
+    v9.CheckDefAndScriptFailure(['ch_open({"a": 10}, "a")'], ['E1013: Argument 1: type mismatch, expected string but got dict<number>', 'E1174: String required for argument 1'])
+    v9.CheckDefAndScriptFailure(['ch_open("a", [1])'], ['E1013: Argument 2: type mismatch, expected dict<any> but got list<number>', 'E1206: Dictionary required for argument 2'])
+    v9.CheckDefExecAndScriptFailure(['ch_open("")'], 'E475: Invalid argument')
   endif
 enddef
 
@@ -537,8 +537,8 @@
   if !has('channel')
     CheckFeature channel
   else
-    CheckDefAndScriptFailure(['ch_read(1)'], ['E1013: Argument 1: type mismatch, expected channel but got number', 'E1217: Channel or Job required for argument 1'])
-    CheckDefAndScriptFailure(['ch_read(test_null_channel(), [])'], ['E1013: Argument 2: type mismatch, expected dict<any> but got list<unknown>', 'E1206: Dictionary required for argument 2'])
+    v9.CheckDefAndScriptFailure(['ch_read(1)'], ['E1013: Argument 1: type mismatch, expected channel but got number', 'E1217: Channel or Job required for argument 1'])
+    v9.CheckDefAndScriptFailure(['ch_read(test_null_channel(), [])'], ['E1013: Argument 2: type mismatch, expected dict<any> but got list<unknown>', 'E1206: Dictionary required for argument 2'])
   endif
 enddef
 
@@ -546,8 +546,8 @@
   if !has('channel')
     CheckFeature channel
   else
-    CheckDefAndScriptFailure(['ch_readblob(1)'], ['E1013: Argument 1: type mismatch, expected channel but got number', 'E1217: Channel or Job required for argument 1'])
-    CheckDefAndScriptFailure(['ch_readblob(test_null_channel(), [])'], ['E1013: Argument 2: type mismatch, expected dict<any> but got list<unknown>', 'E1206: Dictionary required for argument 2'])
+    v9.CheckDefAndScriptFailure(['ch_readblob(1)'], ['E1013: Argument 1: type mismatch, expected channel but got number', 'E1217: Channel or Job required for argument 1'])
+    v9.CheckDefAndScriptFailure(['ch_readblob(test_null_channel(), [])'], ['E1013: Argument 2: type mismatch, expected dict<any> but got list<unknown>', 'E1206: Dictionary required for argument 2'])
   endif
 enddef
 
@@ -555,8 +555,8 @@
   if !has('channel')
     CheckFeature channel
   else
-    CheckDefAndScriptFailure(['ch_readraw(1)'], ['E1013: Argument 1: type mismatch, expected channel but got number', 'E1217: Channel or Job required for argument 1'])
-    CheckDefAndScriptFailure(['ch_readraw(test_null_channel(), [])'], ['E1013: Argument 2: type mismatch, expected dict<any> but got list<unknown>', 'E1206: Dictionary required for argument 2'])
+    v9.CheckDefAndScriptFailure(['ch_readraw(1)'], ['E1013: Argument 1: type mismatch, expected channel but got number', 'E1217: Channel or Job required for argument 1'])
+    v9.CheckDefAndScriptFailure(['ch_readraw(test_null_channel(), [])'], ['E1013: Argument 2: type mismatch, expected dict<any> but got list<unknown>', 'E1206: Dictionary required for argument 2'])
   endif
 enddef
 
@@ -564,8 +564,8 @@
   if !has('channel')
     CheckFeature channel
   else
-    CheckDefAndScriptFailure(['ch_sendexpr(1, "a")'], ['E1013: Argument 1: type mismatch, expected channel but got number', 'E1217: Channel or Job required for argument 1'])
-    CheckDefAndScriptFailure(['ch_sendexpr(test_null_channel(), 1, [])'], ['E1013: Argument 3: type mismatch, expected dict<any> but got list<unknown>', 'E1206: Dictionary required for argument 3'])
+    v9.CheckDefAndScriptFailure(['ch_sendexpr(1, "a")'], ['E1013: Argument 1: type mismatch, expected channel but got number', 'E1217: Channel or Job required for argument 1'])
+    v9.CheckDefAndScriptFailure(['ch_sendexpr(test_null_channel(), 1, [])'], ['E1013: Argument 3: type mismatch, expected dict<any> but got list<unknown>', 'E1206: Dictionary required for argument 3'])
   endif
 enddef
 
@@ -573,9 +573,9 @@
   if !has('channel')
     CheckFeature channel
   else
-    CheckDefAndScriptFailure(['ch_sendraw(1, "")'], ['E1013: Argument 1: type mismatch, expected channel but got number', 'E1217: Channel or Job required for argument 1'])
-    CheckDefAndScriptFailure(['ch_sendraw(test_null_channel(), 1)'], ['E1013: Argument 2: type mismatch, expected string but got number', 'E1221: String or Blob required for argument 2'])
-    CheckDefAndScriptFailure(['ch_sendraw(test_null_channel(), "", [])'], ['E1013: Argument 3: type mismatch, expected dict<any> but got list<unknown>', 'E1206: Dictionary required for argument 3'])
+    v9.CheckDefAndScriptFailure(['ch_sendraw(1, "")'], ['E1013: Argument 1: type mismatch, expected channel but got number', 'E1217: Channel or Job required for argument 1'])
+    v9.CheckDefAndScriptFailure(['ch_sendraw(test_null_channel(), 1)'], ['E1013: Argument 2: type mismatch, expected string but got number', 'E1221: String or Blob required for argument 2'])
+    v9.CheckDefAndScriptFailure(['ch_sendraw(test_null_channel(), "", [])'], ['E1013: Argument 3: type mismatch, expected dict<any> but got list<unknown>', 'E1206: Dictionary required for argument 3'])
   endif
 enddef
 
@@ -583,8 +583,8 @@
   if !has('channel')
     CheckFeature channel
   else
-    CheckDefAndScriptFailure(['ch_setoptions(1, {})'], ['E1013: Argument 1: type mismatch, expected channel but got number', 'E1217: Channel or Job required for argument 1'])
-    CheckDefAndScriptFailure(['ch_setoptions(test_null_channel(), [])'], ['E1013: Argument 2: type mismatch, expected dict<any> but got list<unknown>', 'E1206: Dictionary required for argument 2'])
+    v9.CheckDefAndScriptFailure(['ch_setoptions(1, {})'], ['E1013: Argument 1: type mismatch, expected channel but got number', 'E1217: Channel or Job required for argument 1'])
+    v9.CheckDefAndScriptFailure(['ch_setoptions(test_null_channel(), [])'], ['E1013: Argument 2: type mismatch, expected dict<any> but got list<unknown>', 'E1206: Dictionary required for argument 2'])
   endif
 enddef
 
@@ -592,8 +592,8 @@
   if !has('channel')
     CheckFeature channel
   else
-    CheckDefAndScriptFailure(['ch_status(1)'], ['E1013: Argument 1: type mismatch, expected channel but got number', 'E1217: Channel or Job required for argument 1'])
-    CheckDefAndScriptFailure(['ch_status(test_null_channel(), [])'], ['E1013: Argument 2: type mismatch, expected dict<any> but got list<unknown>', 'E1206: Dictionary required for argument 2'])
+    v9.CheckDefAndScriptFailure(['ch_status(1)'], ['E1013: Argument 1: type mismatch, expected channel but got number', 'E1217: Channel or Job required for argument 1'])
+    v9.CheckDefAndScriptFailure(['ch_status(test_null_channel(), [])'], ['E1013: Argument 2: type mismatch, expected dict<any> but got list<unknown>', 'E1206: Dictionary required for argument 2'])
   endif
 enddef
 
@@ -601,8 +601,8 @@
   char2nr('あ', true)->assert_equal(12354)
 
   assert_fails('char2nr(true)', 'E1174:')
-  CheckDefAndScriptFailure(['char2nr(10)'], ['E1013: Argument 1: type mismatch, expected string but got number', 'E1174: String required for argument 1'])
-  CheckDefAndScriptFailure(['char2nr("a", 2)'], ['E1013: Argument 2: type mismatch, expected bool but got number', 'E1212: Bool required for argument 2'])
+  v9.CheckDefAndScriptFailure(['char2nr(10)'], ['E1013: Argument 1: type mismatch, expected string but got number', 'E1174: String required for argument 1'])
+  v9.CheckDefAndScriptFailure(['char2nr("a", 2)'], ['E1013: Argument 2: type mismatch, expected bool but got number', 'E1212: Bool required for argument 2'])
   assert_equal(97, char2nr('a', 1))
   assert_equal(97, char2nr('a', 0))
   assert_equal(97, char2nr('a', true))
@@ -616,9 +616,9 @@
 enddef
 
 def Test_charcol()
-  CheckDefAndScriptFailure(['charcol(10)'], ['E1013: Argument 1: type mismatch, expected string but got number', 'E1222: String or List required for argument 1'])
-  CheckDefAndScriptFailure(['charcol({a: 10})'], ['E1013: Argument 1: type mismatch, expected string but got dict<number>', 'E1222: String or List required for argument 1'])
-  CheckDefExecAndScriptFailure(['charcol("")'], 'E1209: Invalid value for a line number')
+  v9.CheckDefAndScriptFailure(['charcol(10)'], ['E1013: Argument 1: type mismatch, expected string but got number', 'E1222: String or List required for argument 1'])
+  v9.CheckDefAndScriptFailure(['charcol({a: 10})'], ['E1013: Argument 1: type mismatch, expected string but got dict<number>', 'E1222: String or List required for argument 1'])
+  v9.CheckDefExecAndScriptFailure(['charcol("")'], 'E1209: Invalid value for a line number')
   new
   setline(1, ['abcdefgh'])
   cursor(1, 4)
@@ -629,9 +629,9 @@
 enddef
 
 def Test_charidx()
-  CheckDefAndScriptFailure(['charidx(0z10, 1)'], ['E1013: Argument 1: type mismatch, expected string but got blob', 'E1174: String required for argument 1'])
-  CheckDefAndScriptFailure(['charidx("a", "b")'], ['E1013: Argument 2: type mismatch, expected number but got string', 'E1210: Number required for argument 2'])
-  CheckDefAndScriptFailure(['charidx("a", 1, "")'], ['E1013: Argument 3: type mismatch, expected bool but got string', 'E1212: Bool required for argument 3'])
+  v9.CheckDefAndScriptFailure(['charidx(0z10, 1)'], ['E1013: Argument 1: type mismatch, expected string but got blob', 'E1174: String required for argument 1'])
+  v9.CheckDefAndScriptFailure(['charidx("a", "b")'], ['E1013: Argument 2: type mismatch, expected number but got string', 'E1210: Number required for argument 2'])
+  v9.CheckDefAndScriptFailure(['charidx("a", 1, "")'], ['E1013: Argument 3: type mismatch, expected bool but got string', 'E1212: Bool required for argument 3'])
   charidx('', 0)->assert_equal(-1)
   charidx('', 1)->assert_equal(-1)
 enddef
@@ -641,15 +641,15 @@
 enddef
 
 def Test_cindent()
-  CheckDefAndScriptFailure(['cindent([])'], ['E1013: Argument 1: type mismatch, expected string but got list<unknown>', 'E1220: String or Number required for argument 1'])
-  CheckDefAndScriptFailure(['cindent(null)'], ['E1013: Argument 1: type mismatch, expected string but got special', 'E1220: String or Number required for argument 1'])
-  CheckDefExecAndScriptFailure(['cindent("")'], 'E1209: Invalid value for a line number')
+  v9.CheckDefAndScriptFailure(['cindent([])'], ['E1013: Argument 1: type mismatch, expected string but got list<unknown>', 'E1220: String or Number required for argument 1'])
+  v9.CheckDefAndScriptFailure(['cindent(null)'], ['E1013: Argument 1: type mismatch, expected string but got special', 'E1220: String or Number required for argument 1'])
+  v9.CheckDefExecAndScriptFailure(['cindent("")'], 'E1209: Invalid value for a line number')
   assert_equal(-1, cindent(0))
   assert_equal(0, cindent('.'))
 enddef
 
 def Test_clearmatches()
-  CheckDefAndScriptFailure(['clearmatches("x")'], ['E1013: Argument 1: type mismatch, expected number but got string', 'E1210: Number required for argument 1'])
+  v9.CheckDefAndScriptFailure(['clearmatches("x")'], ['E1013: Argument 1: type mismatch, expected number but got string', 'E1210: Number required for argument 1'])
 enddef
 
 def Test_col()
@@ -662,25 +662,25 @@
 
   assert_fails('col(true)', 'E1222:')
 
-  CheckDefAndScriptFailure(['col(10)'], ['E1013: Argument 1: type mismatch, expected string but got number', 'E1222: String or List required for argument 1'])
-  CheckDefAndScriptFailure(['col({a: 10})'], ['E1013: Argument 1: type mismatch, expected string but got dict<number>', 'E1222: String or List required for argument 1'])
-  CheckDefAndScriptFailure(['col(true)'], ['E1013: Argument 1: type mismatch, expected string but got bool', 'E1222: String or List required for argument 1'])
-  CheckDefExecAndScriptFailure(['col("")'], 'E1209: Invalid value for a line number')
+  v9.CheckDefAndScriptFailure(['col(10)'], ['E1013: Argument 1: type mismatch, expected string but got number', 'E1222: String or List required for argument 1'])
+  v9.CheckDefAndScriptFailure(['col({a: 10})'], ['E1013: Argument 1: type mismatch, expected string but got dict<number>', 'E1222: String or List required for argument 1'])
+  v9.CheckDefAndScriptFailure(['col(true)'], ['E1013: Argument 1: type mismatch, expected string but got bool', 'E1222: String or List required for argument 1'])
+  v9.CheckDefExecAndScriptFailure(['col("")'], 'E1209: Invalid value for a line number')
   bw!
 enddef
 
 def Test_complete()
-  CheckDefAndScriptFailure(['complete("1", [])'], ['E1013: Argument 1: type mismatch, expected number but got string', 'E1210: Number required for argument 1'])
-  CheckDefAndScriptFailure(['complete(1, {})'], ['E1013: Argument 2: type mismatch, expected list<any> but got dict<unknown>', 'E1211: List required for argument 2'])
+  v9.CheckDefAndScriptFailure(['complete("1", [])'], ['E1013: Argument 1: type mismatch, expected number but got string', 'E1210: Number required for argument 1'])
+  v9.CheckDefAndScriptFailure(['complete(1, {})'], ['E1013: Argument 2: type mismatch, expected list<any> but got dict<unknown>', 'E1211: List required for argument 2'])
 enddef
 
 def Test_complete_add()
-  CheckDefAndScriptFailure(['complete_add([])'], ['E1013: Argument 1: type mismatch, expected string but got list<unknown>', 'E1223: String or Dictionary required for argument 1'])
+  v9.CheckDefAndScriptFailure(['complete_add([])'], ['E1013: Argument 1: type mismatch, expected string but got list<unknown>', 'E1223: String or Dictionary required for argument 1'])
 enddef
 
 def Test_complete_info()
-  CheckDefAndScriptFailure(['complete_info("")'], ['E1013: Argument 1: type mismatch, expected list<string> but got string', 'E1211: List required for argument 1'])
-  CheckDefAndScriptFailure(['complete_info({})'], ['E1013: Argument 1: type mismatch, expected list<string> but got dict<unknown>', 'E1211: List required for argument 1'])
+  v9.CheckDefAndScriptFailure(['complete_info("")'], ['E1013: Argument 1: type mismatch, expected list<string> but got string', 'E1211: List required for argument 1'])
+  v9.CheckDefAndScriptFailure(['complete_info({})'], ['E1013: Argument 1: type mismatch, expected list<string> but got dict<unknown>', 'E1211: List required for argument 1'])
   assert_equal({'pum_visible': 0, 'mode': '', 'selected': -1, 'items': []}, complete_info())
   assert_equal({'mode': '', 'items': []}, complete_info(['mode', 'items']))
 enddef
@@ -693,10 +693,10 @@
   assert_fails('confirm(true)', 'E1174:')
   assert_fails('confirm("yes", true)', 'E1174:')
   assert_fails('confirm("yes", "maybe", 2, true)', 'E1174:')
-  CheckDefAndScriptFailure(['confirm(1)'], ['E1013: Argument 1: type mismatch, expected string but got number', 'E1174: String required for argument 1'])
-  CheckDefAndScriptFailure(['confirm("a", 2)'], ['E1013: Argument 2: type mismatch, expected string but got number', 'E1174: String required for argument 2'])
-  CheckDefAndScriptFailure(['confirm("a", "b", "c")'], ['E1013: Argument 3: type mismatch, expected number but got string', 'E1210: Number required for argument 3'])
-  CheckDefAndScriptFailure(['confirm("a", "b", 3, 4)'], ['E1013: Argument 4: type mismatch, expected string but got number', 'E1174: String required for argument 4'])
+  v9.CheckDefAndScriptFailure(['confirm(1)'], ['E1013: Argument 1: type mismatch, expected string but got number', 'E1174: String required for argument 1'])
+  v9.CheckDefAndScriptFailure(['confirm("a", 2)'], ['E1013: Argument 2: type mismatch, expected string but got number', 'E1174: String required for argument 2'])
+  v9.CheckDefAndScriptFailure(['confirm("a", "b", "c")'], ['E1013: Argument 3: type mismatch, expected number but got string', 'E1210: Number required for argument 3'])
+  v9.CheckDefAndScriptFailure(['confirm("a", "b", 3, 4)'], ['E1013: Argument 4: type mismatch, expected string but got number', 'E1174: String required for argument 4'])
 enddef
 
 def Test_copy_return_type()
@@ -720,9 +720,9 @@
 def Test_count()
   count('ABC ABC ABC', 'b', true)->assert_equal(3)
   count('ABC ABC ABC', 'b', false)->assert_equal(0)
-  CheckDefAndScriptFailure(['count(10, 1)'], ['E1013: Argument 1: type mismatch, expected string but got number', 'E1225: String, List or Dictionary required for argument 1'])
-  CheckDefAndScriptFailure(['count("a", [1], 2)'], ['E1013: Argument 3: type mismatch, expected bool but got number', 'E1212: Bool required for argument 3'])
-  CheckDefAndScriptFailure(['count("a", [1], 0, "b")'], ['E1013: Argument 4: type mismatch, expected number but got string', 'E1210: Number required for argument 4'])
+  v9.CheckDefAndScriptFailure(['count(10, 1)'], ['E1013: Argument 1: type mismatch, expected string but got number', 'E1225: String, List or Dictionary required for argument 1'])
+  v9.CheckDefAndScriptFailure(['count("a", [1], 2)'], ['E1013: Argument 3: type mismatch, expected bool but got number', 'E1212: Bool required for argument 3'])
+  v9.CheckDefAndScriptFailure(['count("a", [1], 0, "b")'], ['E1013: Argument 4: type mismatch, expected number but got string', 'E1210: Number required for argument 4'])
   count([1, 2, 2, 3], 2)->assert_equal(2)
   count([1, 2, 2, 3], 2, false, 2)->assert_equal(1)
   count({a: 1.1, b: 2.2, c: 1.1}, 1.1)->assert_equal(2)
@@ -731,9 +731,9 @@
 def Test_cscope_connection()
   CheckFeature cscope
   assert_equal(0, cscope_connection())
-  CheckDefAndScriptFailure(['cscope_connection("a")'], ['E1013: Argument 1: type mismatch, expected number but got string', 'E1210: Number required for argument 1'])
-  CheckDefAndScriptFailure(['cscope_connection(1, 2)'], ['E1013: Argument 2: type mismatch, expected string but got number', 'E1174: String required for argument 2'])
-  CheckDefAndScriptFailure(['cscope_connection(1, "b", 3)'], ['E1013: Argument 3: type mismatch, expected string but got number', 'E1174: String required for argument 3'])
+  v9.CheckDefAndScriptFailure(['cscope_connection("a")'], ['E1013: Argument 1: type mismatch, expected number but got string', 'E1210: Number required for argument 1'])
+  v9.CheckDefAndScriptFailure(['cscope_connection(1, 2)'], ['E1013: Argument 2: type mismatch, expected string but got number', 'E1174: String required for argument 2'])
+  v9.CheckDefAndScriptFailure(['cscope_connection(1, "b", 3)'], ['E1013: Argument 3: type mismatch, expected string but got number', 'E1174: String required for argument 3'])
 enddef
 
 def Test_cursor()
@@ -749,35 +749,35 @@
   var lines =<< trim END
     cursor('2', 1)
   END
-  CheckDefExecAndScriptFailure(lines, 'E1209:')
-  CheckDefAndScriptFailure(['cursor(0z10, 1)'], ['E1013: Argument 1: type mismatch, expected number but got blob', 'E1224: String, Number or List required for argument 1'])
-  CheckDefAndScriptFailure(['cursor(1, "2")'], ['E1013: Argument 2: type mismatch, expected number but got string', 'E1210: Number required for argument 2'])
-  CheckDefAndScriptFailure(['cursor(1, 2, "3")'], ['E1013: Argument 3: type mismatch, expected number but got string', 'E1210: Number required for argument 3'])
-  CheckDefExecAndScriptFailure(['cursor("", 2)'], 'E1209: Invalid value for a line number')
+  v9.CheckDefExecAndScriptFailure(lines, 'E1209:')
+  v9.CheckDefAndScriptFailure(['cursor(0z10, 1)'], ['E1013: Argument 1: type mismatch, expected number but got blob', 'E1224: String, Number or List required for argument 1'])
+  v9.CheckDefAndScriptFailure(['cursor(1, "2")'], ['E1013: Argument 2: type mismatch, expected number but got string', 'E1210: Number required for argument 2'])
+  v9.CheckDefAndScriptFailure(['cursor(1, 2, "3")'], ['E1013: Argument 3: type mismatch, expected number but got string', 'E1210: Number required for argument 3'])
+  v9.CheckDefExecAndScriptFailure(['cursor("", 2)'], 'E1209: Invalid value for a line number')
 enddef
 
 def Test_debugbreak()
   CheckMSWindows
-  CheckDefAndScriptFailure(['debugbreak("x")'], ['E1013: Argument 1: type mismatch, expected number but got string', 'E1210: Number required for argument 1'])
+  v9.CheckDefAndScriptFailure(['debugbreak("x")'], ['E1013: Argument 1: type mismatch, expected number but got string', 'E1210: Number required for argument 1'])
 enddef
 
 def Test_deepcopy()
-  CheckDefAndScriptFailure(['deepcopy({}, 2)'], ['E1013: Argument 2: type mismatch, expected bool but got number', 'E1212: Bool required for argument 2'])
+  v9.CheckDefAndScriptFailure(['deepcopy({}, 2)'], ['E1013: Argument 2: type mismatch, expected bool but got number', 'E1212: Bool required for argument 2'])
 enddef
 
 def Test_delete()
   var res: bool = delete('doesnotexist')
   assert_equal(true, res)
 
-  CheckDefAndScriptFailure(['delete(10)'], ['E1013: Argument 1: type mismatch, expected string but got number', 'E1174: String required for argument 1'])
-  CheckDefAndScriptFailure(['delete("a", 10)'], ['E1013: Argument 2: type mismatch, expected string but got number', 'E1174: String required for argument 2'])
-  CheckDefExecAndScriptFailure(['delete("")'], 'E474: Invalid argument')
+  v9.CheckDefAndScriptFailure(['delete(10)'], ['E1013: Argument 1: type mismatch, expected string but got number', 'E1174: String required for argument 1'])
+  v9.CheckDefAndScriptFailure(['delete("a", 10)'], ['E1013: Argument 2: type mismatch, expected string but got number', 'E1174: String required for argument 2'])
+  v9.CheckDefExecAndScriptFailure(['delete("")'], 'E474: Invalid argument')
 enddef
 
 def Test_deletebufline()
-  CheckDefAndScriptFailure(['deletebufline([], 2)'], ['E1013: Argument 1: type mismatch, expected string but got list<unknown>', 'E1220: String or Number required for argument 1'])
-  CheckDefAndScriptFailure(['deletebufline("a", [])'], ['E1013: Argument 2: type mismatch, expected string but got list<unknown>', 'E1220: String or Number required for argument 2'])
-  CheckDefAndScriptFailure(['deletebufline("a", 2, 0z10)'], ['E1013: Argument 3: type mismatch, expected string but got blob', 'E1220: String or Number required for argument 3'])
+  v9.CheckDefAndScriptFailure(['deletebufline([], 2)'], ['E1013: Argument 1: type mismatch, expected string but got list<unknown>', 'E1220: String or Number required for argument 1'])
+  v9.CheckDefAndScriptFailure(['deletebufline("a", [])'], ['E1013: Argument 2: type mismatch, expected string but got list<unknown>', 'E1220: String or Number required for argument 2'])
+  v9.CheckDefAndScriptFailure(['deletebufline("a", 2, 0z10)'], ['E1013: Argument 3: type mismatch, expected string but got blob', 'E1220: String or Number required for argument 3'])
   new
   setline(1, ['one', 'two'])
   deletebufline('', 1)
@@ -790,58 +790,58 @@
 enddef
 
 def Test_diff_filler()
-  CheckDefAndScriptFailure(['diff_filler([])'], ['E1013: Argument 1: type mismatch, expected string but got list<unknown>', 'E1220: String or Number required for argument 1'])
-  CheckDefAndScriptFailure(['diff_filler(true)'], ['E1013: Argument 1: type mismatch, expected string but got bool', 'E1220: String or Number required for argument 1'])
-  CheckDefExecAndScriptFailure(['diff_filler("")'], 'E1209: Invalid value for a line number')
+  v9.CheckDefAndScriptFailure(['diff_filler([])'], ['E1013: Argument 1: type mismatch, expected string but got list<unknown>', 'E1220: String or Number required for argument 1'])
+  v9.CheckDefAndScriptFailure(['diff_filler(true)'], ['E1013: Argument 1: type mismatch, expected string but got bool', 'E1220: String or Number required for argument 1'])
+  v9.CheckDefExecAndScriptFailure(['diff_filler("")'], 'E1209: Invalid value for a line number')
   assert_equal(0, diff_filler(1))
   assert_equal(0, diff_filler('.'))
 enddef
 
 def Test_diff_hlID()
-  CheckDefAndScriptFailure(['diff_hlID(0z10, 1)'], ['E1013: Argument 1: type mismatch, expected string but got blob', 'E1220: String or Number required for argument 1'])
-  CheckDefAndScriptFailure(['diff_hlID(1, "a")'], ['E1013: Argument 2: type mismatch, expected number but got string', 'E1210: Number required for argument 2'])
-  CheckDefExecAndScriptFailure(['diff_hlID("", 10)'], 'E1209: Invalid value for a line number')
+  v9.CheckDefAndScriptFailure(['diff_hlID(0z10, 1)'], ['E1013: Argument 1: type mismatch, expected string but got blob', 'E1220: String or Number required for argument 1'])
+  v9.CheckDefAndScriptFailure(['diff_hlID(1, "a")'], ['E1013: Argument 2: type mismatch, expected number but got string', 'E1210: Number required for argument 2'])
+  v9.CheckDefExecAndScriptFailure(['diff_hlID("", 10)'], 'E1209: Invalid value for a line number')
 enddef
 
 def Test_digraph_get()
-  CheckDefAndScriptFailure(['digraph_get(10)'], ['E1013: Argument 1: type mismatch, expected string but got number', 'E1174: String required for argument 1'])
-  CheckDefExecAndScriptFailure(['digraph_get("")'], 'E1214: Digraph must be just two characters')
+  v9.CheckDefAndScriptFailure(['digraph_get(10)'], ['E1013: Argument 1: type mismatch, expected string but got number', 'E1174: String required for argument 1'])
+  v9.CheckDefExecAndScriptFailure(['digraph_get("")'], 'E1214: Digraph must be just two characters')
 enddef
 
 def Test_digraph_getlist()
-  CheckDefAndScriptFailure(['digraph_getlist(10)'], ['E1013: Argument 1: type mismatch, expected bool but got number', 'E1212: Bool required for argument 1'])
-  CheckDefAndScriptFailure(['digraph_getlist("")'], ['E1013: Argument 1: type mismatch, expected bool but got string', 'E1212: Bool required for argument 1'])
+  v9.CheckDefAndScriptFailure(['digraph_getlist(10)'], ['E1013: Argument 1: type mismatch, expected bool but got number', 'E1212: Bool required for argument 1'])
+  v9.CheckDefAndScriptFailure(['digraph_getlist("")'], ['E1013: Argument 1: type mismatch, expected bool but got string', 'E1212: Bool required for argument 1'])
 enddef
 
 def Test_digraph_set()
-  CheckDefAndScriptFailure(['digraph_set(10, "a")'], ['E1013: Argument 1: type mismatch, expected string but got number', 'E1174: String required for argument 1'])
-  CheckDefAndScriptFailure(['digraph_set("ab", 0z10)'], ['E1013: Argument 2: type mismatch, expected string but got blob', 'E1174: String required for argument 2'])
-  CheckDefExecAndScriptFailure(['digraph_set("", "a")'], 'E1214: Digraph must be just two characters')
+  v9.CheckDefAndScriptFailure(['digraph_set(10, "a")'], ['E1013: Argument 1: type mismatch, expected string but got number', 'E1174: String required for argument 1'])
+  v9.CheckDefAndScriptFailure(['digraph_set("ab", 0z10)'], ['E1013: Argument 2: type mismatch, expected string but got blob', 'E1174: String required for argument 2'])
+  v9.CheckDefExecAndScriptFailure(['digraph_set("", "a")'], 'E1214: Digraph must be just two characters')
 enddef
 
 def Test_digraph_setlist()
-  CheckDefAndScriptFailure(['digraph_setlist("a")'], ['E1013: Argument 1: type mismatch, expected list<string> but got string', 'E1216: digraph_setlist() argument must be a list of lists with two items'])
-  CheckDefAndScriptFailure(['digraph_setlist({})'], ['E1013: Argument 1: type mismatch, expected list<string> but got dict<unknown>', 'E1216: digraph_setlist() argument must be a list of lists with two items'])
+  v9.CheckDefAndScriptFailure(['digraph_setlist("a")'], ['E1013: Argument 1: type mismatch, expected list<string> but got string', 'E1216: digraph_setlist() argument must be a list of lists with two items'])
+  v9.CheckDefAndScriptFailure(['digraph_setlist({})'], ['E1013: Argument 1: type mismatch, expected list<string> but got dict<unknown>', 'E1216: digraph_setlist() argument must be a list of lists with two items'])
 enddef
 
 def Test_echoraw()
-  CheckDefAndScriptFailure(['echoraw(1)'], ['E1013: Argument 1: type mismatch, expected string but got number', 'E1174: String required for argument 1'])
-  CheckDefAndScriptFailure(['echoraw(["x"])'], ['E1013: Argument 1: type mismatch, expected string but got list<string>', 'E1174: String required for argument 1'])
+  v9.CheckDefAndScriptFailure(['echoraw(1)'], ['E1013: Argument 1: type mismatch, expected string but got number', 'E1174: String required for argument 1'])
+  v9.CheckDefAndScriptFailure(['echoraw(["x"])'], ['E1013: Argument 1: type mismatch, expected string but got list<string>', 'E1174: String required for argument 1'])
 enddef
 
 def Test_escape()
-  CheckDefAndScriptFailure(['escape(10, " ")'], ['E1013: Argument 1: type mismatch, expected string but got number', 'E1174: String required for argument 1'])
-  CheckDefAndScriptFailure(['escape(true, false)'], ['E1013: Argument 1: type mismatch, expected string but got bool', 'E1174: String required for argument 1'])
-  CheckDefAndScriptFailure(['escape("a", 10)'], ['E1013: Argument 2: type mismatch, expected string but got number', 'E1174: String required for argument 2'])
+  v9.CheckDefAndScriptFailure(['escape(10, " ")'], ['E1013: Argument 1: type mismatch, expected string but got number', 'E1174: String required for argument 1'])
+  v9.CheckDefAndScriptFailure(['escape(true, false)'], ['E1013: Argument 1: type mismatch, expected string but got bool', 'E1174: String required for argument 1'])
+  v9.CheckDefAndScriptFailure(['escape("a", 10)'], ['E1013: Argument 2: type mismatch, expected string but got number', 'E1174: String required for argument 2'])
   assert_equal('a\:b', escape("a:b", ":"))
   escape('abc', '')->assert_equal('abc')
   escape('', ':')->assert_equal('')
 enddef
 
 def Test_eval()
-  CheckDefAndScriptFailure(['eval(10)'], ['E1013: Argument 1: type mismatch, expected string but got number', 'E1174: String required for argument 1'])
-  CheckDefAndScriptFailure(['eval(null)'], ['E1013: Argument 1: type mismatch, expected string but got special', 'E1174: String required for argument 1'])
-  CheckDefExecAndScriptFailure(['eval("")'], 'E15: Invalid expression')
+  v9.CheckDefAndScriptFailure(['eval(10)'], ['E1013: Argument 1: type mismatch, expected string but got number', 'E1174: String required for argument 1'])
+  v9.CheckDefAndScriptFailure(['eval(null)'], ['E1013: Argument 1: type mismatch, expected string but got special', 'E1174: String required for argument 1'])
+  v9.CheckDefExecAndScriptFailure(['eval("")'], 'E15: Invalid expression')
   assert_equal(2, eval('1 + 1'))
 enddef
 
@@ -849,8 +849,8 @@
   assert_false(executable(""))
   assert_false(executable(test_null_string()))
 
-  CheckDefExecFailure(['echo executable(123)'], 'E1013:')
-  CheckDefExecFailure(['echo executable(true)'], 'E1013:')
+  v9.CheckDefExecFailure(['echo executable(123)'], 'E1013:')
+  v9.CheckDefExecFailure(['echo executable(true)'], 'E1013:')
 enddef
 
 def Test_execute()
@@ -859,22 +859,22 @@
   res = execute(["echo 'here'", "echo 'there'"])
   assert_equal("\nhere\nthere", res)
 
-  CheckDefAndScriptFailure(['execute(123)'], ['E1013: Argument 1: type mismatch, expected string but got number', 'E1222: String or List required for argument 1'])
-  CheckDefFailure(['execute([123])'], 'E1013: Argument 1: type mismatch, expected list<string> but got list<number>')
-  CheckDefExecFailure(['echo execute(["xx", 123])'], 'E492')
-  CheckDefAndScriptFailure(['execute("xx", 123)'], ['E1013: Argument 2: type mismatch, expected string but got number', 'E1174: String required for argument 2'])
+  v9.CheckDefAndScriptFailure(['execute(123)'], ['E1013: Argument 1: type mismatch, expected string but got number', 'E1222: String or List required for argument 1'])
+  v9.CheckDefFailure(['execute([123])'], 'E1013: Argument 1: type mismatch, expected list<string> but got list<number>')
+  v9.CheckDefExecFailure(['echo execute(["xx", 123])'], 'E492')
+  v9.CheckDefAndScriptFailure(['execute("xx", 123)'], ['E1013: Argument 2: type mismatch, expected string but got number', 'E1174: String required for argument 2'])
 enddef
 
 def Test_exepath()
-  CheckDefExecFailure(['echo exepath(true)'], 'E1013:')
-  CheckDefExecFailure(['echo exepath(v:null)'], 'E1013:')
-  CheckDefExecFailure(['echo exepath("")'], 'E1175:')
+  v9.CheckDefExecFailure(['echo exepath(true)'], 'E1013:')
+  v9.CheckDefExecFailure(['echo exepath(v:null)'], 'E1013:')
+  v9.CheckDefExecFailure(['echo exepath("")'], 'E1175:')
 enddef
 
 command DoSomeCommand let g:didSomeCommand = 4
 
 def Test_exists()
-  CheckDefAndScriptFailure(['exists(10)'], ['E1013: Argument 1: type mismatch, expected string but got number', 'E1174: String required for argument 1'])
+  v9.CheckDefAndScriptFailure(['exists(10)'], ['E1013: Argument 1: type mismatch, expected string but got number', 'E1174: String required for argument 1'])
   call assert_equal(1, exists('&tabstop'))
 
   var lines =<< trim END
@@ -883,14 +883,14 @@
       endif
     endif
   END
-  CheckDefFailure(lines, 'E113:')
-  CheckScriptSuccess(lines)
+  v9.CheckDefFailure(lines, 'E113:')
+  v9.CheckScriptSuccess(lines)
 enddef
 
 def Test_exists_compiled()
   call assert_equal(1, exists_compiled('&tabstop'))
-  CheckDefAndScriptFailure(['exists_compiled(10)'], ['E1232:', 'E1233:'])
-  CheckDefAndScriptFailure(['exists_compiled(v:progname)'], ['E1232:', 'E1233:'])
+  v9.CheckDefAndScriptFailure(['exists_compiled(10)'], ['E1232:', 'E1233:'])
+  v9.CheckDefAndScriptFailure(['exists_compiled(v:progname)'], ['E1232:', 'E1233:'])
 
   if exists_compiled('+newoption')
     if &newoption == 'ok'
@@ -920,10 +920,16 @@
   endif
 
   var found = false
-  if exists_compiled('*CheckScriptSuccess')
+  if exists_compiled('*CheckFeature')
+    found = true
+  endif
+  assert_false(found)
+  found = false
+  if exists_compiled('*g:CheckFeature')
     found = true
   endif
   assert_true(found)
+
   if exists_compiled('*NoSuchFunction')
     NoSuchFunction()
   endif
@@ -936,9 +942,9 @@
   split SomeFile
   expand('%', true, true)->assert_equal(['SomeFile'])
   close
-  CheckDefAndScriptFailure(['expand(1)'], ['E1013: Argument 1: type mismatch, expected string but got number', 'E1174: String required for argument 1'])
-  CheckDefAndScriptFailure(['expand("a", 2)'], ['E1013: Argument 2: type mismatch, expected bool but got number', 'E1212: Bool required for argument 2'])
-  CheckDefAndScriptFailure(['expand("a", true, 2)'], ['E1013: Argument 3: type mismatch, expected bool but got number', 'E1212: Bool required for argument 3'])
+  v9.CheckDefAndScriptFailure(['expand(1)'], ['E1013: Argument 1: type mismatch, expected string but got number', 'E1174: String required for argument 1'])
+  v9.CheckDefAndScriptFailure(['expand("a", 2)'], ['E1013: Argument 2: type mismatch, expected bool but got number', 'E1212: Bool required for argument 2'])
+  v9.CheckDefAndScriptFailure(['expand("a", true, 2)'], ['E1013: Argument 3: type mismatch, expected bool but got number', 'E1212: Bool required for argument 3'])
   expand('')->assert_equal('')
 
   var caught = false
@@ -957,7 +963,7 @@
   assert_equal("yes", expandcmd("`={a: 'yes'}['a']`"))
   expandcmd('')->assert_equal('')
 
-  CheckDefAndScriptFailure(['expandcmd([1])'], ['E1013: Argument 1: type mismatch, expected string but got list<number>', 'E1174: String required for argument 1'])
+  v9.CheckDefAndScriptFailure(['expandcmd([1])'], ['E1013: Argument 1: type mismatch, expected string but got list<number>', 'E1174: String required for argument 1'])
 enddef
 
 def Test_extend_arg_types()
@@ -984,7 +990,7 @@
       dany->extend({b: 'x'})
       assert_equal({a: 0, b: 'x'}, dany)
   END
-  CheckDefAndScriptSuccess(lines)
+  v9.CheckDefAndScriptSuccess(lines)
 
   lines =<< trim END
       assert_equal([1, 2, "x"], extend([1, 2], ["x"]))
@@ -992,17 +998,17 @@
 
       assert_equal({a: 1, b: "x"}, extend({a: 1}, {b: "x"}))
   END
-  CheckDefAndScriptSuccess(lines)
+  v9.CheckDefAndScriptSuccess(lines)
 
-  CheckDefAndScriptFailure(['extend("a", 1)'], ['E1013: Argument 1: type mismatch, expected list<any> but got string', 'E712: Argument of extend() must be a List or Dictionary'])
-  CheckDefAndScriptFailure(['extend([1, 2], 3)'], ['E1013: Argument 2: type mismatch, expected list<any> but got number', 'E712: Argument of extend() must be a List or Dictionary'])
-  CheckDefAndScriptFailure(['var ll = [1, 2]', 'extend(ll, ["x"])'], ['E1013: Argument 2: type mismatch, expected list<number> but got list<string>', 'E1013: Argument 2: type mismatch, expected list<number> but got list<string>'])
-  CheckDefFailure(['extend([1, 2], [3], "x")'], 'E1013: Argument 3: type mismatch, expected number but got string')
+  v9.CheckDefAndScriptFailure(['extend("a", 1)'], ['E1013: Argument 1: type mismatch, expected list<any> but got string', 'E712: Argument of extend() must be a List or Dictionary'])
+  v9.CheckDefAndScriptFailure(['extend([1, 2], 3)'], ['E1013: Argument 2: type mismatch, expected list<any> but got number', 'E712: Argument of extend() must be a List or Dictionary'])
+  v9.CheckDefAndScriptFailure(['var ll = [1, 2]', 'extend(ll, ["x"])'], ['E1013: Argument 2: type mismatch, expected list<number> but got list<string>', 'E1013: Argument 2: type mismatch, expected list<number> but got list<string>'])
+  v9.CheckDefFailure(['extend([1, 2], [3], "x")'], 'E1013: Argument 3: type mismatch, expected number but got string')
 
-  CheckDefFailure(['extend({a: 1}, 42)'], 'E1013: Argument 2: type mismatch, expected dict<any> but got number')
-  CheckDefFailure(['extend({a: 1}, {b: 2}, 1)'], 'E1013: Argument 3: type mismatch, expected string but got number')
+  v9.CheckDefFailure(['extend({a: 1}, 42)'], 'E1013: Argument 2: type mismatch, expected dict<any> but got number')
+  v9.CheckDefFailure(['extend({a: 1}, {b: 2}, 1)'], 'E1013: Argument 3: type mismatch, expected string but got number')
 
-  CheckScriptFailure(['vim9script', 'var l = [1]', 'extend(l, ["b", 1])'], 'E1013: Argument 2: type mismatch, expected list<number> but got list<any> in extend()')
+  v9.CheckScriptFailure(['vim9script', 'var l = [1]', 'extend(l, ["b", 1])'], 'E1013: Argument 2: type mismatch, expected list<number> but got list<any> in extend()')
 enddef
 
 func g:ExtendDict(d)
@@ -1014,26 +1020,26 @@
        var d: dict<number> = {a: 1}
        extend(d, {b: 2})
   END
-  CheckDefAndScriptSuccess(lines)
+  v9.CheckDefAndScriptSuccess(lines)
 
   lines =<< trim END
        var d: dict<number> = {a: 1}
        extend(d, {b: 'x'})
   END
-  CheckDefAndScriptFailure(lines, 'E1013: Argument 2: type mismatch, expected dict<number> but got dict<string>', 2)
+  v9.CheckDefAndScriptFailure(lines, 'E1013: Argument 2: type mismatch, expected dict<number> but got dict<string>', 2)
 
   lines =<< trim END
        var d: dict<number> = {a: 1}
        g:ExtendDict(d)
   END
-  CheckDefExecFailure(lines, 'E1012: Type mismatch; expected number but got string', 0)
-  CheckScriptFailure(['vim9script'] + lines, 'E1012:', 1)
+  v9.CheckDefExecFailure(lines, 'E1012: Type mismatch; expected number but got string', 0)
+  v9.CheckScriptFailure(['vim9script'] + lines, 'E1012:', 1)
 
   lines =<< trim END
        var d: dict<bool>
        extend(d, {b: 0})
   END
-  CheckDefAndScriptFailure(lines, 'E1013: Argument 2: type mismatch, expected dict<bool> but got dict<number>', 2)
+  v9.CheckDefAndScriptFailure(lines, 'E1013: Argument 2: type mismatch, expected dict<bool> but got dict<number>', 2)
 enddef
 
 func g:ExtendList(l)
@@ -1045,26 +1051,26 @@
        var l: list<number> = [1]
        extend(l, [2])
   END
-  CheckDefAndScriptSuccess(lines)
+  v9.CheckDefAndScriptSuccess(lines)
 
   lines =<< trim END
        var l: list<number> = [1]
        extend(l, ['x'])
   END
-  CheckDefAndScriptFailure(lines, 'E1013: Argument 2: type mismatch, expected list<number> but got list<string>', 2)
+  v9.CheckDefAndScriptFailure(lines, 'E1013: Argument 2: type mismatch, expected list<number> but got list<string>', 2)
 
   lines =<< trim END
        var l: list<number> = [1]
        g:ExtendList(l)
   END
-  CheckDefExecFailure(lines, 'E1012: Type mismatch; expected number but got string', 0)
-  CheckScriptFailure(['vim9script'] + lines, 'E1012:', 1)
+  v9.CheckDefExecFailure(lines, 'E1012: Type mismatch; expected number but got string', 0)
+  v9.CheckScriptFailure(['vim9script'] + lines, 'E1012:', 1)
 
   lines =<< trim END
        var l: list<bool>
        extend(l, [0])
   END
-  CheckDefAndScriptFailure(lines, 'E1013: Argument 2: type mismatch, expected list<bool> but got list<number>', 2)
+  v9.CheckDefAndScriptFailure(lines, 'E1013: Argument 2: type mismatch, expected list<bool> but got list<number>', 2)
 enddef
 
 def Test_extend_return_type()
@@ -1093,23 +1099,23 @@
 
       Test()
   END
-  CheckScriptFailure(lines, 'E1001: Variable not found: m')
+  v9.CheckScriptFailure(lines, 'E1001: Variable not found: m')
 enddef
 
 def Test_extendnew()
   assert_equal([1, 2, 'a'], extendnew([1, 2], ['a']))
   assert_equal({one: 1, two: 'a'}, extendnew({one: 1}, {two: 'a'}))
 
-  CheckDefAndScriptFailure(['extendnew({a: 1}, 42)'], ['E1013: Argument 2: type mismatch, expected dict<number> but got number', 'E712: Argument of extendnew() must be a List or Dictionary'])
-  CheckDefAndScriptFailure(['extendnew({a: 1}, [42])'], ['E1013: Argument 2: type mismatch, expected dict<number> but got list<number>', 'E712: Argument of extendnew() must be a List or Dictionary'])
-  CheckDefAndScriptFailure(['extendnew([1, 2], "x")'], ['E1013: Argument 2: type mismatch, expected list<number> but got string', 'E712: Argument of extendnew() must be a List or Dictionary'])
-  CheckDefAndScriptFailure(['extendnew([1, 2], {x: 1})'], ['E1013: Argument 2: type mismatch, expected list<number> but got dict<number>', 'E712: Argument of extendnew() must be a List or Dictionary'])
+  v9.CheckDefAndScriptFailure(['extendnew({a: 1}, 42)'], ['E1013: Argument 2: type mismatch, expected dict<number> but got number', 'E712: Argument of extendnew() must be a List or Dictionary'])
+  v9.CheckDefAndScriptFailure(['extendnew({a: 1}, [42])'], ['E1013: Argument 2: type mismatch, expected dict<number> but got list<number>', 'E712: Argument of extendnew() must be a List or Dictionary'])
+  v9.CheckDefAndScriptFailure(['extendnew([1, 2], "x")'], ['E1013: Argument 2: type mismatch, expected list<number> but got string', 'E712: Argument of extendnew() must be a List or Dictionary'])
+  v9.CheckDefAndScriptFailure(['extendnew([1, 2], {x: 1})'], ['E1013: Argument 2: type mismatch, expected list<number> but got dict<number>', 'E712: Argument of extendnew() must be a List or Dictionary'])
 enddef
 
 def Test_feedkeys()
-  CheckDefAndScriptFailure(['feedkeys(10)'], ['E1013: Argument 1: type mismatch, expected string but got number', 'E1174: String required for argument 1'])
-  CheckDefAndScriptFailure(['feedkeys("x", 10)'], ['E1013: Argument 2: type mismatch, expected string but got number', 'E1174: String required for argument 2'])
-  CheckDefAndScriptFailure(['feedkeys([], {})'], ['E1013: Argument 1: type mismatch, expected string but got list<unknown>', 'E1174: String required for argument 1'])
+  v9.CheckDefAndScriptFailure(['feedkeys(10)'], ['E1013: Argument 1: type mismatch, expected string but got number', 'E1174: String required for argument 1'])
+  v9.CheckDefAndScriptFailure(['feedkeys("x", 10)'], ['E1013: Argument 2: type mismatch, expected string but got number', 'E1174: String required for argument 2'])
+  v9.CheckDefAndScriptFailure(['feedkeys([], {})'], ['E1013: Argument 1: type mismatch, expected string but got list<unknown>', 'E1174: String required for argument 1'])
   g:TestVar = 1
   feedkeys(":g:TestVar = 789\n", 'xt')
   assert_equal(789, g:TestVar)
@@ -1120,16 +1126,16 @@
   assert_false(filereadable(""))
   assert_false(filereadable(test_null_string()))
 
-  CheckDefExecFailure(['echo filereadable(123)'], 'E1013:')
-  CheckDefExecFailure(['echo filereadable(true)'], 'E1013:')
+  v9.CheckDefExecFailure(['echo filereadable(123)'], 'E1013:')
+  v9.CheckDefExecFailure(['echo filereadable(true)'], 'E1013:')
 enddef
 
 def Test_filewritable()
   assert_false(filewritable(""))
   assert_false(filewritable(test_null_string()))
 
-  CheckDefExecFailure(['echo filewritable(123)'], 'E1013:')
-  CheckDefExecFailure(['echo filewritable(true)'], 'E1013:')
+  v9.CheckDefExecFailure(['echo filewritable(123)'], 'E1013:')
+  v9.CheckDefExecFailure(['echo filewritable(true)'], 'E1013:')
 enddef
 
 def Test_finddir()
@@ -1138,20 +1144,20 @@
   var lines =<< trim END
       var l: list<string> = finddir('nothing', '*;', -1)
   END
-  CheckDefAndScriptSuccess(lines)
+  v9.CheckDefAndScriptSuccess(lines)
   delete('Xtestdir', 'rf')
 
-  CheckDefAndScriptFailure(['finddir(true)'], ['E1013: Argument 1: type mismatch, expected string but got bool', 'E1174: String required for argument 1'])
-  CheckDefAndScriptFailure(['finddir(v:null)'], ['E1013: Argument 1: type mismatch, expected string but got special', 'E1174: String required for argument 1'])
-  CheckDefExecFailure(['echo finddir("")'], 'E1175:')
-  CheckDefAndScriptFailure(['finddir("a", [])'], ['E1013: Argument 2: type mismatch, expected string but got list<unknown>', 'E1174: String required for argument 2'])
-  CheckDefAndScriptFailure(['finddir("a", "b", "c")'], ['E1013: Argument 3: type mismatch, expected number but got string', 'E1210: Number required for argument 3'])
+  v9.CheckDefAndScriptFailure(['finddir(true)'], ['E1013: Argument 1: type mismatch, expected string but got bool', 'E1174: String required for argument 1'])
+  v9.CheckDefAndScriptFailure(['finddir(v:null)'], ['E1013: Argument 1: type mismatch, expected string but got special', 'E1174: String required for argument 1'])
+  v9.CheckDefExecFailure(['echo finddir("")'], 'E1175:')
+  v9.CheckDefAndScriptFailure(['finddir("a", [])'], ['E1013: Argument 2: type mismatch, expected string but got list<unknown>', 'E1174: String required for argument 2'])
+  v9.CheckDefAndScriptFailure(['finddir("a", "b", "c")'], ['E1013: Argument 3: type mismatch, expected number but got string', 'E1210: Number required for argument 3'])
   finddir('abc', '')->assert_equal('')
 
-  CheckDefFailure(['var s: list<string> = finddir("foo")'], 'E1012: Type mismatch; expected list<string> but got string')
-  CheckDefFailure(['var s: list<string> = finddir("foo", "path")'], 'E1012: Type mismatch; expected list<string> but got string')
+  v9.CheckDefFailure(['var s: list<string> = finddir("foo")'], 'E1012: Type mismatch; expected list<string> but got string')
+  v9.CheckDefFailure(['var s: list<string> = finddir("foo", "path")'], 'E1012: Type mismatch; expected list<string> but got string')
   # with third argument only runtime type checking
-  CheckDefCompileSuccess(['var s: list<string> = finddir("foo", "path", 1)'])
+  v9.CheckDefCompileSuccess(['var s: list<string> = finddir("foo", "path", 1)'])
 enddef
 
 def Test_findfile()
@@ -1159,13 +1165,13 @@
   var lines =<< trim END
       var l: list<string> = findfile('nothing', '*;', -1)
   END
-  CheckDefAndScriptSuccess(lines)
+  v9.CheckDefAndScriptSuccess(lines)
 
-  CheckDefExecFailure(['findfile(true)'], 'E1013: Argument 1: type mismatch, expected string but got bool')
-  CheckDefExecFailure(['findfile(v:null)'], 'E1013: Argument 1: type mismatch, expected string but got special')
-  CheckDefExecFailure(['findfile("")'], 'E1175:')
-  CheckDefAndScriptFailure(['findfile("a", [])'], ['E1013: Argument 2: type mismatch, expected string but got list<unknown>', 'E1174: String required for argument 2'])
-  CheckDefAndScriptFailure(['findfile("a", "b", "c")'], ['E1013: Argument 3: type mismatch, expected number but got string', 'E1210: Number required for argument 3'])
+  v9.CheckDefExecFailure(['findfile(true)'], 'E1013: Argument 1: type mismatch, expected string but got bool')
+  v9.CheckDefExecFailure(['findfile(v:null)'], 'E1013: Argument 1: type mismatch, expected string but got special')
+  v9.CheckDefExecFailure(['findfile("")'], 'E1175:')
+  v9.CheckDefAndScriptFailure(['findfile("a", [])'], ['E1013: Argument 2: type mismatch, expected string but got list<unknown>', 'E1174: String required for argument 2'])
+  v9.CheckDefAndScriptFailure(['findfile("a", "b", "c")'], ['E1013: Argument 3: type mismatch, expected number but got string', 'E1210: Number required for argument 3'])
   findfile('abc', '')->assert_equal('')
 enddef
 
@@ -1173,7 +1179,7 @@
   var lines =<< trim END
       echo flatten([1, 2, 3])
   END
-  CheckDefAndScriptFailure(lines, 'E1158:')
+  v9.CheckDefAndScriptFailure(lines, 'E1158:')
 enddef
 
 def Test_flattennew()
@@ -1188,10 +1194,10 @@
       var ll: list<list<string>> = [['a', 'b', 'c']]
       assert_equal(['a', 'b', 'c'], ll->flattennew())
   END
-  CheckDefAndScriptSuccess(lines)
+  v9.CheckDefAndScriptSuccess(lines)
 
-  CheckDefAndScriptFailure(['flattennew({})'], ['E1013: Argument 1: type mismatch, expected list<any> but got dict<unknown>', 'E1211: List required for argument 1'])
-  CheckDefAndScriptFailure(['flattennew([], "1")'], ['E1013: Argument 2: type mismatch, expected number but got string', 'E1210: Number required for argument 2'])
+  v9.CheckDefAndScriptFailure(['flattennew({})'], ['E1013: Argument 1: type mismatch, expected list<any> but got dict<unknown>', 'E1211: List required for argument 1'])
+  v9.CheckDefAndScriptFailure(['flattennew([], "1")'], ['E1013: Argument 2: type mismatch, expected number but got string', 'E1210: Number required for argument 2'])
 enddef
 
 " Test for float functions argument type
@@ -1199,74 +1205,74 @@
   CheckFeature float
 
   # acos()
-  CheckDefAndScriptFailure(['acos("a")'], ['E1013: Argument 1: type mismatch, expected number but got string', 'E1219: Float or Number required for argument 1'])
+  v9.CheckDefAndScriptFailure(['acos("a")'], ['E1013: Argument 1: type mismatch, expected number but got string', 'E1219: Float or Number required for argument 1'])
   # asin()
-  CheckDefAndScriptFailure(['asin("a")'], ['E1013: Argument 1: type mismatch, expected number but got string', 'E1219: Float or Number required for argument 1'])
+  v9.CheckDefAndScriptFailure(['asin("a")'], ['E1013: Argument 1: type mismatch, expected number but got string', 'E1219: Float or Number required for argument 1'])
   # atan()
-  CheckDefAndScriptFailure(['atan("a")'], ['E1013: Argument 1: type mismatch, expected number but got string', 'E1219: Float or Number required for argument 1'])
+  v9.CheckDefAndScriptFailure(['atan("a")'], ['E1013: Argument 1: type mismatch, expected number but got string', 'E1219: Float or Number required for argument 1'])
   # atan2()
-  CheckDefAndScriptFailure(['atan2("a", 1.1)'], ['E1013: Argument 1: type mismatch, expected number but got string', 'E1219: Float or Number required for argument 1'])
-  CheckDefAndScriptFailure(['atan2(1.2, "a")'], ['E1013: Argument 2: type mismatch, expected number but got string', 'E1219: Float or Number required for argument 2'])
-  CheckDefAndScriptFailure(['atan2(1.2)'], ['E119:', 'E119:'])
+  v9.CheckDefAndScriptFailure(['atan2("a", 1.1)'], ['E1013: Argument 1: type mismatch, expected number but got string', 'E1219: Float or Number required for argument 1'])
+  v9.CheckDefAndScriptFailure(['atan2(1.2, "a")'], ['E1013: Argument 2: type mismatch, expected number but got string', 'E1219: Float or Number required for argument 2'])
+  v9.CheckDefAndScriptFailure(['atan2(1.2)'], ['E119:', 'E119:'])
   # ceil()
-  CheckDefAndScriptFailure(['ceil("a")'], ['E1013: Argument 1: type mismatch, expected number but got string', 'E1219: Float or Number required for argument 1'])
+  v9.CheckDefAndScriptFailure(['ceil("a")'], ['E1013: Argument 1: type mismatch, expected number but got string', 'E1219: Float or Number required for argument 1'])
   # cos()
-  CheckDefAndScriptFailure(['cos("a")'], ['E1013: Argument 1: type mismatch, expected number but got string', 'E1219: Float or Number required for argument 1'])
+  v9.CheckDefAndScriptFailure(['cos("a")'], ['E1013: Argument 1: type mismatch, expected number but got string', 'E1219: Float or Number required for argument 1'])
   # cosh()
-  CheckDefAndScriptFailure(['cosh("a")'], ['E1013: Argument 1: type mismatch, expected number but got string', 'E1219: Float or Number required for argument 1'])
+  v9.CheckDefAndScriptFailure(['cosh("a")'], ['E1013: Argument 1: type mismatch, expected number but got string', 'E1219: Float or Number required for argument 1'])
   # exp()
-  CheckDefAndScriptFailure(['exp("a")'], ['E1013: Argument 1: type mismatch, expected number but got string', 'E1219: Float or Number required for argument 1'])
+  v9.CheckDefAndScriptFailure(['exp("a")'], ['E1013: Argument 1: type mismatch, expected number but got string', 'E1219: Float or Number required for argument 1'])
   # float2nr()
-  CheckDefAndScriptFailure(['float2nr("a")'], ['E1013: Argument 1: type mismatch, expected number but got string', 'E1219: Float or Number required for argument 1'])
+  v9.CheckDefAndScriptFailure(['float2nr("a")'], ['E1013: Argument 1: type mismatch, expected number but got string', 'E1219: Float or Number required for argument 1'])
   # floor()
-  CheckDefAndScriptFailure(['floor("a")'], ['E1013: Argument 1: type mismatch, expected number but got string', 'E1219: Float or Number required for argument 1'])
+  v9.CheckDefAndScriptFailure(['floor("a")'], ['E1013: Argument 1: type mismatch, expected number but got string', 'E1219: Float or Number required for argument 1'])
   # fmod()
-  CheckDefAndScriptFailure(['fmod(1.1, "a")'], ['E1013: Argument 2: type mismatch, expected number but got string', 'E1219: Float or Number required for argument 2'])
-  CheckDefAndScriptFailure(['fmod("a", 1.1)'], ['E1013: Argument 1: type mismatch, expected number but got string', 'E1219: Float or Number required for argument 1'])
-  CheckDefAndScriptFailure(['fmod(1.1)'], ['E119:', 'E119:'])
+  v9.CheckDefAndScriptFailure(['fmod(1.1, "a")'], ['E1013: Argument 2: type mismatch, expected number but got string', 'E1219: Float or Number required for argument 2'])
+  v9.CheckDefAndScriptFailure(['fmod("a", 1.1)'], ['E1013: Argument 1: type mismatch, expected number but got string', 'E1219: Float or Number required for argument 1'])
+  v9.CheckDefAndScriptFailure(['fmod(1.1)'], ['E119:', 'E119:'])
   # isinf()
-  CheckDefAndScriptFailure(['isinf("a")'], ['E1013: Argument 1: type mismatch, expected number but got string', 'E1219: Float or Number required for argument 1'])
+  v9.CheckDefAndScriptFailure(['isinf("a")'], ['E1013: Argument 1: type mismatch, expected number but got string', 'E1219: Float or Number required for argument 1'])
   # isnan()
-  CheckDefAndScriptFailure(['isnan("a")'], ['E1013: Argument 1: type mismatch, expected number but got string', 'E1219: Float or Number required for argument 1'])
+  v9.CheckDefAndScriptFailure(['isnan("a")'], ['E1013: Argument 1: type mismatch, expected number but got string', 'E1219: Float or Number required for argument 1'])
   # log()
-  CheckDefAndScriptFailure(['log("a")'], ['E1013: Argument 1: type mismatch, expected number but got string', 'E1219: Float or Number required for argument 1'])
+  v9.CheckDefAndScriptFailure(['log("a")'], ['E1013: Argument 1: type mismatch, expected number but got string', 'E1219: Float or Number required for argument 1'])
   # log10()
-  CheckDefAndScriptFailure(['log10("a")'], ['E1013: Argument 1: type mismatch, expected number but got string', 'E1219: Float or Number required for argument 1'])
+  v9.CheckDefAndScriptFailure(['log10("a")'], ['E1013: Argument 1: type mismatch, expected number but got string', 'E1219: Float or Number required for argument 1'])
   # pow()
-  CheckDefAndScriptFailure(['pow("a", 1.1)'], ['E1013: Argument 1: type mismatch, expected number but got string', 'E1219: Float or Number required for argument 1'])
-  CheckDefAndScriptFailure(['pow(1.1, "a")'], ['E1013: Argument 2: type mismatch, expected number but got string', 'E1219: Float or Number required for argument 2'])
-  CheckDefAndScriptFailure(['pow(1.1)'], ['E119:', 'E119:'])
+  v9.CheckDefAndScriptFailure(['pow("a", 1.1)'], ['E1013: Argument 1: type mismatch, expected number but got string', 'E1219: Float or Number required for argument 1'])
+  v9.CheckDefAndScriptFailure(['pow(1.1, "a")'], ['E1013: Argument 2: type mismatch, expected number but got string', 'E1219: Float or Number required for argument 2'])
+  v9.CheckDefAndScriptFailure(['pow(1.1)'], ['E119:', 'E119:'])
   # round()
-  CheckDefAndScriptFailure(['round("a")'], ['E1013: Argument 1: type mismatch, expected number but got string', 'E1219: Float or Number required for argument 1'])
+  v9.CheckDefAndScriptFailure(['round("a")'], ['E1013: Argument 1: type mismatch, expected number but got string', 'E1219: Float or Number required for argument 1'])
   # sin()
-  CheckDefAndScriptFailure(['sin("a")'], ['E1013: Argument 1: type mismatch, expected number but got string', 'E1219: Float or Number required for argument 1'])
+  v9.CheckDefAndScriptFailure(['sin("a")'], ['E1013: Argument 1: type mismatch, expected number but got string', 'E1219: Float or Number required for argument 1'])
   # sinh()
-  CheckDefAndScriptFailure(['sinh("a")'], ['E1013: Argument 1: type mismatch, expected number but got string', 'E1219: Float or Number required for argument 1'])
+  v9.CheckDefAndScriptFailure(['sinh("a")'], ['E1013: Argument 1: type mismatch, expected number but got string', 'E1219: Float or Number required for argument 1'])
   # sqrt()
-  CheckDefAndScriptFailure(['sqrt("a")'], ['E1013: Argument 1: type mismatch, expected number but got string', 'E1219: Float or Number required for argument 1'])
+  v9.CheckDefAndScriptFailure(['sqrt("a")'], ['E1013: Argument 1: type mismatch, expected number but got string', 'E1219: Float or Number required for argument 1'])
   # tan()
-  CheckDefAndScriptFailure(['tan("a")'], ['E1013: Argument 1: type mismatch, expected number but got string', 'E1219: Float or Number required for argument 1'])
+  v9.CheckDefAndScriptFailure(['tan("a")'], ['E1013: Argument 1: type mismatch, expected number but got string', 'E1219: Float or Number required for argument 1'])
   # tanh()
-  CheckDefAndScriptFailure(['tanh("a")'], ['E1013: Argument 1: type mismatch, expected number but got string', 'E1219: Float or Number required for argument 1'])
+  v9.CheckDefAndScriptFailure(['tanh("a")'], ['E1013: Argument 1: type mismatch, expected number but got string', 'E1219: Float or Number required for argument 1'])
   # trunc()
-  CheckDefAndScriptFailure(['trunc("a")'], ['E1013: Argument 1: type mismatch, expected number but got string', 'E1219: Float or Number required for argument 1'])
+  v9.CheckDefAndScriptFailure(['trunc("a")'], ['E1013: Argument 1: type mismatch, expected number but got string', 'E1219: Float or Number required for argument 1'])
 enddef
 
 def Test_fnameescape()
-  CheckDefAndScriptFailure(['fnameescape(10)'], ['E1013: Argument 1: type mismatch, expected string but got number', 'E1174: String required for argument 1'])
+  v9.CheckDefAndScriptFailure(['fnameescape(10)'], ['E1013: Argument 1: type mismatch, expected string but got number', 'E1174: String required for argument 1'])
   assert_equal('\+a\%b\|', fnameescape('+a%b|'))
   fnameescape('')->assert_equal('')
 enddef
 
 def Test_fnamemodify()
-  CheckDefSuccess(['echo fnamemodify(test_null_string(), ":p")'])
-  CheckDefSuccess(['echo fnamemodify("", ":p")'])
-  CheckDefSuccess(['echo fnamemodify("file", test_null_string())'])
-  CheckDefSuccess(['echo fnamemodify("file", "")'])
+  v9.CheckDefSuccess(['echo fnamemodify(test_null_string(), ":p")'])
+  v9.CheckDefSuccess(['echo fnamemodify("", ":p")'])
+  v9.CheckDefSuccess(['echo fnamemodify("file", test_null_string())'])
+  v9.CheckDefSuccess(['echo fnamemodify("file", "")'])
 
-  CheckDefExecFailure(['echo fnamemodify(true, ":p")'], 'E1013: Argument 1: type mismatch, expected string but got bool')
-  CheckDefExecFailure(['echo fnamemodify(v:null, ":p")'], 'E1013: Argument 1: type mismatch, expected string but got special')
-  CheckDefExecFailure(['echo fnamemodify("file", true)'],  'E1013: Argument 2: type mismatch, expected string but got bool')
+  v9.CheckDefExecFailure(['echo fnamemodify(true, ":p")'], 'E1013: Argument 1: type mismatch, expected string but got bool')
+  v9.CheckDefExecFailure(['echo fnamemodify(v:null, ":p")'], 'E1013: Argument 1: type mismatch, expected string but got special')
+  v9.CheckDefExecFailure(['echo fnamemodify("file", true)'],  'E1013: Argument 2: type mismatch, expected string but got bool')
 enddef
 
 def Wrong_dict_key_type(items: list<number>): list<number>
@@ -1274,8 +1280,8 @@
 enddef
 
 def Test_filter()
-  CheckDefAndScriptFailure(['filter(1.1, "1")'], ['E1013: Argument 1: type mismatch, expected list<any> but got float', 'E1251: List, Dictionary, Blob or String required for argument 1'])
-  CheckDefAndScriptFailure(['filter([1, 2], 4)'], ['E1256: String or function required for argument 2', 'E1024: Using a Number as a String'])
+  v9.CheckDefAndScriptFailure(['filter(1.1, "1")'], ['E1013: Argument 1: type mismatch, expected list<any> but got float', 'E1251: List, Dictionary, Blob or String required for argument 1'])
+  v9.CheckDefAndScriptFailure(['filter([1, 2], 4)'], ['E1256: String or function required for argument 2', 'E1024: Using a Number as a String'])
 
   var lines =<< trim END
     def F(i: number, v: any): string
@@ -1283,7 +1289,7 @@
     enddef
     echo filter([1, 2, 3], F)
   END
-  CheckDefAndScriptFailure(lines, ['E1013: Argument 2: type mismatch, expected func(...): bool', 'E1135: Using a String as a Bool:'])
+  v9.CheckDefAndScriptFailure(lines, ['E1013: Argument 2: type mismatch, expected func(...): bool', 'E1135: Using a String as a Bool:'])
 
   assert_equal([], filter([1, 2, 3], '0'))
   assert_equal([1, 2, 3], filter([1, 2, 3], '1'))
@@ -1316,29 +1322,29 @@
 enddef
 
 def Test_foldclosed()
-  CheckDefAndScriptFailure(['foldclosed(function("min"))'], ['E1013: Argument 1: type mismatch, expected string but got func(...): unknown', 'E1220: String or Number required for argument 1'])
-  CheckDefExecAndScriptFailure(['foldclosed("")'], 'E1209: Invalid value for a line number')
+  v9.CheckDefAndScriptFailure(['foldclosed(function("min"))'], ['E1013: Argument 1: type mismatch, expected string but got func(...): unknown', 'E1220: String or Number required for argument 1'])
+  v9.CheckDefExecAndScriptFailure(['foldclosed("")'], 'E1209: Invalid value for a line number')
   assert_equal(-1, foldclosed(1))
   assert_equal(-1, foldclosed('$'))
 enddef
 
 def Test_foldclosedend()
-  CheckDefAndScriptFailure(['foldclosedend(true)'], ['E1013: Argument 1: type mismatch, expected string but got bool', 'E1220: String or Number required for argument 1'])
-  CheckDefExecAndScriptFailure(['foldclosedend("")'], 'E1209: Invalid value for a line number')
+  v9.CheckDefAndScriptFailure(['foldclosedend(true)'], ['E1013: Argument 1: type mismatch, expected string but got bool', 'E1220: String or Number required for argument 1'])
+  v9.CheckDefExecAndScriptFailure(['foldclosedend("")'], 'E1209: Invalid value for a line number')
   assert_equal(-1, foldclosedend(1))
   assert_equal(-1, foldclosedend('w0'))
 enddef
 
 def Test_foldlevel()
-  CheckDefAndScriptFailure(['foldlevel(0z10)'], ['E1013: Argument 1: type mismatch, expected string but got blob', 'E1220: String or Number required for argument 1'])
-  CheckDefExecAndScriptFailure(['foldlevel("")'], 'E1209: Invalid value for a line number')
+  v9.CheckDefAndScriptFailure(['foldlevel(0z10)'], ['E1013: Argument 1: type mismatch, expected string but got blob', 'E1220: String or Number required for argument 1'])
+  v9.CheckDefExecAndScriptFailure(['foldlevel("")'], 'E1209: Invalid value for a line number')
   assert_equal(0, foldlevel(1))
   assert_equal(0, foldlevel('.'))
 enddef
 
 def Test_foldtextresult()
-  CheckDefAndScriptFailure(['foldtextresult(1.1)'], ['E1013: Argument 1: type mismatch, expected string but got float', 'E1220: String or Number required for argument 1'])
-  CheckDefExecAndScriptFailure(['foldtextresult("")'], 'E1209: Invalid value for a line number')
+  v9.CheckDefAndScriptFailure(['foldtextresult(1.1)'], ['E1013: Argument 1: type mismatch, expected string but got float', 'E1220: String or Number required for argument 1'])
+  v9.CheckDefExecAndScriptFailure(['foldtextresult("")'], 'E1209: Invalid value for a line number')
   assert_equal('', foldtextresult(1))
   assert_equal('', foldtextresult('.'))
 enddef
@@ -1368,8 +1374,8 @@
 enddef
 
 def Test_funcref()
-  CheckDefAndScriptFailure(['funcref("reverse", 2)'], ['E1013: Argument 2: type mismatch, expected list<any> but got number', 'E1211: List required for argument 2'])
-  CheckDefAndScriptFailure(['funcref("reverse", [2], [1])'], ['E1013: Argument 3: type mismatch, expected dict<any> but got list<number>', 'E1206: Dictionary required for argument 3'])
+  v9.CheckDefAndScriptFailure(['funcref("reverse", 2)'], ['E1013: Argument 2: type mismatch, expected list<any> but got number', 'E1211: List required for argument 2'])
+  v9.CheckDefAndScriptFailure(['funcref("reverse", [2], [1])'], ['E1013: Argument 3: type mismatch, expected dict<any> but got list<number>', 'E1206: Dictionary required for argument 3'])
 
   var lines =<< trim END
       vim9script
@@ -1386,7 +1392,7 @@
       defcompile
       GetRefOk()
   END
-  CheckScriptSuccess(lines)
+  v9.CheckScriptSuccess(lines)
 
   lines =<< trim END
       vim9script
@@ -1398,14 +1404,14 @@
       enddef
       GetRefBad()
   END
-  CheckScriptFailure(lines, 'E1012: Type mismatch; expected func(number) but got func(bool)')
+  v9.CheckScriptFailure(lines, 'E1012: Type mismatch; expected func(number) but got func(bool)')
 enddef
 
 def Test_function()
-  CheckDefExecAndScriptFailure(['function(123)'], 'E1256: String or function required for argument 1')
+  v9.CheckDefExecAndScriptFailure(['function(123)'], 'E1256: String or function required for argument 1')
 
-  CheckDefAndScriptFailure(['function("reverse", 2)'], ['E1013: Argument 2: type mismatch, expected list<any> but got number', 'E1211: List required for argument 2'])
-  CheckDefAndScriptFailure(['function("reverse", [2], [1])'], ['E1013: Argument 3: type mismatch, expected dict<any> but got list<number>', 'E1206: Dictionary required for argument 3'])
+  v9.CheckDefAndScriptFailure(['function("reverse", 2)'], ['E1013: Argument 2: type mismatch, expected list<any> but got number', 'E1211: List required for argument 2'])
+  v9.CheckDefAndScriptFailure(['function("reverse", [2], [1])'], ['E1013: Argument 3: type mismatch, expected dict<any> but got list<number>', 'E1206: Dictionary required for argument 3'])
 
   var lines =<< trim END
       vim9script
@@ -1422,7 +1428,7 @@
       defcompile
       GetRefOk()
   END
-  CheckScriptSuccess(lines)
+  v9.CheckScriptSuccess(lines)
 
   lines =<< trim END
       vim9script
@@ -1434,17 +1440,17 @@
       enddef
       GetRefBad()
   END
-  CheckScriptFailure(lines, 'E1012: Type mismatch; expected func(number) but got func(bool)')
+  v9.CheckScriptFailure(lines, 'E1012: Type mismatch; expected func(number) but got func(bool)')
 enddef
 
 def Test_garbagecollect()
   garbagecollect(true)
-  CheckDefAndScriptFailure(['garbagecollect("1")'], ['E1013: Argument 1: type mismatch, expected bool but got string', 'E1212: Bool required for argument 1'])
-  CheckDefAndScriptFailure(['garbagecollect(20)'], ['E1013: Argument 1: type mismatch, expected bool but got number', 'E1212: Bool required for argument 1'])
+  v9.CheckDefAndScriptFailure(['garbagecollect("1")'], ['E1013: Argument 1: type mismatch, expected bool but got string', 'E1212: Bool required for argument 1'])
+  v9.CheckDefAndScriptFailure(['garbagecollect(20)'], ['E1013: Argument 1: type mismatch, expected bool but got number', 'E1212: Bool required for argument 1'])
 enddef
 
 def Test_get()
-  CheckDefAndScriptFailure(['get("a", 1)'], ['E1013: Argument 1: type mismatch, expected list<any> but got string', 'E896: Argument of get() must be a List, Dictionary or Blob'])
+  v9.CheckDefAndScriptFailure(['get("a", 1)'], ['E1013: Argument 1: type mismatch, expected list<any> but got string', 'E896: Argument of get() must be a List, Dictionary or Blob'])
   [3, 5, 2]->get(1)->assert_equal(5)
   [3, 5, 2]->get(3)->assert_equal(0)
   [3, 5, 2]->get(3, 9)->assert_equal(9)
@@ -1464,7 +1470,7 @@
       enddef
       assert_equal(0, DoThat())
   END
-  CheckScriptSuccess(lines)
+  v9.CheckScriptSuccess(lines)
 enddef
 
 def Test_getbufinfo()
@@ -1477,7 +1483,7 @@
   getbufinfo({bufloaded: true, buflisted: true, bufmodified: false})
       ->len()->assert_equal(3)
   bwipe Xtestfile1 Xtestfile2
-  CheckDefAndScriptFailure(['getbufinfo(true)'], ['E1013: Argument 1: type mismatch, expected string but got bool', 'E1174: String required for argument 1'])
+  v9.CheckDefAndScriptFailure(['getbufinfo(true)'], ['E1013: Argument 1: type mismatch, expected string but got bool', 'E1174: String required for argument 1'])
 enddef
 
 def Test_getbufline()
@@ -1494,14 +1500,14 @@
   assert_fails('getbufline("", "$", "$b")', ['E1030: Using a String as a Number: "$b"', 'E1030: Using a String as a Number: "$b"'])
   bwipe!
 
-  CheckDefAndScriptFailure(['getbufline([], 2)'], ['E1013: Argument 1: type mismatch, expected string but got list<unknown>', 'E1220: String or Number required for argument 1'])
-  CheckDefAndScriptFailure(['getbufline("a", [])'], ['E1013: Argument 2: type mismatch, expected string but got list<unknown>', 'E1220: String or Number required for argument 2'])
-  CheckDefAndScriptFailure(['getbufline("a", 2, 0z10)'], ['E1013: Argument 3: type mismatch, expected string but got blob', 'E1220: String or Number required for argument 3'])
+  v9.CheckDefAndScriptFailure(['getbufline([], 2)'], ['E1013: Argument 1: type mismatch, expected string but got list<unknown>', 'E1220: String or Number required for argument 1'])
+  v9.CheckDefAndScriptFailure(['getbufline("a", [])'], ['E1013: Argument 2: type mismatch, expected string but got list<unknown>', 'E1220: String or Number required for argument 2'])
+  v9.CheckDefAndScriptFailure(['getbufline("a", 2, 0z10)'], ['E1013: Argument 3: type mismatch, expected string but got blob', 'E1220: String or Number required for argument 3'])
 enddef
 
 def Test_getbufvar()
-  CheckDefAndScriptFailure(['getbufvar(true, "v")'], ['E1013: Argument 1: type mismatch, expected string but got bool', 'E1220: String or Number required for argument 1'])
-  CheckDefAndScriptFailure(['getbufvar(1, 2, 3)'], ['E1013: Argument 2: type mismatch, expected string but got number', 'E1174: String required for argument 2'])
+  v9.CheckDefAndScriptFailure(['getbufvar(true, "v")'], ['E1013: Argument 1: type mismatch, expected string but got bool', 'E1220: String or Number required for argument 1'])
+  v9.CheckDefAndScriptFailure(['getbufvar(1, 2, 3)'], ['E1013: Argument 2: type mismatch, expected string but got number', 'E1174: String required for argument 2'])
 enddef
 
 def Test_getchangelist()
@@ -1517,19 +1523,19 @@
   endwhile
   getchar(true)->assert_equal(0)
   getchar(1)->assert_equal(0)
-  CheckDefAndScriptFailure(['getchar(2)'], ['E1013: Argument 1: type mismatch, expected bool but got number', 'E1212: Bool required for argument 1'])
-  CheckDefAndScriptFailure(['getchar("1")'], ['E1013: Argument 1: type mismatch, expected bool but got string', 'E1212: Bool required for argument 1'])
+  v9.CheckDefAndScriptFailure(['getchar(2)'], ['E1013: Argument 1: type mismatch, expected bool but got number', 'E1212: Bool required for argument 1'])
+  v9.CheckDefAndScriptFailure(['getchar("1")'], ['E1013: Argument 1: type mismatch, expected bool but got string', 'E1212: Bool required for argument 1'])
 enddef
 
 def Test_getcharpos()
-  CheckDefAndScriptFailure(['getcharpos(true)'], ['E1013: Argument 1: type mismatch, expected string but got bool', 'E1174: String required for argument 1'])
-  CheckDefAndScriptFailure(['getcharpos(1)'], ['E1013: Argument 1: type mismatch, expected string but got number', 'E1174: String required for argument 1'])
-  CheckDefExecAndScriptFailure(['getcharpos("")'], 'E1209: Invalid value for a line number')
+  v9.CheckDefAndScriptFailure(['getcharpos(true)'], ['E1013: Argument 1: type mismatch, expected string but got bool', 'E1174: String required for argument 1'])
+  v9.CheckDefAndScriptFailure(['getcharpos(1)'], ['E1013: Argument 1: type mismatch, expected string but got number', 'E1174: String required for argument 1'])
+  v9.CheckDefExecAndScriptFailure(['getcharpos("")'], 'E1209: Invalid value for a line number')
 enddef
 
 def Test_getcharstr()
-  CheckDefAndScriptFailure(['getcharstr(2)'], ['E1013: Argument 1: type mismatch, expected bool but got number', 'E1212: Bool required for argument 1'])
-  CheckDefAndScriptFailure(['getcharstr("1")'], ['E1013: Argument 1: type mismatch, expected bool but got string', 'E1212: Bool required for argument 1'])
+  v9.CheckDefAndScriptFailure(['getcharstr(2)'], ['E1013: Argument 1: type mismatch, expected bool but got number', 'E1212: Bool required for argument 1'])
+  v9.CheckDefAndScriptFailure(['getcharstr("1")'], ['E1013: Argument 1: type mismatch, expected bool but got string', 'E1212: Bool required for argument 1'])
 enddef
 
 def Test_getcompletion()
@@ -1537,25 +1543,25 @@
   var l = getcompletion('run', 'file', true)
   l->assert_equal([])
   set wildignore&
-  CheckDefAndScriptFailure(['getcompletion(1, "b")'], ['E1013: Argument 1: type mismatch, expected string but got number', 'E1174: String required for argument 1'])
-  CheckDefAndScriptFailure(['getcompletion("a", 2)'], ['E1013: Argument 2: type mismatch, expected string but got number', 'E1174: String required for argument 2'])
-  CheckDefAndScriptFailure(['getcompletion("a", "b", 2)'], ['E1013: Argument 3: type mismatch, expected bool but got number', 'E1212: Bool required for argument 3'])
-  CheckDefExecAndScriptFailure(['getcompletion("a", "")'], 'E475: Invalid argument')
+  v9.CheckDefAndScriptFailure(['getcompletion(1, "b")'], ['E1013: Argument 1: type mismatch, expected string but got number', 'E1174: String required for argument 1'])
+  v9.CheckDefAndScriptFailure(['getcompletion("a", 2)'], ['E1013: Argument 2: type mismatch, expected string but got number', 'E1174: String required for argument 2'])
+  v9.CheckDefAndScriptFailure(['getcompletion("a", "b", 2)'], ['E1013: Argument 3: type mismatch, expected bool but got number', 'E1212: Bool required for argument 3'])
+  v9.CheckDefExecAndScriptFailure(['getcompletion("a", "")'], 'E475: Invalid argument')
   getcompletion('', 'messages')->assert_equal(['clear'])
 enddef
 
 def Test_getcurpos()
-  CheckDefAndScriptFailure(['getcurpos("x")'], ['E1013: Argument 1: type mismatch, expected number but got string', 'E1210: Number required for argument 1'])
+  v9.CheckDefAndScriptFailure(['getcurpos("x")'], ['E1013: Argument 1: type mismatch, expected number but got string', 'E1210: Number required for argument 1'])
 enddef
 
 def Test_getcursorcharpos()
-  CheckDefAndScriptFailure(['getcursorcharpos("x")'], ['E1013: Argument 1: type mismatch, expected number but got string', 'E1210: Number required for argument 1'])
+  v9.CheckDefAndScriptFailure(['getcursorcharpos("x")'], ['E1013: Argument 1: type mismatch, expected number but got string', 'E1210: Number required for argument 1'])
 enddef
 
 def Test_getcwd()
-  CheckDefAndScriptFailure(['getcwd("x")'], ['E1013: Argument 1: type mismatch, expected number but got string', 'E1210: Number required for argument 1'])
-  CheckDefAndScriptFailure(['getcwd("x", 1)'], ['E1013: Argument 1: type mismatch, expected number but got string', 'E1210: Number required for argument 1'])
-  CheckDefAndScriptFailure(['getcwd(1, "x")'], ['E1013: Argument 2: type mismatch, expected number but got string', 'E1210: Number required for argument 2'])
+  v9.CheckDefAndScriptFailure(['getcwd("x")'], ['E1013: Argument 1: type mismatch, expected number but got string', 'E1210: Number required for argument 1'])
+  v9.CheckDefAndScriptFailure(['getcwd("x", 1)'], ['E1013: Argument 1: type mismatch, expected number but got string', 'E1210: Number required for argument 1'])
+  v9.CheckDefAndScriptFailure(['getcwd(1, "x")'], ['E1013: Argument 2: type mismatch, expected number but got string', 'E1210: Number required for argument 2'])
 enddef
 
 def Test_getenv()
@@ -1573,7 +1579,7 @@
 enddef
 
 def Test_getfontname()
-  CheckDefAndScriptFailure(['getfontname(10)'], ['E1013: Argument 1: type mismatch, expected string but got number', 'E1174: String required for argument 1'])
+  v9.CheckDefAndScriptFailure(['getfontname(10)'], ['E1013: Argument 1: type mismatch, expected string but got number', 'E1174: String required for argument 1'])
   #getfontname('')->assert_equal('')
 enddef
 
@@ -1581,38 +1587,38 @@
   assert_equal('', getfperm(""))
   assert_equal('', getfperm(test_null_string()))
 
-  CheckDefExecFailure(['echo getfperm(true)'], 'E1013:')
-  CheckDefExecFailure(['echo getfperm(v:null)'], 'E1013:')
+  v9.CheckDefExecFailure(['echo getfperm(true)'], 'E1013:')
+  v9.CheckDefExecFailure(['echo getfperm(v:null)'], 'E1013:')
 enddef
 
 def Test_getfsize()
   assert_equal(-1, getfsize(""))
   assert_equal(-1, getfsize(test_null_string()))
 
-  CheckDefExecFailure(['echo getfsize(true)'], 'E1013:')
-  CheckDefExecFailure(['echo getfsize(v:null)'], 'E1013:')
+  v9.CheckDefExecFailure(['echo getfsize(true)'], 'E1013:')
+  v9.CheckDefExecFailure(['echo getfsize(v:null)'], 'E1013:')
 enddef
 
 def Test_getftime()
   assert_equal(-1, getftime(""))
   assert_equal(-1, getftime(test_null_string()))
 
-  CheckDefExecFailure(['echo getftime(true)'], 'E1013:')
-  CheckDefExecFailure(['echo getftime(v:null)'], 'E1013:')
+  v9.CheckDefExecFailure(['echo getftime(true)'], 'E1013:')
+  v9.CheckDefExecFailure(['echo getftime(v:null)'], 'E1013:')
 enddef
 
 def Test_getftype()
   assert_equal('', getftype(""))
   assert_equal('', getftype(test_null_string()))
 
-  CheckDefExecFailure(['echo getftype(true)'], 'E1013:')
-  CheckDefExecFailure(['echo getftype(v:null)'], 'E1013:')
+  v9.CheckDefExecFailure(['echo getftype(true)'], 'E1013:')
+  v9.CheckDefExecFailure(['echo getftype(v:null)'], 'E1013:')
 enddef
 
 def Test_getjumplist()
-  CheckDefAndScriptFailure(['getjumplist("x")'], ['E1013: Argument 1: type mismatch, expected number but got string', 'E1210: Number required for argument 1'])
-  CheckDefAndScriptFailure(['getjumplist("x", 1)'], ['E1013: Argument 1: type mismatch, expected number but got string', 'E1210: Number required for argument 1'])
-  CheckDefAndScriptFailure(['getjumplist(1, "x")'], ['E1013: Argument 2: type mismatch, expected number but got string', 'E1210: Number required for argument 2'])
+  v9.CheckDefAndScriptFailure(['getjumplist("x")'], ['E1013: Argument 1: type mismatch, expected number but got string', 'E1210: Number required for argument 1'])
+  v9.CheckDefAndScriptFailure(['getjumplist("x", 1)'], ['E1013: Argument 1: type mismatch, expected number but got string', 'E1210: Number required for argument 1'])
+  v9.CheckDefAndScriptFailure(['getjumplist(1, "x")'], ['E1013: Argument 2: type mismatch, expected number but got string', 'E1210: Number required for argument 2'])
 enddef
 
 def Test_getline()
@@ -1626,20 +1632,20 @@
       assert_equal('there', getline("'<"))
       assert_equal('again', getline("'>"))
   END
-  CheckDefAndScriptSuccess(lines)
+  v9.CheckDefAndScriptSuccess(lines)
 
   lines =<< trim END
       echo getline('1')
   END
-  CheckDefExecAndScriptFailure(lines, 'E1209:')
-  CheckDefAndScriptFailure(['getline(true)'], ['E1013: Argument 1: type mismatch, expected string but got bool', 'E1220: String or Number required for argument 1'])
-  CheckDefAndScriptFailure(['getline(1, true)'], ['E1013: Argument 2: type mismatch, expected string but got bool', 'E1220: String or Number required for argument 2'])
-  CheckDefExecAndScriptFailure(['getline("")'], 'E1209: Invalid value for a line number')
+  v9.CheckDefExecAndScriptFailure(lines, 'E1209:')
+  v9.CheckDefAndScriptFailure(['getline(true)'], ['E1013: Argument 1: type mismatch, expected string but got bool', 'E1220: String or Number required for argument 1'])
+  v9.CheckDefAndScriptFailure(['getline(1, true)'], ['E1013: Argument 2: type mismatch, expected string but got bool', 'E1220: String or Number required for argument 2'])
+  v9.CheckDefExecAndScriptFailure(['getline("")'], 'E1209: Invalid value for a line number')
 enddef
 
 def Test_getloclist()
-  CheckDefAndScriptFailure(['getloclist("x")'], ['E1013: Argument 1: type mismatch, expected number but got string', 'E1210: Number required for argument 1'])
-  CheckDefAndScriptFailure(['getloclist(1, [])'], ['E1013: Argument 2: type mismatch, expected dict<any> but got list<unknown>', 'E1206: Dictionary required for argument 2'])
+  v9.CheckDefAndScriptFailure(['getloclist("x")'], ['E1013: Argument 1: type mismatch, expected number but got string', 'E1210: Number required for argument 1'])
+  v9.CheckDefAndScriptFailure(['getloclist(1, [])'], ['E1013: Argument 2: type mismatch, expected dict<any> but got list<unknown>', 'E1206: Dictionary required for argument 2'])
 enddef
 
 def Test_getloclist_return_type()
@@ -1651,24 +1657,24 @@
 enddef
 
 def Test_getmarklist()
-  CheckDefAndScriptFailure(['getmarklist([])'], ['E1013: Argument 1: type mismatch, expected string but got list<unknown>', 'E1220: String or Number required for argument 1'])
+  v9.CheckDefAndScriptFailure(['getmarklist([])'], ['E1013: Argument 1: type mismatch, expected string but got list<unknown>', 'E1220: String or Number required for argument 1'])
   assert_equal([], getmarklist(10000))
   assert_fails('getmarklist("a%b@#")', 'E94:')
 enddef
 
 def Test_getmatches()
-  CheckDefAndScriptFailure(['getmatches("x")'], ['E1013: Argument 1: type mismatch, expected number but got string', 'E1210: Number required for argument 1'])
+  v9.CheckDefAndScriptFailure(['getmatches("x")'], ['E1013: Argument 1: type mismatch, expected number but got string', 'E1210: Number required for argument 1'])
 enddef
 
 def Test_getpos()
-  CheckDefAndScriptFailure(['getpos(10)'], ['E1013: Argument 1: type mismatch, expected string but got number', 'E1174: String required for argument 1'])
+  v9.CheckDefAndScriptFailure(['getpos(10)'], ['E1013: Argument 1: type mismatch, expected string but got number', 'E1174: String required for argument 1'])
   assert_equal([0, 1, 1, 0], getpos('.'))
-  CheckDefExecFailure(['getpos("a")'], 'E1209:')
-  CheckDefExecAndScriptFailure(['getpos("")'], 'E1209: Invalid value for a line number')
+  v9.CheckDefExecFailure(['getpos("a")'], 'E1209:')
+  v9.CheckDefExecAndScriptFailure(['getpos("")'], 'E1209: Invalid value for a line number')
 enddef
 
 def Test_getqflist()
-  CheckDefAndScriptFailure(['getqflist([])'], ['E1013: Argument 1: type mismatch, expected dict<any> but got list<unknown>', 'E1206: Dictionary required for argument 1'])
+  v9.CheckDefAndScriptFailure(['getqflist([])'], ['E1013: Argument 1: type mismatch, expected dict<any> but got list<unknown>', 'E1206: Dictionary required for argument 1'])
   call assert_equal({}, getqflist({}))
 enddef
 
@@ -1685,9 +1691,9 @@
   setreg('a', lines)
   getreg('a', true, true)->assert_equal(lines)
   assert_fails('getreg("ab")', 'E1162:')
-  CheckDefAndScriptFailure(['getreg(1)'], ['E1013: Argument 1: type mismatch, expected string but got number', 'E1174: String required for argument 1'])
-  CheckDefAndScriptFailure(['getreg(".", 2)'], ['E1013: Argument 2: type mismatch, expected bool but got number', 'E1212: Bool required for argument 2'])
-  CheckDefAndScriptFailure(['getreg(".", 1, "b")'], ['E1013: Argument 3: type mismatch, expected bool but got string', 'E1212: Bool required for argument 3'])
+  v9.CheckDefAndScriptFailure(['getreg(1)'], ['E1013: Argument 1: type mismatch, expected string but got number', 'E1174: String required for argument 1'])
+  v9.CheckDefAndScriptFailure(['getreg(".", 2)'], ['E1013: Argument 2: type mismatch, expected bool but got number', 'E1212: Bool required for argument 2'])
+  v9.CheckDefAndScriptFailure(['getreg(".", 1, "b")'], ['E1013: Argument 3: type mismatch, expected bool but got string', 'E1212: Bool required for argument 3'])
   @" = 'A1B2C3'
   getreg('')->assert_equal('A1B2C3')
 enddef
@@ -1717,72 +1723,72 @@
 enddef
 
 def Test_gettabinfo()
-  CheckDefAndScriptFailure(['gettabinfo("x")'], ['E1013: Argument 1: type mismatch, expected number but got string', 'E1210: Number required for argument 1'])
+  v9.CheckDefAndScriptFailure(['gettabinfo("x")'], ['E1013: Argument 1: type mismatch, expected number but got string', 'E1210: Number required for argument 1'])
 enddef
 
 def Test_gettabvar()
-  CheckDefAndScriptFailure(['gettabvar("a", "b")'], ['E1013: Argument 1: type mismatch, expected number but got string', 'E1210: Number required for argument 1'])
-  CheckDefAndScriptFailure(['gettabvar(1, 2)'], ['E1013: Argument 2: type mismatch, expected string but got number', 'E1174: String required for argument 2'])
+  v9.CheckDefAndScriptFailure(['gettabvar("a", "b")'], ['E1013: Argument 1: type mismatch, expected number but got string', 'E1210: Number required for argument 1'])
+  v9.CheckDefAndScriptFailure(['gettabvar(1, 2)'], ['E1013: Argument 2: type mismatch, expected string but got number', 'E1174: String required for argument 2'])
 enddef
 
 def Test_gettabwinvar()
-  CheckDefAndScriptFailure(['gettabwinvar("a", 2, "c")'], ['E1013: Argument 1: type mismatch, expected number but got string', 'E1210: Number required for argument 1'])
-  CheckDefAndScriptFailure(['gettabwinvar(1, "b", "c", [])'], ['E1013: Argument 2: type mismatch, expected number but got string', 'E1210: Number required for argument 2'])
-  CheckDefAndScriptFailure(['gettabwinvar(1, 1, 3, {})'], ['E1013: Argument 3: type mismatch, expected string but got number', 'E1174: String required for argument 3'])
+  v9.CheckDefAndScriptFailure(['gettabwinvar("a", 2, "c")'], ['E1013: Argument 1: type mismatch, expected number but got string', 'E1210: Number required for argument 1'])
+  v9.CheckDefAndScriptFailure(['gettabwinvar(1, "b", "c", [])'], ['E1013: Argument 2: type mismatch, expected number but got string', 'E1210: Number required for argument 2'])
+  v9.CheckDefAndScriptFailure(['gettabwinvar(1, 1, 3, {})'], ['E1013: Argument 3: type mismatch, expected string but got number', 'E1174: String required for argument 3'])
 enddef
 
 def Test_gettagstack()
-  CheckDefAndScriptFailure(['gettagstack("x")'], ['E1013: Argument 1: type mismatch, expected number but got string', 'E1210: Number required for argument 1'])
+  v9.CheckDefAndScriptFailure(['gettagstack("x")'], ['E1013: Argument 1: type mismatch, expected number but got string', 'E1210: Number required for argument 1'])
 enddef
 
 def Test_gettext()
-  CheckDefAndScriptFailure(['gettext(10)'], ['E1013: Argument 1: type mismatch, expected string but got number', 'E1174: String required for argument 1'])
-  CheckDefExecAndScriptFailure(['gettext("")'], 'E475: Invalid argument')
+  v9.CheckDefAndScriptFailure(['gettext(10)'], ['E1013: Argument 1: type mismatch, expected string but got number', 'E1174: String required for argument 1'])
+  v9.CheckDefExecAndScriptFailure(['gettext("")'], 'E475: Invalid argument')
   assert_equal('abc', gettext("abc"))
   assert_fails('gettext("")', 'E475:')
 enddef
 
 def Test_getwininfo()
-  CheckDefAndScriptFailure(['getwininfo("x")'], ['E1013: Argument 1: type mismatch, expected number but got string', 'E1210: Number required for argument 1'])
+  v9.CheckDefAndScriptFailure(['getwininfo("x")'], ['E1013: Argument 1: type mismatch, expected number but got string', 'E1210: Number required for argument 1'])
 enddef
 
 def Test_getwinpos()
-  CheckDefAndScriptFailure(['getwinpos("x")'], ['E1013: Argument 1: type mismatch, expected number but got string', 'E1210: Number required for argument 1'])
+  v9.CheckDefAndScriptFailure(['getwinpos("x")'], ['E1013: Argument 1: type mismatch, expected number but got string', 'E1210: Number required for argument 1'])
 enddef
 
 def Test_getwinvar()
-  CheckDefAndScriptFailure(['getwinvar("a", "b")'], ['E1013: Argument 1: type mismatch, expected number but got string', 'E1210: Number required for argument 1'])
-  CheckDefAndScriptFailure(['getwinvar(1, 2)'], ['E1013: Argument 2: type mismatch, expected string but got number', 'E1174: String required for argument 2'])
+  v9.CheckDefAndScriptFailure(['getwinvar("a", "b")'], ['E1013: Argument 1: type mismatch, expected number but got string', 'E1210: Number required for argument 1'])
+  v9.CheckDefAndScriptFailure(['getwinvar(1, 2)'], ['E1013: Argument 2: type mismatch, expected string but got number', 'E1174: String required for argument 2'])
 enddef
 
 def Test_glob()
   glob('runtest.vim', true, true, true)->assert_equal(['runtest.vim'])
-  CheckDefAndScriptFailure(['glob(1)'], ['E1013: Argument 1: type mismatch, expected string but got number', 'E1174: String required for argument 1'])
-  CheckDefAndScriptFailure(['glob("a", 2)'], ['E1013: Argument 2: type mismatch, expected bool but got number', 'E1212: Bool required for argument 2'])
-  CheckDefAndScriptFailure(['glob("a", 1, "b")'], ['E1013: Argument 3: type mismatch, expected bool but got string', 'E1212: Bool required for argument 3'])
-  CheckDefAndScriptFailure(['glob("a", 1, true, 2)'], ['E1013: Argument 4: type mismatch, expected bool but got number', 'E1212: Bool required for argument 4'])
+  v9.CheckDefAndScriptFailure(['glob(1)'], ['E1013: Argument 1: type mismatch, expected string but got number', 'E1174: String required for argument 1'])
+  v9.CheckDefAndScriptFailure(['glob("a", 2)'], ['E1013: Argument 2: type mismatch, expected bool but got number', 'E1212: Bool required for argument 2'])
+  v9.CheckDefAndScriptFailure(['glob("a", 1, "b")'], ['E1013: Argument 3: type mismatch, expected bool but got string', 'E1212: Bool required for argument 3'])
+  v9.CheckDefAndScriptFailure(['glob("a", 1, true, 2)'], ['E1013: Argument 4: type mismatch, expected bool but got number', 'E1212: Bool required for argument 4'])
   glob('')->assert_equal('')
 enddef
 
 def Test_glob2regpat()
-  CheckDefAndScriptFailure(['glob2regpat(null)'], ['E1013: Argument 1: type mismatch, expected string but got special', 'E1174: String required for argument 1'])
+  v9.CheckDefAndScriptFailure(['glob2regpat(null)'], ['E1013: Argument 1: type mismatch, expected string but got special', 'E1174: String required for argument 1'])
   glob2regpat('')->assert_equal('^$')
 enddef
 
 def Test_globpath()
   globpath('.', 'runtest.vim', true, true, true)->assert_equal(['./runtest.vim'])
-  CheckDefAndScriptFailure(['globpath(1, "b")'], ['E1013: Argument 1: type mismatch, expected string but got number', 'E1174: String required for argument 1'])
-  CheckDefAndScriptFailure(['globpath("a", 2)'], ['E1013: Argument 2: type mismatch, expected string but got number', 'E1174: String required for argument 2'])
-  CheckDefAndScriptFailure(['globpath("a", "b", "c")'], ['E1013: Argument 3: type mismatch, expected bool but got string', 'E1212: Bool required for argument 3'])
-  CheckDefAndScriptFailure(['globpath("a", "b", true, "d")'], ['E1013: Argument 4: type mismatch, expected bool but got string', 'E1212: Bool required for argument 4'])
-  CheckDefAndScriptFailure(['globpath("a", "b", true, false, "e")'], ['E1013: Argument 5: type mismatch, expected bool but got string', 'E1212: Bool required for argument 5'])
+  v9.CheckDefAndScriptFailure(['globpath(1, "b")'], ['E1013: Argument 1: type mismatch, expected string but got number', 'E1174: String required for argument 1'])
+  v9.CheckDefAndScriptFailure(['globpath("a", 2)'], ['E1013: Argument 2: type mismatch, expected string but got number', 'E1174: String required for argument 2'])
+  v9.CheckDefAndScriptFailure(['globpath("a", "b", "c")'], ['E1013: Argument 3: type mismatch, expected bool but got string', 'E1212: Bool required for argument 3'])
+  v9.CheckDefAndScriptFailure(['globpath("a", "b", true, "d")'], ['E1013: Argument 4: type mismatch, expected bool but got string', 'E1212: Bool required for argument 4'])
+  v9.CheckDefAndScriptFailure(['globpath("a", "b", true, false, "e")'], ['E1013: Argument 5: type mismatch, expected bool but got string', 'E1212: Bool required for argument 5'])
   globpath('', '')->assert_equal('')
 enddef
 
 def Test_has()
   has('eval', true)->assert_equal(1)
-  CheckDefAndScriptFailure(['has(["a"])'], ['E1013: Argument 1: type mismatch, expected string but got list<string>', 'E1174: String required for argument 1'])
-  CheckDefAndScriptFailure(['has("a", "b")'], ['E1013: Argument 2: type mismatch, expected bool but got string', 'E1212: Bool required for argument 2'])
+  v9.CheckDefAndScriptFailure(['has(["a"])'], ['E1013: Argument 1: type mismatch, expected string but got list<string>', 'E1174: String required for argument 1'])
+  v9.CheckDefAndScriptFailure(['has("a", "b")'], ['E1013: Argument 2: type mismatch, expected bool but got string', 'E1212: Bool required for argument 2'])
   has('')->assert_equal(0)
 enddef
 
@@ -1793,14 +1799,14 @@
   assert_false(has_key(d, 'x'))
   assert_false(has_key(d, 99))
 
-  CheckDefAndScriptFailure(['has_key([1, 2], "k")'], ['E1013: Argument 1: type mismatch, expected dict<any> but got list<number>', 'E1206: Dictionary required for argument 1'])
-  CheckDefAndScriptFailure(['has_key({"a": 10}, ["a"])'], ['E1013: Argument 2: type mismatch, expected string but got list<string>', 'E1220: String or Number required for argument 2'])
+  v9.CheckDefAndScriptFailure(['has_key([1, 2], "k")'], ['E1013: Argument 1: type mismatch, expected dict<any> but got list<number>', 'E1206: Dictionary required for argument 1'])
+  v9.CheckDefAndScriptFailure(['has_key({"a": 10}, ["a"])'], ['E1013: Argument 2: type mismatch, expected string but got list<string>', 'E1220: String or Number required for argument 2'])
 enddef
 
 def Test_haslocaldir()
-  CheckDefAndScriptFailure(['haslocaldir("x")'], ['E1013: Argument 1: type mismatch, expected number but got string', 'E1210: Number required for argument 1'])
-  CheckDefAndScriptFailure(['haslocaldir("x", 1)'], ['E1013: Argument 1: type mismatch, expected number but got string', 'E1210: Number required for argument 1'])
-  CheckDefAndScriptFailure(['haslocaldir(1, "x")'], ['E1013: Argument 2: type mismatch, expected number but got string', 'E1210: Number required for argument 2'])
+  v9.CheckDefAndScriptFailure(['haslocaldir("x")'], ['E1013: Argument 1: type mismatch, expected number but got string', 'E1210: Number required for argument 1'])
+  v9.CheckDefAndScriptFailure(['haslocaldir("x", 1)'], ['E1013: Argument 1: type mismatch, expected number but got string', 'E1210: Number required for argument 1'])
+  v9.CheckDefAndScriptFailure(['haslocaldir(1, "x")'], ['E1013: Argument 2: type mismatch, expected number but got string', 'E1210: Number required for argument 2'])
 enddef
 
 def Test_hasmapto()
@@ -1808,109 +1814,109 @@
   iabbrev foo foobar
   hasmapto('foobar', 'i', true)->assert_equal(1)
   iunabbrev foo
-  CheckDefAndScriptFailure(['hasmapto(1, "b")'], ['E1013: Argument 1: type mismatch, expected string but got number', 'E1174: String required for argument 1'])
-  CheckDefAndScriptFailure(['hasmapto("a", 2)'], ['E1013: Argument 2: type mismatch, expected string but got number', 'E1174: String required for argument 2'])
-  CheckDefAndScriptFailure(['hasmapto("a", "b", 2)'], ['E1013: Argument 3: type mismatch, expected bool but got number', 'E1212: Bool required for argument 3'])
+  v9.CheckDefAndScriptFailure(['hasmapto(1, "b")'], ['E1013: Argument 1: type mismatch, expected string but got number', 'E1174: String required for argument 1'])
+  v9.CheckDefAndScriptFailure(['hasmapto("a", 2)'], ['E1013: Argument 2: type mismatch, expected string but got number', 'E1174: String required for argument 2'])
+  v9.CheckDefAndScriptFailure(['hasmapto("a", "b", 2)'], ['E1013: Argument 3: type mismatch, expected bool but got number', 'E1212: Bool required for argument 3'])
   hasmapto('', '')->assert_equal(0)
 enddef
 
 def Test_histadd()
-  CheckDefAndScriptFailure(['histadd(1, "x")'], ['E1013: Argument 1: type mismatch, expected string but got number', 'E1174: String required for argument 1'])
-  CheckDefAndScriptFailure(['histadd(":", 10)'], ['E1013: Argument 2: type mismatch, expected string but got number', 'E1174: String required for argument 2'])
+  v9.CheckDefAndScriptFailure(['histadd(1, "x")'], ['E1013: Argument 1: type mismatch, expected string but got number', 'E1174: String required for argument 1'])
+  v9.CheckDefAndScriptFailure(['histadd(":", 10)'], ['E1013: Argument 2: type mismatch, expected string but got number', 'E1174: String required for argument 2'])
   histadd("search", 'skyblue')
   assert_equal('skyblue', histget('/', -1))
   histadd("search", '')->assert_equal(0)
 enddef
 
 def Test_histdel()
-  CheckDefAndScriptFailure(['histdel(1, "x")'], ['E1013: Argument 1: type mismatch, expected string but got number', 'E1174: String required for argument 1'])
-  CheckDefAndScriptFailure(['histdel(":", true)'], ['E1013: Argument 2: type mismatch, expected string but got bool', 'E1220: String or Number required for argument 2'])
+  v9.CheckDefAndScriptFailure(['histdel(1, "x")'], ['E1013: Argument 1: type mismatch, expected string but got number', 'E1174: String required for argument 1'])
+  v9.CheckDefAndScriptFailure(['histdel(":", true)'], ['E1013: Argument 2: type mismatch, expected string but got bool', 'E1220: String or Number required for argument 2'])
   histdel('search', '')->assert_equal(0)
 enddef
 
 def Test_histget()
-  CheckDefAndScriptFailure(['histget(1)'], ['E1013: Argument 1: type mismatch, expected string but got number', 'E1174: String required for argument 1'])
-  CheckDefAndScriptFailure(['histget("a", "b")'], ['E1013: Argument 2: type mismatch, expected number but got string', 'E1210: Number required for argument 2'])
+  v9.CheckDefAndScriptFailure(['histget(1)'], ['E1013: Argument 1: type mismatch, expected string but got number', 'E1174: String required for argument 1'])
+  v9.CheckDefAndScriptFailure(['histget("a", "b")'], ['E1013: Argument 2: type mismatch, expected number but got string', 'E1210: Number required for argument 2'])
 enddef
 
 def Test_histnr()
-  CheckDefAndScriptFailure(['histnr(10)'], ['E1013: Argument 1: type mismatch, expected string but got number', 'E1174: String required for argument 1'])
+  v9.CheckDefAndScriptFailure(['histnr(10)'], ['E1013: Argument 1: type mismatch, expected string but got number', 'E1174: String required for argument 1'])
   assert_equal(-1, histnr('abc'))
 enddef
 
 def Test_hlID()
-  CheckDefAndScriptFailure(['hlID(10)'], ['E1013: Argument 1: type mismatch, expected string but got number', 'E1174: String required for argument 1'])
+  v9.CheckDefAndScriptFailure(['hlID(10)'], ['E1013: Argument 1: type mismatch, expected string but got number', 'E1174: String required for argument 1'])
   assert_equal(0, hlID('NonExistingHighlight'))
   hlID('')->assert_equal(0)
 enddef
 
 def Test_hlexists()
-  CheckDefAndScriptFailure(['hlexists([])'], ['E1013: Argument 1: type mismatch, expected string but got list<unknown>', 'E1174: String required for argument 1'])
+  v9.CheckDefAndScriptFailure(['hlexists([])'], ['E1013: Argument 1: type mismatch, expected string but got list<unknown>', 'E1174: String required for argument 1'])
   assert_equal(0, hlexists('NonExistingHighlight'))
   hlexists('')->assert_equal(0)
 enddef
 
 def Test_hlget()
-  CheckDefAndScriptFailure(['hlget([])'], ['E1013: Argument 1: type mismatch, expected string but got list<unknown>', 'E1174: String required for argument 1'])
+  v9.CheckDefAndScriptFailure(['hlget([])'], ['E1013: Argument 1: type mismatch, expected string but got list<unknown>', 'E1174: String required for argument 1'])
   hlget('')->assert_equal([])
 enddef
 
 def Test_hlset()
-  CheckDefAndScriptFailure(['hlset("id")'], ['E1013: Argument 1: type mismatch, expected list<any> but got string', 'E1211: List required for argument 1'])
+  v9.CheckDefAndScriptFailure(['hlset("id")'], ['E1013: Argument 1: type mismatch, expected list<any> but got string', 'E1211: List required for argument 1'])
   hlset([])->assert_equal(0)
 enddef
 
 def Test_iconv()
-  CheckDefAndScriptFailure(['iconv(1, "from", "to")'], ['E1013: Argument 1: type mismatch, expected string but got number', 'E1174: String required for argument 1'])
-  CheckDefAndScriptFailure(['iconv("abc", 10, "to")'], ['E1013: Argument 2: type mismatch, expected string but got number', 'E1174: String required for argument 2'])
-  CheckDefAndScriptFailure(['iconv("abc", "from", 20)'], ['E1013: Argument 3: type mismatch, expected string but got number', 'E1174: String required for argument 3'])
+  v9.CheckDefAndScriptFailure(['iconv(1, "from", "to")'], ['E1013: Argument 1: type mismatch, expected string but got number', 'E1174: String required for argument 1'])
+  v9.CheckDefAndScriptFailure(['iconv("abc", 10, "to")'], ['E1013: Argument 2: type mismatch, expected string but got number', 'E1174: String required for argument 2'])
+  v9.CheckDefAndScriptFailure(['iconv("abc", "from", 20)'], ['E1013: Argument 3: type mismatch, expected string but got number', 'E1174: String required for argument 3'])
   assert_equal('abc', iconv('abc', 'fromenc', 'toenc'))
   iconv('', '', '')->assert_equal('')
 enddef
 
 def Test_indent()
-  CheckDefAndScriptFailure(['indent([1])'], ['E1013: Argument 1: type mismatch, expected string but got list<number>', 'E1220: String or Number required for argument 1'])
-  CheckDefAndScriptFailure(['indent(true)'], ['E1013: Argument 1: type mismatch, expected string but got bool', 'E1220: String or Number required for argument 1'])
-  CheckDefExecAndScriptFailure(['indent("")'], 'E1209: Invalid value for a line number')
-  CheckDefExecAndScriptFailure(['indent(-1)'], 'E966: Invalid line number: -1')
+  v9.CheckDefAndScriptFailure(['indent([1])'], ['E1013: Argument 1: type mismatch, expected string but got list<number>', 'E1220: String or Number required for argument 1'])
+  v9.CheckDefAndScriptFailure(['indent(true)'], ['E1013: Argument 1: type mismatch, expected string but got bool', 'E1220: String or Number required for argument 1'])
+  v9.CheckDefExecAndScriptFailure(['indent("")'], 'E1209: Invalid value for a line number')
+  v9.CheckDefExecAndScriptFailure(['indent(-1)'], 'E966: Invalid line number: -1')
   assert_equal(0, indent(1))
 enddef
 
 def Test_index()
   index(['a', 'b', 'a', 'B'], 'b', 2, true)->assert_equal(3)
-  CheckDefAndScriptFailure(['index("a", "a")'], ['E1013: Argument 1: type mismatch, expected list<any> but got string', 'E1226: List or Blob required for argument 1'])
-  CheckDefFailure(['index(["1"], 1)'], 'E1013: Argument 2: type mismatch, expected string but got number')
-  CheckDefAndScriptFailure(['index(0z10, "b")'], ['E1013: Argument 2: type mismatch, expected number but got string', 'E1210: Number required for argument 2'])
-  CheckDefAndScriptFailure(['index([1], 1, "c")'], ['E1013: Argument 3: type mismatch, expected number but got string', 'E1210: Number required for argument 3'])
-  CheckDefAndScriptFailure(['index(0z1020, 10, 1, 2)'], ['E1013: Argument 4: type mismatch, expected bool but got number', 'E1212: Bool required for argument 4'])
+  v9.CheckDefAndScriptFailure(['index("a", "a")'], ['E1013: Argument 1: type mismatch, expected list<any> but got string', 'E1226: List or Blob required for argument 1'])
+  v9.CheckDefFailure(['index(["1"], 1)'], 'E1013: Argument 2: type mismatch, expected string but got number')
+  v9.CheckDefAndScriptFailure(['index(0z10, "b")'], ['E1013: Argument 2: type mismatch, expected number but got string', 'E1210: Number required for argument 2'])
+  v9.CheckDefAndScriptFailure(['index([1], 1, "c")'], ['E1013: Argument 3: type mismatch, expected number but got string', 'E1210: Number required for argument 3'])
+  v9.CheckDefAndScriptFailure(['index(0z1020, 10, 1, 2)'], ['E1013: Argument 4: type mismatch, expected bool but got number', 'E1212: Bool required for argument 4'])
 enddef
 
 def Test_input()
-  CheckDefAndScriptFailure(['input(5)'], ['E1013: Argument 1: type mismatch, expected string but got number', 'E1174: String required for argument 1'])
-  CheckDefAndScriptFailure(['input(["a"])'], ['E1013: Argument 1: type mismatch, expected string but got list<string>', 'E1174: String required for argument 1'])
-  CheckDefAndScriptFailure(['input("p", 10)'], ['E1013: Argument 2: type mismatch, expected string but got number', 'E1174: String required for argument 2'])
-  CheckDefAndScriptFailure(['input("p", "q", 20)'], ['E1013: Argument 3: type mismatch, expected string but got number', 'E1174: String required for argument 3'])
+  v9.CheckDefAndScriptFailure(['input(5)'], ['E1013: Argument 1: type mismatch, expected string but got number', 'E1174: String required for argument 1'])
+  v9.CheckDefAndScriptFailure(['input(["a"])'], ['E1013: Argument 1: type mismatch, expected string but got list<string>', 'E1174: String required for argument 1'])
+  v9.CheckDefAndScriptFailure(['input("p", 10)'], ['E1013: Argument 2: type mismatch, expected string but got number', 'E1174: String required for argument 2'])
+  v9.CheckDefAndScriptFailure(['input("p", "q", 20)'], ['E1013: Argument 3: type mismatch, expected string but got number', 'E1174: String required for argument 3'])
 enddef
 
 def Test_inputdialog()
-  CheckDefAndScriptFailure(['inputdialog(5)'], ['E1013: Argument 1: type mismatch, expected string but got number', 'E1174: String required for argument 1'])
-  CheckDefAndScriptFailure(['inputdialog(["a"])'], ['E1013: Argument 1: type mismatch, expected string but got list<string>', 'E1174: String required for argument 1'])
-  CheckDefAndScriptFailure(['inputdialog("p", 10)'], ['E1013: Argument 2: type mismatch, expected string but got number', 'E1174: String required for argument 2'])
-  CheckDefAndScriptFailure(['inputdialog("p", "q", 20)'], ['E1013: Argument 3: type mismatch, expected string but got number', 'E1174: String required for argument 3'])
+  v9.CheckDefAndScriptFailure(['inputdialog(5)'], ['E1013: Argument 1: type mismatch, expected string but got number', 'E1174: String required for argument 1'])
+  v9.CheckDefAndScriptFailure(['inputdialog(["a"])'], ['E1013: Argument 1: type mismatch, expected string but got list<string>', 'E1174: String required for argument 1'])
+  v9.CheckDefAndScriptFailure(['inputdialog("p", 10)'], ['E1013: Argument 2: type mismatch, expected string but got number', 'E1174: String required for argument 2'])
+  v9.CheckDefAndScriptFailure(['inputdialog("p", "q", 20)'], ['E1013: Argument 3: type mismatch, expected string but got number', 'E1174: String required for argument 3'])
 enddef
 
 def Test_inputlist()
-  CheckDefAndScriptFailure(['inputlist(10)'], ['E1013: Argument 1: type mismatch, expected list<string> but got number', 'E1211: List required for argument 1'])
-  CheckDefAndScriptFailure(['inputlist("abc")'], ['E1013: Argument 1: type mismatch, expected list<string> but got string', 'E1211: List required for argument 1'])
-  CheckDefFailure(['inputlist([1, 2, 3])'], 'E1013: Argument 1: type mismatch, expected list<string> but got list<number>')
+  v9.CheckDefAndScriptFailure(['inputlist(10)'], ['E1013: Argument 1: type mismatch, expected list<string> but got number', 'E1211: List required for argument 1'])
+  v9.CheckDefAndScriptFailure(['inputlist("abc")'], ['E1013: Argument 1: type mismatch, expected list<string> but got string', 'E1211: List required for argument 1'])
+  v9.CheckDefFailure(['inputlist([1, 2, 3])'], 'E1013: Argument 1: type mismatch, expected list<string> but got list<number>')
   feedkeys("2\<CR>", 't')
   var r: number = inputlist(['a', 'b', 'c'])
   assert_equal(2, r)
 enddef
 
 def Test_inputsecret()
-  CheckDefAndScriptFailure(['inputsecret(10)'], ['E1013: Argument 1: type mismatch, expected string but got number', 'E1174: String required for argument 1'])
-  CheckDefAndScriptFailure(['inputsecret("Pass:", 20)'], ['E1013: Argument 2: type mismatch, expected string but got number', 'E1174: String required for argument 2'])
+  v9.CheckDefAndScriptFailure(['inputsecret(10)'], ['E1013: Argument 1: type mismatch, expected string but got number', 'E1174: String required for argument 1'])
+  v9.CheckDefAndScriptFailure(['inputsecret("Pass:", 20)'], ['E1013: Argument 2: type mismatch, expected string but got number', 'E1174: String required for argument 2'])
   feedkeys("\<CR>", 't')
   var ans: string = inputsecret('Pass:', '123')
   assert_equal('123', ans)
@@ -1937,12 +1943,12 @@
   var lines =<< trim END
       insert(test_null_list(), 123)
   END
-  CheckDefExecAndScriptFailure(lines, 'E1130:', 1)
+  v9.CheckDefExecAndScriptFailure(lines, 'E1130:', 1)
 
   lines =<< trim END
       insert(test_null_blob(), 123)
   END
-  CheckDefExecAndScriptFailure(lines, 'E1131:', 1)
+  v9.CheckDefExecAndScriptFailure(lines, 'E1131:', 1)
 
   assert_equal([1, 2, 3], insert([2, 3], 1))
   assert_equal([1, 2, 3], insert([2, 3], s:number_one))
@@ -1951,24 +1957,24 @@
   assert_equal(['a', 'b', 'c'], insert(['b', 'c'], 'a'))
   assert_equal(0z1234, insert(0z34, 0x12))
 
-  CheckDefAndScriptFailure(['insert("a", 1)'], ['E1013: Argument 1: type mismatch, expected list<any> but got string', 'E1226: List or Blob required for argument 1'])
-  CheckDefFailure(['insert([2, 3], "a")'], 'E1013: Argument 2: type mismatch, expected number but got string')
-  CheckDefAndScriptFailure(['insert([2, 3], 1, "x")'], ['E1013: Argument 3: type mismatch, expected number but got string', 'E1210: Number required for argument 3'])
+  v9.CheckDefAndScriptFailure(['insert("a", 1)'], ['E1013: Argument 1: type mismatch, expected list<any> but got string', 'E1226: List or Blob required for argument 1'])
+  v9.CheckDefFailure(['insert([2, 3], "a")'], 'E1013: Argument 2: type mismatch, expected number but got string')
+  v9.CheckDefAndScriptFailure(['insert([2, 3], 1, "x")'], ['E1013: Argument 3: type mismatch, expected number but got string', 'E1210: Number required for argument 3'])
 enddef
 
 def Test_invert()
-  CheckDefAndScriptFailure(['invert("x")'], ['E1013: Argument 1: type mismatch, expected number but got string', 'E1210: Number required for argument 1'])
+  v9.CheckDefAndScriptFailure(['invert("x")'], ['E1013: Argument 1: type mismatch, expected number but got string', 'E1210: Number required for argument 1'])
 enddef
 
 def Test_isdirectory()
-  CheckDefAndScriptFailure(['isdirectory(1.1)'], ['E1013: Argument 1: type mismatch, expected string but got float', 'E1174: String required for argument 1'])
+  v9.CheckDefAndScriptFailure(['isdirectory(1.1)'], ['E1013: Argument 1: type mismatch, expected string but got float', 'E1174: String required for argument 1'])
   assert_false(isdirectory('NonExistingDir'))
   assert_false(isdirectory(''))
 enddef
 
 def Test_islocked()
-  CheckDefAndScriptFailure(['islocked(true)'], ['E1013: Argument 1: type mismatch, expected string but got bool', 'E1174: String required for argument 1'])
-  CheckDefAndScriptFailure(['var n1: number = 10', 'islocked(n1)'], ['E1013: Argument 1: type mismatch, expected string but got number', 'E1174: String required for argument 1'])
+  v9.CheckDefAndScriptFailure(['islocked(true)'], ['E1013: Argument 1: type mismatch, expected string but got bool', 'E1174: String required for argument 1'])
+  v9.CheckDefAndScriptFailure(['var n1: number = 10', 'islocked(n1)'], ['E1013: Argument 1: type mismatch, expected string but got number', 'E1174: String required for argument 1'])
   g:v1 = 10
   assert_false(islocked('g:v1'))
   lockvar g:v1
@@ -1978,7 +1984,7 @@
 enddef
 
 def Test_items()
-  CheckDefFailure(['[]->items()'], 'E1013: Argument 1: type mismatch, expected dict<any> but got list<unknown>')
+  v9.CheckDefFailure(['[]->items()'], 'E1013: Argument 1: type mismatch, expected dict<any> but got list<unknown>')
   assert_equal([['a', 10], ['b', 20]], {'a': 10, 'b': 20}->items())
   assert_equal([], {}->items())
 enddef
@@ -1987,7 +1993,7 @@
   if !has('job')
     CheckFeature job
   else
-    CheckDefAndScriptFailure(['job_getchannel("a")'], ['E1013: Argument 1: type mismatch, expected job but got string', 'E1218: Job required for argument 1'])
+    v9.CheckDefAndScriptFailure(['job_getchannel("a")'], ['E1013: Argument 1: type mismatch, expected job but got string', 'E1218: Job required for argument 1'])
     assert_fails('job_getchannel(test_null_job())', 'E916: not a valid job')
   endif
 enddef
@@ -1996,7 +2002,7 @@
   if !has('job')
     CheckFeature job
   else
-    CheckDefAndScriptFailure(['job_info("a")'], ['E1013: Argument 1: type mismatch, expected job but got string', 'E1218: Job required for argument 1'])
+    v9.CheckDefAndScriptFailure(['job_info("a")'], ['E1013: Argument 1: type mismatch, expected job but got string', 'E1218: Job required for argument 1'])
     assert_fails('job_info(test_null_job())', 'E916: not a valid job')
   endif
 enddef
@@ -2007,8 +2013,8 @@
   if !has('job')
     CheckFeature job
   else
-    CheckDefAndScriptFailure(['job_setoptions(test_null_channel(), {})'], ['E1013: Argument 1: type mismatch, expected job but got channel', 'E1218: Job required for argument 1'])
-    CheckDefAndScriptFailure(['job_setoptions(test_null_job(), [])'], ['E1013: Argument 2: type mismatch, expected dict<any> but got list<unknown>', 'E1206: Dictionary required for argument 2'])
+    v9.CheckDefAndScriptFailure(['job_setoptions(test_null_channel(), {})'], ['E1013: Argument 1: type mismatch, expected job but got channel', 'E1218: Job required for argument 1'])
+    v9.CheckDefAndScriptFailure(['job_setoptions(test_null_job(), [])'], ['E1013: Argument 2: type mismatch, expected dict<any> but got list<unknown>', 'E1206: Dictionary required for argument 2'])
     assert_equal('fail', job_status(test_null_job()))
   endif
 enddef
@@ -2017,7 +2023,7 @@
   if !has('job')
     CheckFeature job
   else
-    CheckDefAndScriptFailure(['job_status("a")'], ['E1013: Argument 1: type mismatch, expected job but got string', 'E1218: Job required for argument 1'])
+    v9.CheckDefAndScriptFailure(['job_status("a")'], ['E1013: Argument 1: type mismatch, expected job but got string', 'E1218: Job required for argument 1'])
     assert_equal('fail', job_status(test_null_job()))
   endif
 enddef
@@ -2026,31 +2032,31 @@
   if !has('job')
     CheckFeature job
   else
-    CheckDefAndScriptFailure(['job_stop("a")'], ['E1013: Argument 1: type mismatch, expected job but got string', 'E1218: Job required for argument 1'])
-    CheckDefAndScriptFailure(['job_stop(test_null_job(), true)'], ['E1013: Argument 2: type mismatch, expected string but got bool', 'E1220: String or Number required for argument 2'])
+    v9.CheckDefAndScriptFailure(['job_stop("a")'], ['E1013: Argument 1: type mismatch, expected job but got string', 'E1218: Job required for argument 1'])
+    v9.CheckDefAndScriptFailure(['job_stop(test_null_job(), true)'], ['E1013: Argument 2: type mismatch, expected string but got bool', 'E1220: String or Number required for argument 2'])
   endif
 enddef
 
 def Test_join()
-  CheckDefAndScriptFailure(['join("abc")'], ['E1013: Argument 1: type mismatch, expected list<any> but got string', 'E1211: List required for argument 1'])
-  CheckDefAndScriptFailure(['join([], 2)'], ['E1013: Argument 2: type mismatch, expected string but got number', 'E1174: String required for argument 2'])
+  v9.CheckDefAndScriptFailure(['join("abc")'], ['E1013: Argument 1: type mismatch, expected list<any> but got string', 'E1211: List required for argument 1'])
+  v9.CheckDefAndScriptFailure(['join([], 2)'], ['E1013: Argument 2: type mismatch, expected string but got number', 'E1174: String required for argument 2'])
   join([''], '')->assert_equal('')
 enddef
 
 def Test_js_decode()
-  CheckDefAndScriptFailure(['js_decode(10)'], ['E1013: Argument 1: type mismatch, expected string but got number', 'E1174: String required for argument 1'])
+  v9.CheckDefAndScriptFailure(['js_decode(10)'], ['E1013: Argument 1: type mismatch, expected string but got number', 'E1174: String required for argument 1'])
   assert_equal([1, 2], js_decode('[1,2]'))
   js_decode('')->assert_equal(v:none)
 enddef
 
 def Test_json_decode()
-  CheckDefAndScriptFailure(['json_decode(true)'], ['E1013: Argument 1: type mismatch, expected string but got bool', 'E1174: String required for argument 1'])
+  v9.CheckDefAndScriptFailure(['json_decode(true)'], ['E1013: Argument 1: type mismatch, expected string but got bool', 'E1174: String required for argument 1'])
   assert_equal(1.0, json_decode('1.0'))
   json_decode('')->assert_equal(v:none)
 enddef
 
 def Test_keys()
-  CheckDefAndScriptFailure(['keys([])'], ['E1013: Argument 1: type mismatch, expected dict<any> but got list<unknown>', 'E1206: Dictionary required for argument 1'])
+  v9.CheckDefAndScriptFailure(['keys([])'], ['E1013: Argument 1: type mismatch, expected dict<any> but got list<unknown>', 'E1206: Dictionary required for argument 1'])
   assert_equal(['a'], {a: 'v'}->keys())
   assert_equal([], {}->keys())
 enddef
@@ -2061,7 +2067,7 @@
 enddef
 
 def Test_len()
-  CheckDefAndScriptFailure(['len(true)'], ['E1013: Argument 1: type mismatch, expected list<any> but got bool', 'E701: Invalid type for len()'])
+  v9.CheckDefAndScriptFailure(['len(true)'], ['E1013: Argument 1: type mismatch, expected list<any> but got bool', 'E701: Invalid type for len()'])
   assert_equal(2, "ab"->len())
   assert_equal(3, 456->len())
   assert_equal(0, []->len())
@@ -2071,42 +2077,42 @@
 
 def Test_libcall()
   CheckFeature libcall
-  CheckDefAndScriptFailure(['libcall(1, "b", 3)'], ['E1013: Argument 1: type mismatch, expected string but got number', 'E1174: String required for argument 1'])
-  CheckDefAndScriptFailure(['libcall("a", 2, 3)'], ['E1013: Argument 2: type mismatch, expected string but got number', 'E1174: String required for argument 2'])
-  CheckDefAndScriptFailure(['libcall("a", "b", 1.1)'], ['E1013: Argument 3: type mismatch, expected string but got float', 'E1220: String or Number required for argument 3'])
+  v9.CheckDefAndScriptFailure(['libcall(1, "b", 3)'], ['E1013: Argument 1: type mismatch, expected string but got number', 'E1174: String required for argument 1'])
+  v9.CheckDefAndScriptFailure(['libcall("a", 2, 3)'], ['E1013: Argument 2: type mismatch, expected string but got number', 'E1174: String required for argument 2'])
+  v9.CheckDefAndScriptFailure(['libcall("a", "b", 1.1)'], ['E1013: Argument 3: type mismatch, expected string but got float', 'E1220: String or Number required for argument 3'])
 enddef
 
 def Test_libcallnr()
   CheckFeature libcall
-  CheckDefAndScriptFailure(['libcallnr(1, "b", 3)'], ['E1013: Argument 1: type mismatch, expected string but got number', 'E1174: String required for argument 1'])
-  CheckDefAndScriptFailure(['libcallnr("a", 2, 3)'], ['E1013: Argument 2: type mismatch, expected string but got number', 'E1174: String required for argument 2'])
-  CheckDefAndScriptFailure(['libcallnr("a", "b", 1.1)'], ['E1013: Argument 3: type mismatch, expected string but got float', 'E1220: String or Number required for argument 3'])
+  v9.CheckDefAndScriptFailure(['libcallnr(1, "b", 3)'], ['E1013: Argument 1: type mismatch, expected string but got number', 'E1174: String required for argument 1'])
+  v9.CheckDefAndScriptFailure(['libcallnr("a", 2, 3)'], ['E1013: Argument 2: type mismatch, expected string but got number', 'E1174: String required for argument 2'])
+  v9.CheckDefAndScriptFailure(['libcallnr("a", "b", 1.1)'], ['E1013: Argument 3: type mismatch, expected string but got float', 'E1220: String or Number required for argument 3'])
 enddef
 
 def Test_line()
   assert_fails('line(true)', 'E1174:')
-  CheckDefAndScriptFailure(['line(1)'], ['E1013: Argument 1: type mismatch, expected string but got number', 'E1174: String required for argument 1'])
-  CheckDefAndScriptFailure(['line(".", "a")'], ['E1013: Argument 2: type mismatch, expected number but got string', 'E1210: Number required for argument 2'])
-  CheckDefExecAndScriptFailure(['line("")'], 'E1209: Invalid value for a line number')
+  v9.CheckDefAndScriptFailure(['line(1)'], ['E1013: Argument 1: type mismatch, expected string but got number', 'E1174: String required for argument 1'])
+  v9.CheckDefAndScriptFailure(['line(".", "a")'], ['E1013: Argument 2: type mismatch, expected number but got string', 'E1210: Number required for argument 2'])
+  v9.CheckDefExecAndScriptFailure(['line("")'], 'E1209: Invalid value for a line number')
 enddef
 
 def Test_line2byte()
-  CheckDefAndScriptFailure(['line2byte(true)'], ['E1013: Argument 1: type mismatch, expected string but got bool', 'E1220: String or Number required for argument 1'])
-  CheckDefExecAndScriptFailure(['line2byte("")'], 'E1209: Invalid value for a line number')
+  v9.CheckDefAndScriptFailure(['line2byte(true)'], ['E1013: Argument 1: type mismatch, expected string but got bool', 'E1220: String or Number required for argument 1'])
+  v9.CheckDefExecAndScriptFailure(['line2byte("")'], 'E1209: Invalid value for a line number')
   assert_equal(-1, line2byte(1))
   assert_equal(-1, line2byte(10000))
 enddef
 
 def Test_lispindent()
-  CheckDefAndScriptFailure(['lispindent({})'], ['E1013: Argument 1: type mismatch, expected string but got dict<unknown>', 'E1220: String or Number required for argument 1'])
-  CheckDefExecAndScriptFailure(['lispindent("")'], 'E1209: Invalid value for a line number')
-  CheckDefExecAndScriptFailure(['lispindent(-1)'], 'E966: Invalid line number: -1')
+  v9.CheckDefAndScriptFailure(['lispindent({})'], ['E1013: Argument 1: type mismatch, expected string but got dict<unknown>', 'E1220: String or Number required for argument 1'])
+  v9.CheckDefExecAndScriptFailure(['lispindent("")'], 'E1209: Invalid value for a line number')
+  v9.CheckDefExecAndScriptFailure(['lispindent(-1)'], 'E966: Invalid line number: -1')
   assert_equal(0, lispindent(1))
 enddef
 
 def Test_list2blob()
-  CheckDefAndScriptFailure(['list2blob(10)'], ['E1013: Argument 1: type mismatch, expected list<number> but got number', 'E1211: List required for argument 1'])
-  CheckDefFailure(['list2blob([0z10, 0z02])'], 'E1013: Argument 1: type mismatch, expected list<number> but got list<blob>')
+  v9.CheckDefAndScriptFailure(['list2blob(10)'], ['E1013: Argument 1: type mismatch, expected list<number> but got number', 'E1211: List required for argument 1'])
+  v9.CheckDefFailure(['list2blob([0z10, 0z02])'], 'E1013: Argument 1: type mismatch, expected list<number> but got list<blob>')
 enddef
 
 def Test_list2str_str2list_utf8()
@@ -2117,33 +2123,33 @@
 enddef
 
 def Test_list2str()
-  CheckDefAndScriptFailure(['list2str(".", true)'], ['E1013: Argument 1: type mismatch, expected list<number> but got string', 'E1211: List required for argument 1'])
-  CheckDefAndScriptFailure(['list2str([1], 0z10)'], ['E1013: Argument 2: type mismatch, expected bool but got blob', 'E1212: Bool required for argument 2'])
+  v9.CheckDefAndScriptFailure(['list2str(".", true)'], ['E1013: Argument 1: type mismatch, expected list<number> but got string', 'E1211: List required for argument 1'])
+  v9.CheckDefAndScriptFailure(['list2str([1], 0z10)'], ['E1013: Argument 2: type mismatch, expected bool but got blob', 'E1212: Bool required for argument 2'])
 enddef
 
-def SID(): number
+def s:SID(): number
   return expand('<SID>')
           ->matchstr('<SNR>\zs\d\+\ze_$')
           ->str2nr()
 enddef
 
 def Test_listener_add()
-  CheckDefAndScriptFailure(['listener_add("1", true)'], ['E1013: Argument 2: type mismatch, expected string but got bool', 'E1220: String or Number required for argument 2'])
+  v9.CheckDefAndScriptFailure(['listener_add("1", true)'], ['E1013: Argument 2: type mismatch, expected string but got bool', 'E1220: String or Number required for argument 2'])
 enddef
 
 def Test_listener_flush()
-  CheckDefAndScriptFailure(['listener_flush([1])'], ['E1013: Argument 1: type mismatch, expected string but got list<number>', 'E1220: String or Number required for argument 1'])
+  v9.CheckDefAndScriptFailure(['listener_flush([1])'], ['E1013: Argument 1: type mismatch, expected string but got list<number>', 'E1220: String or Number required for argument 1'])
 enddef
 
 def Test_listener_remove()
-  CheckDefAndScriptFailure(['listener_remove("x")'], ['E1013: Argument 1: type mismatch, expected number but got string', 'E1210: Number required for argument 1'])
+  v9.CheckDefAndScriptFailure(['listener_remove("x")'], ['E1013: Argument 1: type mismatch, expected number but got string', 'E1210: Number required for argument 1'])
 enddef
 
 def Test_luaeval()
   if !has('lua')
     CheckFeature lua
   endif
-  CheckDefAndScriptFailure(['luaeval(10)'], ['E1013: Argument 1: type mismatch, expected string but got number', 'E1174: String required for argument 1'])
+  v9.CheckDefAndScriptFailure(['luaeval(10)'], ['E1013: Argument 1: type mismatch, expected string but got number', 'E1174: String required for argument 1'])
   if exists_compiled('*luaeval')
     luaeval('')->assert_equal(v:null)
   endif
@@ -2151,10 +2157,10 @@
 
 def Test_map()
   if has('channel')
-    CheckDefAndScriptFailure(['map(test_null_channel(), "1")'], ['E1013: Argument 1: type mismatch, expected list<any> but got channel', 'E1251: List, Dictionary, Blob or String required for argument 1'])
+    v9.CheckDefAndScriptFailure(['map(test_null_channel(), "1")'], ['E1013: Argument 1: type mismatch, expected list<any> but got channel', 'E1251: List, Dictionary, Blob or String required for argument 1'])
   endif
-  CheckDefAndScriptFailure(['map(1, "1")'], ['E1013: Argument 1: type mismatch, expected list<any> but got number', 'E1251: List, Dictionary, Blob or String required for argument 1'])
-  CheckDefAndScriptFailure(['map([1, 2], 4)'], ['E1256: String or function required for argument 2', 'E1024: Using a Number as a String'])
+  v9.CheckDefAndScriptFailure(['map(1, "1")'], ['E1013: Argument 1: type mismatch, expected list<any> but got number', 'E1251: List, Dictionary, Blob or String required for argument 1'])
+  v9.CheckDefAndScriptFailure(['map([1, 2], 4)'], ['E1256: String or function required for argument 2', 'E1024: Using a Number as a String'])
 
   # type of dict remains dict<any> even when type of values changes
   # same for list
@@ -2179,7 +2185,7 @@
       map(g:gl, (k, v) => true)
       assert_equal([true], g:gl)
   END
-  CheckDefAndScriptSuccess(lines)
+  v9.CheckDefAndScriptSuccess(lines)
 enddef
 
 def Test_map_failure()
@@ -2198,7 +2204,7 @@
       enddef
       e
   END
-  CheckScriptFailure(lines, 'E1013:')
+  v9.CheckScriptFailure(lines, 'E1013:')
   au! BufReadPost
   delete('Xtmpfile')
 
@@ -2207,7 +2213,7 @@
       g:gd = d
       map(g:gd, (k, v) => true)
   END
-  CheckDefExecAndScriptFailure(lines, 'E1012: Type mismatch; expected number but got bool')
+  v9.CheckDefExecAndScriptFailure(lines, 'E1012: Type mismatch; expected number but got bool')
 enddef
 
 def Test_map_function_arg()
@@ -2219,16 +2225,16 @@
       map(l, MapOne)
       assert_equal(['0:a', '1:b', '2:c'], l)
   END
-  CheckDefAndScriptSuccess(lines)
+  v9.CheckDefAndScriptSuccess(lines)
 
   lines =<< trim END
       range(3)->map((a, b, c) => a + b + c)
   END
-  CheckDefExecAndScriptFailure(lines, 'E1190: One argument too few')
+  v9.CheckDefExecAndScriptFailure(lines, 'E1190: One argument too few')
   lines =<< trim END
       range(3)->map((a, b, c, d) => a + b + c + d)
   END
-  CheckDefExecAndScriptFailure(lines, 'E1190: 2 arguments too few')
+  v9.CheckDefExecAndScriptFailure(lines, 'E1190: 2 arguments too few')
 
   # declared list cannot change type
   lines =<< trim END
@@ -2238,7 +2244,7 @@
     var ll: list<number> = [1, 2, 3]
     echo map(ll, Map)
   END
-  CheckDefAndScriptFailure(lines, ['E1013: Argument 2: type mismatch, expected func(...): number but got func(number, number): string', 'E1012: Type mismatch; expected number but got string in map()'])
+  v9.CheckDefAndScriptFailure(lines, ['E1013: Argument 2: type mismatch, expected func(...): number but got func(number, number): string', 'E1012: Type mismatch; expected number but got string in map()'])
 
   # not declared list can change type
   echo [1, 2, 3]->map((..._) => 'x')
@@ -2250,25 +2256,25 @@
       map(l, (k, v) => k .. '/' .. v )
       assert_equal(['0/a', '1/b', '2/c'], l)
   END
-  CheckDefAndScriptSuccess(lines)
+  v9.CheckDefAndScriptSuccess(lines)
 
   lines =<< trim END
     var l: list<number> = [0]
     echo map(l, (_, v) => [])
   END
-  CheckDefAndScriptFailure(lines, ['E1013: Argument 2: type mismatch, expected func(...): number but got func(any, any): list<unknown>', 'E1012: Type mismatch; expected number but got list<unknown> in map()'], 2)
+  v9.CheckDefAndScriptFailure(lines, ['E1013: Argument 2: type mismatch, expected func(...): number but got func(any, any): list<unknown>', 'E1012: Type mismatch; expected number but got list<unknown> in map()'], 2)
 
   lines =<< trim END
     var l: list<number> = range(2)
     echo map(l, (_, v) => [])
   END
-  CheckDefAndScriptFailure(lines, ['E1013: Argument 2: type mismatch, expected func(...): number but got func(any, any): list<unknown>', 'E1012: Type mismatch; expected number but got list<unknown> in map()'], 2)
+  v9.CheckDefAndScriptFailure(lines, ['E1013: Argument 2: type mismatch, expected func(...): number but got func(any, any): list<unknown>', 'E1012: Type mismatch; expected number but got list<unknown> in map()'], 2)
 
   lines =<< trim END
     var d: dict<number> = {key: 0}
     echo map(d, (_, v) => [])
   END
-  CheckDefAndScriptFailure(lines, ['E1013: Argument 2: type mismatch, expected func(...): number but got func(any, any): list<unknown>', 'E1012: Type mismatch; expected number but got list<unknown> in map()'], 2)
+  v9.CheckDefAndScriptFailure(lines, ['E1013: Argument 2: type mismatch, expected func(...): number but got func(any, any): list<unknown>', 'E1012: Type mismatch; expected number but got list<unknown> in map()'], 2)
 enddef
 
 def Test_maparg()
@@ -2289,10 +2295,10 @@
         rhs: 'bar',
         buffer: 0})
   unmap foo
-  CheckDefAndScriptFailure(['maparg(1)'], ['E1013: Argument 1: type mismatch, expected string but got number', 'E1174: String required for argument 1'])
-  CheckDefAndScriptFailure(['maparg("a", 2)'], ['E1013: Argument 2: type mismatch, expected string but got number', 'E1174: String required for argument 2'])
-  CheckDefAndScriptFailure(['maparg("a", "b", 2)'], ['E1013: Argument 3: type mismatch, expected bool but got number', 'E1212: Bool required for argument 3'])
-  CheckDefAndScriptFailure(['maparg("a", "b", true, 2)'], ['E1013: Argument 4: type mismatch, expected bool but got number', 'E1212: Bool required for argument 4'])
+  v9.CheckDefAndScriptFailure(['maparg(1)'], ['E1013: Argument 1: type mismatch, expected string but got number', 'E1174: String required for argument 1'])
+  v9.CheckDefAndScriptFailure(['maparg("a", 2)'], ['E1013: Argument 2: type mismatch, expected string but got number', 'E1174: String required for argument 2'])
+  v9.CheckDefAndScriptFailure(['maparg("a", "b", 2)'], ['E1013: Argument 3: type mismatch, expected bool but got number', 'E1212: Bool required for argument 3'])
+  v9.CheckDefAndScriptFailure(['maparg("a", "b", true, 2)'], ['E1013: Argument 4: type mismatch, expected bool but got number', 'E1212: Bool required for argument 4'])
   maparg('')->assert_equal('')
 enddef
 
@@ -2308,31 +2314,31 @@
   iabbrev foo foobar
   mapcheck('foo', 'i', true)->assert_equal('foobar')
   iunabbrev foo
-  CheckDefAndScriptFailure(['mapcheck(1)'], ['E1013: Argument 1: type mismatch, expected string but got number', 'E1174: String required for argument 1'])
-  CheckDefAndScriptFailure(['mapcheck("a", 2)'], ['E1013: Argument 2: type mismatch, expected string but got number', 'E1174: String required for argument 2'])
-  CheckDefAndScriptFailure(['mapcheck("a", "b", 2)'], ['E1013: Argument 3: type mismatch, expected bool but got number', 'E1212: Bool required for argument 3'])
+  v9.CheckDefAndScriptFailure(['mapcheck(1)'], ['E1013: Argument 1: type mismatch, expected string but got number', 'E1174: String required for argument 1'])
+  v9.CheckDefAndScriptFailure(['mapcheck("a", 2)'], ['E1013: Argument 2: type mismatch, expected string but got number', 'E1174: String required for argument 2'])
+  v9.CheckDefAndScriptFailure(['mapcheck("a", "b", 2)'], ['E1013: Argument 3: type mismatch, expected bool but got number', 'E1212: Bool required for argument 3'])
   mapcheck('')->assert_equal('')
   mapcheck('', '')->assert_equal('')
 enddef
 
 def Test_mapnew()
   if has('channel')
-    CheckDefAndScriptFailure(['mapnew(test_null_job(), "1")'], ['E1013: Argument 1: type mismatch, expected list<any> but got job', 'E1251: List, Dictionary, Blob or String required for argument 1'])
+    v9.CheckDefAndScriptFailure(['mapnew(test_null_job(), "1")'], ['E1013: Argument 1: type mismatch, expected list<any> but got job', 'E1251: List, Dictionary, Blob or String required for argument 1'])
   endif
-  CheckDefAndScriptFailure(['mapnew(1, "1")'], ['E1013: Argument 1: type mismatch, expected list<any> but got number', 'E1251: List, Dictionary, Blob or String required for argument 1'])
+  v9.CheckDefAndScriptFailure(['mapnew(1, "1")'], ['E1013: Argument 1: type mismatch, expected list<any> but got number', 'E1251: List, Dictionary, Blob or String required for argument 1'])
 enddef
 
 def Test_mapset()
-  CheckDefAndScriptFailure(['mapset(1, true, {})'], ['E1013: Argument 1: type mismatch, expected string but got number', 'E1174: String required for argument 1'])
-  CheckDefAndScriptFailure(['mapset("a", 2, {})'], ['E1013: Argument 2: type mismatch, expected bool but got number', 'E1212: Bool required for argument 2'])
-  CheckDefAndScriptFailure(['mapset("a", false, [])'], ['E1013: Argument 3: type mismatch, expected dict<any> but got list<unknown>', 'E1206: Dictionary required for argument 3'])
+  v9.CheckDefAndScriptFailure(['mapset(1, true, {})'], ['E1013: Argument 1: type mismatch, expected string but got number', 'E1174: String required for argument 1'])
+  v9.CheckDefAndScriptFailure(['mapset("a", 2, {})'], ['E1013: Argument 2: type mismatch, expected bool but got number', 'E1212: Bool required for argument 2'])
+  v9.CheckDefAndScriptFailure(['mapset("a", false, [])'], ['E1013: Argument 3: type mismatch, expected dict<any> but got list<unknown>', 'E1206: Dictionary required for argument 3'])
 enddef
 
 def Test_match()
-  CheckDefAndScriptFailure(['match(0z12, "p")'], ['E1013: Argument 1: type mismatch, expected string but got blob', 'E1222: String or List required for argument 1'])
-  CheckDefAndScriptFailure(['match(["s"], [2])'], ['E1013: Argument 2: type mismatch, expected string but got list<number>', 'E1174: String required for argument 2'])
-  CheckDefAndScriptFailure(['match("s", "p", "q")'], ['E1013: Argument 3: type mismatch, expected number but got string', 'E1210: Number required for argument 3'])
-  CheckDefAndScriptFailure(['match("s", "p", 1, "r")'], ['E1013: Argument 4: type mismatch, expected number but got string', 'E1210: Number required for argument 4'])
+  v9.CheckDefAndScriptFailure(['match(0z12, "p")'], ['E1013: Argument 1: type mismatch, expected string but got blob', 'E1222: String or List required for argument 1'])
+  v9.CheckDefAndScriptFailure(['match(["s"], [2])'], ['E1013: Argument 2: type mismatch, expected string but got list<number>', 'E1174: String required for argument 2'])
+  v9.CheckDefAndScriptFailure(['match("s", "p", "q")'], ['E1013: Argument 3: type mismatch, expected number but got string', 'E1210: Number required for argument 3'])
+  v9.CheckDefAndScriptFailure(['match("s", "p", 1, "r")'], ['E1013: Argument 4: type mismatch, expected number but got string', 'E1210: Number required for argument 4'])
   assert_equal(2, match('ab12cd', '12'))
   assert_equal(-1, match('ab12cd', '34'))
   assert_equal(6, match('ab12cd12ef', '12', 4))
@@ -2347,39 +2353,39 @@
 enddef
 
 def Test_matchadd()
-  CheckDefAndScriptFailure(['matchadd(1, "b")'], ['E1013: Argument 1: type mismatch, expected string but got number', 'E1174: String required for argument 1'])
-  CheckDefAndScriptFailure(['matchadd("a", 2)'], ['E1013: Argument 2: type mismatch, expected string but got number', 'E1174: String required for argument 2'])
-  CheckDefAndScriptFailure(['matchadd("a", "b", "c")'], ['E1013: Argument 3: type mismatch, expected number but got string', 'E1210: Number required for argument 3'])
-  CheckDefAndScriptFailure(['matchadd("a", "b", 1, "d")'], ['E1013: Argument 4: type mismatch, expected number but got string', 'E1210: Number required for argument 4'])
-  CheckDefAndScriptFailure(['matchadd("a", "b", 1, 1, [])'], ['E1013: Argument 5: type mismatch, expected dict<any> but got list<unknown>', 'E1206: Dictionary required for argument 5'])
+  v9.CheckDefAndScriptFailure(['matchadd(1, "b")'], ['E1013: Argument 1: type mismatch, expected string but got number', 'E1174: String required for argument 1'])
+  v9.CheckDefAndScriptFailure(['matchadd("a", 2)'], ['E1013: Argument 2: type mismatch, expected string but got number', 'E1174: String required for argument 2'])
+  v9.CheckDefAndScriptFailure(['matchadd("a", "b", "c")'], ['E1013: Argument 3: type mismatch, expected number but got string', 'E1210: Number required for argument 3'])
+  v9.CheckDefAndScriptFailure(['matchadd("a", "b", 1, "d")'], ['E1013: Argument 4: type mismatch, expected number but got string', 'E1210: Number required for argument 4'])
+  v9.CheckDefAndScriptFailure(['matchadd("a", "b", 1, 1, [])'], ['E1013: Argument 5: type mismatch, expected dict<any> but got list<unknown>', 'E1206: Dictionary required for argument 5'])
   matchadd('', 'a')->assert_equal(-1)
   matchadd('Search', '')->assert_equal(-1)
 enddef
 
 def Test_matchaddpos()
-  CheckDefAndScriptFailure(['matchaddpos(1, [1])'], ['E1013: Argument 1: type mismatch, expected string but got number', 'E1174: String required for argument 1'])
-  CheckDefAndScriptFailure(['matchaddpos("a", "b")'], ['E1013: Argument 2: type mismatch, expected list<any> but got string', 'E1211: List required for argument 2'])
-  CheckDefAndScriptFailure(['matchaddpos("a", [1], "c")'], ['E1013: Argument 3: type mismatch, expected number but got string', 'E1210: Number required for argument 3'])
-  CheckDefAndScriptFailure(['matchaddpos("a", [1], 1, "d")'], ['E1013: Argument 4: type mismatch, expected number but got string', 'E1210: Number required for argument 4'])
-  CheckDefAndScriptFailure(['matchaddpos("a", [1], 1, 1, [])'], ['E1013: Argument 5: type mismatch, expected dict<any> but got list<unknown>', 'E1206: Dictionary required for argument 5'])
+  v9.CheckDefAndScriptFailure(['matchaddpos(1, [1])'], ['E1013: Argument 1: type mismatch, expected string but got number', 'E1174: String required for argument 1'])
+  v9.CheckDefAndScriptFailure(['matchaddpos("a", "b")'], ['E1013: Argument 2: type mismatch, expected list<any> but got string', 'E1211: List required for argument 2'])
+  v9.CheckDefAndScriptFailure(['matchaddpos("a", [1], "c")'], ['E1013: Argument 3: type mismatch, expected number but got string', 'E1210: Number required for argument 3'])
+  v9.CheckDefAndScriptFailure(['matchaddpos("a", [1], 1, "d")'], ['E1013: Argument 4: type mismatch, expected number but got string', 'E1210: Number required for argument 4'])
+  v9.CheckDefAndScriptFailure(['matchaddpos("a", [1], 1, 1, [])'], ['E1013: Argument 5: type mismatch, expected dict<any> but got list<unknown>', 'E1206: Dictionary required for argument 5'])
   matchaddpos('', [1])->assert_equal(-1)
 enddef
 
 def Test_matcharg()
-  CheckDefAndScriptFailure(['matcharg("x")'], ['E1013: Argument 1: type mismatch, expected number but got string', 'E1210: Number required for argument 1'])
+  v9.CheckDefAndScriptFailure(['matcharg("x")'], ['E1013: Argument 1: type mismatch, expected number but got string', 'E1210: Number required for argument 1'])
 enddef
 
 def Test_matchdelete()
-  CheckDefAndScriptFailure(['matchdelete("x")'], ['E1013: Argument 1: type mismatch, expected number but got string', 'E1210: Number required for argument 1'])
-  CheckDefAndScriptFailure(['matchdelete("x", 1)'], ['E1013: Argument 1: type mismatch, expected number but got string', 'E1210: Number required for argument 1'])
-  CheckDefAndScriptFailure(['matchdelete(1, "x")'], ['E1013: Argument 2: type mismatch, expected number but got string', 'E1210: Number required for argument 2'])
+  v9.CheckDefAndScriptFailure(['matchdelete("x")'], ['E1013: Argument 1: type mismatch, expected number but got string', 'E1210: Number required for argument 1'])
+  v9.CheckDefAndScriptFailure(['matchdelete("x", 1)'], ['E1013: Argument 1: type mismatch, expected number but got string', 'E1210: Number required for argument 1'])
+  v9.CheckDefAndScriptFailure(['matchdelete(1, "x")'], ['E1013: Argument 2: type mismatch, expected number but got string', 'E1210: Number required for argument 2'])
 enddef
 
 def Test_matchend()
-  CheckDefAndScriptFailure(['matchend(0z12, "p")'], ['E1013: Argument 1: type mismatch, expected string but got blob', 'E1222: String or List required for argument 1'])
-  CheckDefAndScriptFailure(['matchend(["s"], [2])'], ['E1013: Argument 2: type mismatch, expected string but got list<number>', 'E1174: String required for argument 2'])
-  CheckDefAndScriptFailure(['matchend("s", "p", "q")'], ['E1013: Argument 3: type mismatch, expected number but got string', 'E1210: Number required for argument 3'])
-  CheckDefAndScriptFailure(['matchend("s", "p", 1, "r")'], ['E1013: Argument 4: type mismatch, expected number but got string', 'E1210: Number required for argument 4'])
+  v9.CheckDefAndScriptFailure(['matchend(0z12, "p")'], ['E1013: Argument 1: type mismatch, expected string but got blob', 'E1222: String or List required for argument 1'])
+  v9.CheckDefAndScriptFailure(['matchend(["s"], [2])'], ['E1013: Argument 2: type mismatch, expected string but got list<number>', 'E1174: String required for argument 2'])
+  v9.CheckDefAndScriptFailure(['matchend("s", "p", "q")'], ['E1013: Argument 3: type mismatch, expected number but got string', 'E1210: Number required for argument 3'])
+  v9.CheckDefAndScriptFailure(['matchend("s", "p", 1, "r")'], ['E1013: Argument 4: type mismatch, expected number but got string', 'E1210: Number required for argument 4'])
   assert_equal(4, matchend('ab12cd', '12'))
   assert_equal(-1, matchend('ab12cd', '34'))
   assert_equal(8, matchend('ab12cd12ef', '12', 4))
@@ -2394,24 +2400,24 @@
 enddef
 
 def Test_matchfuzzy()
-  CheckDefAndScriptFailure(['matchfuzzy({}, "p")'], ['E1013: Argument 1: type mismatch, expected list<any> but got dict<unknown>', 'E1211: List required for argument 1'])
-  CheckDefAndScriptFailure(['matchfuzzy([], 1)'], ['E1013: Argument 2: type mismatch, expected string but got number', 'E1174: String required for argument 2'])
-  CheckDefAndScriptFailure(['matchfuzzy([], "a", [])'], ['E1013: Argument 3: type mismatch, expected dict<any> but got list<unknown>', 'E1206: Dictionary required for argument 3'])
+  v9.CheckDefAndScriptFailure(['matchfuzzy({}, "p")'], ['E1013: Argument 1: type mismatch, expected list<any> but got dict<unknown>', 'E1211: List required for argument 1'])
+  v9.CheckDefAndScriptFailure(['matchfuzzy([], 1)'], ['E1013: Argument 2: type mismatch, expected string but got number', 'E1174: String required for argument 2'])
+  v9.CheckDefAndScriptFailure(['matchfuzzy([], "a", [])'], ['E1013: Argument 3: type mismatch, expected dict<any> but got list<unknown>', 'E1206: Dictionary required for argument 3'])
   matchfuzzy(['abc', 'xyz'], '')->assert_equal([])
 enddef
 
 def Test_matchfuzzypos()
-  CheckDefAndScriptFailure(['matchfuzzypos({}, "p")'], ['E1013: Argument 1: type mismatch, expected list<any> but got dict<unknown>', 'E1211: List required for argument 1'])
-  CheckDefAndScriptFailure(['matchfuzzypos([], 1)'], ['E1013: Argument 2: type mismatch, expected string but got number', 'E1174: String required for argument 2'])
-  CheckDefAndScriptFailure(['matchfuzzypos([], "a", [])'], ['E1013: Argument 3: type mismatch, expected dict<any> but got list<unknown>', 'E1206: Dictionary required for argument 3'])
+  v9.CheckDefAndScriptFailure(['matchfuzzypos({}, "p")'], ['E1013: Argument 1: type mismatch, expected list<any> but got dict<unknown>', 'E1211: List required for argument 1'])
+  v9.CheckDefAndScriptFailure(['matchfuzzypos([], 1)'], ['E1013: Argument 2: type mismatch, expected string but got number', 'E1174: String required for argument 2'])
+  v9.CheckDefAndScriptFailure(['matchfuzzypos([], "a", [])'], ['E1013: Argument 3: type mismatch, expected dict<any> but got list<unknown>', 'E1206: Dictionary required for argument 3'])
   matchfuzzypos(['abc', 'xyz'], '')->assert_equal([[], [], []])
 enddef
 
 def Test_matchlist()
-  CheckDefAndScriptFailure(['matchlist(0z12, "p")'], ['E1013: Argument 1: type mismatch, expected string but got blob', 'E1222: String or List required for argument 1'])
-  CheckDefAndScriptFailure(['matchlist(["s"], [2])'], ['E1013: Argument 2: type mismatch, expected string but got list<number>', 'E1174: String required for argument 2'])
-  CheckDefAndScriptFailure(['matchlist("s", "p", "q")'], ['E1013: Argument 3: type mismatch, expected number but got string', 'E1210: Number required for argument 3'])
-  CheckDefAndScriptFailure(['matchlist("s", "p", 1, "r")'], ['E1013: Argument 4: type mismatch, expected number but got string', 'E1210: Number required for argument 4'])
+  v9.CheckDefAndScriptFailure(['matchlist(0z12, "p")'], ['E1013: Argument 1: type mismatch, expected string but got blob', 'E1222: String or List required for argument 1'])
+  v9.CheckDefAndScriptFailure(['matchlist(["s"], [2])'], ['E1013: Argument 2: type mismatch, expected string but got list<number>', 'E1174: String required for argument 2'])
+  v9.CheckDefAndScriptFailure(['matchlist("s", "p", "q")'], ['E1013: Argument 3: type mismatch, expected number but got string', 'E1210: Number required for argument 3'])
+  v9.CheckDefAndScriptFailure(['matchlist("s", "p", 1, "r")'], ['E1013: Argument 4: type mismatch, expected number but got string', 'E1210: Number required for argument 4'])
   var l: list<string> = ['12',  '', '', '', '', '', '', '', '', '']
   assert_equal(l, matchlist('ab12cd', '12'))
   assert_equal([], matchlist('ab12cd', '34'))
@@ -2429,10 +2435,10 @@
 enddef
 
 def Test_matchstr()
-  CheckDefAndScriptFailure(['matchstr(0z12, "p")'], ['E1013: Argument 1: type mismatch, expected string but got blob', 'E1222: String or List required for argument 1'])
-  CheckDefAndScriptFailure(['matchstr(["s"], [2])'], ['E1013: Argument 2: type mismatch, expected string but got list<number>', 'E1174: String required for argument 2'])
-  CheckDefAndScriptFailure(['matchstr("s", "p", "q")'], ['E1013: Argument 3: type mismatch, expected number but got string', 'E1210: Number required for argument 3'])
-  CheckDefAndScriptFailure(['matchstr("s", "p", 1, "r")'], ['E1013: Argument 4: type mismatch, expected number but got string', 'E1210: Number required for argument 4'])
+  v9.CheckDefAndScriptFailure(['matchstr(0z12, "p")'], ['E1013: Argument 1: type mismatch, expected string but got blob', 'E1222: String or List required for argument 1'])
+  v9.CheckDefAndScriptFailure(['matchstr(["s"], [2])'], ['E1013: Argument 2: type mismatch, expected string but got list<number>', 'E1174: String required for argument 2'])
+  v9.CheckDefAndScriptFailure(['matchstr("s", "p", "q")'], ['E1013: Argument 3: type mismatch, expected number but got string', 'E1210: Number required for argument 3'])
+  v9.CheckDefAndScriptFailure(['matchstr("s", "p", 1, "r")'], ['E1013: Argument 4: type mismatch, expected number but got string', 'E1210: Number required for argument 4'])
   assert_equal('12', matchstr('ab12cd', '12'))
   assert_equal('', matchstr('ab12cd', '34'))
   assert_equal('12', matchstr('ab12cd12ef', '12', 4))
@@ -2447,10 +2453,10 @@
 enddef
 
 def Test_matchstrpos()
-  CheckDefAndScriptFailure(['matchstrpos(0z12, "p")'], ['E1013: Argument 1: type mismatch, expected string but got blob', 'E1222: String or List required for argument 1'])
-  CheckDefAndScriptFailure(['matchstrpos(["s"], [2])'], ['E1013: Argument 2: type mismatch, expected string but got list<number>', 'E1174: String required for argument 2'])
-  CheckDefAndScriptFailure(['matchstrpos("s", "p", "q")'], ['E1013: Argument 3: type mismatch, expected number but got string', 'E1210: Number required for argument 3'])
-  CheckDefAndScriptFailure(['matchstrpos("s", "p", 1, "r")'], ['E1013: Argument 4: type mismatch, expected number but got string', 'E1210: Number required for argument 4'])
+  v9.CheckDefAndScriptFailure(['matchstrpos(0z12, "p")'], ['E1013: Argument 1: type mismatch, expected string but got blob', 'E1222: String or List required for argument 1'])
+  v9.CheckDefAndScriptFailure(['matchstrpos(["s"], [2])'], ['E1013: Argument 2: type mismatch, expected string but got list<number>', 'E1174: String required for argument 2'])
+  v9.CheckDefAndScriptFailure(['matchstrpos("s", "p", "q")'], ['E1013: Argument 3: type mismatch, expected number but got string', 'E1210: Number required for argument 3'])
+  v9.CheckDefAndScriptFailure(['matchstrpos("s", "p", 1, "r")'], ['E1013: Argument 4: type mismatch, expected number but got string', 'E1210: Number required for argument 4'])
   assert_equal(['12', 2, 4], matchstrpos('ab12cd', '12'))
   assert_equal(['', -1, -1], matchstrpos('ab12cd', '34'))
   assert_equal(['12', 6, 8], matchstrpos('ab12cd12ef', '12', 4))
@@ -2478,13 +2484,13 @@
           ? [1, max([2, 3])]
           : [4, 5]
   assert_equal([4, 5], l2)
-  CheckDefAndScriptFailure(['max(5)'], ['E1013: Argument 1: type mismatch, expected list<any> but got number', 'E1227: List or Dictionary required for argument 1'])
+  v9.CheckDefAndScriptFailure(['max(5)'], ['E1013: Argument 1: type mismatch, expected list<any> but got number', 'E1227: List or Dictionary required for argument 1'])
 enddef
 
 def Test_menu_info()
-  CheckDefAndScriptFailure(['menu_info(10)'], ['E1013: Argument 1: type mismatch, expected string but got number', 'E1174: String required for argument 1'])
-  CheckDefAndScriptFailure(['menu_info(10, "n")'], ['E1013: Argument 1: type mismatch, expected string but got number', 'E1174: String required for argument 1'])
-  CheckDefAndScriptFailure(['menu_info("File", 10)'], ['E1013: Argument 2: type mismatch, expected string but got number', 'E1174: String required for argument 2'])
+  v9.CheckDefAndScriptFailure(['menu_info(10)'], ['E1013: Argument 1: type mismatch, expected string but got number', 'E1174: String required for argument 1'])
+  v9.CheckDefAndScriptFailure(['menu_info(10, "n")'], ['E1013: Argument 1: type mismatch, expected string but got number', 'E1174: String required for argument 1'])
+  v9.CheckDefAndScriptFailure(['menu_info("File", 10)'], ['E1013: Argument 2: type mismatch, expected string but got number', 'E1174: String required for argument 2'])
   assert_equal({}, menu_info('aMenu'))
 enddef
 
@@ -2500,49 +2506,49 @@
           ? [1, min([2, 3])]
           : [4, 5]
   assert_equal([4, 5], l2)
-  CheckDefAndScriptFailure(['min(5)'], ['E1013: Argument 1: type mismatch, expected list<any> but got number', 'E1227: List or Dictionary required for argument 1'])
+  v9.CheckDefAndScriptFailure(['min(5)'], ['E1013: Argument 1: type mismatch, expected list<any> but got number', 'E1227: List or Dictionary required for argument 1'])
 enddef
 
 def Test_mkdir()
-  CheckDefAndScriptFailure(['mkdir(["a"])'], ['E1013: Argument 1: type mismatch, expected string but got list<string>', 'E1174: String required for argument 1'])
-  CheckDefAndScriptFailure(['mkdir("a", {})'], ['E1013: Argument 2: type mismatch, expected string but got dict<unknown>', 'E1174: String required for argument 2'])
-  CheckDefAndScriptFailure(['mkdir("a", "b", "c")'], ['E1013: Argument 3: type mismatch, expected number but got string', 'E1210: Number required for argument 3'])
-  CheckDefExecAndScriptFailure(['mkdir("")'], 'E1175: Non-empty string required for argument 1')
+  v9.CheckDefAndScriptFailure(['mkdir(["a"])'], ['E1013: Argument 1: type mismatch, expected string but got list<string>', 'E1174: String required for argument 1'])
+  v9.CheckDefAndScriptFailure(['mkdir("a", {})'], ['E1013: Argument 2: type mismatch, expected string but got dict<unknown>', 'E1174: String required for argument 2'])
+  v9.CheckDefAndScriptFailure(['mkdir("a", "b", "c")'], ['E1013: Argument 3: type mismatch, expected number but got string', 'E1210: Number required for argument 3'])
+  v9.CheckDefExecAndScriptFailure(['mkdir("")'], 'E1175: Non-empty string required for argument 1')
   delete('a', 'rf')
 enddef
 
 def Test_mode()
-  CheckDefAndScriptFailure(['mode("1")'], ['E1013: Argument 1: type mismatch, expected bool but got string', 'E1212: Bool required for argument 1'])
-  CheckDefAndScriptFailure(['mode(2)'], ['E1013: Argument 1: type mismatch, expected bool but got number', 'E1212: Bool required for argument 1'])
+  v9.CheckDefAndScriptFailure(['mode("1")'], ['E1013: Argument 1: type mismatch, expected bool but got string', 'E1212: Bool required for argument 1'])
+  v9.CheckDefAndScriptFailure(['mode(2)'], ['E1013: Argument 1: type mismatch, expected bool but got number', 'E1212: Bool required for argument 1'])
 enddef
 
 def Test_mzeval()
   if !has('mzscheme')
     CheckFeature mzscheme
   endif
-  CheckDefAndScriptFailure(['mzeval(["a"])'], ['E1013: Argument 1: type mismatch, expected string but got list<string>', 'E1174: String required for argument 1'])
+  v9.CheckDefAndScriptFailure(['mzeval(["a"])'], ['E1013: Argument 1: type mismatch, expected string but got list<string>', 'E1174: String required for argument 1'])
 enddef
 
 def Test_nextnonblank()
-  CheckDefAndScriptFailure(['nextnonblank(null)'], ['E1013: Argument 1: type mismatch, expected string but got special', 'E1220: String or Number required for argument 1'])
-  CheckDefExecAndScriptFailure(['nextnonblank("")'], 'E1209: Invalid value for a line number')
+  v9.CheckDefAndScriptFailure(['nextnonblank(null)'], ['E1013: Argument 1: type mismatch, expected string but got special', 'E1220: String or Number required for argument 1'])
+  v9.CheckDefExecAndScriptFailure(['nextnonblank("")'], 'E1209: Invalid value for a line number')
   assert_equal(0, nextnonblank(1))
 enddef
 
 def Test_nr2char()
   nr2char(97, true)->assert_equal('a')
-  CheckDefAndScriptFailure(['nr2char("x")'], ['E1013: Argument 1: type mismatch, expected number but got string', 'E1210: Number required for argument 1'])
-  CheckDefAndScriptFailure(['nr2char(1, "a")'], ['E1013: Argument 2: type mismatch, expected bool but got string', 'E1212: Bool required for argument 2'])
+  v9.CheckDefAndScriptFailure(['nr2char("x")'], ['E1013: Argument 1: type mismatch, expected number but got string', 'E1210: Number required for argument 1'])
+  v9.CheckDefAndScriptFailure(['nr2char(1, "a")'], ['E1013: Argument 2: type mismatch, expected bool but got string', 'E1212: Bool required for argument 2'])
 enddef
 
 def Test_or()
-  CheckDefAndScriptFailure(['or("x", 0x2)'], ['E1013: Argument 1: type mismatch, expected number but got string', 'E1210: Number required for argument 1'])
-  CheckDefAndScriptFailure(['or(0x1, "x")'], ['E1013: Argument 2: type mismatch, expected number but got string', 'E1210: Number required for argument 2'])
+  v9.CheckDefAndScriptFailure(['or("x", 0x2)'], ['E1013: Argument 1: type mismatch, expected number but got string', 'E1210: Number required for argument 1'])
+  v9.CheckDefAndScriptFailure(['or(0x1, "x")'], ['E1013: Argument 2: type mismatch, expected number but got string', 'E1210: Number required for argument 2'])
 enddef
 
 def Test_pathshorten()
-  CheckDefAndScriptFailure(['pathshorten(1)'], ['E1013: Argument 1: type mismatch, expected string but got number', 'E1174: String required for argument 1'])
-  CheckDefAndScriptFailure(['pathshorten("a", "x")'], ['E1013: Argument 2: type mismatch, expected number but got string', 'E1210: Number required for argument 2'])
+  v9.CheckDefAndScriptFailure(['pathshorten(1)'], ['E1013: Argument 1: type mismatch, expected string but got number', 'E1174: String required for argument 1'])
+  v9.CheckDefAndScriptFailure(['pathshorten("a", "x")'], ['E1013: Argument 2: type mismatch, expected number but got string', 'E1210: Number required for argument 2'])
   pathshorten('')->assert_equal('')
 enddef
 
@@ -2550,12 +2556,12 @@
   if !has('perl')
     CheckFeature perl
   endif
-  CheckDefAndScriptFailure(['perleval(["a"])'], ['E1013: Argument 1: type mismatch, expected string but got list<string>', 'E1174: String required for argument 1'])
+  v9.CheckDefAndScriptFailure(['perleval(["a"])'], ['E1013: Argument 1: type mismatch, expected string but got list<string>', 'E1174: String required for argument 1'])
 enddef
 
 def Test_popup_atcursor()
-  CheckDefAndScriptFailure(['popup_atcursor({"a": 10}, {})'], ['E1013: Argument 1: type mismatch, expected string but got dict<number>', 'E1224: String, Number or List required for argument 1'])
-  CheckDefAndScriptFailure(['popup_atcursor("a", [1, 2])'], ['E1013: Argument 2: type mismatch, expected dict<any> but got list<number>', 'E1206: Dictionary required for argument 2'])
+  v9.CheckDefAndScriptFailure(['popup_atcursor({"a": 10}, {})'], ['E1013: Argument 1: type mismatch, expected string but got dict<number>', 'E1224: String, Number or List required for argument 1'])
+  v9.CheckDefAndScriptFailure(['popup_atcursor("a", [1, 2])'], ['E1013: Argument 2: type mismatch, expected dict<any> but got list<number>', 'E1206: Dictionary required for argument 2'])
 
   # Pass variable of type 'any' to popup_atcursor()
   var what: any = 'Hello'
@@ -2565,17 +2571,17 @@
 enddef
 
 def Test_popup_beval()
-  CheckDefAndScriptFailure(['popup_beval({"a": 10}, {})'], ['E1013: Argument 1: type mismatch, expected string but got dict<number>', 'E1224: String, Number or List required for argument 1'])
-  CheckDefAndScriptFailure(['popup_beval("a", [1, 2])'], ['E1013: Argument 2: type mismatch, expected dict<any> but got list<number>', 'E1206: Dictionary required for argument 2'])
+  v9.CheckDefAndScriptFailure(['popup_beval({"a": 10}, {})'], ['E1013: Argument 1: type mismatch, expected string but got dict<number>', 'E1224: String, Number or List required for argument 1'])
+  v9.CheckDefAndScriptFailure(['popup_beval("a", [1, 2])'], ['E1013: Argument 2: type mismatch, expected dict<any> but got list<number>', 'E1206: Dictionary required for argument 2'])
 enddef
 
 def Test_popup_clear()
-  CheckDefAndScriptFailure(['popup_clear(["a"])'], ['E1013: Argument 1: type mismatch, expected bool but got list<string>', 'E1212: Bool required for argument 1'])
-  CheckDefAndScriptFailure(['popup_clear(2)'], ['E1013: Argument 1: type mismatch, expected bool but got number', 'E1212: Bool required for argument 1'])
+  v9.CheckDefAndScriptFailure(['popup_clear(["a"])'], ['E1013: Argument 1: type mismatch, expected bool but got list<string>', 'E1212: Bool required for argument 1'])
+  v9.CheckDefAndScriptFailure(['popup_clear(2)'], ['E1013: Argument 1: type mismatch, expected bool but got number', 'E1212: Bool required for argument 1'])
 enddef
 
 def Test_popup_close()
-  CheckDefAndScriptFailure(['popup_close("a")'], ['E1013: Argument 1: type mismatch, expected number but got string', 'E1210: Number required for argument 1'])
+  v9.CheckDefAndScriptFailure(['popup_close("a")'], ['E1013: Argument 1: type mismatch, expected number but got string', 'E1210: Number required for argument 1'])
 enddef
 
 def Test_popup_create()
@@ -2587,81 +2593,81 @@
 enddef
 
 def Test_popup_dialog()
-  CheckDefAndScriptFailure(['popup_dialog({"a": 10}, {})'], ['E1013: Argument 1: type mismatch, expected string but got dict<number>', 'E1224: String, Number or List required for argument 1'])
-  CheckDefAndScriptFailure(['popup_dialog("a", [1, 2])'], ['E1013: Argument 2: type mismatch, expected dict<any> but got list<number>', 'E1206: Dictionary required for argument 2'])
+  v9.CheckDefAndScriptFailure(['popup_dialog({"a": 10}, {})'], ['E1013: Argument 1: type mismatch, expected string but got dict<number>', 'E1224: String, Number or List required for argument 1'])
+  v9.CheckDefAndScriptFailure(['popup_dialog("a", [1, 2])'], ['E1013: Argument 2: type mismatch, expected dict<any> but got list<number>', 'E1206: Dictionary required for argument 2'])
 enddef
 
 def Test_popup_filter_menu()
-  CheckDefAndScriptFailure(['popup_filter_menu("x", "")'], ['E1013: Argument 1: type mismatch, expected number but got string', 'E1210: Number required for argument 1'])
-  CheckDefAndScriptFailure(['popup_filter_menu(1, 1)'], ['E1013: Argument 2: type mismatch, expected string but got number', 'E1174: String required for argument 2'])
+  v9.CheckDefAndScriptFailure(['popup_filter_menu("x", "")'], ['E1013: Argument 1: type mismatch, expected number but got string', 'E1210: Number required for argument 1'])
+  v9.CheckDefAndScriptFailure(['popup_filter_menu(1, 1)'], ['E1013: Argument 2: type mismatch, expected string but got number', 'E1174: String required for argument 2'])
   var id: number = popup_menu(["one", "two", "three"], {})
   popup_filter_menu(id, '')
   popup_close(id)
 enddef
 
 def Test_popup_filter_yesno()
-  CheckDefAndScriptFailure(['popup_filter_yesno("x", "")'], ['E1013: Argument 1: type mismatch, expected number but got string', 'E1210: Number required for argument 1'])
-  CheckDefAndScriptFailure(['popup_filter_yesno(1, 1)'], ['E1013: Argument 2: type mismatch, expected string but got number', 'E1174: String required for argument 2'])
+  v9.CheckDefAndScriptFailure(['popup_filter_yesno("x", "")'], ['E1013: Argument 1: type mismatch, expected number but got string', 'E1210: Number required for argument 1'])
+  v9.CheckDefAndScriptFailure(['popup_filter_yesno(1, 1)'], ['E1013: Argument 2: type mismatch, expected string but got number', 'E1174: String required for argument 2'])
 enddef
 
 def Test_popup_getoptions()
-  CheckDefAndScriptFailure(['popup_getoptions("a")'], ['E1013: Argument 1: type mismatch, expected number but got string', 'E1210: Number required for argument 1'])
-  CheckDefAndScriptFailure(['popup_getoptions(true)'], ['E1013: Argument 1: type mismatch, expected number but got bool', 'E1210: Number required for argument 1'])
+  v9.CheckDefAndScriptFailure(['popup_getoptions("a")'], ['E1013: Argument 1: type mismatch, expected number but got string', 'E1210: Number required for argument 1'])
+  v9.CheckDefAndScriptFailure(['popup_getoptions(true)'], ['E1013: Argument 1: type mismatch, expected number but got bool', 'E1210: Number required for argument 1'])
 enddef
 
 def Test_popup_getpos()
-  CheckDefAndScriptFailure(['popup_getpos("a")'], ['E1013: Argument 1: type mismatch, expected number but got string', 'E1210: Number required for argument 1'])
-  CheckDefAndScriptFailure(['popup_getpos(true)'], ['E1013: Argument 1: type mismatch, expected number but got bool', 'E1210: Number required for argument 1'])
+  v9.CheckDefAndScriptFailure(['popup_getpos("a")'], ['E1013: Argument 1: type mismatch, expected number but got string', 'E1210: Number required for argument 1'])
+  v9.CheckDefAndScriptFailure(['popup_getpos(true)'], ['E1013: Argument 1: type mismatch, expected number but got bool', 'E1210: Number required for argument 1'])
 enddef
 
 def Test_popup_hide()
-  CheckDefAndScriptFailure(['popup_hide("a")'], ['E1013: Argument 1: type mismatch, expected number but got string', 'E1210: Number required for argument 1'])
-  CheckDefAndScriptFailure(['popup_hide(true)'], ['E1013: Argument 1: type mismatch, expected number but got bool', 'E1210: Number required for argument 1'])
+  v9.CheckDefAndScriptFailure(['popup_hide("a")'], ['E1013: Argument 1: type mismatch, expected number but got string', 'E1210: Number required for argument 1'])
+  v9.CheckDefAndScriptFailure(['popup_hide(true)'], ['E1013: Argument 1: type mismatch, expected number but got bool', 'E1210: Number required for argument 1'])
 enddef
 
 def Test_popup_locate()
-  CheckDefAndScriptFailure(['popup_locate("a", 20)'], ['E1013: Argument 1: type mismatch, expected number but got string', 'E1210: Number required for argument 1'])
-  CheckDefAndScriptFailure(['popup_locate(10, "b")'], ['E1013: Argument 2: type mismatch, expected number but got string', 'E1210: Number required for argument 2'])
+  v9.CheckDefAndScriptFailure(['popup_locate("a", 20)'], ['E1013: Argument 1: type mismatch, expected number but got string', 'E1210: Number required for argument 1'])
+  v9.CheckDefAndScriptFailure(['popup_locate(10, "b")'], ['E1013: Argument 2: type mismatch, expected number but got string', 'E1210: Number required for argument 2'])
 enddef
 
 def Test_popup_menu()
-  CheckDefAndScriptFailure(['popup_menu({"a": 10}, {})'], ['E1013: Argument 1: type mismatch, expected string but got dict<number>', 'E1224: String, Number or List required for argument 1'])
-  CheckDefAndScriptFailure(['popup_menu("a", [1, 2])'], ['E1013: Argument 2: type mismatch, expected dict<any> but got list<number>', 'E1206: Dictionary required for argument 2'])
+  v9.CheckDefAndScriptFailure(['popup_menu({"a": 10}, {})'], ['E1013: Argument 1: type mismatch, expected string but got dict<number>', 'E1224: String, Number or List required for argument 1'])
+  v9.CheckDefAndScriptFailure(['popup_menu("a", [1, 2])'], ['E1013: Argument 2: type mismatch, expected dict<any> but got list<number>', 'E1206: Dictionary required for argument 2'])
 enddef
 
 def Test_popup_move()
-  CheckDefAndScriptFailure(['popup_move("x", {})'], ['E1013: Argument 1: type mismatch, expected number but got string', 'E1210: Number required for argument 1'])
-  CheckDefAndScriptFailure(['popup_move(1, [])'], ['E1013: Argument 2: type mismatch, expected dict<any> but got list<unknown>', 'E1206: Dictionary required for argument 2'])
+  v9.CheckDefAndScriptFailure(['popup_move("x", {})'], ['E1013: Argument 1: type mismatch, expected number but got string', 'E1210: Number required for argument 1'])
+  v9.CheckDefAndScriptFailure(['popup_move(1, [])'], ['E1013: Argument 2: type mismatch, expected dict<any> but got list<unknown>', 'E1206: Dictionary required for argument 2'])
 enddef
 
 def Test_popup_notification()
-  CheckDefAndScriptFailure(['popup_notification({"a": 10}, {})'], ['E1013: Argument 1: type mismatch, expected string but got dict<number>', 'E1224: String, Number or List required for argument 1'])
-  CheckDefAndScriptFailure(['popup_notification("a", [1, 2])'], ['E1013: Argument 2: type mismatch, expected dict<any> but got list<number>', 'E1206: Dictionary required for argument 2'])
+  v9.CheckDefAndScriptFailure(['popup_notification({"a": 10}, {})'], ['E1013: Argument 1: type mismatch, expected string but got dict<number>', 'E1224: String, Number or List required for argument 1'])
+  v9.CheckDefAndScriptFailure(['popup_notification("a", [1, 2])'], ['E1013: Argument 2: type mismatch, expected dict<any> but got list<number>', 'E1206: Dictionary required for argument 2'])
 enddef
 
 def Test_popup_setoptions()
-  CheckDefAndScriptFailure(['popup_setoptions("x", {})'], ['E1013: Argument 1: type mismatch, expected number but got string', 'E1210: Number required for argument 1'])
-  CheckDefAndScriptFailure(['popup_setoptions(1, [])'], ['E1013: Argument 2: type mismatch, expected dict<any> but got list<unknown>', 'E1206: Dictionary required for argument 2'])
+  v9.CheckDefAndScriptFailure(['popup_setoptions("x", {})'], ['E1013: Argument 1: type mismatch, expected number but got string', 'E1210: Number required for argument 1'])
+  v9.CheckDefAndScriptFailure(['popup_setoptions(1, [])'], ['E1013: Argument 2: type mismatch, expected dict<any> but got list<unknown>', 'E1206: Dictionary required for argument 2'])
 enddef
 
 def Test_popup_settext()
-  CheckDefAndScriptFailure(['popup_settext("x", [])'], ['E1013: Argument 1: type mismatch, expected number but got string', 'E1210: Number required for argument 1'])
-  CheckDefAndScriptFailure(['popup_settext(1, 2)'], ['E1013: Argument 2: type mismatch, expected string but got number', 'E1222: String or List required for argument 2'])
+  v9.CheckDefAndScriptFailure(['popup_settext("x", [])'], ['E1013: Argument 1: type mismatch, expected number but got string', 'E1210: Number required for argument 1'])
+  v9.CheckDefAndScriptFailure(['popup_settext(1, 2)'], ['E1013: Argument 2: type mismatch, expected string but got number', 'E1222: String or List required for argument 2'])
 enddef
 
 def Test_popup_show()
-  CheckDefAndScriptFailure(['popup_show("a")'], ['E1013: Argument 1: type mismatch, expected number but got string', 'E1210: Number required for argument 1'])
-  CheckDefAndScriptFailure(['popup_show(true)'], ['E1013: Argument 1: type mismatch, expected number but got bool', 'E1210: Number required for argument 1'])
+  v9.CheckDefAndScriptFailure(['popup_show("a")'], ['E1013: Argument 1: type mismatch, expected number but got string', 'E1210: Number required for argument 1'])
+  v9.CheckDefAndScriptFailure(['popup_show(true)'], ['E1013: Argument 1: type mismatch, expected number but got bool', 'E1210: Number required for argument 1'])
 enddef
 
 def Test_prevnonblank()
-  CheckDefAndScriptFailure(['prevnonblank(null)'], ['E1013: Argument 1: type mismatch, expected string but got special', 'E1220: String or Number required for argument 1'])
-  CheckDefExecAndScriptFailure(['prevnonblank("")'], 'E1209: Invalid value for a line number')
+  v9.CheckDefAndScriptFailure(['prevnonblank(null)'], ['E1013: Argument 1: type mismatch, expected string but got special', 'E1220: String or Number required for argument 1'])
+  v9.CheckDefExecAndScriptFailure(['prevnonblank("")'], 'E1209: Invalid value for a line number')
   assert_equal(0, prevnonblank(1))
 enddef
 
 def Test_printf()
-  CheckDefAndScriptFailure(['printf([1])'], ['E1013: Argument 1: type mismatch, expected string but got list<number>', 'E1220: String or Number required for argument 1'])
+  v9.CheckDefAndScriptFailure(['printf([1])'], ['E1013: Argument 1: type mismatch, expected string but got list<number>', 'E1220: String or Number required for argument 1'])
   printf(0x10)->assert_equal('16')
   assert_equal(" abc", "abc"->printf("%4s"))
 enddef
@@ -2670,7 +2676,7 @@
   if !has('channel')
     CheckFeature channel
   else
-    CheckDefAndScriptFailure(['prompt_getprompt([])'], ['E1013: Argument 1: type mismatch, expected string but got list<unknown>', 'E1220: String or Number required for argument 1'])
+    v9.CheckDefAndScriptFailure(['prompt_getprompt([])'], ['E1013: Argument 1: type mismatch, expected string but got list<unknown>', 'E1220: String or Number required for argument 1'])
     assert_equal('', prompt_getprompt('NonExistingBuf'))
   endif
 enddef
@@ -2679,7 +2685,7 @@
   if !has('channel')
     CheckFeature channel
   else
-    CheckDefAndScriptFailure(['prompt_setcallback(true, "1")'], ['E1013: Argument 1: type mismatch, expected string but got bool', 'E1220: String or Number required for argument 1'])
+    v9.CheckDefAndScriptFailure(['prompt_setcallback(true, "1")'], ['E1013: Argument 1: type mismatch, expected string but got bool', 'E1220: String or Number required for argument 1'])
   endif
 enddef
 
@@ -2687,7 +2693,7 @@
   if !has('channel')
     CheckFeature channel
   else
-    CheckDefAndScriptFailure(['prompt_setinterrupt(true, "1")'], ['E1013: Argument 1: type mismatch, expected string but got bool', 'E1220: String or Number required for argument 1'])
+    v9.CheckDefAndScriptFailure(['prompt_setinterrupt(true, "1")'], ['E1013: Argument 1: type mismatch, expected string but got bool', 'E1220: String or Number required for argument 1'])
   endif
 enddef
 
@@ -2695,116 +2701,116 @@
   if !has('channel')
     CheckFeature channel
   else
-    CheckDefAndScriptFailure(['prompt_setprompt([], "p")'], ['E1013: Argument 1: type mismatch, expected string but got list<unknown>', 'E1220: String or Number required for argument 1'])
-    CheckDefAndScriptFailure(['prompt_setprompt(1, [])'], ['E1013: Argument 2: type mismatch, expected string but got list<unknown>', 'E1174: String required for argument 2'])
+    v9.CheckDefAndScriptFailure(['prompt_setprompt([], "p")'], ['E1013: Argument 1: type mismatch, expected string but got list<unknown>', 'E1220: String or Number required for argument 1'])
+    v9.CheckDefAndScriptFailure(['prompt_setprompt(1, [])'], ['E1013: Argument 2: type mismatch, expected string but got list<unknown>', 'E1174: String required for argument 2'])
   endif
 enddef
 
 def Test_prop_add()
-  CheckDefAndScriptFailure(['prop_add("a", 2, {})'], ['E1013: Argument 1: type mismatch, expected number but got string', 'E1210: Number required for argument 1'])
-  CheckDefAndScriptFailure(['prop_add(1, "b", {})'], ['E1013: Argument 2: type mismatch, expected number but got string', 'E1210: Number required for argument 2'])
-  CheckDefAndScriptFailure(['prop_add(1, 2, [])'], ['E1013: Argument 3: type mismatch, expected dict<any> but got list<unknown>', 'E1206: Dictionary required for argument 3'])
+  v9.CheckDefAndScriptFailure(['prop_add("a", 2, {})'], ['E1013: Argument 1: type mismatch, expected number but got string', 'E1210: Number required for argument 1'])
+  v9.CheckDefAndScriptFailure(['prop_add(1, "b", {})'], ['E1013: Argument 2: type mismatch, expected number but got string', 'E1210: Number required for argument 2'])
+  v9.CheckDefAndScriptFailure(['prop_add(1, 2, [])'], ['E1013: Argument 3: type mismatch, expected dict<any> but got list<unknown>', 'E1206: Dictionary required for argument 3'])
 enddef
 
 def Test_prop_add_list()
-  CheckDefAndScriptFailure(['prop_add_list([], [])'], ['E1013: Argument 1: type mismatch, expected dict<any> but got list<unknown>', 'E1206: Dictionary required for argument 1'])
-  CheckDefAndScriptFailure(['prop_add_list({}, {})'], ['E1013: Argument 2: type mismatch, expected list<any> but got dict<unknown>', 'E1211: List required for argument 2'])
+  v9.CheckDefAndScriptFailure(['prop_add_list([], [])'], ['E1013: Argument 1: type mismatch, expected dict<any> but got list<unknown>', 'E1206: Dictionary required for argument 1'])
+  v9.CheckDefAndScriptFailure(['prop_add_list({}, {})'], ['E1013: Argument 2: type mismatch, expected list<any> but got dict<unknown>', 'E1211: List required for argument 2'])
 enddef
 
 def Test_prop_clear()
-  CheckDefAndScriptFailure(['prop_clear("a")'], ['E1013: Argument 1: type mismatch, expected number but got string', 'E1210: Number required for argument 1'])
-  CheckDefAndScriptFailure(['prop_clear(1, "b")'], ['E1013: Argument 2: type mismatch, expected number but got string', 'E1210: Number required for argument 2'])
-  CheckDefAndScriptFailure(['prop_clear(1, 2, [])'], ['E1013: Argument 3: type mismatch, expected dict<any> but got list<unknown>', 'E1206: Dictionary required for argument 3'])
+  v9.CheckDefAndScriptFailure(['prop_clear("a")'], ['E1013: Argument 1: type mismatch, expected number but got string', 'E1210: Number required for argument 1'])
+  v9.CheckDefAndScriptFailure(['prop_clear(1, "b")'], ['E1013: Argument 2: type mismatch, expected number but got string', 'E1210: Number required for argument 2'])
+  v9.CheckDefAndScriptFailure(['prop_clear(1, 2, [])'], ['E1013: Argument 3: type mismatch, expected dict<any> but got list<unknown>', 'E1206: Dictionary required for argument 3'])
 enddef
 
 def Test_prop_find()
-  CheckDefAndScriptFailure(['prop_find([1, 2])'], ['E1013: Argument 1: type mismatch, expected dict<any> but got list<number>', 'E1206: Dictionary required for argument 1'])
-  CheckDefAndScriptFailure(['prop_find([1, 2], "k")'], ['E1013: Argument 1: type mismatch, expected dict<any> but got list<number>', 'E1206: Dictionary required for argument 1'])
-  CheckDefAndScriptFailure(['prop_find({"a": 10}, ["a"])'], ['E1013: Argument 2: type mismatch, expected string but got list<string>', 'E1174: String required for argument 2'])
+  v9.CheckDefAndScriptFailure(['prop_find([1, 2])'], ['E1013: Argument 1: type mismatch, expected dict<any> but got list<number>', 'E1206: Dictionary required for argument 1'])
+  v9.CheckDefAndScriptFailure(['prop_find([1, 2], "k")'], ['E1013: Argument 1: type mismatch, expected dict<any> but got list<number>', 'E1206: Dictionary required for argument 1'])
+  v9.CheckDefAndScriptFailure(['prop_find({"a": 10}, ["a"])'], ['E1013: Argument 2: type mismatch, expected string but got list<string>', 'E1174: String required for argument 2'])
   assert_fails("prop_find({}, '')", 'E474:')
 enddef
 
 def Test_prop_list()
-  CheckDefAndScriptFailure(['prop_list("x")'], ['E1013: Argument 1: type mismatch, expected number but got string', 'E1210: Number required for argument 1'])
-  CheckDefAndScriptFailure(['prop_list(1, [])'], ['E1013: Argument 2: type mismatch, expected dict<any> but got list<unknown>', 'E1206: Dictionary required for argument 2'])
+  v9.CheckDefAndScriptFailure(['prop_list("x")'], ['E1013: Argument 1: type mismatch, expected number but got string', 'E1210: Number required for argument 1'])
+  v9.CheckDefAndScriptFailure(['prop_list(1, [])'], ['E1013: Argument 2: type mismatch, expected dict<any> but got list<unknown>', 'E1206: Dictionary required for argument 2'])
 enddef
 
 def Test_prop_remove()
-  CheckDefAndScriptFailure(['prop_remove([])'], ['E1013: Argument 1: type mismatch, expected dict<any> but got list<unknown>', 'E1206: Dictionary required for argument 1'])
-  CheckDefAndScriptFailure(['prop_remove({}, "a")'], ['E1013: Argument 2: type mismatch, expected number but got string', 'E1210: Number required for argument 2'])
-  CheckDefAndScriptFailure(['prop_remove({}, 1, "b")'], ['E1013: Argument 3: type mismatch, expected number but got string', 'E1210: Number required for argument 3'])
+  v9.CheckDefAndScriptFailure(['prop_remove([])'], ['E1013: Argument 1: type mismatch, expected dict<any> but got list<unknown>', 'E1206: Dictionary required for argument 1'])
+  v9.CheckDefAndScriptFailure(['prop_remove({}, "a")'], ['E1013: Argument 2: type mismatch, expected number but got string', 'E1210: Number required for argument 2'])
+  v9.CheckDefAndScriptFailure(['prop_remove({}, 1, "b")'], ['E1013: Argument 3: type mismatch, expected number but got string', 'E1210: Number required for argument 3'])
 enddef
 
 def Test_prop_type_add()
-  CheckDefAndScriptFailure(['prop_type_add({"a": 10}, "b")'], ['E1013: Argument 1: type mismatch, expected string but got dict<number>', 'E1174: String required for argument 1'])
-  CheckDefAndScriptFailure(['prop_type_add("a", "b")'], ['E1013: Argument 2: type mismatch, expected dict<any> but got string', 'E1206: Dictionary required for argument 2'])
+  v9.CheckDefAndScriptFailure(['prop_type_add({"a": 10}, "b")'], ['E1013: Argument 1: type mismatch, expected string but got dict<number>', 'E1174: String required for argument 1'])
+  v9.CheckDefAndScriptFailure(['prop_type_add("a", "b")'], ['E1013: Argument 2: type mismatch, expected dict<any> but got string', 'E1206: Dictionary required for argument 2'])
   assert_fails("prop_type_add('', {highlight: 'Search'})", 'E474:')
 enddef
 
 def Test_prop_type_change()
-  CheckDefAndScriptFailure(['prop_type_change({"a": 10}, "b")'], ['E1013: Argument 1: type mismatch, expected string but got dict<number>', 'E1174: String required for argument 1'])
-  CheckDefAndScriptFailure(['prop_type_change("a", "b")'], ['E1013: Argument 2: type mismatch, expected dict<any> but got string', 'E1206: Dictionary required for argument 2'])
+  v9.CheckDefAndScriptFailure(['prop_type_change({"a": 10}, "b")'], ['E1013: Argument 1: type mismatch, expected string but got dict<number>', 'E1174: String required for argument 1'])
+  v9.CheckDefAndScriptFailure(['prop_type_change("a", "b")'], ['E1013: Argument 2: type mismatch, expected dict<any> but got string', 'E1206: Dictionary required for argument 2'])
   assert_fails("prop_type_change('', {highlight: 'Search'})", 'E474:')
 enddef
 
 def Test_prop_type_delete()
-  CheckDefAndScriptFailure(['prop_type_delete({"a": 10})'], ['E1013: Argument 1: type mismatch, expected string but got dict<number>', 'E1174: String required for argument 1'])
-  CheckDefAndScriptFailure(['prop_type_delete({"a": 10}, "b")'], ['E1013: Argument 1: type mismatch, expected string but got dict<number>', 'E1174: String required for argument 1'])
-  CheckDefAndScriptFailure(['prop_type_delete("a", "b")'], ['E1013: Argument 2: type mismatch, expected dict<any> but got string', 'E1206: Dictionary required for argument 2'])
+  v9.CheckDefAndScriptFailure(['prop_type_delete({"a": 10})'], ['E1013: Argument 1: type mismatch, expected string but got dict<number>', 'E1174: String required for argument 1'])
+  v9.CheckDefAndScriptFailure(['prop_type_delete({"a": 10}, "b")'], ['E1013: Argument 1: type mismatch, expected string but got dict<number>', 'E1174: String required for argument 1'])
+  v9.CheckDefAndScriptFailure(['prop_type_delete("a", "b")'], ['E1013: Argument 2: type mismatch, expected dict<any> but got string', 'E1206: Dictionary required for argument 2'])
   assert_fails("prop_type_delete('')", 'E474:')
 enddef
 
 def Test_prop_type_get()
-  CheckDefAndScriptFailure(['prop_type_get({"a": 10})'], ['E1013: Argument 1: type mismatch, expected string but got dict<number>', 'E1174: String required for argument 1'])
-  CheckDefAndScriptFailure(['prop_type_get({"a": 10}, "b")'], ['E1013: Argument 1: type mismatch, expected string but got dict<number>', 'E1174: String required for argument 1'])
-  CheckDefAndScriptFailure(['prop_type_get("a", "b")'], ['E1013: Argument 2: type mismatch, expected dict<any> but got string', 'E1206: Dictionary required for argument 2'])
+  v9.CheckDefAndScriptFailure(['prop_type_get({"a": 10})'], ['E1013: Argument 1: type mismatch, expected string but got dict<number>', 'E1174: String required for argument 1'])
+  v9.CheckDefAndScriptFailure(['prop_type_get({"a": 10}, "b")'], ['E1013: Argument 1: type mismatch, expected string but got dict<number>', 'E1174: String required for argument 1'])
+  v9.CheckDefAndScriptFailure(['prop_type_get("a", "b")'], ['E1013: Argument 2: type mismatch, expected dict<any> but got string', 'E1206: Dictionary required for argument 2'])
   assert_fails("prop_type_get('')", 'E474:')
 enddef
 
 def Test_prop_type_list()
-  CheckDefAndScriptFailure(['prop_type_list(["a"])'], ['E1013: Argument 1: type mismatch, expected dict<any> but got list<string>', 'E1206: Dictionary required for argument 1'])
-  CheckDefAndScriptFailure(['prop_type_list(2)'], ['E1013: Argument 1: type mismatch, expected dict<any> but got number', 'E1206: Dictionary required for argument 1'])
+  v9.CheckDefAndScriptFailure(['prop_type_list(["a"])'], ['E1013: Argument 1: type mismatch, expected dict<any> but got list<string>', 'E1206: Dictionary required for argument 1'])
+  v9.CheckDefAndScriptFailure(['prop_type_list(2)'], ['E1013: Argument 1: type mismatch, expected dict<any> but got number', 'E1206: Dictionary required for argument 1'])
 enddef
 
 def Test_py3eval()
   if !has('python3')
     CheckFeature python3
   endif
-  CheckDefAndScriptFailure(['py3eval([2])'], ['E1013: Argument 1: type mismatch, expected string but got list<number>', 'E1174: String required for argument 1'])
+  v9.CheckDefAndScriptFailure(['py3eval([2])'], ['E1013: Argument 1: type mismatch, expected string but got list<number>', 'E1174: String required for argument 1'])
 enddef
 
 def Test_pyeval()
   if !has('python')
     CheckFeature python
   endif
-  CheckDefAndScriptFailure(['pyeval([2])'], ['E1013: Argument 1: type mismatch, expected string but got list<number>', 'E1174: String required for argument 1'])
+  v9.CheckDefAndScriptFailure(['pyeval([2])'], ['E1013: Argument 1: type mismatch, expected string but got list<number>', 'E1174: String required for argument 1'])
 enddef
 
 def Test_pyxeval()
   if !has('python') && !has('python3')
     CheckFeature python
   endif
-  CheckDefAndScriptFailure(['pyxeval([2])'], ['E1013: Argument 1: type mismatch, expected string but got list<number>', 'E1174: String required for argument 1'])
+  v9.CheckDefAndScriptFailure(['pyxeval([2])'], ['E1013: Argument 1: type mismatch, expected string but got list<number>', 'E1174: String required for argument 1'])
 enddef
 
 def Test_rand()
-  CheckDefAndScriptFailure(['rand(10)'], ['E1013: Argument 1: type mismatch, expected list<number> but got number', 'E1211: List required for argument 1'])
-  CheckDefFailure(['rand(["a"])'], 'E1013: Argument 1: type mismatch, expected list<number> but got list<string>')
+  v9.CheckDefAndScriptFailure(['rand(10)'], ['E1013: Argument 1: type mismatch, expected list<number> but got number', 'E1211: List required for argument 1'])
+  v9.CheckDefFailure(['rand(["a"])'], 'E1013: Argument 1: type mismatch, expected list<number> but got list<string>')
   assert_true(rand() >= 0)
   assert_true(rand(srand()) >= 0)
 enddef
 
 def Test_range()
-  CheckDefAndScriptFailure(['range("a")'], ['E1013: Argument 1: type mismatch, expected number but got string', 'E1210: Number required for argument 1'])
-  CheckDefAndScriptFailure(['range(10, "b")'], ['E1013: Argument 2: type mismatch, expected number but got string', 'E1210: Number required for argument 2'])
-  CheckDefAndScriptFailure(['range(10, 20, "c")'], ['E1013: Argument 3: type mismatch, expected number but got string', 'E1210: Number required for argument 3'])
+  v9.CheckDefAndScriptFailure(['range("a")'], ['E1013: Argument 1: type mismatch, expected number but got string', 'E1210: Number required for argument 1'])
+  v9.CheckDefAndScriptFailure(['range(10, "b")'], ['E1013: Argument 2: type mismatch, expected number but got string', 'E1210: Number required for argument 2'])
+  v9.CheckDefAndScriptFailure(['range(10, 20, "c")'], ['E1013: Argument 3: type mismatch, expected number but got string', 'E1210: Number required for argument 3'])
 enddef
 
 def Test_readdir()
   eval expand('sautest')->readdir((e) => e[0] !=# '.')
   eval expand('sautest')->readdirex((e) => e.name[0] !=# '.')
-  CheckDefAndScriptFailure(['readdir(["a"])'], ['E1013: Argument 1: type mismatch, expected string but got list<string>', 'E1174: String required for argument 1'])
-  CheckDefAndScriptFailure(['readdir("a", "1", [3])'], ['E1013: Argument 3: type mismatch, expected dict<any> but got list<number>', 'E1206: Dictionary required for argument 3'])
+  v9.CheckDefAndScriptFailure(['readdir(["a"])'], ['E1013: Argument 1: type mismatch, expected string but got list<string>', 'E1174: String required for argument 1'])
+  v9.CheckDefAndScriptFailure(['readdir("a", "1", [3])'], ['E1013: Argument 3: type mismatch, expected dict<any> but got list<number>', 'E1206: Dictionary required for argument 3'])
   if has('unix')
     # only fails on Unix-like systems
     assert_fails('readdir("")', 'E484: Can''t open file')
@@ -2812,8 +2818,8 @@
 enddef
 
 def Test_readdirex()
-  CheckDefAndScriptFailure(['readdirex(["a"])'], ['E1013: Argument 1: type mismatch, expected string but got list<string>', 'E1174: String required for argument 1'])
-  CheckDefAndScriptFailure(['readdirex("a", "1", [3])'], ['E1013: Argument 3: type mismatch, expected dict<any> but got list<number>', 'E1206: Dictionary required for argument 3'])
+  v9.CheckDefAndScriptFailure(['readdirex(["a"])'], ['E1013: Argument 1: type mismatch, expected string but got list<string>', 'E1174: String required for argument 1'])
+  v9.CheckDefAndScriptFailure(['readdirex("a", "1", [3])'], ['E1013: Argument 3: type mismatch, expected dict<any> but got list<number>', 'E1206: Dictionary required for argument 3'])
   if has('unix')
     # only fails on Unix-like systems
     assert_fails('readdirex("")', 'E484: Can''t open file')
@@ -2829,8 +2835,8 @@
   var lines =<< trim END
       var read: list<string> = readblob('Xreadblob')
   END
-  CheckDefAndScriptFailure(lines, 'E1012: Type mismatch; expected list<string> but got blob', 1)
-  CheckDefExecAndScriptFailure(['readblob("")'], 'E484: Can''t open file <empty>')
+  v9.CheckDefAndScriptFailure(lines, 'E1012: Type mismatch; expected list<string> but got blob', 1)
+  v9.CheckDefExecAndScriptFailure(['readblob("")'], 'E484: Can''t open file <empty>')
   delete('Xreadblob')
 enddef
 
@@ -2843,16 +2849,16 @@
   var lines =<< trim END
       var read: dict<string> = readfile('Xreadfile')
   END
-  CheckDefAndScriptFailure(lines, 'E1012: Type mismatch; expected dict<string> but got list<string>', 1)
+  v9.CheckDefAndScriptFailure(lines, 'E1012: Type mismatch; expected dict<string> but got list<string>', 1)
   delete('Xreadfile')
 
-  CheckDefAndScriptFailure(['readfile("a", 0z10)'], ['E1013: Argument 2: type mismatch, expected string but got blob', 'E1174: String required for argument 2'])
-  CheckDefAndScriptFailure(['readfile("a", "b", "c")'], ['E1013: Argument 3: type mismatch, expected number but got string', 'E1210: Number required for argument 3'])
-  CheckDefExecAndScriptFailure(['readfile("")'], 'E1175: Non-empty string required for argument 1')
+  v9.CheckDefAndScriptFailure(['readfile("a", 0z10)'], ['E1013: Argument 2: type mismatch, expected string but got blob', 'E1174: String required for argument 2'])
+  v9.CheckDefAndScriptFailure(['readfile("a", "b", "c")'], ['E1013: Argument 3: type mismatch, expected number but got string', 'E1210: Number required for argument 3'])
+  v9.CheckDefExecAndScriptFailure(['readfile("")'], 'E1175: Non-empty string required for argument 1')
 enddef
 
 def Test_reduce()
-  CheckDefAndScriptFailure(['reduce({a: 10}, "1")'], ['E1013: Argument 1: type mismatch, expected list<any> but got dict<number>', 'E1252: String, List or Blob required for argument 1'])
+  v9.CheckDefAndScriptFailure(['reduce({a: 10}, "1")'], ['E1013: Argument 1: type mismatch, expected list<any> but got dict<number>', 'E1252: String, List or Blob required for argument 1'])
   assert_equal(6, [1, 2, 3]->reduce((r, c) => r + c, 0))
   assert_equal(11, 0z0506->reduce((r, c) => r + c, 0))
 enddef
@@ -2860,13 +2866,13 @@
 def Test_reltime()
   CheckFeature reltime
 
-  CheckDefExecAndScriptFailure(['[]->reltime()'], 'E474:')
-  CheckDefExecAndScriptFailure(['[]->reltime([])'], 'E474:')
+  v9.CheckDefExecAndScriptFailure(['[]->reltime()'], 'E474:')
+  v9.CheckDefExecAndScriptFailure(['[]->reltime([])'], 'E474:')
 
-  CheckDefAndScriptFailure(['reltime("x")'], ['E1013: Argument 1: type mismatch, expected list<number> but got string', 'E1211: List required for argument 1'])
-  CheckDefFailure(['reltime(["x", "y"])'], 'E1013: Argument 1: type mismatch, expected list<number> but got list<string>')
-  CheckDefAndScriptFailure(['reltime([1, 2], 10)'], ['E1013: Argument 2: type mismatch, expected list<number> but got number', 'E1211: List required for argument 2'])
-  CheckDefFailure(['reltime([1, 2], ["a", "b"])'], 'E1013: Argument 2: type mismatch, expected list<number> but got list<string>')
+  v9.CheckDefAndScriptFailure(['reltime("x")'], ['E1013: Argument 1: type mismatch, expected list<number> but got string', 'E1211: List required for argument 1'])
+  v9.CheckDefFailure(['reltime(["x", "y"])'], 'E1013: Argument 1: type mismatch, expected list<number> but got list<string>')
+  v9.CheckDefAndScriptFailure(['reltime([1, 2], 10)'], ['E1013: Argument 2: type mismatch, expected list<number> but got number', 'E1211: List required for argument 2'])
+  v9.CheckDefFailure(['reltime([1, 2], ["a", "b"])'], 'E1013: Argument 2: type mismatch, expected list<number> but got list<string>')
   var start: list<any> = reltime()
   assert_true(type(reltime(start)) == v:t_list)
   var end: list<any> = reltime()
@@ -2876,31 +2882,31 @@
 def Test_reltimefloat()
   CheckFeature reltime
 
-  CheckDefExecAndScriptFailure(['[]->reltimefloat()'], 'E474:')
+  v9.CheckDefExecAndScriptFailure(['[]->reltimefloat()'], 'E474:')
 
-  CheckDefAndScriptFailure(['reltimefloat("x")'], ['E1013: Argument 1: type mismatch, expected list<number> but got string', 'E1211: List required for argument 1'])
-  CheckDefFailure(['reltimefloat([1.1])'], 'E1013: Argument 1: type mismatch, expected list<number> but got list<float>')
+  v9.CheckDefAndScriptFailure(['reltimefloat("x")'], ['E1013: Argument 1: type mismatch, expected list<number> but got string', 'E1211: List required for argument 1'])
+  v9.CheckDefFailure(['reltimefloat([1.1])'], 'E1013: Argument 1: type mismatch, expected list<number> but got list<float>')
   assert_true(type(reltimefloat(reltime())) == v:t_float)
 enddef
 
 def Test_reltimestr()
   CheckFeature reltime
 
-  CheckDefExecAndScriptFailure(['[]->reltimestr()'], 'E474:')
+  v9.CheckDefExecAndScriptFailure(['[]->reltimestr()'], 'E474:')
 
-  CheckDefAndScriptFailure(['reltimestr(true)'], ['E1013: Argument 1: type mismatch, expected list<number> but got bool', 'E1211: List required for argument 1'])
-  CheckDefFailure(['reltimestr([true])'], 'E1013: Argument 1: type mismatch, expected list<number> but got list<bool>')
+  v9.CheckDefAndScriptFailure(['reltimestr(true)'], ['E1013: Argument 1: type mismatch, expected list<number> but got bool', 'E1211: List required for argument 1'])
+  v9.CheckDefFailure(['reltimestr([true])'], 'E1013: Argument 1: type mismatch, expected list<number> but got list<bool>')
   assert_true(type(reltimestr(reltime())) == v:t_string)
 enddef
 
 def Test_remote_expr()
   CheckFeature clientserver
   CheckEnv DISPLAY
-  CheckDefAndScriptFailure(['remote_expr(1, "b")'], ['E1013: Argument 1: type mismatch, expected string but got number', 'E1174: String required for argument 1'])
-  CheckDefAndScriptFailure(['remote_expr("a", 2)'], ['E1013: Argument 2: type mismatch, expected string but got number', 'E1174: String required for argument 2'])
-  CheckDefAndScriptFailure(['remote_expr("a", "b", 3)'], ['E1013: Argument 3: type mismatch, expected string but got number', 'E1174: String required for argument 3'])
-  CheckDefAndScriptFailure(['remote_expr("a", "b", "c", "d")'], ['E1013: Argument 4: type mismatch, expected number but got string', 'E1210: Number required for argument 4'])
-  CheckDefExecAndScriptFailure(['remote_expr("", "")'], 'E241: Unable to send to ')
+  v9.CheckDefAndScriptFailure(['remote_expr(1, "b")'], ['E1013: Argument 1: type mismatch, expected string but got number', 'E1174: String required for argument 1'])
+  v9.CheckDefAndScriptFailure(['remote_expr("a", 2)'], ['E1013: Argument 2: type mismatch, expected string but got number', 'E1174: String required for argument 2'])
+  v9.CheckDefAndScriptFailure(['remote_expr("a", "b", 3)'], ['E1013: Argument 3: type mismatch, expected string but got number', 'E1174: String required for argument 3'])
+  v9.CheckDefAndScriptFailure(['remote_expr("a", "b", "c", "d")'], ['E1013: Argument 4: type mismatch, expected number but got string', 'E1210: Number required for argument 4'])
+  v9.CheckDefExecAndScriptFailure(['remote_expr("", "")'], 'E241: Unable to send to ')
 enddef
 
 def Test_remote_foreground()
@@ -2909,7 +2915,7 @@
   CheckNotMSWindows
   CheckEnv DISPLAY
 
-  CheckDefAndScriptFailure(['remote_foreground(10)'], ['E1013: Argument 1: type mismatch, expected string but got number', 'E1174: String required for argument 1'])
+  v9.CheckDefAndScriptFailure(['remote_foreground(10)'], ['E1013: Argument 1: type mismatch, expected string but got number', 'E1174: String required for argument 1'])
   assert_fails('remote_foreground("NonExistingServer")', 'E241:')
   assert_fails('remote_foreground("")', 'E241:')
 enddef
@@ -2917,32 +2923,32 @@
 def Test_remote_peek()
   CheckFeature clientserver
   CheckEnv DISPLAY
-  CheckDefAndScriptFailure(['remote_peek(0z10)'], ['E1013: Argument 1: type mismatch, expected string but got blob', 'E1174: String required for argument 1'])
-  CheckDefAndScriptFailure(['remote_peek("a5b6c7", [1])'], ['E1013: Argument 2: type mismatch, expected string but got list<number>', 'E1174: String required for argument 2'])
-  CheckDefExecAndScriptFailure(['remote_peek("")'], 'E573: Invalid server id used')
+  v9.CheckDefAndScriptFailure(['remote_peek(0z10)'], ['E1013: Argument 1: type mismatch, expected string but got blob', 'E1174: String required for argument 1'])
+  v9.CheckDefAndScriptFailure(['remote_peek("a5b6c7", [1])'], ['E1013: Argument 2: type mismatch, expected string but got list<number>', 'E1174: String required for argument 2'])
+  v9.CheckDefExecAndScriptFailure(['remote_peek("")'], 'E573: Invalid server id used')
 enddef
 
 def Test_remote_read()
   CheckFeature clientserver
   CheckEnv DISPLAY
-  CheckDefAndScriptFailure(['remote_read(1)'], ['E1013: Argument 1: type mismatch, expected string but got number', 'E1174: String required for argument 1'])
-  CheckDefAndScriptFailure(['remote_read("a", "x")'], ['E1013: Argument 2: type mismatch, expected number but got string', 'E1210: Number required for argument 2'])
-  CheckDefExecAndScriptFailure(['remote_read("")'], 'E573: Invalid server id used')
+  v9.CheckDefAndScriptFailure(['remote_read(1)'], ['E1013: Argument 1: type mismatch, expected string but got number', 'E1174: String required for argument 1'])
+  v9.CheckDefAndScriptFailure(['remote_read("a", "x")'], ['E1013: Argument 2: type mismatch, expected number but got string', 'E1210: Number required for argument 2'])
+  v9.CheckDefExecAndScriptFailure(['remote_read("")'], 'E573: Invalid server id used')
 enddef
 
 def Test_remote_send()
   CheckFeature clientserver
   CheckEnv DISPLAY
-  CheckDefAndScriptFailure(['remote_send(1, "b")'], ['E1013: Argument 1: type mismatch, expected string but got number', 'E1174: String required for argument 1'])
-  CheckDefAndScriptFailure(['remote_send("a", 2)'], ['E1013: Argument 2: type mismatch, expected string but got number', 'E1174: String required for argument 2'])
-  CheckDefAndScriptFailure(['remote_send("a", "b", 3)'], ['E1013: Argument 3: type mismatch, expected string but got number', 'E1174: String required for argument 3'])
+  v9.CheckDefAndScriptFailure(['remote_send(1, "b")'], ['E1013: Argument 1: type mismatch, expected string but got number', 'E1174: String required for argument 1'])
+  v9.CheckDefAndScriptFailure(['remote_send("a", 2)'], ['E1013: Argument 2: type mismatch, expected string but got number', 'E1174: String required for argument 2'])
+  v9.CheckDefAndScriptFailure(['remote_send("a", "b", 3)'], ['E1013: Argument 3: type mismatch, expected string but got number', 'E1174: String required for argument 3'])
   assert_fails('remote_send("", "")', 'E241:')
 enddef
 
 def Test_remote_startserver()
   CheckFeature clientserver
   CheckEnv DISPLAY
-  CheckDefAndScriptFailure(['remote_startserver({})'], ['E1013: Argument 1: type mismatch, expected string but got dict<unknown>', 'E1174: String required for argument 1'])
+  v9.CheckDefAndScriptFailure(['remote_startserver({})'], ['E1013: Argument 1: type mismatch, expected string but got dict<unknown>', 'E1174: String required for argument 1'])
 enddef
 
 def Test_remove_const_list()
@@ -2952,12 +2958,12 @@
 enddef
 
 def Test_remove()
-  CheckDefAndScriptFailure(['remove("a", 1)'], ['E1013: Argument 1: type mismatch, expected list<any> but got string', 'E1228: List, Dictionary or Blob required for argument 1'])
-  CheckDefAndScriptFailure(['remove([], "b")'], ['E1013: Argument 2: type mismatch, expected number but got string', 'E1210: Number required for argument 2'])
-  CheckDefAndScriptFailure(['remove([], 1, "c")'], ['E1013: Argument 3: type mismatch, expected number but got string', 'E1210: Number required for argument 3'])
-  CheckDefAndScriptFailure(['remove({}, 1.1)'], ['E1013: Argument 2: type mismatch, expected string but got float', 'E1220: String or Number required for argument 2'])
-  CheckDefAndScriptFailure(['remove(0z10, "b")'], ['E1013: Argument 2: type mismatch, expected number but got string', 'E1210: Number required for argument 2'])
-  CheckDefAndScriptFailure(['remove(0z20, 1, "c")'], ['E1013: Argument 3: type mismatch, expected number but got string', 'E1210: Number required for argument 3'])
+  v9.CheckDefAndScriptFailure(['remove("a", 1)'], ['E1013: Argument 1: type mismatch, expected list<any> but got string', 'E1228: List, Dictionary or Blob required for argument 1'])
+  v9.CheckDefAndScriptFailure(['remove([], "b")'], ['E1013: Argument 2: type mismatch, expected number but got string', 'E1210: Number required for argument 2'])
+  v9.CheckDefAndScriptFailure(['remove([], 1, "c")'], ['E1013: Argument 3: type mismatch, expected number but got string', 'E1210: Number required for argument 3'])
+  v9.CheckDefAndScriptFailure(['remove({}, 1.1)'], ['E1013: Argument 2: type mismatch, expected string but got float', 'E1220: String or Number required for argument 2'])
+  v9.CheckDefAndScriptFailure(['remove(0z10, "b")'], ['E1013: Argument 2: type mismatch, expected number but got string', 'E1210: Number required for argument 2'])
+  v9.CheckDefAndScriptFailure(['remove(0z20, 1, "c")'], ['E1013: Argument 3: type mismatch, expected number but got string', 'E1210: Number required for argument 3'])
   var l: any = [1, 2, 3, 4]
   remove(l, 1)
   assert_equal([1, 3, 4], l)
@@ -2986,14 +2992,14 @@
 enddef
 
 def Test_rename()
-  CheckDefAndScriptFailure(['rename(1, "b")'], ['E1013: Argument 1: type mismatch, expected string but got number', 'E1174: String required for argument 1'])
-  CheckDefAndScriptFailure(['rename("a", 2)'], ['E1013: Argument 2: type mismatch, expected string but got number', 'E1174: String required for argument 2'])
+  v9.CheckDefAndScriptFailure(['rename(1, "b")'], ['E1013: Argument 1: type mismatch, expected string but got number', 'E1174: String required for argument 1'])
+  v9.CheckDefAndScriptFailure(['rename("a", 2)'], ['E1013: Argument 2: type mismatch, expected string but got number', 'E1174: String required for argument 2'])
   rename('', '')->assert_equal(0)
 enddef
 
 def Test_repeat()
-  CheckDefAndScriptFailure(['repeat(1.1, 2)'], ['E1013: Argument 1: type mismatch, expected string but got float', 'E1224: String, Number or List required for argument 1'])
-  CheckDefAndScriptFailure(['repeat({a: 10}, 2)'], ['E1013: Argument 1: type mismatch, expected string but got dict<', 'E1224: String, Number or List required for argument 1'])
+  v9.CheckDefAndScriptFailure(['repeat(1.1, 2)'], ['E1013: Argument 1: type mismatch, expected string but got float', 'E1224: String, Number or List required for argument 1'])
+  v9.CheckDefAndScriptFailure(['repeat({a: 10}, 2)'], ['E1013: Argument 1: type mismatch, expected string but got dict<', 'E1224: String, Number or List required for argument 1'])
   var lines =<< trim END
       assert_equal('aaa', repeat('a', 3))
       assert_equal('111', repeat(1, 3))
@@ -3002,18 +3008,18 @@
       s ..= repeat(5, 3)
       assert_equal('-555', s)
   END
-  CheckDefAndScriptSuccess(lines)
+  v9.CheckDefAndScriptSuccess(lines)
 enddef
 
 def Test_resolve()
-  CheckDefAndScriptFailure(['resolve([])'], ['E1013: Argument 1: type mismatch, expected string but got list<unknown>', 'E1174: String required for argument 1'])
+  v9.CheckDefAndScriptFailure(['resolve([])'], ['E1013: Argument 1: type mismatch, expected string but got list<unknown>', 'E1174: String required for argument 1'])
   assert_equal('SomeFile', resolve('SomeFile'))
   resolve('')->assert_equal('')
 enddef
 
 def Test_reverse()
-  CheckDefAndScriptFailure(['reverse(10)'], ['E1013: Argument 1: type mismatch, expected list<any> but got number', 'E1226: List or Blob required for argument 1'])
-  CheckDefAndScriptFailure(['reverse("abc")'], ['E1013: Argument 1: type mismatch, expected list<any> but got string', 'E1226: List or Blob required for argument 1'])
+  v9.CheckDefAndScriptFailure(['reverse(10)'], ['E1013: Argument 1: type mismatch, expected list<any> but got number', 'E1226: List or Blob required for argument 1'])
+  v9.CheckDefAndScriptFailure(['reverse("abc")'], ['E1013: Argument 1: type mismatch, expected list<any> but got string', 'E1226: List or Blob required for argument 1'])
 enddef
 
 def Test_reverse_return_type()
@@ -3029,34 +3035,34 @@
   if !has('ruby')
     CheckFeature ruby
   endif
-  CheckDefAndScriptFailure(['rubyeval([2])'], ['E1013: Argument 1: type mismatch, expected string but got list<number>', 'E1174: String required for argument 1'])
+  v9.CheckDefAndScriptFailure(['rubyeval([2])'], ['E1013: Argument 1: type mismatch, expected string but got list<number>', 'E1174: String required for argument 1'])
 enddef
 
 def Test_screenattr()
-  CheckDefAndScriptFailure(['screenattr("x", 1)'], ['E1013: Argument 1: type mismatch, expected number but got string', 'E1210: Number required for argument 1'])
-  CheckDefAndScriptFailure(['screenattr(1, "x")'], ['E1013: Argument 2: type mismatch, expected number but got string', 'E1210: Number required for argument 2'])
+  v9.CheckDefAndScriptFailure(['screenattr("x", 1)'], ['E1013: Argument 1: type mismatch, expected number but got string', 'E1210: Number required for argument 1'])
+  v9.CheckDefAndScriptFailure(['screenattr(1, "x")'], ['E1013: Argument 2: type mismatch, expected number but got string', 'E1210: Number required for argument 2'])
 enddef
 
 def Test_screenchar()
-  CheckDefAndScriptFailure(['screenchar("x", 1)'], ['E1013: Argument 1: type mismatch, expected number but got string', 'E1210: Number required for argument 1'])
-  CheckDefAndScriptFailure(['screenchar(1, "x")'], ['E1013: Argument 2: type mismatch, expected number but got string', 'E1210: Number required for argument 2'])
+  v9.CheckDefAndScriptFailure(['screenchar("x", 1)'], ['E1013: Argument 1: type mismatch, expected number but got string', 'E1210: Number required for argument 1'])
+  v9.CheckDefAndScriptFailure(['screenchar(1, "x")'], ['E1013: Argument 2: type mismatch, expected number but got string', 'E1210: Number required for argument 2'])
 enddef
 
 def Test_screenchars()
-  CheckDefAndScriptFailure(['screenchars("x", 1)'], ['E1013: Argument 1: type mismatch, expected number but got string', 'E1210: Number required for argument 1'])
-  CheckDefAndScriptFailure(['screenchars(1, "x")'], ['E1013: Argument 2: type mismatch, expected number but got string', 'E1210: Number required for argument 2'])
+  v9.CheckDefAndScriptFailure(['screenchars("x", 1)'], ['E1013: Argument 1: type mismatch, expected number but got string', 'E1210: Number required for argument 1'])
+  v9.CheckDefAndScriptFailure(['screenchars(1, "x")'], ['E1013: Argument 2: type mismatch, expected number but got string', 'E1210: Number required for argument 2'])
 enddef
 
 def Test_screenpos()
-  CheckDefAndScriptFailure(['screenpos("a", 1, 1)'], ['E1013: Argument 1: type mismatch, expected number but got string', 'E1210: Number required for argument 1'])
-  CheckDefAndScriptFailure(['screenpos(1, "b", 1)'], ['E1013: Argument 2: type mismatch, expected number but got string', 'E1210: Number required for argument 2'])
-  CheckDefAndScriptFailure(['screenpos(1, 1, "c")'], ['E1013: Argument 3: type mismatch, expected number but got string', 'E1210: Number required for argument 3'])
+  v9.CheckDefAndScriptFailure(['screenpos("a", 1, 1)'], ['E1013: Argument 1: type mismatch, expected number but got string', 'E1210: Number required for argument 1'])
+  v9.CheckDefAndScriptFailure(['screenpos(1, "b", 1)'], ['E1013: Argument 2: type mismatch, expected number but got string', 'E1210: Number required for argument 2'])
+  v9.CheckDefAndScriptFailure(['screenpos(1, 1, "c")'], ['E1013: Argument 3: type mismatch, expected number but got string', 'E1210: Number required for argument 3'])
   assert_equal({col: 1, row: 1, endcol: 1, curscol: 1}, screenpos(1, 1, 1))
 enddef
 
 def Test_screenstring()
-  CheckDefAndScriptFailure(['screenstring("x", 1)'], ['E1013: Argument 1: type mismatch, expected number but got string', 'E1210: Number required for argument 1'])
-  CheckDefAndScriptFailure(['screenstring(1, "x")'], ['E1013: Argument 2: type mismatch, expected number but got string', 'E1210: Number required for argument 2'])
+  v9.CheckDefAndScriptFailure(['screenstring("x", 1)'], ['E1013: Argument 1: type mismatch, expected number but got string', 'E1210: Number required for argument 1'])
+  v9.CheckDefAndScriptFailure(['screenstring(1, "x")'], ['E1013: Argument 2: type mismatch, expected number but got string', 'E1210: Number required for argument 2'])
 enddef
 
 def Test_search()
@@ -3088,13 +3094,13 @@
   normal 0
   assert_equal([0, 0], searchpos('this', '', 0, 0, 'col(".") > col'))
   bwipe!
-  CheckDefAndScriptFailure(['search(1)'], ['E1013: Argument 1: type mismatch, expected string but got number', 'E1174: String required for argument 1'])
-  CheckDefAndScriptFailure(['search("a", 2)'], ['E1013: Argument 2: type mismatch, expected string but got number', 'E1174: String required for argument 2'])
-  CheckDefAndScriptFailure(['search("a", "b", "c")'], ['E1013: Argument 3: type mismatch, expected number but got string', 'E1210: Number required for argument 3'])
-  CheckDefAndScriptFailure(['search("a", "b", 3, "d")'], ['E1013: Argument 4: type mismatch, expected number but got string', 'E1210: Number required for argument 4'])
+  v9.CheckDefAndScriptFailure(['search(1)'], ['E1013: Argument 1: type mismatch, expected string but got number', 'E1174: String required for argument 1'])
+  v9.CheckDefAndScriptFailure(['search("a", 2)'], ['E1013: Argument 2: type mismatch, expected string but got number', 'E1174: String required for argument 2'])
+  v9.CheckDefAndScriptFailure(['search("a", "b", "c")'], ['E1013: Argument 3: type mismatch, expected number but got string', 'E1210: Number required for argument 3'])
+  v9.CheckDefAndScriptFailure(['search("a", "b", 3, "d")'], ['E1013: Argument 4: type mismatch, expected number but got string', 'E1210: Number required for argument 4'])
   new
   setline(1, "match this")
-  CheckDefAndScriptFailure(['search("a", "", 9, 0, [0])'], ['E1013: Argument 5: type mismatch, expected func(...): any but got list<number>', 'E730: Using a List as a String'])
+  v9.CheckDefAndScriptFailure(['search("a", "", 9, 0, [0])'], ['E1013: Argument 5: type mismatch, expected func(...): any but got list<number>', 'E730: Using a List as a String'])
   bwipe!
 enddef
 
@@ -3110,14 +3116,14 @@
           maxcount: 99,
           incomplete: 0})
   bwipe!
-  CheckDefAndScriptFailure(['searchcount([1])'], ['E1013: Argument 1: type mismatch, expected dict<any> but got list<number>', 'E1206: Dictionary required for argument 1'])
+  v9.CheckDefAndScriptFailure(['searchcount([1])'], ['E1013: Argument 1: type mismatch, expected dict<any> but got list<number>', 'E1206: Dictionary required for argument 1'])
 enddef
 
 def Test_searchdecl()
   searchdecl('blah', true, true)->assert_equal(1)
-  CheckDefAndScriptFailure(['searchdecl(1)'], ['E1013: Argument 1: type mismatch, expected string but got number', 'E1174: String required for argument 1'])
-  CheckDefAndScriptFailure(['searchdecl("a", 2)'], ['E1013: Argument 2: type mismatch, expected bool but got number', 'E1212: Bool required for argument 2'])
-  CheckDefAndScriptFailure(['searchdecl("a", true, 2)'], ['E1013: Argument 3: type mismatch, expected bool but got number', 'E1212: Bool required for argument 3'])
+  v9.CheckDefAndScriptFailure(['searchdecl(1)'], ['E1013: Argument 1: type mismatch, expected string but got number', 'E1174: String required for argument 1'])
+  v9.CheckDefAndScriptFailure(['searchdecl("a", 2)'], ['E1013: Argument 2: type mismatch, expected bool but got number', 'E1212: Bool required for argument 2'])
+  v9.CheckDefAndScriptFailure(['searchdecl("a", true, 2)'], ['E1013: Argument 3: type mismatch, expected bool but got number', 'E1212: Bool required for argument 3'])
 enddef
 
 def Test_searchpair()
@@ -3159,7 +3165,7 @@
       enddef
       Fail()
   END
-  CheckScriptSuccess(lines)
+  v9.CheckScriptSuccess(lines)
   assert_equal('yes', g:caught)
   unlet g:caught
   bwipe!
@@ -3167,62 +3173,62 @@
   lines =<< trim END
       echo searchpair("a", "b", "c", "d", "f", 33)
   END
-  CheckDefAndScriptFailure(lines, ['E1001: Variable not found: f', 'E475: Invalid argument: d'])
+  v9.CheckDefAndScriptFailure(lines, ['E1001: Variable not found: f', 'E475: Invalid argument: d'])
 
   var errors = ['E1013: Argument 1: type mismatch, expected string but got number', 'E1174: String required for argument 1']
-  CheckDefAndScriptFailure(['searchpair(1, "b", "c")'], errors)
-  CheckDefAndScriptFailure(['searchpairpos(1, "b", "c")'], errors)
+  v9.CheckDefAndScriptFailure(['searchpair(1, "b", "c")'], errors)
+  v9.CheckDefAndScriptFailure(['searchpairpos(1, "b", "c")'], errors)
 
   errors = ['E1013: Argument 2: type mismatch, expected string but got number', 'E1174: String required for argument 2']
-  CheckDefAndScriptFailure(['searchpair("a", 2, "c")'], errors)
-  CheckDefAndScriptFailure(['searchpairpos("a", 2, "c")'], errors)
+  v9.CheckDefAndScriptFailure(['searchpair("a", 2, "c")'], errors)
+  v9.CheckDefAndScriptFailure(['searchpairpos("a", 2, "c")'], errors)
 
   errors = ['E1013: Argument 3: type mismatch, expected string but got number', 'E1174: String required for argument 3']
-  CheckDefAndScriptFailure(['searchpair("a", "b", 3)'], errors)
-  CheckDefAndScriptFailure(['searchpairpos("a", "b", 3)'], errors)
+  v9.CheckDefAndScriptFailure(['searchpair("a", "b", 3)'], errors)
+  v9.CheckDefAndScriptFailure(['searchpairpos("a", "b", 3)'], errors)
 
   errors = ['E1013: Argument 4: type mismatch, expected string but got number', 'E1174: String required for argument 4']
-  CheckDefAndScriptFailure(['searchpair("a", "b", "c", 4)'], errors)
+  v9.CheckDefAndScriptFailure(['searchpair("a", "b", "c", 4)'], errors)
 
   new
   setline(1, "match this")
   errors = ['E1013: Argument 5: type mismatch, expected func(...): any but got list<number>', 'E730: Using a List as a String']
-  CheckDefAndScriptFailure(['searchpair("a", "b", "c", "r", [0])'], errors)
-  CheckDefAndScriptFailure(['searchpairpos("a", "b", "c", "r", [0])'], errors)
+  v9.CheckDefAndScriptFailure(['searchpair("a", "b", "c", "r", [0])'], errors)
+  v9.CheckDefAndScriptFailure(['searchpairpos("a", "b", "c", "r", [0])'], errors)
   bwipe!
 
   errors = ['E1013: Argument 6: type mismatch, expected number but got string', 'E1210: Number required for argument 6']
-  CheckDefAndScriptFailure(['searchpair("a", "b", "c", "r", "1", "f")'], errors)
-  CheckDefAndScriptFailure(['searchpairpos("a", "b", "c", "r", "1", "f")'], errors)
+  v9.CheckDefAndScriptFailure(['searchpair("a", "b", "c", "r", "1", "f")'], errors)
+  v9.CheckDefAndScriptFailure(['searchpairpos("a", "b", "c", "r", "1", "f")'], errors)
 
   errors = ['E1013: Argument 7: type mismatch, expected number but got string', 'E1210: Number required for argument 7']
-  CheckDefAndScriptFailure(['searchpair("a", "b", "c", "r", "1", 3, "g")'], errors)
-  CheckDefAndScriptFailure(['searchpairpos("a", "b", "c", "r", "1", 3, "g")'], errors)
+  v9.CheckDefAndScriptFailure(['searchpair("a", "b", "c", "r", "1", 3, "g")'], errors)
+  v9.CheckDefAndScriptFailure(['searchpairpos("a", "b", "c", "r", "1", 3, "g")'], errors)
 enddef
 
 def Test_searchpos()
-  CheckDefAndScriptFailure(['searchpos(1)'], ['E1013: Argument 1: type mismatch, expected string but got number', 'E1174: String required for argument 1'])
-  CheckDefAndScriptFailure(['searchpos("a", 2)'], ['E1013: Argument 2: type mismatch, expected string but got number', 'E1174: String required for argument 2'])
-  CheckDefAndScriptFailure(['searchpos("a", "b", "c")'], ['E1013: Argument 3: type mismatch, expected number but got string', 'E1210: Number required for argument 3'])
-  CheckDefAndScriptFailure(['searchpos("a", "b", 3, "d")'], ['E1013: Argument 4: type mismatch, expected number but got string', 'E1210: Number required for argument 4'])
+  v9.CheckDefAndScriptFailure(['searchpos(1)'], ['E1013: Argument 1: type mismatch, expected string but got number', 'E1174: String required for argument 1'])
+  v9.CheckDefAndScriptFailure(['searchpos("a", 2)'], ['E1013: Argument 2: type mismatch, expected string but got number', 'E1174: String required for argument 2'])
+  v9.CheckDefAndScriptFailure(['searchpos("a", "b", "c")'], ['E1013: Argument 3: type mismatch, expected number but got string', 'E1210: Number required for argument 3'])
+  v9.CheckDefAndScriptFailure(['searchpos("a", "b", 3, "d")'], ['E1013: Argument 4: type mismatch, expected number but got string', 'E1210: Number required for argument 4'])
   new
   setline(1, "match this")
-  CheckDefAndScriptFailure(['searchpos("a", "", 9, 0, [0])'], ['E1013: Argument 5: type mismatch, expected func(...): any but got list<number>', 'E730: Using a List as a String'])
+  v9.CheckDefAndScriptFailure(['searchpos("a", "", 9, 0, [0])'], ['E1013: Argument 5: type mismatch, expected func(...): any but got list<number>', 'E730: Using a List as a String'])
   bwipe!
 enddef
 
 def Test_server2client()
   CheckFeature clientserver
   CheckEnv DISPLAY
-  CheckDefAndScriptFailure(['server2client(10, "b")'], ['E1013: Argument 1: type mismatch, expected string but got number', 'E1174: String required for argument 1'])
-  CheckDefAndScriptFailure(['server2client("a", 10)'], ['E1013: Argument 2: type mismatch, expected string but got number', 'E1174: String required for argument 2'])
-  CheckDefExecAndScriptFailure(['server2client("", "a")'], 'E573: Invalid server id used')
-  CheckDefExecAndScriptFailure(['server2client("", "")'], 'E573: Invalid server id used')
+  v9.CheckDefAndScriptFailure(['server2client(10, "b")'], ['E1013: Argument 1: type mismatch, expected string but got number', 'E1174: String required for argument 1'])
+  v9.CheckDefAndScriptFailure(['server2client("a", 10)'], ['E1013: Argument 2: type mismatch, expected string but got number', 'E1174: String required for argument 2'])
+  v9.CheckDefExecAndScriptFailure(['server2client("", "a")'], 'E573: Invalid server id used')
+  v9.CheckDefExecAndScriptFailure(['server2client("", "")'], 'E573: Invalid server id used')
 enddef
 
 def Test_shellescape()
-  CheckDefAndScriptFailure(['shellescape(1)'], ['E1013: Argument 1: type mismatch, expected string but got number', 'E1174: String required for argument 1'])
-  CheckDefAndScriptFailure(['shellescape("a", 2)'], ['E1013: Argument 2: type mismatch, expected bool but got number', 'E1212: Bool required for argument 2'])
+  v9.CheckDefAndScriptFailure(['shellescape(1)'], ['E1013: Argument 1: type mismatch, expected string but got number', 'E1174: String required for argument 1'])
+  v9.CheckDefAndScriptFailure(['shellescape("a", 2)'], ['E1013: Argument 2: type mismatch, expected bool but got number', 'E1212: Bool required for argument 2'])
   if has('unix')
     assert_equal("''", shellescape(''))
   endif
@@ -3275,7 +3281,7 @@
 
       exe 'bwipe! ' .. b
   END
-  CheckDefAndScriptSuccess(lines)
+  v9.CheckDefAndScriptSuccess(lines)
 enddef
 
 def Test_setbufvar()
@@ -3302,8 +3308,8 @@
   setbufvar('%', 'myvar', 123)
   getbufvar('%', 'myvar')->assert_equal(123)
 
-  CheckDefAndScriptFailure(['setbufvar(true, "v", 3)'], ['E1013: Argument 1: type mismatch, expected string but got bool', 'E1220: String or Number required for argument 1'])
-  CheckDefAndScriptFailure(['setbufvar(1, 2, 3)'], ['E1013: Argument 2: type mismatch, expected string but got number', 'E1174: String required for argument 2'])
+  v9.CheckDefAndScriptFailure(['setbufvar(true, "v", 3)'], ['E1013: Argument 1: type mismatch, expected string but got bool', 'E1220: String or Number required for argument 1'])
+  v9.CheckDefAndScriptFailure(['setbufvar(1, 2, 3)'], ['E1013: Argument 2: type mismatch, expected string but got number', 'E1174: String required for argument 2'])
   assert_fails('setbufvar("%", "", 10)', 'E461: Illegal variable name')
 enddef
 
@@ -3316,10 +3322,10 @@
   setbufline(bnum, 5, 10)
   setbufline(bnum, 6, ['two', 11])
   assert_equal(['1', '2', '3', 'one', '10', 'two', '11'], getbufline(bnum, 1, '$'))
-  CheckDefAndScriptFailure(['setbufline([1], 1, "x")'], ['E1013: Argument 1: type mismatch, expected string but got list<number>', 'E1220: String or Number required for argument 1'])
-  CheckDefAndScriptFailure(['setbufline(1, [1], "x")'], ['E1013: Argument 2: type mismatch, expected string but got list<number>', 'E1220: String or Number required for argument 2'])
-  CheckDefExecAndScriptFailure(['setbufline(' .. bnum .. ', -1, "x")'], 'E966: Invalid line number: -1')
-  CheckDefAndScriptFailure(['setbufline(1, 1, {"a": 10})'], ['E1013: Argument 3: type mismatch, expected string but got dict<number>', 'E1224: String, Number or List required for argument 3'])
+  v9.CheckDefAndScriptFailure(['setbufline([1], 1, "x")'], ['E1013: Argument 1: type mismatch, expected string but got list<number>', 'E1220: String or Number required for argument 1'])
+  v9.CheckDefAndScriptFailure(['setbufline(1, [1], "x")'], ['E1013: Argument 2: type mismatch, expected string but got list<number>', 'E1220: String or Number required for argument 2'])
+  v9.CheckDefExecAndScriptFailure(['setbufline(' .. bnum .. ', -1, "x")'], 'E966: Invalid line number: -1')
+  v9.CheckDefAndScriptFailure(['setbufline(1, 1, {"a": 10})'], ['E1013: Argument 3: type mismatch, expected string but got dict<number>', 'E1224: String, Number or List required for argument 3'])
   bnum->bufwinid()->win_gotoid()
   setbufline('', 1, 'nombres')
   getline(1)->assert_equal('nombres')
@@ -3327,47 +3333,47 @@
 enddef
 
 def Test_setcellwidths()
-  CheckDefAndScriptFailure(['setcellwidths(1)'], ['E1013: Argument 1: type mismatch, expected list<any> but got number', 'E1211: List required for argument 1'])
-  CheckDefAndScriptFailure(['setcellwidths({"a": 10})'], ['E1013: Argument 1: type mismatch, expected list<any> but got dict<number>', 'E1211: List required for argument 1'])
+  v9.CheckDefAndScriptFailure(['setcellwidths(1)'], ['E1013: Argument 1: type mismatch, expected list<any> but got number', 'E1211: List required for argument 1'])
+  v9.CheckDefAndScriptFailure(['setcellwidths({"a": 10})'], ['E1013: Argument 1: type mismatch, expected list<any> but got dict<number>', 'E1211: List required for argument 1'])
 enddef
 
 def Test_setcharpos()
-  CheckDefAndScriptFailure(['setcharpos(1, [])'], ['E1013: Argument 1: type mismatch, expected string but got number', 'E1174: String required for argument 1'])
-  CheckDefFailure(['setcharpos(".", ["a"])'], 'E1013: Argument 2: type mismatch, expected list<number> but got list<string>')
-  CheckDefAndScriptFailure(['setcharpos(".", 1)'], ['E1013: Argument 2: type mismatch, expected list<number> but got number', 'E1211: List required for argument 2'])
-  CheckDefExecAndScriptFailure(['setcharpos("", [0, 1, 1, 1])'], 'E474: Invalid argument')
+  v9.CheckDefAndScriptFailure(['setcharpos(1, [])'], ['E1013: Argument 1: type mismatch, expected string but got number', 'E1174: String required for argument 1'])
+  v9.CheckDefFailure(['setcharpos(".", ["a"])'], 'E1013: Argument 2: type mismatch, expected list<number> but got list<string>')
+  v9.CheckDefAndScriptFailure(['setcharpos(".", 1)'], ['E1013: Argument 2: type mismatch, expected list<number> but got number', 'E1211: List required for argument 2'])
+  v9.CheckDefExecAndScriptFailure(['setcharpos("", [0, 1, 1, 1])'], 'E474: Invalid argument')
 enddef
 
 def Test_setcharsearch()
-  CheckDefAndScriptFailure(['setcharsearch("x")'], ['E1013: Argument 1: type mismatch, expected dict<any> but got string', 'E1206: Dictionary required for argument 1'])
-  CheckDefAndScriptFailure(['setcharsearch([])'], ['E1013: Argument 1: type mismatch, expected dict<any> but got list<unknown>', 'E1206: Dictionary required for argument 1'])
+  v9.CheckDefAndScriptFailure(['setcharsearch("x")'], ['E1013: Argument 1: type mismatch, expected dict<any> but got string', 'E1206: Dictionary required for argument 1'])
+  v9.CheckDefAndScriptFailure(['setcharsearch([])'], ['E1013: Argument 1: type mismatch, expected dict<any> but got list<unknown>', 'E1206: Dictionary required for argument 1'])
   var d: dict<any> = {char: 'x', forward: 1, until: 1}
   setcharsearch(d)
   assert_equal(d, getcharsearch())
 enddef
 
 def Test_setcmdpos()
-  CheckDefAndScriptFailure(['setcmdpos("x")'], ['E1013: Argument 1: type mismatch, expected number but got string', 'E1210: Number required for argument 1'])
+  v9.CheckDefAndScriptFailure(['setcmdpos("x")'], ['E1013: Argument 1: type mismatch, expected number but got string', 'E1210: Number required for argument 1'])
 enddef
 
 def Test_setcursorcharpos()
-  CheckDefAndScriptFailure(['setcursorcharpos(0z10, 1)'], ['E1013: Argument 1: type mismatch, expected number but got blob', 'E1224: String, Number or List required for argument 1'])
-  CheckDefAndScriptFailure(['setcursorcharpos(1, "2")'], ['E1013: Argument 2: type mismatch, expected number but got string', 'E1210: Number required for argument 2'])
-  CheckDefAndScriptFailure(['setcursorcharpos(1, 2, "3")'], ['E1013: Argument 3: type mismatch, expected number but got string', 'E1210: Number required for argument 3'])
-  CheckDefExecAndScriptFailure(['setcursorcharpos("", 10)'], 'E1209: Invalid value for a line number')
+  v9.CheckDefAndScriptFailure(['setcursorcharpos(0z10, 1)'], ['E1013: Argument 1: type mismatch, expected number but got blob', 'E1224: String, Number or List required for argument 1'])
+  v9.CheckDefAndScriptFailure(['setcursorcharpos(1, "2")'], ['E1013: Argument 2: type mismatch, expected number but got string', 'E1210: Number required for argument 2'])
+  v9.CheckDefAndScriptFailure(['setcursorcharpos(1, 2, "3")'], ['E1013: Argument 3: type mismatch, expected number but got string', 'E1210: Number required for argument 3'])
+  v9.CheckDefExecAndScriptFailure(['setcursorcharpos("", 10)'], 'E1209: Invalid value for a line number')
 enddef
 
 def Test_setenv()
-  CheckDefAndScriptFailure(['setenv(1, 2)'], ['E1013: Argument 1: type mismatch, expected string but got number', 'E1174: String required for argument 1'])
+  v9.CheckDefAndScriptFailure(['setenv(1, 2)'], ['E1013: Argument 1: type mismatch, expected string but got number', 'E1174: String required for argument 1'])
   assert_equal(0, setenv('', ''))
   assert_equal(0, setenv('', v:null))
 enddef
 
 def Test_setfperm()
-  CheckDefAndScriptFailure(['setfperm(1, "b")'], ['E1013: Argument 1: type mismatch, expected string but got number', 'E1174: String required for argument 1'])
-  CheckDefAndScriptFailure(['setfperm("a", 0z10)'], ['E1013: Argument 2: type mismatch, expected string but got blob', 'E1174: String required for argument 2'])
-  CheckDefExecAndScriptFailure(['setfperm("Xfile", "")'], 'E475: Invalid argument')
-  CheckDefExecAndScriptFailure(['setfperm("", "")'], 'E475: Invalid argument')
+  v9.CheckDefAndScriptFailure(['setfperm(1, "b")'], ['E1013: Argument 1: type mismatch, expected string but got number', 'E1174: String required for argument 1'])
+  v9.CheckDefAndScriptFailure(['setfperm("a", 0z10)'], ['E1013: Argument 2: type mismatch, expected string but got blob', 'E1174: String required for argument 2'])
+  v9.CheckDefExecAndScriptFailure(['setfperm("Xfile", "")'], 'E475: Invalid argument')
+  v9.CheckDefExecAndScriptFailure(['setfperm("", "")'], 'E475: Invalid argument')
   assert_equal(0, setfperm('', 'rw-r--r--'))
 enddef
 
@@ -3381,9 +3387,9 @@
   assert_equal(['one', 'b', 'c', 'd'], getline(1, '$'))
   setline(1, 10)
   assert_equal(['10', 'b', 'c', 'd'], getline(1, '$'))
-  CheckDefAndScriptFailure(['setline([1], "x")'], ['E1013: Argument 1: type mismatch, expected string but got list<number>', 'E1220: String or Number required for argument 1'])
-  CheckDefExecAndScriptFailure(['setline("", "x")'], 'E1209: Invalid value for a line number')
-  CheckDefExecAndScriptFailure(['setline(-1, "x")'], 'E966: Invalid line number: -1')
+  v9.CheckDefAndScriptFailure(['setline([1], "x")'], ['E1013: Argument 1: type mismatch, expected string but got list<number>', 'E1220: String or Number required for argument 1'])
+  v9.CheckDefExecAndScriptFailure(['setline("", "x")'], 'E1209: Invalid value for a line number')
+  v9.CheckDefExecAndScriptFailure(['setline(-1, "x")'], 'E966: Invalid line number: -1')
   assert_fails('setline(".a", "x")', ['E1209:', 'E1209:'])
   bw!
 enddef
@@ -3393,28 +3399,28 @@
   var what = {items: items}
   setqflist([], ' ', what)
   setloclist(0, [], ' ', what)
-  CheckDefAndScriptFailure(['setloclist("1", [])'], ['E1013: Argument 1: type mismatch, expected number but got string', 'E1210: Number required for argument 1'])
-  CheckDefAndScriptFailure(['setloclist(1, 2)'], ['E1013: Argument 2: type mismatch, expected list<any> but got number', 'E1211: List required for argument 2'])
-  CheckDefAndScriptFailure(['setloclist(1, [], 3)'], ['E1013: Argument 3: type mismatch, expected string but got number', 'E1174: String required for argument 3'])
-  CheckDefAndScriptFailure(['setloclist(1, [], "a", [])'], ['E1013: Argument 4: type mismatch, expected dict<any> but got list<unknown>', 'E1206: Dictionary required for argument 4'])
+  v9.CheckDefAndScriptFailure(['setloclist("1", [])'], ['E1013: Argument 1: type mismatch, expected number but got string', 'E1210: Number required for argument 1'])
+  v9.CheckDefAndScriptFailure(['setloclist(1, 2)'], ['E1013: Argument 2: type mismatch, expected list<any> but got number', 'E1211: List required for argument 2'])
+  v9.CheckDefAndScriptFailure(['setloclist(1, [], 3)'], ['E1013: Argument 3: type mismatch, expected string but got number', 'E1174: String required for argument 3'])
+  v9.CheckDefAndScriptFailure(['setloclist(1, [], "a", [])'], ['E1013: Argument 4: type mismatch, expected dict<any> but got list<unknown>', 'E1206: Dictionary required for argument 4'])
 enddef
 
 def Test_setmatches()
-  CheckDefAndScriptFailure(['setmatches({})'], ['E1013: Argument 1: type mismatch, expected list<any> but got dict<unknown>', 'E1211: List required for argument 1'])
-  CheckDefAndScriptFailure(['setmatches([], "1")'], ['E1013: Argument 2: type mismatch, expected number but got string', 'E1210: Number required for argument 2'])
+  v9.CheckDefAndScriptFailure(['setmatches({})'], ['E1013: Argument 1: type mismatch, expected list<any> but got dict<unknown>', 'E1211: List required for argument 1'])
+  v9.CheckDefAndScriptFailure(['setmatches([], "1")'], ['E1013: Argument 2: type mismatch, expected number but got string', 'E1210: Number required for argument 2'])
 enddef
 
 def Test_setpos()
-  CheckDefAndScriptFailure(['setpos(1, [])'], ['E1013: Argument 1: type mismatch, expected string but got number', 'E1174: String required for argument 1'])
-  CheckDefFailure(['setpos(".", ["a"])'], 'E1013: Argument 2: type mismatch, expected list<number> but got list<string>')
-  CheckDefAndScriptFailure(['setpos(".", 1)'], ['E1013: Argument 2: type mismatch, expected list<number> but got number', 'E1211: List required for argument 2'])
-  CheckDefExecAndScriptFailure(['setpos("", [0, 1, 1, 1])'], 'E474: Invalid argument')
+  v9.CheckDefAndScriptFailure(['setpos(1, [])'], ['E1013: Argument 1: type mismatch, expected string but got number', 'E1174: String required for argument 1'])
+  v9.CheckDefFailure(['setpos(".", ["a"])'], 'E1013: Argument 2: type mismatch, expected list<number> but got list<string>')
+  v9.CheckDefAndScriptFailure(['setpos(".", 1)'], ['E1013: Argument 2: type mismatch, expected list<number> but got number', 'E1211: List required for argument 2'])
+  v9.CheckDefExecAndScriptFailure(['setpos("", [0, 1, 1, 1])'], 'E474: Invalid argument')
 enddef
 
 def Test_setqflist()
-  CheckDefAndScriptFailure(['setqflist(1, "")'], ['E1013: Argument 1: type mismatch, expected list<any> but got number', 'E1211: List required for argument 1'])
-  CheckDefAndScriptFailure(['setqflist([], 2)'], ['E1013: Argument 2: type mismatch, expected string but got number', 'E1174: String required for argument 2'])
-  CheckDefAndScriptFailure(['setqflist([], "", [])'], ['E1013: Argument 3: type mismatch, expected dict<any> but got list<unknown>', 'E1206: Dictionary required for argument 3'])
+  v9.CheckDefAndScriptFailure(['setqflist(1, "")'], ['E1013: Argument 1: type mismatch, expected list<any> but got number', 'E1211: List required for argument 1'])
+  v9.CheckDefAndScriptFailure(['setqflist([], 2)'], ['E1013: Argument 2: type mismatch, expected string but got number', 'E1174: String required for argument 2'])
+  v9.CheckDefAndScriptFailure(['setqflist([], "", [])'], ['E1013: Argument 3: type mismatch, expected dict<any> but got list<unknown>', 'E1206: Dictionary required for argument 3'])
 enddef
 
 def Test_setreg()
@@ -3423,110 +3429,110 @@
   setreg('a', reginfo)
   getreginfo('a')->assert_equal(reginfo)
   assert_fails('setreg("ab", 0)', 'E1162:')
-  CheckDefAndScriptFailure(['setreg(1, "b")'], ['E1013: Argument 1: type mismatch, expected string but got number', 'E1174: String required for argument 1'])
-  CheckDefAndScriptFailure(['setreg("a", "b", 3)'], ['E1013: Argument 3: type mismatch, expected string but got number', 'E1174: String required for argument 3'])
+  v9.CheckDefAndScriptFailure(['setreg(1, "b")'], ['E1013: Argument 1: type mismatch, expected string but got number', 'E1174: String required for argument 1'])
+  v9.CheckDefAndScriptFailure(['setreg("a", "b", 3)'], ['E1013: Argument 3: type mismatch, expected string but got number', 'E1174: String required for argument 3'])
   setreg('', '1a2b3c')
   assert_equal('1a2b3c', @")
 enddef
 
 def Test_settabvar()
-  CheckDefAndScriptFailure(['settabvar("a", "b", 1)'], ['E1013: Argument 1: type mismatch, expected number but got string', 'E1210: Number required for argument 1'])
-  CheckDefAndScriptFailure(['settabvar(1, 2, "c")'], ['E1013: Argument 2: type mismatch, expected string but got number', 'E1174: String required for argument 2'])
+  v9.CheckDefAndScriptFailure(['settabvar("a", "b", 1)'], ['E1013: Argument 1: type mismatch, expected number but got string', 'E1210: Number required for argument 1'])
+  v9.CheckDefAndScriptFailure(['settabvar(1, 2, "c")'], ['E1013: Argument 2: type mismatch, expected string but got number', 'E1174: String required for argument 2'])
   assert_fails('settabvar(1, "", 10)', 'E461: Illegal variable name')
 enddef
 
 def Test_settabwinvar()
-  CheckDefAndScriptFailure(['settabwinvar("a", 2, "c", true)'], ['E1013: Argument 1: type mismatch, expected number but got string', 'E1210: Number required for argument 1'])
-  CheckDefAndScriptFailure(['settabwinvar(1, "b", "c", [])'], ['E1013: Argument 2: type mismatch, expected number but got string', 'E1210: Number required for argument 2'])
-  CheckDefAndScriptFailure(['settabwinvar(1, 1, 3, {})'], ['E1013: Argument 3: type mismatch, expected string but got number', 'E1174: String required for argument 3'])
+  v9.CheckDefAndScriptFailure(['settabwinvar("a", 2, "c", true)'], ['E1013: Argument 1: type mismatch, expected number but got string', 'E1210: Number required for argument 1'])
+  v9.CheckDefAndScriptFailure(['settabwinvar(1, "b", "c", [])'], ['E1013: Argument 2: type mismatch, expected number but got string', 'E1210: Number required for argument 2'])
+  v9.CheckDefAndScriptFailure(['settabwinvar(1, 1, 3, {})'], ['E1013: Argument 3: type mismatch, expected string but got number', 'E1174: String required for argument 3'])
   assert_fails('settabwinvar(1, 1, "", 10)', 'E461: Illegal variable name')
 enddef
 
 def Test_settagstack()
-  CheckDefAndScriptFailure(['settagstack(true, {})'], ['E1013: Argument 1: type mismatch, expected number but got bool', 'E1210: Number required for argument 1'])
-  CheckDefAndScriptFailure(['settagstack(1, [1])'], ['E1013: Argument 2: type mismatch, expected dict<any> but got list<number>', 'E1206: Dictionary required for argument 2'])
-  CheckDefAndScriptFailure(['settagstack(1, {}, 2)'], ['E1013: Argument 3: type mismatch, expected string but got number', 'E1174: String required for argument 3'])
+  v9.CheckDefAndScriptFailure(['settagstack(true, {})'], ['E1013: Argument 1: type mismatch, expected number but got bool', 'E1210: Number required for argument 1'])
+  v9.CheckDefAndScriptFailure(['settagstack(1, [1])'], ['E1013: Argument 2: type mismatch, expected dict<any> but got list<number>', 'E1206: Dictionary required for argument 2'])
+  v9.CheckDefAndScriptFailure(['settagstack(1, {}, 2)'], ['E1013: Argument 3: type mismatch, expected string but got number', 'E1174: String required for argument 3'])
   assert_fails('settagstack(1, {}, "")', 'E962: Invalid action')
 enddef
 
 def Test_setwinvar()
-  CheckDefAndScriptFailure(['setwinvar("a", "b", 1)'], ['E1013: Argument 1: type mismatch, expected number but got string', 'E1210: Number required for argument 1'])
-  CheckDefAndScriptFailure(['setwinvar(1, 2, "c")'], ['E1013: Argument 2: type mismatch, expected string but got number', 'E1174: String required for argument 2'])
+  v9.CheckDefAndScriptFailure(['setwinvar("a", "b", 1)'], ['E1013: Argument 1: type mismatch, expected number but got string', 'E1210: Number required for argument 1'])
+  v9.CheckDefAndScriptFailure(['setwinvar(1, 2, "c")'], ['E1013: Argument 2: type mismatch, expected string but got number', 'E1174: String required for argument 2'])
   assert_fails('setwinvar(1, "", 10)', 'E461: Illegal variable name')
 enddef
 
 def Test_sha256()
-  CheckDefAndScriptFailure(['sha256(100)'], ['E1013: Argument 1: type mismatch, expected string but got number', 'E1174: String required for argument 1'])
-  CheckDefAndScriptFailure(['sha256(0zABCD)'], ['E1013: Argument 1: type mismatch, expected string but got blob', 'E1174: String required for argument 1'])
+  v9.CheckDefAndScriptFailure(['sha256(100)'], ['E1013: Argument 1: type mismatch, expected string but got number', 'E1174: String required for argument 1'])
+  v9.CheckDefAndScriptFailure(['sha256(0zABCD)'], ['E1013: Argument 1: type mismatch, expected string but got blob', 'E1174: String required for argument 1'])
   assert_equal('ba7816bf8f01cfea414140de5dae2223b00361a396177a9cb410ff61f20015ad', sha256('abc'))
   assert_equal('e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855', sha256(''))
 enddef
 
 def Test_shiftwidth()
-  CheckDefAndScriptFailure(['shiftwidth("x")'], ['E1013: Argument 1: type mismatch, expected number but got string', 'E1210: Number required for argument 1'])
+  v9.CheckDefAndScriptFailure(['shiftwidth("x")'], ['E1013: Argument 1: type mismatch, expected number but got string', 'E1210: Number required for argument 1'])
 enddef
 
 def Test_sign_define()
-  CheckDefAndScriptFailure(['sign_define({"a": 10})'], ['E1013: Argument 1: type mismatch, expected string but got dict<number>', 'E1222: String or List required for argument 1'])
-  CheckDefAndScriptFailure(['sign_define({"a": 10}, "b")'], ['E1013: Argument 1: type mismatch, expected string but got dict<number>', 'E1222: String or List required for argument 1'])
-  CheckDefAndScriptFailure(['sign_define("a", ["b"])'], ['E1013: Argument 2: type mismatch, expected dict<any> but got list<string>', 'E1206: Dictionary required for argument 2'])
+  v9.CheckDefAndScriptFailure(['sign_define({"a": 10})'], ['E1013: Argument 1: type mismatch, expected string but got dict<number>', 'E1222: String or List required for argument 1'])
+  v9.CheckDefAndScriptFailure(['sign_define({"a": 10}, "b")'], ['E1013: Argument 1: type mismatch, expected string but got dict<number>', 'E1222: String or List required for argument 1'])
+  v9.CheckDefAndScriptFailure(['sign_define("a", ["b"])'], ['E1013: Argument 2: type mismatch, expected dict<any> but got list<string>', 'E1206: Dictionary required for argument 2'])
 enddef
 
 def Test_sign_getdefined()
-  CheckDefAndScriptFailure(['sign_getdefined(["x"])'], ['E1013: Argument 1: type mismatch, expected string but got list<string>', 'E1174: String required for argument 1'])
-  CheckDefAndScriptFailure(['sign_getdefined(2)'], ['E1013: Argument 1: type mismatch, expected string but got number', 'E1174: String required for argument 1'])
+  v9.CheckDefAndScriptFailure(['sign_getdefined(["x"])'], ['E1013: Argument 1: type mismatch, expected string but got list<string>', 'E1174: String required for argument 1'])
+  v9.CheckDefAndScriptFailure(['sign_getdefined(2)'], ['E1013: Argument 1: type mismatch, expected string but got number', 'E1174: String required for argument 1'])
   sign_getdefined('')->assert_equal([])
 enddef
 
 def Test_sign_getplaced()
-  CheckDefAndScriptFailure(['sign_getplaced(["x"])'], ['E1013: Argument 1: type mismatch, expected string but got list<string>', 'E1220: String or Number required for argument 1'])
-  CheckDefAndScriptFailure(['sign_getplaced(1, ["a"])'], ['E1013: Argument 2: type mismatch, expected dict<any> but got list<string>', 'E1206: Dictionary required for argument 2'])
-  CheckDefAndScriptFailure(['sign_getplaced("a", 1.1)'], ['E1013: Argument 2: type mismatch, expected dict<any> but got float', 'E1206: Dictionary required for argument 2'])
-  CheckDefExecAndScriptFailure(['sign_getplaced(bufnr(), {lnum: ""})'], 'E1030: Using a String as a Number:')
+  v9.CheckDefAndScriptFailure(['sign_getplaced(["x"])'], ['E1013: Argument 1: type mismatch, expected string but got list<string>', 'E1220: String or Number required for argument 1'])
+  v9.CheckDefAndScriptFailure(['sign_getplaced(1, ["a"])'], ['E1013: Argument 2: type mismatch, expected dict<any> but got list<string>', 'E1206: Dictionary required for argument 2'])
+  v9.CheckDefAndScriptFailure(['sign_getplaced("a", 1.1)'], ['E1013: Argument 2: type mismatch, expected dict<any> but got float', 'E1206: Dictionary required for argument 2'])
+  v9.CheckDefExecAndScriptFailure(['sign_getplaced(bufnr(), {lnum: ""})'], 'E1030: Using a String as a Number:')
   sign_getplaced('')->assert_equal([{signs: [], bufnr: bufnr()}])
 enddef
 
 def Test_sign_jump()
-  CheckDefAndScriptFailure(['sign_jump("a", "b", "c")'], ['E1013: Argument 1: type mismatch, expected number but got string', 'E1210: Number required for argument 1'])
-  CheckDefAndScriptFailure(['sign_jump(1, 2, 3)'], ['E1013: Argument 2: type mismatch, expected string but got number', 'E1174: String required for argument 2'])
-  CheckDefAndScriptFailure(['sign_jump(1, "b", true)'], ['E1013: Argument 3: type mismatch, expected string but got bool', 'E1220: String or Number required for argument 3'])
+  v9.CheckDefAndScriptFailure(['sign_jump("a", "b", "c")'], ['E1013: Argument 1: type mismatch, expected number but got string', 'E1210: Number required for argument 1'])
+  v9.CheckDefAndScriptFailure(['sign_jump(1, 2, 3)'], ['E1013: Argument 2: type mismatch, expected string but got number', 'E1174: String required for argument 2'])
+  v9.CheckDefAndScriptFailure(['sign_jump(1, "b", true)'], ['E1013: Argument 3: type mismatch, expected string but got bool', 'E1220: String or Number required for argument 3'])
 enddef
 
 def Test_sign_place()
-  CheckDefAndScriptFailure(['sign_place("a", "b", "c", "d")'], ['E1013: Argument 1: type mismatch, expected number but got string', 'E1210: Number required for argument 1'])
-  CheckDefAndScriptFailure(['sign_place(1, 2, "c", "d")'], ['E1013: Argument 2: type mismatch, expected string but got number', 'E1174: String required for argument 2'])
-  CheckDefAndScriptFailure(['sign_place(1, "b", 3, "d")'], ['E1013: Argument 3: type mismatch, expected string but got number', 'E1174: String required for argument 3'])
-  CheckDefAndScriptFailure(['sign_place(1, "b", "c", 1.1)'], ['E1013: Argument 4: type mismatch, expected string but got float', 'E1220: String or Number required for argument 4'])
-  CheckDefAndScriptFailure(['sign_place(1, "b", "c", "d", [1])'], ['E1013: Argument 5: type mismatch, expected dict<any> but got list<number>', 'E1206: Dictionary required for argument 5'])
-  CheckDefExecAndScriptFailure(['sign_place(0, "", "MySign", bufnr(), {lnum: ""})'], 'E1209: Invalid value for a line number: ""')
+  v9.CheckDefAndScriptFailure(['sign_place("a", "b", "c", "d")'], ['E1013: Argument 1: type mismatch, expected number but got string', 'E1210: Number required for argument 1'])
+  v9.CheckDefAndScriptFailure(['sign_place(1, 2, "c", "d")'], ['E1013: Argument 2: type mismatch, expected string but got number', 'E1174: String required for argument 2'])
+  v9.CheckDefAndScriptFailure(['sign_place(1, "b", 3, "d")'], ['E1013: Argument 3: type mismatch, expected string but got number', 'E1174: String required for argument 3'])
+  v9.CheckDefAndScriptFailure(['sign_place(1, "b", "c", 1.1)'], ['E1013: Argument 4: type mismatch, expected string but got float', 'E1220: String or Number required for argument 4'])
+  v9.CheckDefAndScriptFailure(['sign_place(1, "b", "c", "d", [1])'], ['E1013: Argument 5: type mismatch, expected dict<any> but got list<number>', 'E1206: Dictionary required for argument 5'])
+  v9.CheckDefExecAndScriptFailure(['sign_place(0, "", "MySign", bufnr(), {lnum: ""})'], 'E1209: Invalid value for a line number: ""')
   assert_fails("sign_place(0, '', '', '')", 'E155:')
 enddef
 
 def Test_sign_placelist()
-  CheckDefAndScriptFailure(['sign_placelist("x")'], ['E1013: Argument 1: type mismatch, expected list<any> but got string', 'E1211: List required for argument 1'])
-  CheckDefAndScriptFailure(['sign_placelist({"a": 10})'], ['E1013: Argument 1: type mismatch, expected list<any> but got dict<number>', 'E1211: List required for argument 1'])
-  CheckDefExecAndScriptFailure(['sign_placelist([{"name": "MySign", "buffer": bufnr(), "lnum": ""}])'], 'E1209: Invalid value for a line number: ""')
+  v9.CheckDefAndScriptFailure(['sign_placelist("x")'], ['E1013: Argument 1: type mismatch, expected list<any> but got string', 'E1211: List required for argument 1'])
+  v9.CheckDefAndScriptFailure(['sign_placelist({"a": 10})'], ['E1013: Argument 1: type mismatch, expected list<any> but got dict<number>', 'E1211: List required for argument 1'])
+  v9.CheckDefExecAndScriptFailure(['sign_placelist([{"name": "MySign", "buffer": bufnr(), "lnum": ""}])'], 'E1209: Invalid value for a line number: ""')
   assert_fails('sign_placelist([{name: "MySign", buffer: "", lnum: 1}])', 'E155:')
 enddef
 
 def Test_sign_undefine()
-  CheckDefAndScriptFailure(['sign_undefine({})'], ['E1013: Argument 1: type mismatch, expected string but got dict<unknown>', 'E1222: String or List required for argument 1'])
-  CheckDefAndScriptFailure(['sign_undefine([1])'], ['E1013: Argument 1: type mismatch, expected list<string> but got list<number>', 'E155: Unknown sign:'])
+  v9.CheckDefAndScriptFailure(['sign_undefine({})'], ['E1013: Argument 1: type mismatch, expected string but got dict<unknown>', 'E1222: String or List required for argument 1'])
+  v9.CheckDefAndScriptFailure(['sign_undefine([1])'], ['E1013: Argument 1: type mismatch, expected list<string> but got list<number>', 'E155: Unknown sign:'])
 enddef
 
 def Test_sign_unplace()
-  CheckDefAndScriptFailure(['sign_unplace({"a": 10})'], ['E1013: Argument 1: type mismatch, expected string but got dict<number>', 'E1174: String required for argument 1'])
-  CheckDefAndScriptFailure(['sign_unplace({"a": 10}, "b")'], ['E1013: Argument 1: type mismatch, expected string but got dict<number>', 'E1174: String required for argument 1'])
-  CheckDefAndScriptFailure(['sign_unplace("a", ["b"])'], ['E1013: Argument 2: type mismatch, expected dict<any> but got list<string>', 'E1206: Dictionary required for argument 2'])
+  v9.CheckDefAndScriptFailure(['sign_unplace({"a": 10})'], ['E1013: Argument 1: type mismatch, expected string but got dict<number>', 'E1174: String required for argument 1'])
+  v9.CheckDefAndScriptFailure(['sign_unplace({"a": 10}, "b")'], ['E1013: Argument 1: type mismatch, expected string but got dict<number>', 'E1174: String required for argument 1'])
+  v9.CheckDefAndScriptFailure(['sign_unplace("a", ["b"])'], ['E1013: Argument 2: type mismatch, expected dict<any> but got list<string>', 'E1206: Dictionary required for argument 2'])
 enddef
 
 def Test_sign_unplacelist()
-  CheckDefAndScriptFailure(['sign_unplacelist("x")'], ['E1013: Argument 1: type mismatch, expected list<any> but got string', 'E1211: List required for argument 1'])
-  CheckDefAndScriptFailure(['sign_unplacelist({"a": 10})'], ['E1013: Argument 1: type mismatch, expected list<any> but got dict<number>', 'E1211: List required for argument 1'])
+  v9.CheckDefAndScriptFailure(['sign_unplacelist("x")'], ['E1013: Argument 1: type mismatch, expected list<any> but got string', 'E1211: List required for argument 1'])
+  v9.CheckDefAndScriptFailure(['sign_unplacelist({"a": 10})'], ['E1013: Argument 1: type mismatch, expected list<any> but got dict<number>', 'E1211: List required for argument 1'])
 enddef
 
 def Test_simplify()
-  CheckDefAndScriptFailure(['simplify(100)'], ['E1013: Argument 1: type mismatch, expected string but got number', 'E1174: String required for argument 1'])
+  v9.CheckDefAndScriptFailure(['simplify(100)'], ['E1013: Argument 1: type mismatch, expected string but got number', 'E1174: String required for argument 1'])
   call assert_equal('NonExistingFile', simplify('NonExistingFile'))
   simplify('')->assert_equal('')
 enddef
@@ -3552,9 +3558,9 @@
   assert_equal(0z11, slice(0z001122334455, 1, -4))
   assert_equal(0z, slice(0z001122334455, 1, -5))
   assert_equal(0z, slice(0z001122334455, 1, -6))
-  CheckDefAndScriptFailure(['slice({"a": 10}, 1)'], ['E1013: Argument 1: type mismatch, expected list<any> but got dict<number>', 'E1211: List required for argument 1'])
-  CheckDefAndScriptFailure(['slice([1, 2, 3], "b")'], ['E1013: Argument 2: type mismatch, expected number but got string', 'E1210: Number required for argument 2'])
-  CheckDefAndScriptFailure(['slice("abc", 1, "c")'], ['E1013: Argument 3: type mismatch, expected number but got string', 'E1210: Number required for argument 3'])
+  v9.CheckDefAndScriptFailure(['slice({"a": 10}, 1)'], ['E1013: Argument 1: type mismatch, expected list<any> but got dict<number>', 'E1211: List required for argument 1'])
+  v9.CheckDefAndScriptFailure(['slice([1, 2, 3], "b")'], ['E1013: Argument 2: type mismatch, expected number but got string', 'E1210: Number required for argument 2'])
+  v9.CheckDefAndScriptFailure(['slice("abc", 1, "c")'], ['E1013: Argument 3: type mismatch, expected number but got string', 'E1210: Number required for argument 3'])
 enddef
 
 def Test_spellsuggest()
@@ -3563,29 +3569,29 @@
   else
     spellsuggest('marrch', 1, true)->assert_equal(['March'])
   endif
-  CheckDefAndScriptFailure(['spellsuggest(1)'], ['E1013: Argument 1: type mismatch, expected string but got number', 'E1174: String required for argument 1'])
-  CheckDefAndScriptFailure(['spellsuggest("a", "b")'], ['E1013: Argument 2: type mismatch, expected number but got string', 'E1210: Number required for argument 2'])
-  CheckDefAndScriptFailure(['spellsuggest("a", 1, 0z01)'], ['E1013: Argument 3: type mismatch, expected bool but got blob', 'E1212: Bool required for argument 3'])
+  v9.CheckDefAndScriptFailure(['spellsuggest(1)'], ['E1013: Argument 1: type mismatch, expected string but got number', 'E1174: String required for argument 1'])
+  v9.CheckDefAndScriptFailure(['spellsuggest("a", "b")'], ['E1013: Argument 2: type mismatch, expected number but got string', 'E1210: Number required for argument 2'])
+  v9.CheckDefAndScriptFailure(['spellsuggest("a", 1, 0z01)'], ['E1013: Argument 3: type mismatch, expected bool but got blob', 'E1212: Bool required for argument 3'])
   spellsuggest('')->assert_equal([])
 enddef
 
 def Test_sound_playevent()
   CheckFeature sound
-  CheckDefAndScriptFailure(['sound_playevent(1)'], ['E1013: Argument 1: type mismatch, expected string but got number', 'E1174: String required for argument 1'])
+  v9.CheckDefAndScriptFailure(['sound_playevent(1)'], ['E1013: Argument 1: type mismatch, expected string but got number', 'E1174: String required for argument 1'])
 enddef
 
 def Test_sound_playfile()
   CheckFeature sound
-  CheckDefAndScriptFailure(['sound_playfile(1)'], ['E1013: Argument 1: type mismatch, expected string but got number', 'E1174: String required for argument 1'])
+  v9.CheckDefAndScriptFailure(['sound_playfile(1)'], ['E1013: Argument 1: type mismatch, expected string but got number', 'E1174: String required for argument 1'])
 enddef
 
 def Test_sound_stop()
   CheckFeature sound
-  CheckDefAndScriptFailure(['sound_stop("x")'], ['E1013: Argument 1: type mismatch, expected number but got string', 'E1210: Number required for argument 1'])
+  v9.CheckDefAndScriptFailure(['sound_stop("x")'], ['E1013: Argument 1: type mismatch, expected number but got string', 'E1210: Number required for argument 1'])
 enddef
 
 def Test_soundfold()
-  CheckDefAndScriptFailure(['soundfold(20)'], ['E1013: Argument 1: type mismatch, expected string but got number', 'E1174: String required for argument 1'])
+  v9.CheckDefAndScriptFailure(['soundfold(20)'], ['E1013: Argument 1: type mismatch, expected string but got number', 'E1174: String required for argument 1'])
   assert_equal('abc', soundfold('abc'))
   assert_equal('', soundfold(''))
 enddef
@@ -3607,9 +3613,9 @@
     sort(l, Compare)
     assert_equal([1, 2, 3, 4, 5, 6, 7, 8], l)
   END
-  CheckDefAndScriptSuccess(lines)
-  CheckDefAndScriptFailure(['sort("a")'], ['E1013: Argument 1: type mismatch, expected list<any> but got string', 'E1211: List required for argument 1'])
-  CheckDefAndScriptFailure(['sort([1], "", [1])'], ['E1013: Argument 3: type mismatch, expected dict<any> but got list<number>', 'E1206: Dictionary required for argument 3'])
+  v9.CheckDefAndScriptSuccess(lines)
+  v9.CheckDefAndScriptFailure(['sort("a")'], ['E1013: Argument 1: type mismatch, expected list<any> but got string', 'E1211: List required for argument 1'])
+  v9.CheckDefAndScriptFailure(['sort([1], "", [1])'], ['E1013: Argument 3: type mismatch, expected dict<any> but got list<number>', 'E1206: Dictionary required for argument 3'])
 enddef
 
 def Test_sort_compare_func_fails()
@@ -3624,27 +3630,27 @@
 enddef
 
 def Test_spellbadword()
-  CheckDefAndScriptFailure(['spellbadword(100)'], ['E1013: Argument 1: type mismatch, expected string but got number', 'E1174: String required for argument 1'])
+  v9.CheckDefAndScriptFailure(['spellbadword(100)'], ['E1013: Argument 1: type mismatch, expected string but got number', 'E1174: String required for argument 1'])
   spellbadword('good')->assert_equal(['', ''])
   spellbadword('')->assert_equal(['', ''])
 enddef
 
 def Test_split()
   split('  aa  bb  ', '\W\+', true)->assert_equal(['', 'aa', 'bb', ''])
-  CheckDefAndScriptFailure(['split(1, "b")'], ['E1013: Argument 1: type mismatch, expected string but got number', 'E1174: String required for argument 1'])
-  CheckDefAndScriptFailure(['split("a", 2)'], ['E1013: Argument 2: type mismatch, expected string but got number', 'E1174: String required for argument 2'])
-  CheckDefAndScriptFailure(['split("a", "b", 2)'], ['E1013: Argument 3: type mismatch, expected bool but got number', 'E1212: Bool required for argument 3'])
+  v9.CheckDefAndScriptFailure(['split(1, "b")'], ['E1013: Argument 1: type mismatch, expected string but got number', 'E1174: String required for argument 1'])
+  v9.CheckDefAndScriptFailure(['split("a", 2)'], ['E1013: Argument 2: type mismatch, expected string but got number', 'E1174: String required for argument 2'])
+  v9.CheckDefAndScriptFailure(['split("a", "b", 2)'], ['E1013: Argument 3: type mismatch, expected bool but got number', 'E1212: Bool required for argument 3'])
   split('')->assert_equal([])
   split('', '')->assert_equal([])
 enddef
 
 def Test_srand()
-  CheckDefAndScriptFailure(['srand("a")'], ['E1013: Argument 1: type mismatch, expected number but got string', 'E1210: Number required for argument 1'])
+  v9.CheckDefAndScriptFailure(['srand("a")'], ['E1013: Argument 1: type mismatch, expected number but got string', 'E1210: Number required for argument 1'])
   type(srand(100))->assert_equal(v:t_list)
 enddef
 
 def Test_state()
-  CheckDefAndScriptFailure(['state({})'], ['E1013: Argument 1: type mismatch, expected string but got dict<unknown>', 'E1174: String required for argument 1'])
+  v9.CheckDefAndScriptFailure(['state({})'], ['E1013: Argument 1: type mismatch, expected string but got dict<unknown>', 'E1174: String required for argument 1'])
   assert_equal('', state('a'))
 enddef
 
@@ -3656,13 +3662,13 @@
     str2float("2e-2")->assert_equal(0.02)
     str2float('')->assert_equal(0.0)
 
-    CheckDefAndScriptFailure(['str2float(123)'], ['E1013: Argument 1: type mismatch, expected string but got number', 'E1174: String required for argument 1'])
+    v9.CheckDefAndScriptFailure(['str2float(123)'], ['E1013: Argument 1: type mismatch, expected string but got number', 'E1174: String required for argument 1'])
   endif
 enddef
 
 def Test_str2list()
-  CheckDefAndScriptFailure(['str2list(10)'], ['E1013: Argument 1: type mismatch, expected string but got number', 'E1174: String required for argument 1'])
-  CheckDefAndScriptFailure(['str2list("a", 2)'], ['E1013: Argument 2: type mismatch, expected bool but got number', 'E1212: Bool required for argument 2'])
+  v9.CheckDefAndScriptFailure(['str2list(10)'], ['E1013: Argument 1: type mismatch, expected string but got number', 'E1174: String required for argument 1'])
+  v9.CheckDefAndScriptFailure(['str2list("a", 2)'], ['E1013: Argument 2: type mismatch, expected bool but got number', 'E1212: Bool required for argument 2'])
   assert_equal([97], str2list('a'))
   assert_equal([97], str2list('a', 1))
   assert_equal([97], str2list('a', true))
@@ -3673,29 +3679,29 @@
   str2nr("1'000'000", 10, true)->assert_equal(1000000)
   str2nr('')->assert_equal(0)
 
-  CheckDefAndScriptFailure(['str2nr(123)'], ['E1013: Argument 1: type mismatch, expected string but got number', 'E1174: String required for argument 1'])
-  CheckDefAndScriptFailure(['str2nr("123", "x")'], ['E1013: Argument 2: type mismatch, expected number but got string', 'E1210: Number required for argument 2'])
-  CheckDefAndScriptFailure(['str2nr("123", 10, "x")'], ['E1013: Argument 3: type mismatch, expected bool but got string', 'E1212: Bool required for argument 3'])
+  v9.CheckDefAndScriptFailure(['str2nr(123)'], ['E1013: Argument 1: type mismatch, expected string but got number', 'E1174: String required for argument 1'])
+  v9.CheckDefAndScriptFailure(['str2nr("123", "x")'], ['E1013: Argument 2: type mismatch, expected number but got string', 'E1210: Number required for argument 2'])
+  v9.CheckDefAndScriptFailure(['str2nr("123", 10, "x")'], ['E1013: Argument 3: type mismatch, expected bool but got string', 'E1212: Bool required for argument 3'])
 enddef
 
 def Test_strcharlen()
-  CheckDefAndScriptFailure(['strcharlen([1])'], ['E1013: Argument 1: type mismatch, expected string but got list<number>', 'E1220: String or Number required for argument 1'])
+  v9.CheckDefAndScriptFailure(['strcharlen([1])'], ['E1013: Argument 1: type mismatch, expected string but got list<number>', 'E1220: String or Number required for argument 1'])
   "abc"->strcharlen()->assert_equal(3)
   strcharlen(99)->assert_equal(2)
 enddef
 
 def Test_strcharpart()
-  CheckDefAndScriptFailure(['strcharpart(1, 2)'], ['E1013: Argument 1: type mismatch, expected string but got number', 'E1174: String required for argument 1'])
-  CheckDefAndScriptFailure(['strcharpart("a", "b")'], ['E1013: Argument 2: type mismatch, expected number but got string', 'E1210: Number required for argument 2'])
-  CheckDefAndScriptFailure(['strcharpart("a", 1, "c")'], ['E1013: Argument 3: type mismatch, expected number but got string', 'E1210: Number required for argument 3'])
-  CheckDefAndScriptFailure(['strcharpart("a", 1, 1, 2)'], ['E1013: Argument 4: type mismatch, expected bool but got number', 'E1212: Bool required for argument 4'])
+  v9.CheckDefAndScriptFailure(['strcharpart(1, 2)'], ['E1013: Argument 1: type mismatch, expected string but got number', 'E1174: String required for argument 1'])
+  v9.CheckDefAndScriptFailure(['strcharpart("a", "b")'], ['E1013: Argument 2: type mismatch, expected number but got string', 'E1210: Number required for argument 2'])
+  v9.CheckDefAndScriptFailure(['strcharpart("a", 1, "c")'], ['E1013: Argument 3: type mismatch, expected number but got string', 'E1210: Number required for argument 3'])
+  v9.CheckDefAndScriptFailure(['strcharpart("a", 1, 1, 2)'], ['E1013: Argument 4: type mismatch, expected bool but got number', 'E1212: Bool required for argument 4'])
   strcharpart('', 0)->assert_equal('')
 enddef
 
 def Test_strchars()
   strchars("A\u20dd", true)->assert_equal(1)
-  CheckDefAndScriptFailure(['strchars(10)'], ['E1013: Argument 1: type mismatch, expected string but got number', 'E1174: String required for argument 1'])
-  CheckDefAndScriptFailure(['strchars("a", 2)'], ['E1013: Argument 2: type mismatch, expected bool but got number', 'E1212: Bool required for argument 2'])
+  v9.CheckDefAndScriptFailure(['strchars(10)'], ['E1013: Argument 1: type mismatch, expected string but got number', 'E1174: String required for argument 1'])
+  v9.CheckDefAndScriptFailure(['strchars("a", 2)'], ['E1013: Argument 2: type mismatch, expected bool but got number', 'E1212: Bool required for argument 2'])
   assert_equal(3, strchars('abc'))
   assert_equal(3, strchars('abc', 1))
   assert_equal(3, strchars('abc', true))
@@ -3703,76 +3709,76 @@
 enddef
 
 def Test_strdisplaywidth()
-  CheckDefAndScriptFailure(['strdisplaywidth(1)'], ['E1013: Argument 1: type mismatch, expected string but got number', 'E1174: String required for argument 1'])
-  CheckDefAndScriptFailure(['strdisplaywidth("a", "x")'], ['E1013: Argument 2: type mismatch, expected number but got string', 'E1210: Number required for argument 2'])
+  v9.CheckDefAndScriptFailure(['strdisplaywidth(1)'], ['E1013: Argument 1: type mismatch, expected string but got number', 'E1174: String required for argument 1'])
+  v9.CheckDefAndScriptFailure(['strdisplaywidth("a", "x")'], ['E1013: Argument 2: type mismatch, expected number but got string', 'E1210: Number required for argument 2'])
   strdisplaywidth('')->assert_equal(0)
 enddef
 
 def Test_strftime()
   if exists('*strftime')
-    CheckDefAndScriptFailure(['strftime(1)'], ['E1013: Argument 1: type mismatch, expected string but got number', 'E1174: String required for argument 1'])
-    CheckDefAndScriptFailure(['strftime("a", "x")'], ['E1013: Argument 2: type mismatch, expected number but got string', 'E1210: Number required for argument 2'])
+    v9.CheckDefAndScriptFailure(['strftime(1)'], ['E1013: Argument 1: type mismatch, expected string but got number', 'E1174: String required for argument 1'])
+    v9.CheckDefAndScriptFailure(['strftime("a", "x")'], ['E1013: Argument 2: type mismatch, expected number but got string', 'E1210: Number required for argument 2'])
     strftime('')->assert_equal('')
   endif
 enddef
 
 def Test_strgetchar()
-  CheckDefAndScriptFailure(['strgetchar(1, 1)'], ['E1013: Argument 1: type mismatch, expected string but got number', 'E1174: String required for argument 1'])
-  CheckDefAndScriptFailure(['strgetchar("a", "x")'], ['E1013: Argument 2: type mismatch, expected number but got string', 'E1210: Number required for argument 2'])
+  v9.CheckDefAndScriptFailure(['strgetchar(1, 1)'], ['E1013: Argument 1: type mismatch, expected string but got number', 'E1174: String required for argument 1'])
+  v9.CheckDefAndScriptFailure(['strgetchar("a", "x")'], ['E1013: Argument 2: type mismatch, expected number but got string', 'E1210: Number required for argument 2'])
   strgetchar('', 0)->assert_equal(-1)
   strgetchar('', 1)->assert_equal(-1)
 enddef
 
 def Test_stridx()
-  CheckDefAndScriptFailure(['stridx([1], "b")'], ['E1013: Argument 1: type mismatch, expected string but got list<number>', 'E1174: String required for argument 1'])
-  CheckDefAndScriptFailure(['stridx("a", {})'], ['E1013: Argument 2: type mismatch, expected string but got dict<unknown>', 'E1174: String required for argument 2'])
-  CheckDefAndScriptFailure(['stridx("a", "b", "c")'], ['E1013: Argument 3: type mismatch, expected number but got string', 'E1210: Number required for argument 3'])
+  v9.CheckDefAndScriptFailure(['stridx([1], "b")'], ['E1013: Argument 1: type mismatch, expected string but got list<number>', 'E1174: String required for argument 1'])
+  v9.CheckDefAndScriptFailure(['stridx("a", {})'], ['E1013: Argument 2: type mismatch, expected string but got dict<unknown>', 'E1174: String required for argument 2'])
+  v9.CheckDefAndScriptFailure(['stridx("a", "b", "c")'], ['E1013: Argument 3: type mismatch, expected number but got string', 'E1210: Number required for argument 3'])
   stridx('', '')->assert_equal(0)
   stridx('', 'a')->assert_equal(-1)
   stridx('a', '')->assert_equal(0)
 enddef
 
 def Test_strlen()
-  CheckDefAndScriptFailure(['strlen([])'], ['E1013: Argument 1: type mismatch, expected string but got list<unknown>', 'E1220: String or Number required for argument 1'])
+  v9.CheckDefAndScriptFailure(['strlen([])'], ['E1013: Argument 1: type mismatch, expected string but got list<unknown>', 'E1220: String or Number required for argument 1'])
   "abc"->strlen()->assert_equal(3)
   strlen(99)->assert_equal(2)
 enddef
 
 def Test_strpart()
-  CheckDefAndScriptFailure(['strpart(1, 2)'], ['E1013: Argument 1: type mismatch, expected string but got number', 'E1174: String required for argument 1'])
-  CheckDefAndScriptFailure(['strpart("a", "b")'], ['E1013: Argument 2: type mismatch, expected number but got string', 'E1210: Number required for argument 2'])
-  CheckDefAndScriptFailure(['strpart("a", 1, "c")'], ['E1013: Argument 3: type mismatch, expected number but got string', 'E1210: Number required for argument 3'])
-  CheckDefAndScriptFailure(['strpart("a", 1, 1, 2)'], ['E1013: Argument 4: type mismatch, expected bool but got number', 'E1212: Bool required for argument 4'])
+  v9.CheckDefAndScriptFailure(['strpart(1, 2)'], ['E1013: Argument 1: type mismatch, expected string but got number', 'E1174: String required for argument 1'])
+  v9.CheckDefAndScriptFailure(['strpart("a", "b")'], ['E1013: Argument 2: type mismatch, expected number but got string', 'E1210: Number required for argument 2'])
+  v9.CheckDefAndScriptFailure(['strpart("a", 1, "c")'], ['E1013: Argument 3: type mismatch, expected number but got string', 'E1210: Number required for argument 3'])
+  v9.CheckDefAndScriptFailure(['strpart("a", 1, 1, 2)'], ['E1013: Argument 4: type mismatch, expected bool but got number', 'E1212: Bool required for argument 4'])
   strpart('', 0)->assert_equal('')
 enddef
 
 def Test_strptime()
   CheckFunction strptime
   if exists_compiled('*strptime')
-    CheckDefAndScriptFailure(['strptime(10, "2021")'], ['E1013: Argument 1: type mismatch, expected string but got number', 'E1174: String required for argument 1'])
-    CheckDefAndScriptFailure(['strptime("%Y", 2021)'], ['E1013: Argument 2: type mismatch, expected string but got number', 'E1174: String required for argument 2'])
+    v9.CheckDefAndScriptFailure(['strptime(10, "2021")'], ['E1013: Argument 1: type mismatch, expected string but got number', 'E1174: String required for argument 1'])
+    v9.CheckDefAndScriptFailure(['strptime("%Y", 2021)'], ['E1013: Argument 2: type mismatch, expected string but got number', 'E1174: String required for argument 2'])
     assert_true(strptime('%Y', '2021') != 0)
     assert_true(strptime('%Y', '') == 0)
   endif
 enddef
 
 def Test_strridx()
-  CheckDefAndScriptFailure(['strridx([1], "b")'], ['E1013: Argument 1: type mismatch, expected string but got list<number>', 'E1174: String required for argument 1'])
-  CheckDefAndScriptFailure(['strridx("a", {})'], ['E1013: Argument 2: type mismatch, expected string but got dict<unknown>', 'E1174: String required for argument 2'])
-  CheckDefAndScriptFailure(['strridx("a", "b", "c")'], ['E1013: Argument 3: type mismatch, expected number but got string', 'E1210: Number required for argument 3'])
+  v9.CheckDefAndScriptFailure(['strridx([1], "b")'], ['E1013: Argument 1: type mismatch, expected string but got list<number>', 'E1174: String required for argument 1'])
+  v9.CheckDefAndScriptFailure(['strridx("a", {})'], ['E1013: Argument 2: type mismatch, expected string but got dict<unknown>', 'E1174: String required for argument 2'])
+  v9.CheckDefAndScriptFailure(['strridx("a", "b", "c")'], ['E1013: Argument 3: type mismatch, expected number but got string', 'E1210: Number required for argument 3'])
   strridx('', '')->assert_equal(0)
   strridx('', 'a')->assert_equal(-1)
   strridx('a', '')->assert_equal(1)
 enddef
 
 def Test_strtrans()
-  CheckDefAndScriptFailure(['strtrans(20)'], ['E1013: Argument 1: type mismatch, expected string but got number', 'E1174: String required for argument 1'])
+  v9.CheckDefAndScriptFailure(['strtrans(20)'], ['E1013: Argument 1: type mismatch, expected string but got number', 'E1174: String required for argument 1'])
   assert_equal('abc', strtrans('abc'))
   strtrans('')->assert_equal('')
 enddef
 
 def Test_strwidth()
-  CheckDefAndScriptFailure(['strwidth(10)'], ['E1013: Argument 1: type mismatch, expected string but got number', 'E1174: String required for argument 1'])
+  v9.CheckDefAndScriptFailure(['strwidth(10)'], ['E1013: Argument 1: type mismatch, expected string but got number', 'E1174: String required for argument 1'])
   assert_equal(4, strwidth('abcd'))
   strwidth('')->assert_equal(0)
 enddef
@@ -3783,8 +3789,8 @@
   var actual = substitute('A123456789', pat, Rep, '')
   var expected = "[['A123456789'], ['1'], ['2'], ['3'], ['4'], ['5'], ['6'], ['7'], ['8'], ['9']]"
   actual->assert_equal(expected)
-  CheckDefAndScriptFailure(['submatch("x")'], ['E1013: Argument 1: type mismatch, expected number but got string', 'E1210: Number required for argument 1'])
-  CheckDefAndScriptFailure(['submatch(1, "a")'], ['E1013: Argument 2: type mismatch, expected bool but got string', 'E1212: Bool required for argument 2'])
+  v9.CheckDefAndScriptFailure(['submatch("x")'], ['E1013: Argument 1: type mismatch, expected number but got string', 'E1210: Number required for argument 1'])
+  v9.CheckDefAndScriptFailure(['submatch(1, "a")'], ['E1013: Argument 2: type mismatch, expected bool but got string', 'E1212: Bool required for argument 2'])
 enddef
 
 def Test_substitute()
@@ -3795,20 +3801,20 @@
     assert_fails('"text"->substitute(".*", () => test_null_job(), "")', 'E908: using an invalid value as a String: job')
     assert_fails('"text"->substitute(".*", () => test_null_channel(), "")', 'E908: using an invalid value as a String: channel')
   endif
-  CheckDefAndScriptFailure(['substitute(1, "b", "1", "d")'], ['E1013: Argument 1: type mismatch, expected string but got number', 'E1174: String required for argument 1'])
-  CheckDefAndScriptFailure(['substitute("a", 2, "1", "d")'], ['E1013: Argument 2: type mismatch, expected string but got number', 'E1174: String required for argument 2'])
-  CheckDefAndScriptFailure(['substitute("a", "b", "1", 4)'], ['E1013: Argument 4: type mismatch, expected string but got number', 'E1174: String required for argument 4'])
+  v9.CheckDefAndScriptFailure(['substitute(1, "b", "1", "d")'], ['E1013: Argument 1: type mismatch, expected string but got number', 'E1174: String required for argument 1'])
+  v9.CheckDefAndScriptFailure(['substitute("a", 2, "1", "d")'], ['E1013: Argument 2: type mismatch, expected string but got number', 'E1174: String required for argument 2'])
+  v9.CheckDefAndScriptFailure(['substitute("a", "b", "1", 4)'], ['E1013: Argument 4: type mismatch, expected string but got number', 'E1174: String required for argument 4'])
   substitute('', '', '', '')->assert_equal('')
 enddef
 
 def Test_swapinfo()
-  CheckDefAndScriptFailure(['swapinfo({})'], ['E1013: Argument 1: type mismatch, expected string but got dict<unknown>', 'E1174: String required for argument 1'])
+  v9.CheckDefAndScriptFailure(['swapinfo({})'], ['E1013: Argument 1: type mismatch, expected string but got dict<unknown>', 'E1174: String required for argument 1'])
   call swapinfo('x')->assert_equal({error: 'Cannot open file'})
   call swapinfo('')->assert_equal({error: 'Cannot open file'})
 enddef
 
 def Test_swapname()
-  CheckDefAndScriptFailure(['swapname([])'], ['E1013: Argument 1: type mismatch, expected string but got list<unknown>', 'E1220: String or Number required for argument 1'])
+  v9.CheckDefAndScriptFailure(['swapname([])'], ['E1013: Argument 1: type mismatch, expected string but got list<unknown>', 'E1220: String or Number required for argument 1'])
   assert_fails('swapname("NonExistingBuf")', 'E94:')
 enddef
 
@@ -3817,46 +3823,46 @@
   setline(1, "text")
   synID(1, 1, true)->assert_equal(0)
   bwipe!
-  CheckDefAndScriptFailure(['synID(0z10, 1, true)'], ['E1013: Argument 1: type mismatch, expected string but got blob', 'E1220: String or Number required for argument 1'])
-  CheckDefAndScriptFailure(['synID("a", true, false)'], ['E1013: Argument 2: type mismatch, expected number but got bool', 'E1210: Number required for argument 2'])
-  CheckDefAndScriptFailure(['synID(1, 1, 2)'], ['E1013: Argument 3: type mismatch, expected bool but got number', 'E1212: Bool required for argument 3'])
-  CheckDefExecAndScriptFailure(['synID("", 10, true)'], 'E1209: Invalid value for a line number')
+  v9.CheckDefAndScriptFailure(['synID(0z10, 1, true)'], ['E1013: Argument 1: type mismatch, expected string but got blob', 'E1220: String or Number required for argument 1'])
+  v9.CheckDefAndScriptFailure(['synID("a", true, false)'], ['E1013: Argument 2: type mismatch, expected number but got bool', 'E1210: Number required for argument 2'])
+  v9.CheckDefAndScriptFailure(['synID(1, 1, 2)'], ['E1013: Argument 3: type mismatch, expected bool but got number', 'E1212: Bool required for argument 3'])
+  v9.CheckDefExecAndScriptFailure(['synID("", 10, true)'], 'E1209: Invalid value for a line number')
 enddef
 
 def Test_synIDattr()
-  CheckDefAndScriptFailure(['synIDattr("a", "b")'], ['E1013: Argument 1: type mismatch, expected number but got string', 'E1210: Number required for argument 1'])
-  CheckDefAndScriptFailure(['synIDattr(1, 2)'], ['E1013: Argument 2: type mismatch, expected string but got number', 'E1174: String required for argument 2'])
-  CheckDefAndScriptFailure(['synIDattr(1, "b", 3)'], ['E1013: Argument 3: type mismatch, expected string but got number', 'E1174: String required for argument 3'])
+  v9.CheckDefAndScriptFailure(['synIDattr("a", "b")'], ['E1013: Argument 1: type mismatch, expected number but got string', 'E1210: Number required for argument 1'])
+  v9.CheckDefAndScriptFailure(['synIDattr(1, 2)'], ['E1013: Argument 2: type mismatch, expected string but got number', 'E1174: String required for argument 2'])
+  v9.CheckDefAndScriptFailure(['synIDattr(1, "b", 3)'], ['E1013: Argument 3: type mismatch, expected string but got number', 'E1174: String required for argument 3'])
   synIDattr(1, '', '')->assert_equal('')
 enddef
 
 def Test_synIDtrans()
-  CheckDefAndScriptFailure(['synIDtrans("a")'], ['E1013: Argument 1: type mismatch, expected number but got string', 'E1210: Number required for argument 1'])
+  v9.CheckDefAndScriptFailure(['synIDtrans("a")'], ['E1013: Argument 1: type mismatch, expected number but got string', 'E1210: Number required for argument 1'])
 enddef
 
 def Test_synconcealed()
-  CheckDefAndScriptFailure(['synconcealed(0z10, 1)'], ['E1013: Argument 1: type mismatch, expected string but got blob', 'E1220: String or Number required for argument 1'])
-  CheckDefAndScriptFailure(['synconcealed(1, "a")'], ['E1013: Argument 2: type mismatch, expected number but got string', 'E1210: Number required for argument 2'])
+  v9.CheckDefAndScriptFailure(['synconcealed(0z10, 1)'], ['E1013: Argument 1: type mismatch, expected string but got blob', 'E1220: String or Number required for argument 1'])
+  v9.CheckDefAndScriptFailure(['synconcealed(1, "a")'], ['E1013: Argument 2: type mismatch, expected number but got string', 'E1210: Number required for argument 2'])
   if has('conceal')
-    CheckDefExecAndScriptFailure(['synconcealed("", 4)'], 'E1209: Invalid value for a line number')
+    v9.CheckDefExecAndScriptFailure(['synconcealed("", 4)'], 'E1209: Invalid value for a line number')
   endif
 enddef
 
 def Test_synstack()
-  CheckDefAndScriptFailure(['synstack(0z10, 1)'], ['E1013: Argument 1: type mismatch, expected string but got blob', 'E1220: String or Number required for argument 1'])
-  CheckDefAndScriptFailure(['synstack(1, "a")'], ['E1013: Argument 2: type mismatch, expected number but got string', 'E1210: Number required for argument 2'])
-  CheckDefExecAndScriptFailure(['synstack("", 4)'], 'E1209: Invalid value for a line number')
+  v9.CheckDefAndScriptFailure(['synstack(0z10, 1)'], ['E1013: Argument 1: type mismatch, expected string but got blob', 'E1220: String or Number required for argument 1'])
+  v9.CheckDefAndScriptFailure(['synstack(1, "a")'], ['E1013: Argument 2: type mismatch, expected number but got string', 'E1210: Number required for argument 2'])
+  v9.CheckDefExecAndScriptFailure(['synstack("", 4)'], 'E1209: Invalid value for a line number')
 enddef
 
 def Test_system()
-  CheckDefAndScriptFailure(['system(1)'], ['E1013: Argument 1: type mismatch, expected string but got number', 'E1174: String required for argument 1'])
-  CheckDefAndScriptFailure(['system("a", {})'], ['E1013: Argument 2: type mismatch, expected string but got dict<unknown>', 'E1224: String, Number or List required for argument 2'])
+  v9.CheckDefAndScriptFailure(['system(1)'], ['E1013: Argument 1: type mismatch, expected string but got number', 'E1174: String required for argument 1'])
+  v9.CheckDefAndScriptFailure(['system("a", {})'], ['E1013: Argument 2: type mismatch, expected string but got dict<unknown>', 'E1224: String, Number or List required for argument 2'])
   assert_equal("123\n", system('echo 123'))
 enddef
 
 def Test_systemlist()
-  CheckDefAndScriptFailure(['systemlist(1)'], ['E1013: Argument 1: type mismatch, expected string but got number', 'E1174: String required for argument 1'])
-  CheckDefAndScriptFailure(['systemlist("a", {})'], ['E1013: Argument 2: type mismatch, expected string but got dict<unknown>', 'E1224: String, Number or List required for argument 2'])
+  v9.CheckDefAndScriptFailure(['systemlist(1)'], ['E1013: Argument 1: type mismatch, expected string but got number', 'E1174: String required for argument 1'])
+  v9.CheckDefAndScriptFailure(['systemlist("a", {})'], ['E1013: Argument 2: type mismatch, expected string but got dict<unknown>', 'E1224: String, Number or List required for argument 2'])
   if has('win32')
     call assert_equal(["123\r"], systemlist('echo 123'))
   else
@@ -3865,137 +3871,137 @@
 enddef
 
 def Test_tabpagebuflist()
-  CheckDefAndScriptFailure(['tabpagebuflist("t")'], ['E1013: Argument 1: type mismatch, expected number but got string', 'E1210: Number required for argument 1'])
+  v9.CheckDefAndScriptFailure(['tabpagebuflist("t")'], ['E1013: Argument 1: type mismatch, expected number but got string', 'E1210: Number required for argument 1'])
   assert_equal([bufnr('')], tabpagebuflist())
   assert_equal([bufnr('')], tabpagebuflist(1))
 enddef
 
 def Test_tabpagenr()
-  CheckDefAndScriptFailure(['tabpagenr(1)'], ['E1013: Argument 1: type mismatch, expected string but got number', 'E1174: String required for argument 1'])
-  CheckDefExecAndScriptFailure(['tabpagenr("")'], 'E15: Invalid expression')
+  v9.CheckDefAndScriptFailure(['tabpagenr(1)'], ['E1013: Argument 1: type mismatch, expected string but got number', 'E1174: String required for argument 1'])
+  v9.CheckDefExecAndScriptFailure(['tabpagenr("")'], 'E15: Invalid expression')
   assert_equal(1, tabpagenr('$'))
   assert_equal(1, tabpagenr())
 enddef
 
 def Test_tabpagewinnr()
-  CheckDefAndScriptFailure(['tabpagewinnr("x")'], ['E1013: Argument 1: type mismatch, expected number but got string', 'E1210: Number required for argument 1'])
-  CheckDefAndScriptFailure(['tabpagewinnr(1, 2)'], ['E1013: Argument 2: type mismatch, expected string but got number', 'E1174: String required for argument 2'])
-  CheckDefExecAndScriptFailure(['tabpagewinnr(1, "")'], 'E15: Invalid expression')
+  v9.CheckDefAndScriptFailure(['tabpagewinnr("x")'], ['E1013: Argument 1: type mismatch, expected number but got string', 'E1210: Number required for argument 1'])
+  v9.CheckDefAndScriptFailure(['tabpagewinnr(1, 2)'], ['E1013: Argument 2: type mismatch, expected string but got number', 'E1174: String required for argument 2'])
+  v9.CheckDefExecAndScriptFailure(['tabpagewinnr(1, "")'], 'E15: Invalid expression')
 enddef
 
 def Test_taglist()
-  CheckDefAndScriptFailure(['taglist([1])'], ['E1013: Argument 1: type mismatch, expected string but got list<number>', 'E1174: String required for argument 1'])
-  CheckDefAndScriptFailure(['taglist("a", [2])'], ['E1013: Argument 2: type mismatch, expected string but got list<number>', 'E1174: String required for argument 2'])
+  v9.CheckDefAndScriptFailure(['taglist([1])'], ['E1013: Argument 1: type mismatch, expected string but got list<number>', 'E1174: String required for argument 1'])
+  v9.CheckDefAndScriptFailure(['taglist("a", [2])'], ['E1013: Argument 2: type mismatch, expected string but got list<number>', 'E1174: String required for argument 2'])
   taglist('')->assert_equal(0)
   taglist('', '')->assert_equal(0)
 enddef
 
 def Test_term_dumpload()
   CheckRunVimInTerminal
-  CheckDefAndScriptFailure(['term_dumpload({"a": 10})'], ['E1013: Argument 1: type mismatch, expected string but got dict<number>', 'E1174: String required for argument 1'])
-  CheckDefAndScriptFailure(['term_dumpload({"a": 10}, "b")'], ['E1013: Argument 1: type mismatch, expected string but got dict<number>', 'E1174: String required for argument 1'])
-  CheckDefAndScriptFailure(['term_dumpload("a", ["b"])'], ['E1013: Argument 2: type mismatch, expected dict<any> but got list<string>', 'E1206: Dictionary required for argument 2'])
-  CheckDefExecAndScriptFailure(['term_dumpload("")'], 'E485: Can''t read file')
+  v9.CheckDefAndScriptFailure(['term_dumpload({"a": 10})'], ['E1013: Argument 1: type mismatch, expected string but got dict<number>', 'E1174: String required for argument 1'])
+  v9.CheckDefAndScriptFailure(['term_dumpload({"a": 10}, "b")'], ['E1013: Argument 1: type mismatch, expected string but got dict<number>', 'E1174: String required for argument 1'])
+  v9.CheckDefAndScriptFailure(['term_dumpload("a", ["b"])'], ['E1013: Argument 2: type mismatch, expected dict<any> but got list<string>', 'E1206: Dictionary required for argument 2'])
+  v9.CheckDefExecAndScriptFailure(['term_dumpload("")'], 'E485: Can''t read file')
 enddef
 
 def Test_term_dumpdiff()
   CheckRunVimInTerminal
-  CheckDefAndScriptFailure(['term_dumpdiff(1, "b")'], ['E1013: Argument 1: type mismatch, expected string but got number', 'E1174: String required for argument 1'])
-  CheckDefAndScriptFailure(['term_dumpdiff("a", 2)'], ['E1013: Argument 2: type mismatch, expected string but got number', 'E1174: String required for argument 2'])
-  CheckDefAndScriptFailure(['term_dumpdiff("a", "b", [1])'], ['E1013: Argument 3: type mismatch, expected dict<any> but got list<number>', 'E1206: Dictionary required for argument 3'])
-  CheckDefExecAndScriptFailure(['term_dumpdiff("", "")'], 'E485: Can''t read file')
+  v9.CheckDefAndScriptFailure(['term_dumpdiff(1, "b")'], ['E1013: Argument 1: type mismatch, expected string but got number', 'E1174: String required for argument 1'])
+  v9.CheckDefAndScriptFailure(['term_dumpdiff("a", 2)'], ['E1013: Argument 2: type mismatch, expected string but got number', 'E1174: String required for argument 2'])
+  v9.CheckDefAndScriptFailure(['term_dumpdiff("a", "b", [1])'], ['E1013: Argument 3: type mismatch, expected dict<any> but got list<number>', 'E1206: Dictionary required for argument 3'])
+  v9.CheckDefExecAndScriptFailure(['term_dumpdiff("", "")'], 'E485: Can''t read file')
 enddef
 
 def Test_term_dumpwrite()
   CheckRunVimInTerminal
-  CheckDefAndScriptFailure(['term_dumpwrite(true, "b")'], ['E1013: Argument 1: type mismatch, expected string but got bool', 'E1220: String or Number required for argument 1'])
-  CheckDefAndScriptFailure(['term_dumpwrite(1, 2)'], ['E1013: Argument 2: type mismatch, expected string but got number', 'E1174: String required for argument 2'])
-  CheckDefAndScriptFailure(['term_dumpwrite("a", "b", [1])'], ['E1013: Argument 3: type mismatch, expected dict<any> but got list<number>', 'E1206: Dictionary required for argument 3'])
+  v9.CheckDefAndScriptFailure(['term_dumpwrite(true, "b")'], ['E1013: Argument 1: type mismatch, expected string but got bool', 'E1220: String or Number required for argument 1'])
+  v9.CheckDefAndScriptFailure(['term_dumpwrite(1, 2)'], ['E1013: Argument 2: type mismatch, expected string but got number', 'E1174: String required for argument 2'])
+  v9.CheckDefAndScriptFailure(['term_dumpwrite("a", "b", [1])'], ['E1013: Argument 3: type mismatch, expected dict<any> but got list<number>', 'E1206: Dictionary required for argument 3'])
 enddef
 
 def Test_term_getaltscreen()
   CheckRunVimInTerminal
-  CheckDefAndScriptFailure(['term_getaltscreen(true)'], ['E1013: Argument 1: type mismatch, expected string but got bool', 'E1220: String or Number required for argument 1'])
+  v9.CheckDefAndScriptFailure(['term_getaltscreen(true)'], ['E1013: Argument 1: type mismatch, expected string but got bool', 'E1220: String or Number required for argument 1'])
 enddef
 
 def Test_term_getansicolors()
   CheckRunVimInTerminal
   CheckFeature termguicolors
-  CheckDefAndScriptFailure(['term_getansicolors(["a"])'], ['E1013: Argument 1: type mismatch, expected string but got list<string>', 'E1220: String or Number required for argument 1'])
+  v9.CheckDefAndScriptFailure(['term_getansicolors(["a"])'], ['E1013: Argument 1: type mismatch, expected string but got list<string>', 'E1220: String or Number required for argument 1'])
 enddef
 
 def Test_term_getattr()
   CheckRunVimInTerminal
-  CheckDefAndScriptFailure(['term_getattr("x", "a")'], ['E1013: Argument 1: type mismatch, expected number but got string', 'E1210: Number required for argument 1'])
-  CheckDefAndScriptFailure(['term_getattr(1, 2)'], ['E1013: Argument 2: type mismatch, expected string but got number', 'E1174: String required for argument 2'])
+  v9.CheckDefAndScriptFailure(['term_getattr("x", "a")'], ['E1013: Argument 1: type mismatch, expected number but got string', 'E1210: Number required for argument 1'])
+  v9.CheckDefAndScriptFailure(['term_getattr(1, 2)'], ['E1013: Argument 2: type mismatch, expected string but got number', 'E1174: String required for argument 2'])
 enddef
 
 def Test_term_getcursor()
   CheckRunVimInTerminal
-  CheckDefAndScriptFailure(['term_getcursor({"a": 10})'], ['E1013: Argument 1: type mismatch, expected string but got dict<number>', 'E1220: String or Number required for argument 1'])
+  v9.CheckDefAndScriptFailure(['term_getcursor({"a": 10})'], ['E1013: Argument 1: type mismatch, expected string but got dict<number>', 'E1220: String or Number required for argument 1'])
 enddef
 
 def Test_term_getjob()
   CheckRunVimInTerminal
-  CheckDefAndScriptFailure(['term_getjob(0z10)'], ['E1013: Argument 1: type mismatch, expected string but got blob', 'E1220: String or Number required for argument 1'])
+  v9.CheckDefAndScriptFailure(['term_getjob(0z10)'], ['E1013: Argument 1: type mismatch, expected string but got blob', 'E1220: String or Number required for argument 1'])
 enddef
 
 def Test_term_getline()
   CheckRunVimInTerminal
-  CheckDefAndScriptFailure(['term_getline(1.1, 1)'], ['E1013: Argument 1: type mismatch, expected string but got float', 'E1220: String or Number required for argument 1'])
-  CheckDefAndScriptFailure(['term_getline(1, 1.1)'], ['E1013: Argument 2: type mismatch, expected string but got float', 'E1220: String or Number required for argument 2'])
+  v9.CheckDefAndScriptFailure(['term_getline(1.1, 1)'], ['E1013: Argument 1: type mismatch, expected string but got float', 'E1220: String or Number required for argument 1'])
+  v9.CheckDefAndScriptFailure(['term_getline(1, 1.1)'], ['E1013: Argument 2: type mismatch, expected string but got float', 'E1220: String or Number required for argument 2'])
 enddef
 
 def Test_term_getscrolled()
   CheckRunVimInTerminal
-  CheckDefAndScriptFailure(['term_getscrolled(1.1)'], ['E1013: Argument 1: type mismatch, expected string but got float', 'E1220: String or Number required for argument 1'])
+  v9.CheckDefAndScriptFailure(['term_getscrolled(1.1)'], ['E1013: Argument 1: type mismatch, expected string but got float', 'E1220: String or Number required for argument 1'])
 enddef
 
 def Test_term_getsize()
   CheckRunVimInTerminal
-  CheckDefAndScriptFailure(['term_getsize(1.1)'], ['E1013: Argument 1: type mismatch, expected string but got float', 'E1220: String or Number required for argument 1'])
+  v9.CheckDefAndScriptFailure(['term_getsize(1.1)'], ['E1013: Argument 1: type mismatch, expected string but got float', 'E1220: String or Number required for argument 1'])
 enddef
 
 def Test_term_getstatus()
   CheckRunVimInTerminal
-  CheckDefAndScriptFailure(['term_getstatus(1.1)'], ['E1013: Argument 1: type mismatch, expected string but got float', 'E1220: String or Number required for argument 1'])
+  v9.CheckDefAndScriptFailure(['term_getstatus(1.1)'], ['E1013: Argument 1: type mismatch, expected string but got float', 'E1220: String or Number required for argument 1'])
 enddef
 
 def Test_term_gettitle()
   CheckRunVimInTerminal
-  CheckDefAndScriptFailure(['term_gettitle(1.1)'], ['E1013: Argument 1: type mismatch, expected string but got float', 'E1220: String or Number required for argument 1'])
+  v9.CheckDefAndScriptFailure(['term_gettitle(1.1)'], ['E1013: Argument 1: type mismatch, expected string but got float', 'E1220: String or Number required for argument 1'])
 enddef
 
 def Test_term_gettty()
   if !has('terminal')
     CheckFeature terminal
   else
-    var buf = Run_shell_in_terminal({})
+    var buf = g:Run_shell_in_terminal({})
     term_gettty(buf, true)->assert_notequal('')
-    StopShellInTerminal(buf)
+    g:StopShellInTerminal(buf)
   endif
-  CheckDefAndScriptFailure(['term_gettty([1])'], ['E1013: Argument 1: type mismatch, expected string but got list<number>', 'E1220: String or Number required for argument 1'])
-  CheckDefAndScriptFailure(['term_gettty(1, 2)'], ['E1013: Argument 2: type mismatch, expected bool but got number', 'E1212: Bool required for argument 2'])
+  v9.CheckDefAndScriptFailure(['term_gettty([1])'], ['E1013: Argument 1: type mismatch, expected string but got list<number>', 'E1220: String or Number required for argument 1'])
+  v9.CheckDefAndScriptFailure(['term_gettty(1, 2)'], ['E1013: Argument 2: type mismatch, expected bool but got number', 'E1212: Bool required for argument 2'])
 enddef
 
 def Test_term_scrape()
   CheckRunVimInTerminal
-  CheckDefAndScriptFailure(['term_scrape(1.1, 1)'], ['E1013: Argument 1: type mismatch, expected string but got float', 'E1220: String or Number required for argument 1'])
-  CheckDefAndScriptFailure(['term_scrape(1, 1.1)'], ['E1013: Argument 2: type mismatch, expected string but got float', 'E1220: String or Number required for argument 2'])
+  v9.CheckDefAndScriptFailure(['term_scrape(1.1, 1)'], ['E1013: Argument 1: type mismatch, expected string but got float', 'E1220: String or Number required for argument 1'])
+  v9.CheckDefAndScriptFailure(['term_scrape(1, 1.1)'], ['E1013: Argument 2: type mismatch, expected string but got float', 'E1220: String or Number required for argument 2'])
 enddef
 
 def Test_term_sendkeys()
   CheckRunVimInTerminal
-  CheckDefAndScriptFailure(['term_sendkeys([], "p")'], ['E1013: Argument 1: type mismatch, expected string but got list<unknown>', 'E1220: String or Number required for argument 1'])
-  CheckDefAndScriptFailure(['term_sendkeys(1, [])'], ['E1013: Argument 2: type mismatch, expected string but got list<unknown>', 'E1174: String required for argument 2'])
+  v9.CheckDefAndScriptFailure(['term_sendkeys([], "p")'], ['E1013: Argument 1: type mismatch, expected string but got list<unknown>', 'E1220: String or Number required for argument 1'])
+  v9.CheckDefAndScriptFailure(['term_sendkeys(1, [])'], ['E1013: Argument 2: type mismatch, expected string but got list<unknown>', 'E1174: String required for argument 2'])
 enddef
 
 def Test_term_setansicolors()
   CheckRunVimInTerminal
 
   if has('termguicolors') || has('gui')
-    CheckDefAndScriptFailure(['term_setansicolors([], "p")'], ['E1013: Argument 1: type mismatch, expected string but got list<unknown>', 'E1220: String or Number required for argument 1'])
-    CheckDefAndScriptFailure(['term_setansicolors(10, {})'], ['E1013: Argument 2: type mismatch, expected list<any> but got dict<unknown>', 'E1211: List required for argument 2'])
+    v9.CheckDefAndScriptFailure(['term_setansicolors([], "p")'], ['E1013: Argument 1: type mismatch, expected string but got list<unknown>', 'E1220: String or Number required for argument 1'])
+    v9.CheckDefAndScriptFailure(['term_setansicolors(10, {})'], ['E1013: Argument 2: type mismatch, expected list<any> but got dict<unknown>', 'E1211: List required for argument 2'])
   else
     throw 'Skipped: Only works with termguicolors or gui feature'
   endif
@@ -4003,27 +4009,27 @@
 
 def Test_term_setapi()
   CheckRunVimInTerminal
-  CheckDefAndScriptFailure(['term_setapi([], "p")'], ['E1013: Argument 1: type mismatch, expected string but got list<unknown>', 'E1220: String or Number required for argument 1'])
-  CheckDefAndScriptFailure(['term_setapi(1, [])'], ['E1013: Argument 2: type mismatch, expected string but got list<unknown>', 'E1174: String required for argument 2'])
+  v9.CheckDefAndScriptFailure(['term_setapi([], "p")'], ['E1013: Argument 1: type mismatch, expected string but got list<unknown>', 'E1220: String or Number required for argument 1'])
+  v9.CheckDefAndScriptFailure(['term_setapi(1, [])'], ['E1013: Argument 2: type mismatch, expected string but got list<unknown>', 'E1174: String required for argument 2'])
 enddef
 
 def Test_term_setkill()
   CheckRunVimInTerminal
-  CheckDefAndScriptFailure(['term_setkill([], "p")'], ['E1013: Argument 1: type mismatch, expected string but got list<unknown>', 'E1220: String or Number required for argument 1'])
-  CheckDefAndScriptFailure(['term_setkill(1, [])'], ['E1013: Argument 2: type mismatch, expected string but got list<unknown>', 'E1174: String required for argument 2'])
+  v9.CheckDefAndScriptFailure(['term_setkill([], "p")'], ['E1013: Argument 1: type mismatch, expected string but got list<unknown>', 'E1220: String or Number required for argument 1'])
+  v9.CheckDefAndScriptFailure(['term_setkill(1, [])'], ['E1013: Argument 2: type mismatch, expected string but got list<unknown>', 'E1174: String required for argument 2'])
 enddef
 
 def Test_term_setrestore()
   CheckRunVimInTerminal
-  CheckDefAndScriptFailure(['term_setrestore([], "p")'], ['E1013: Argument 1: type mismatch, expected string but got list<unknown>', 'E1220: String or Number required for argument 1'])
-  CheckDefAndScriptFailure(['term_setrestore(1, [])'], ['E1013: Argument 2: type mismatch, expected string but got list<unknown>', 'E1174: String required for argument 2'])
+  v9.CheckDefAndScriptFailure(['term_setrestore([], "p")'], ['E1013: Argument 1: type mismatch, expected string but got list<unknown>', 'E1220: String or Number required for argument 1'])
+  v9.CheckDefAndScriptFailure(['term_setrestore(1, [])'], ['E1013: Argument 2: type mismatch, expected string but got list<unknown>', 'E1174: String required for argument 2'])
 enddef
 
 def Test_term_setsize()
   CheckRunVimInTerminal
-  CheckDefAndScriptFailure(['term_setsize(1.1, 2, 3)'], ['E1013: Argument 1: type mismatch, expected string but got float', 'E1220: String or Number required for argument 1'])
-  CheckDefAndScriptFailure(['term_setsize(1, "2", 3)'], ['E1013: Argument 2: type mismatch, expected number but got string', 'E1210: Number required for argument 2'])
-  CheckDefAndScriptFailure(['term_setsize(1, 2, "3")'], ['E1013: Argument 3: type mismatch, expected number but got string', 'E1210: Number required for argument 3'])
+  v9.CheckDefAndScriptFailure(['term_setsize(1.1, 2, 3)'], ['E1013: Argument 1: type mismatch, expected string but got float', 'E1220: String or Number required for argument 1'])
+  v9.CheckDefAndScriptFailure(['term_setsize(1, "2", 3)'], ['E1013: Argument 2: type mismatch, expected number but got string', 'E1210: Number required for argument 2'])
+  v9.CheckDefAndScriptFailure(['term_setsize(1, 2, "3")'], ['E1013: Argument 3: type mismatch, expected number but got string', 'E1210: Number required for argument 3'])
 enddef
 
 def Test_term_start()
@@ -4036,94 +4042,94 @@
     winnr()->assert_equal(winnr)
     bwipe!
   endif
-  CheckDefAndScriptFailure(['term_start({})'], ['E1013: Argument 1: type mismatch, expected string but got dict<unknown>', 'E1222: String or List required for argument 1'])
-  CheckDefAndScriptFailure(['term_start([], [])'], ['E1013: Argument 2: type mismatch, expected dict<any> but got list<unknown>', 'E1206: Dictionary required for argument 2'])
-  CheckDefAndScriptFailure(['term_start("", "")'], ['E1013: Argument 2: type mismatch, expected dict<any> but got string', 'E1206: Dictionary required for argument 2'])
-  CheckDefExecAndScriptFailure(['term_start("")'], 'E474: Invalid argument')
+  v9.CheckDefAndScriptFailure(['term_start({})'], ['E1013: Argument 1: type mismatch, expected string but got dict<unknown>', 'E1222: String or List required for argument 1'])
+  v9.CheckDefAndScriptFailure(['term_start([], [])'], ['E1013: Argument 2: type mismatch, expected dict<any> but got list<unknown>', 'E1206: Dictionary required for argument 2'])
+  v9.CheckDefAndScriptFailure(['term_start("", "")'], ['E1013: Argument 2: type mismatch, expected dict<any> but got string', 'E1206: Dictionary required for argument 2'])
+  v9.CheckDefExecAndScriptFailure(['term_start("")'], 'E474: Invalid argument')
 enddef
 
 def Test_term_wait()
   CheckRunVimInTerminal
-  CheckDefAndScriptFailure(['term_wait(0z10, 1)'], ['E1013: Argument 1: type mismatch, expected string but got blob', 'E1220: String or Number required for argument 1'])
-  CheckDefAndScriptFailure(['term_wait(1, "a")'], ['E1013: Argument 2: type mismatch, expected number but got string', 'E1210: Number required for argument 2'])
+  v9.CheckDefAndScriptFailure(['term_wait(0z10, 1)'], ['E1013: Argument 1: type mismatch, expected string but got blob', 'E1220: String or Number required for argument 1'])
+  v9.CheckDefAndScriptFailure(['term_wait(1, "a")'], ['E1013: Argument 2: type mismatch, expected number but got string', 'E1210: Number required for argument 2'])
 enddef
 
 def Test_test_alloc_fail()
-  CheckDefAndScriptFailure(['test_alloc_fail("a", 10, 20)'], ['E1013: Argument 1: type mismatch, expected number but got string', 'E1210: Number required for argument 1'])
-  CheckDefAndScriptFailure(['test_alloc_fail(10, "b", 20)'], ['E1013: Argument 2: type mismatch, expected number but got string', 'E1210: Number required for argument 2'])
-  CheckDefAndScriptFailure(['test_alloc_fail(10, 20, "c")'], ['E1013: Argument 3: type mismatch, expected number but got string', 'E1210: Number required for argument 3'])
+  v9.CheckDefAndScriptFailure(['test_alloc_fail("a", 10, 20)'], ['E1013: Argument 1: type mismatch, expected number but got string', 'E1210: Number required for argument 1'])
+  v9.CheckDefAndScriptFailure(['test_alloc_fail(10, "b", 20)'], ['E1013: Argument 2: type mismatch, expected number but got string', 'E1210: Number required for argument 2'])
+  v9.CheckDefAndScriptFailure(['test_alloc_fail(10, 20, "c")'], ['E1013: Argument 3: type mismatch, expected number but got string', 'E1210: Number required for argument 3'])
 enddef
 
 def Test_test_feedinput()
-  CheckDefAndScriptFailure(['test_feedinput(test_void())'], ['E1013: Argument 1: type mismatch, expected string but got void', 'E1174: String required for argument 1'])
-  CheckDefAndScriptFailure(['test_feedinput(["a"])'], ['E1013: Argument 1: type mismatch, expected string but got list<string>', 'E1174: String required for argument 1'])
+  v9.CheckDefAndScriptFailure(['test_feedinput(test_void())'], ['E1013: Argument 1: type mismatch, expected string but got void', 'E1174: String required for argument 1'])
+  v9.CheckDefAndScriptFailure(['test_feedinput(["a"])'], ['E1013: Argument 1: type mismatch, expected string but got list<string>', 'E1174: String required for argument 1'])
 enddef
 
 def Test_test_getvalue()
-  CheckDefAndScriptFailure(['test_getvalue(1.1)'], ['E1013: Argument 1: type mismatch, expected string but got float', 'E1174: String required for argument 1'])
+  v9.CheckDefAndScriptFailure(['test_getvalue(1.1)'], ['E1013: Argument 1: type mismatch, expected string but got float', 'E1174: String required for argument 1'])
 enddef
 
 def Test_test_gui_drop_files()
   CheckGui
-  CheckDefAndScriptFailure(['test_gui_drop_files("a", 1, 1, 0)'], ['E1013: Argument 1: type mismatch, expected list<string> but got string', 'E1211: List required for argument 1'])
-  CheckDefAndScriptFailure(['test_gui_drop_files(["x"], "", 1, 0)'], ['E1013: Argument 2: type mismatch, expected number but got string', 'E1210: Number required for argument 2'])
-  CheckDefAndScriptFailure(['test_gui_drop_files(["x"], 1, "", 0)'], ['E1013: Argument 3: type mismatch, expected number but got string', 'E1210: Number required for argument 3'])
-  CheckDefAndScriptFailure(['test_gui_drop_files(["x"], 1, 1, "")'], ['E1013: Argument 4: type mismatch, expected number but got string', 'E1210: Number required for argument 4'])
+  v9.CheckDefAndScriptFailure(['test_gui_drop_files("a", 1, 1, 0)'], ['E1013: Argument 1: type mismatch, expected list<string> but got string', 'E1211: List required for argument 1'])
+  v9.CheckDefAndScriptFailure(['test_gui_drop_files(["x"], "", 1, 0)'], ['E1013: Argument 2: type mismatch, expected number but got string', 'E1210: Number required for argument 2'])
+  v9.CheckDefAndScriptFailure(['test_gui_drop_files(["x"], 1, "", 0)'], ['E1013: Argument 3: type mismatch, expected number but got string', 'E1210: Number required for argument 3'])
+  v9.CheckDefAndScriptFailure(['test_gui_drop_files(["x"], 1, 1, "")'], ['E1013: Argument 4: type mismatch, expected number but got string', 'E1210: Number required for argument 4'])
 enddef
 
 def Test_test_gui_mouse_event()
   CheckGui
-  CheckDefAndScriptFailure(['test_gui_mouse_event(1.1, 1, 1, 1, 1)'], ['E1013: Argument 1: type mismatch, expected number but got float', 'E1210: Number required for argument 1'])
-  CheckDefAndScriptFailure(['test_gui_mouse_event(1, "1", 1, 1, 1)'], ['E1013: Argument 2: type mismatch, expected number but got string', 'E1210: Number required for argument 2'])
-  CheckDefAndScriptFailure(['test_gui_mouse_event(1, 1, "1", 1, 1)'], ['E1013: Argument 3: type mismatch, expected number but got string', 'E1210: Number required for argument 3'])
-  CheckDefAndScriptFailure(['test_gui_mouse_event(1, 1, 1, "1", 1)'], ['E1013: Argument 4: type mismatch, expected number but got string', 'E1210: Number required for argument 4'])
-  CheckDefAndScriptFailure(['test_gui_mouse_event(1, 1, 1, 1, "1")'], ['E1013: Argument 5: type mismatch, expected number but got string', 'E1210: Number required for argument 5'])
+  v9.CheckDefAndScriptFailure(['test_gui_mouse_event(1.1, 1, 1, 1, 1)'], ['E1013: Argument 1: type mismatch, expected number but got float', 'E1210: Number required for argument 1'])
+  v9.CheckDefAndScriptFailure(['test_gui_mouse_event(1, "1", 1, 1, 1)'], ['E1013: Argument 2: type mismatch, expected number but got string', 'E1210: Number required for argument 2'])
+  v9.CheckDefAndScriptFailure(['test_gui_mouse_event(1, 1, "1", 1, 1)'], ['E1013: Argument 3: type mismatch, expected number but got string', 'E1210: Number required for argument 3'])
+  v9.CheckDefAndScriptFailure(['test_gui_mouse_event(1, 1, 1, "1", 1)'], ['E1013: Argument 4: type mismatch, expected number but got string', 'E1210: Number required for argument 4'])
+  v9.CheckDefAndScriptFailure(['test_gui_mouse_event(1, 1, 1, 1, "1")'], ['E1013: Argument 5: type mismatch, expected number but got string', 'E1210: Number required for argument 5'])
 enddef
 
 def Test_test_ignore_error()
-  CheckDefAndScriptFailure(['test_ignore_error([])'], ['E1013: Argument 1: type mismatch, expected string but got list<unknown>', 'E1174: String required for argument 1'])
+  v9.CheckDefAndScriptFailure(['test_ignore_error([])'], ['E1013: Argument 1: type mismatch, expected string but got list<unknown>', 'E1174: String required for argument 1'])
   test_ignore_error('RESET')
 enddef
 
 def Test_test_option_not_set()
-  CheckDefAndScriptFailure(['test_option_not_set([])'], ['E1013: Argument 1: type mismatch, expected string but got list<unknown>', 'E1174: String required for argument 1'])
+  v9.CheckDefAndScriptFailure(['test_option_not_set([])'], ['E1013: Argument 1: type mismatch, expected string but got list<unknown>', 'E1174: String required for argument 1'])
 enddef
 
 def Test_test_override()
-  CheckDefAndScriptFailure(['test_override(1, 1)'], ['E1013: Argument 1: type mismatch, expected string but got number', 'E1174: String required for argument 1'])
-  CheckDefAndScriptFailure(['test_override("a", "x")'], ['E1013: Argument 2: type mismatch, expected number but got string', 'E1210: Number required for argument 2'])
+  v9.CheckDefAndScriptFailure(['test_override(1, 1)'], ['E1013: Argument 1: type mismatch, expected string but got number', 'E1174: String required for argument 1'])
+  v9.CheckDefAndScriptFailure(['test_override("a", "x")'], ['E1013: Argument 2: type mismatch, expected number but got string', 'E1210: Number required for argument 2'])
 enddef
 
 def Test_test_scrollbar()
   CheckGui
-  CheckDefAndScriptFailure(['test_scrollbar(1, 2, 3)'], ['E1013: Argument 1: type mismatch, expected string but got number', 'E1174: String required for argument 1'])
-  CheckDefAndScriptFailure(['test_scrollbar("a", "b", 3)'], ['E1013: Argument 2: type mismatch, expected number but got string', 'E1210: Number required for argument 2'])
-  CheckDefAndScriptFailure(['test_scrollbar("a", 2, "c")'], ['E1013: Argument 3: type mismatch, expected number but got string', 'E1210: Number required for argument 3'])
+  v9.CheckDefAndScriptFailure(['test_scrollbar(1, 2, 3)'], ['E1013: Argument 1: type mismatch, expected string but got number', 'E1174: String required for argument 1'])
+  v9.CheckDefAndScriptFailure(['test_scrollbar("a", "b", 3)'], ['E1013: Argument 2: type mismatch, expected number but got string', 'E1210: Number required for argument 2'])
+  v9.CheckDefAndScriptFailure(['test_scrollbar("a", 2, "c")'], ['E1013: Argument 3: type mismatch, expected number but got string', 'E1210: Number required for argument 3'])
 enddef
 
 def Test_test_setmouse()
-  CheckDefAndScriptFailure(['test_setmouse("a", 10)'], ['E1013: Argument 1: type mismatch, expected number but got string', 'E1210: Number required for argument 1'])
-  CheckDefAndScriptFailure(['test_setmouse(10, "b")'], ['E1013: Argument 2: type mismatch, expected number but got string', 'E1210: Number required for argument 2'])
+  v9.CheckDefAndScriptFailure(['test_setmouse("a", 10)'], ['E1013: Argument 1: type mismatch, expected number but got string', 'E1210: Number required for argument 1'])
+  v9.CheckDefAndScriptFailure(['test_setmouse(10, "b")'], ['E1013: Argument 2: type mismatch, expected number but got string', 'E1210: Number required for argument 2'])
 enddef
 
 def Test_test_settime()
-  CheckDefAndScriptFailure(['test_settime([1])'], ['E1013: Argument 1: type mismatch, expected number but got list<number>', 'E1210: Number required for argument 1'])
+  v9.CheckDefAndScriptFailure(['test_settime([1])'], ['E1013: Argument 1: type mismatch, expected number but got list<number>', 'E1210: Number required for argument 1'])
 enddef
 
 def Test_test_srand_seed()
-  CheckDefAndScriptFailure(['test_srand_seed([1])'], ['E1013: Argument 1: type mismatch, expected number but got list<number>', 'E1210: Number required for argument 1'])
-  CheckDefAndScriptFailure(['test_srand_seed("10")'], ['E1013: Argument 1: type mismatch, expected number but got string', 'E1210: Number required for argument 1'])
+  v9.CheckDefAndScriptFailure(['test_srand_seed([1])'], ['E1013: Argument 1: type mismatch, expected number but got list<number>', 'E1210: Number required for argument 1'])
+  v9.CheckDefAndScriptFailure(['test_srand_seed("10")'], ['E1013: Argument 1: type mismatch, expected number but got string', 'E1210: Number required for argument 1'])
 enddef
 
 def Test_timer_info()
-  CheckDefAndScriptFailure(['timer_info("id")'], ['E1013: Argument 1: type mismatch, expected number but got string', 'E1210: Number required for argument 1'])
+  v9.CheckDefAndScriptFailure(['timer_info("id")'], ['E1013: Argument 1: type mismatch, expected number but got string', 'E1210: Number required for argument 1'])
   assert_equal([], timer_info(100))
   assert_equal([], timer_info())
 enddef
 
 def Test_timer_pause()
-  CheckDefAndScriptFailure(['timer_pause("x", 1)'], ['E1013: Argument 1: type mismatch, expected number but got string', 'E1210: Number required for argument 1'])
-  CheckDefAndScriptFailure(['timer_pause(1, "a")'], ['E1013: Argument 2: type mismatch, expected bool but got string', 'E1212: Bool required for argument 2'])
+  v9.CheckDefAndScriptFailure(['timer_pause("x", 1)'], ['E1013: Argument 1: type mismatch, expected number but got string', 'E1210: Number required for argument 1'])
+  v9.CheckDefAndScriptFailure(['timer_pause(1, "a")'], ['E1013: Argument 2: type mismatch, expected bool but got string', 'E1212: Bool required for argument 2'])
 enddef
 
 def Test_timer_paused()
@@ -4135,31 +4141,31 @@
 enddef
 
 def Test_timer_start()
-  CheckDefAndScriptFailure(['timer_start("a", "1")'], ['E1013: Argument 1: type mismatch, expected number but got string', 'E1210: Number required for argument 1'])
-  CheckDefAndScriptFailure(['timer_start(1, "1", [1])'], ['E1013: Argument 3: type mismatch, expected dict<any> but got list<number>', 'E1206: Dictionary required for argument 3'])
-  CheckDefExecAndScriptFailure(['timer_start(100, 0)'], 'E921:')
-  CheckDefExecAndScriptFailure(['timer_start(100, "")'], 'E921:')
+  v9.CheckDefAndScriptFailure(['timer_start("a", "1")'], ['E1013: Argument 1: type mismatch, expected number but got string', 'E1210: Number required for argument 1'])
+  v9.CheckDefAndScriptFailure(['timer_start(1, "1", [1])'], ['E1013: Argument 3: type mismatch, expected dict<any> but got list<number>', 'E1206: Dictionary required for argument 3'])
+  v9.CheckDefExecAndScriptFailure(['timer_start(100, 0)'], 'E921:')
+  v9.CheckDefExecAndScriptFailure(['timer_start(100, "")'], 'E921:')
 enddef
 
 def Test_timer_stop()
-  CheckDefAndScriptFailure(['timer_stop("x")'], ['E1013: Argument 1: type mismatch, expected number but got string', 'E1210: Number required for argument 1'])
+  v9.CheckDefAndScriptFailure(['timer_stop("x")'], ['E1013: Argument 1: type mismatch, expected number but got string', 'E1210: Number required for argument 1'])
   assert_equal(0, timer_stop(100))
 enddef
 
 def Test_tolower()
-  CheckDefAndScriptFailure(['tolower(1)'], ['E1013: Argument 1: type mismatch, expected string but got number', 'E1174: String required for argument 1'])
+  v9.CheckDefAndScriptFailure(['tolower(1)'], ['E1013: Argument 1: type mismatch, expected string but got number', 'E1174: String required for argument 1'])
   tolower('')->assert_equal('')
 enddef
 
 def Test_toupper()
-  CheckDefAndScriptFailure(['toupper(1)'], ['E1013: Argument 1: type mismatch, expected string but got number', 'E1174: String required for argument 1'])
+  v9.CheckDefAndScriptFailure(['toupper(1)'], ['E1013: Argument 1: type mismatch, expected string but got number', 'E1174: String required for argument 1'])
   toupper('')->assert_equal('')
 enddef
 
 def Test_tr()
-  CheckDefAndScriptFailure(['tr(1, "a", "b")'], ['E1013: Argument 1: type mismatch, expected string but got number', 'E1174: String required for argument 1'])
-  CheckDefAndScriptFailure(['tr("a", 1, "b")'], ['E1013: Argument 2: type mismatch, expected string but got number', 'E1174: String required for argument 2'])
-  CheckDefAndScriptFailure(['tr("a", "a", 1)'], ['E1013: Argument 3: type mismatch, expected string but got number', 'E1174: String required for argument 3'])
+  v9.CheckDefAndScriptFailure(['tr(1, "a", "b")'], ['E1013: Argument 1: type mismatch, expected string but got number', 'E1174: String required for argument 1'])
+  v9.CheckDefAndScriptFailure(['tr("a", 1, "b")'], ['E1013: Argument 2: type mismatch, expected string but got number', 'E1174: String required for argument 2'])
+  v9.CheckDefAndScriptFailure(['tr("a", "a", 1)'], ['E1013: Argument 3: type mismatch, expected string but got number', 'E1174: String required for argument 3'])
   tr('', '', '')->assert_equal('')
   tr('ab', '', '')->assert_equal('ab')
   assert_fails("tr('ab', 'ab', '')", 'E475:')
@@ -4167,9 +4173,9 @@
 enddef
 
 def Test_trim()
-  CheckDefAndScriptFailure(['trim(["a"])'], ['E1013: Argument 1: type mismatch, expected string but got list<string>', 'E1174: String required for argument 1'])
-  CheckDefAndScriptFailure(['trim("a", ["b"])'], ['E1013: Argument 2: type mismatch, expected string but got list<string>', 'E1174: String required for argument 2'])
-  CheckDefAndScriptFailure(['trim("a", "b", "c")'], ['E1013: Argument 3: type mismatch, expected number but got string', 'E1210: Number required for argument 3'])
+  v9.CheckDefAndScriptFailure(['trim(["a"])'], ['E1013: Argument 1: type mismatch, expected string but got list<string>', 'E1174: String required for argument 1'])
+  v9.CheckDefAndScriptFailure(['trim("a", ["b"])'], ['E1013: Argument 2: type mismatch, expected string but got list<string>', 'E1174: String required for argument 2'])
+  v9.CheckDefAndScriptFailure(['trim("a", "b", "c")'], ['E1013: Argument 3: type mismatch, expected number but got string', 'E1210: Number required for argument 3'])
   trim('')->assert_equal('')
   trim('', '')->assert_equal('')
 enddef
@@ -4190,27 +4196,27 @@
 enddef
 
 def Test_undofile()
-  CheckDefAndScriptFailure(['undofile(10)'], ['E1013: Argument 1: type mismatch, expected string but got number', 'E1174: String required for argument 1'])
+  v9.CheckDefAndScriptFailure(['undofile(10)'], ['E1013: Argument 1: type mismatch, expected string but got number', 'E1174: String required for argument 1'])
   assert_equal('.abc.un~', fnamemodify(undofile('abc'), ':t'))
   undofile('')->assert_equal('')
 enddef
 
 def Test_uniq()
-  CheckDefAndScriptFailure(['uniq("a")'], ['E1013: Argument 1: type mismatch, expected list<any> but got string', 'E1211: List required for argument 1'])
-  CheckDefAndScriptFailure(['uniq([1], "", [1])'], ['E1013: Argument 3: type mismatch, expected dict<any> but got list<number>', 'E1206: Dictionary required for argument 3'])
+  v9.CheckDefAndScriptFailure(['uniq("a")'], ['E1013: Argument 1: type mismatch, expected list<any> but got string', 'E1211: List required for argument 1'])
+  v9.CheckDefAndScriptFailure(['uniq([1], "", [1])'], ['E1013: Argument 3: type mismatch, expected dict<any> but got list<number>', 'E1206: Dictionary required for argument 3'])
 
-  CheckDefFailure(['var l: list<number> = uniq(["a", "b"])'], 'E1012: Type mismatch; expected list<number> but got list<string>')
+  v9.CheckDefFailure(['var l: list<number> = uniq(["a", "b"])'], 'E1012: Type mismatch; expected list<number> but got list<string>')
 enddef
 
 def Test_values()
-  CheckDefAndScriptFailure(['values([])'], ['E1013: Argument 1: type mismatch, expected dict<any> but got list<unknown>', 'E1206: Dictionary required for argument 1'])
+  v9.CheckDefAndScriptFailure(['values([])'], ['E1013: Argument 1: type mismatch, expected dict<any> but got list<unknown>', 'E1206: Dictionary required for argument 1'])
   assert_equal([], {}->values())
   assert_equal(['sun'], {star: 'sun'}->values())
 enddef
 
 def Test_virtcol()
-  CheckDefAndScriptFailure(['virtcol(1.1)'], ['E1013: Argument 1: type mismatch, expected string but got float', 'E1222: String or List required for argument 1'])
-  CheckDefExecAndScriptFailure(['virtcol("")'], 'E1209: Invalid value for a line number')
+  v9.CheckDefAndScriptFailure(['virtcol(1.1)'], ['E1013: Argument 1: type mismatch, expected string but got float', 'E1222: String or List required for argument 1'])
+  v9.CheckDefExecAndScriptFailure(['virtcol("")'], 'E1209: Invalid value for a line number')
   new
   setline(1, ['abcdefgh'])
   cursor(1, 4)
@@ -4222,8 +4228,8 @@
 enddef
 
 def Test_visualmode()
-  CheckDefAndScriptFailure(['visualmode("1")'], ['E1013: Argument 1: type mismatch, expected bool but got string', 'E1212: Bool required for argument 1'])
-  CheckDefAndScriptFailure(['visualmode(2)'], ['E1013: Argument 1: type mismatch, expected bool but got number', 'E1212: Bool required for argument 1'])
+  v9.CheckDefAndScriptFailure(['visualmode("1")'], ['E1013: Argument 1: type mismatch, expected bool but got string', 'E1212: Bool required for argument 1'])
+  v9.CheckDefAndScriptFailure(['visualmode(2)'], ['E1013: Argument 1: type mismatch, expected bool but got number', 'E1212: Bool required for argument 1'])
 enddef
 
 def Test_win_execute()
@@ -4231,67 +4237,67 @@
   assert_equal("\n" .. winnr(), 'echo winnr()'->win_execute(win_getid()))
   assert_equal("\n" .. winnr(), win_execute(win_getid(), 'echo winnr()', 'silent'))
   assert_equal('', win_execute(342343, 'echo winnr()'))
-  CheckDefAndScriptFailure(['win_execute("a", "b", "c")'], ['E1013: Argument 1: type mismatch, expected number but got string', 'E1210: Number required for argument 1'])
-  CheckDefAndScriptFailure(['win_execute(1, 2, "c")'], ['E1013: Argument 2: type mismatch, expected string but got number', 'E1222: String or List required for argument 2'])
-  CheckDefAndScriptFailure(['win_execute(1, "b", 3)'], ['E1013: Argument 3: type mismatch, expected string but got number', 'E1174: String required for argument 3'])
+  v9.CheckDefAndScriptFailure(['win_execute("a", "b", "c")'], ['E1013: Argument 1: type mismatch, expected number but got string', 'E1210: Number required for argument 1'])
+  v9.CheckDefAndScriptFailure(['win_execute(1, 2, "c")'], ['E1013: Argument 2: type mismatch, expected string but got number', 'E1222: String or List required for argument 2'])
+  v9.CheckDefAndScriptFailure(['win_execute(1, "b", 3)'], ['E1013: Argument 3: type mismatch, expected string but got number', 'E1174: String required for argument 3'])
 enddef
 
 def Test_win_findbuf()
-  CheckDefAndScriptFailure(['win_findbuf("a")'], ['E1013: Argument 1: type mismatch, expected number but got string', 'E1210: Number required for argument 1'])
+  v9.CheckDefAndScriptFailure(['win_findbuf("a")'], ['E1013: Argument 1: type mismatch, expected number but got string', 'E1210: Number required for argument 1'])
   assert_equal([], win_findbuf(1000))
   assert_equal([win_getid()], win_findbuf(bufnr('')))
 enddef
 
 def Test_win_getid()
-  CheckDefAndScriptFailure(['win_getid(".")'], ['E1013: Argument 1: type mismatch, expected number but got string', 'E1210: Number required for argument 1'])
-  CheckDefAndScriptFailure(['win_getid(1, ".")'], ['E1013: Argument 2: type mismatch, expected number but got string', 'E1210: Number required for argument 2'])
+  v9.CheckDefAndScriptFailure(['win_getid(".")'], ['E1013: Argument 1: type mismatch, expected number but got string', 'E1210: Number required for argument 1'])
+  v9.CheckDefAndScriptFailure(['win_getid(1, ".")'], ['E1013: Argument 2: type mismatch, expected number but got string', 'E1210: Number required for argument 2'])
   assert_equal(win_getid(), win_getid(1, 1))
 enddef
 
 def Test_win_gettype()
-  CheckDefAndScriptFailure(['win_gettype("x")'], ['E1013: Argument 1: type mismatch, expected number but got string', 'E1210: Number required for argument 1'])
+  v9.CheckDefAndScriptFailure(['win_gettype("x")'], ['E1013: Argument 1: type mismatch, expected number but got string', 'E1210: Number required for argument 1'])
 enddef
 
 def Test_win_gotoid()
-  CheckDefAndScriptFailure(['win_gotoid("x")'], ['E1013: Argument 1: type mismatch, expected number but got string', 'E1210: Number required for argument 1'])
+  v9.CheckDefAndScriptFailure(['win_gotoid("x")'], ['E1013: Argument 1: type mismatch, expected number but got string', 'E1210: Number required for argument 1'])
 enddef
 
 def Test_win_id2tabwin()
-  CheckDefAndScriptFailure(['win_id2tabwin("x")'], ['E1013: Argument 1: type mismatch, expected number but got string', 'E1210: Number required for argument 1'])
+  v9.CheckDefAndScriptFailure(['win_id2tabwin("x")'], ['E1013: Argument 1: type mismatch, expected number but got string', 'E1210: Number required for argument 1'])
 enddef
 
 def Test_win_id2win()
-  CheckDefAndScriptFailure(['win_id2win("x")'], ['E1013: Argument 1: type mismatch, expected number but got string', 'E1210: Number required for argument 1'])
+  v9.CheckDefAndScriptFailure(['win_id2win("x")'], ['E1013: Argument 1: type mismatch, expected number but got string', 'E1210: Number required for argument 1'])
 enddef
 
 def Test_win_screenpos()
-  CheckDefAndScriptFailure(['win_screenpos("x")'], ['E1013: Argument 1: type mismatch, expected number but got string', 'E1210: Number required for argument 1'])
+  v9.CheckDefAndScriptFailure(['win_screenpos("x")'], ['E1013: Argument 1: type mismatch, expected number but got string', 'E1210: Number required for argument 1'])
 enddef
 
 def Test_win_splitmove()
   split
   win_splitmove(1, 2, {vertical: true, rightbelow: true})
   close
-  CheckDefAndScriptFailure(['win_splitmove("a", 2)'], ['E1013: Argument 1: type mismatch, expected number but got string', 'E1210: Number required for argument 1'])
-  CheckDefAndScriptFailure(['win_splitmove(1, "b")'], ['E1013: Argument 2: type mismatch, expected number but got string', 'E1210: Number required for argument 2'])
-  CheckDefAndScriptFailure(['win_splitmove(1, 2, [])'], ['E1013: Argument 3: type mismatch, expected dict<any> but got list<unknown>', 'E1206: Dictionary required for argument 3'])
+  v9.CheckDefAndScriptFailure(['win_splitmove("a", 2)'], ['E1013: Argument 1: type mismatch, expected number but got string', 'E1210: Number required for argument 1'])
+  v9.CheckDefAndScriptFailure(['win_splitmove(1, "b")'], ['E1013: Argument 2: type mismatch, expected number but got string', 'E1210: Number required for argument 2'])
+  v9.CheckDefAndScriptFailure(['win_splitmove(1, 2, [])'], ['E1013: Argument 3: type mismatch, expected dict<any> but got list<unknown>', 'E1206: Dictionary required for argument 3'])
 enddef
 
 def Test_winbufnr()
-  CheckDefAndScriptFailure(['winbufnr("x")'], ['E1013: Argument 1: type mismatch, expected number but got string', 'E1210: Number required for argument 1'])
+  v9.CheckDefAndScriptFailure(['winbufnr("x")'], ['E1013: Argument 1: type mismatch, expected number but got string', 'E1210: Number required for argument 1'])
 enddef
 
 def Test_winheight()
-  CheckDefAndScriptFailure(['winheight("x")'], ['E1013: Argument 1: type mismatch, expected number but got string', 'E1210: Number required for argument 1'])
+  v9.CheckDefAndScriptFailure(['winheight("x")'], ['E1013: Argument 1: type mismatch, expected number but got string', 'E1210: Number required for argument 1'])
 enddef
 
 def Test_winlayout()
-  CheckDefAndScriptFailure(['winlayout("x")'], ['E1013: Argument 1: type mismatch, expected number but got string', 'E1210: Number required for argument 1'])
+  v9.CheckDefAndScriptFailure(['winlayout("x")'], ['E1013: Argument 1: type mismatch, expected number but got string', 'E1210: Number required for argument 1'])
 enddef
 
 def Test_winnr()
-  CheckDefAndScriptFailure(['winnr([])'], ['E1013: Argument 1: type mismatch, expected string but got list<unknown>', 'E1174: String required for argument 1'])
-  CheckDefExecAndScriptFailure(['winnr("")'], 'E15: Invalid expression')
+  v9.CheckDefAndScriptFailure(['winnr([])'], ['E1013: Argument 1: type mismatch, expected string but got list<unknown>', 'E1174: String required for argument 1'])
+  v9.CheckDefExecAndScriptFailure(['winnr("")'], 'E15: Invalid expression')
   assert_equal(1, winnr())
   assert_equal(1, winnr('$'))
 enddef
@@ -4306,7 +4312,7 @@
 enddef
 
 def Test_winrestview()
-  CheckDefAndScriptFailure(['winrestview([])'], ['E1013: Argument 1: type mismatch, expected dict<any> but got list<unknown>', 'E1206: Dictionary required for argument 1'])
+  v9.CheckDefAndScriptFailure(['winrestview([])'], ['E1013: Argument 1: type mismatch, expected dict<any> but got list<unknown>', 'E1206: Dictionary required for argument 1'])
   :%d _
   setline(1, 'Hello World')
   winrestview({lnum: 1, col: 6})
@@ -4319,20 +4325,20 @@
   var lines =<< trim END
       var view: list<number> = winsaveview()
   END
-  CheckDefAndScriptFailure(lines, 'E1012: Type mismatch; expected list<number> but got dict<number>', 1)
+  v9.CheckDefAndScriptFailure(lines, 'E1012: Type mismatch; expected list<number> but got dict<number>', 1)
 enddef
 
 def Test_winwidth()
-  CheckDefAndScriptFailure(['winwidth("x")'], ['E1013: Argument 1: type mismatch, expected number but got string', 'E1210: Number required for argument 1'])
+  v9.CheckDefAndScriptFailure(['winwidth("x")'], ['E1013: Argument 1: type mismatch, expected number but got string', 'E1210: Number required for argument 1'])
 enddef
 
 def Test_xor()
-  CheckDefAndScriptFailure(['xor("x", 0x2)'], ['E1013: Argument 1: type mismatch, expected number but got string', 'E1210: Number required for argument 1'])
-  CheckDefAndScriptFailure(['xor(0x1, "x")'], ['E1013: Argument 2: type mismatch, expected number but got string', 'E1210: Number required for argument 2'])
+  v9.CheckDefAndScriptFailure(['xor("x", 0x2)'], ['E1013: Argument 1: type mismatch, expected number but got string', 'E1210: Number required for argument 1'])
+  v9.CheckDefAndScriptFailure(['xor(0x1, "x")'], ['E1013: Argument 2: type mismatch, expected number but got string', 'E1210: Number required for argument 2'])
 enddef
 
 def Test_writefile()
-  CheckDefExecAndScriptFailure(['writefile(["a"], "")'], 'E482: Can''t create file <empty>')
+  v9.CheckDefExecAndScriptFailure(['writefile(["a"], "")'], 'E482: Can''t create file <empty>')
 enddef
 
 " vim: ts=8 sw=2 sts=2 expandtab tw=80 fdm=marker
diff --git a/src/testdir/test_vim9_cmd.vim b/src/testdir/test_vim9_cmd.vim
index cfbac9a..92c86d8 100644
--- a/src/testdir/test_vim9_cmd.vim
+++ b/src/testdir/test_vim9_cmd.vim
@@ -1,7 +1,7 @@
 " Test commands that are not compiled in a :def function
 
 source check.vim
-source vim9.vim
+import './vim9.vim' as v9
 source term_util.vim
 source view_util.vim
 
@@ -12,7 +12,7 @@
     vim9c assert_equal(123, x)
     vim9cm assert_equal('yes', y)
   END
-  CheckScriptSuccess(lines)
+  v9.CheckScriptSuccess(lines)
 
   assert_fails('vim9cmd', 'E1164:')
   assert_fails('legacy', 'E1234:')
@@ -22,7 +22,7 @@
       let str = 'con'
       vim9cmd str .= 'cat'
   END
-  CheckScriptFailure(lines, 'E492:')
+  v9.CheckScriptFailure(lines, 'E492:')
 
   lines =<< trim END
       vim9script
@@ -30,7 +30,7 @@
       legacy let str = 'con'
       legacy let str .= 'cat'
   END
-  CheckScriptSuccess(lines)
+  v9.CheckScriptSuccess(lines)
 
   lines =<< trim END
       vim9script
@@ -39,7 +39,7 @@
       enddef
       nmap ,; :vim9cmd <SID>Foo()<CR>
   END
-  CheckScriptSuccess(lines)
+  v9.CheckScriptSuccess(lines)
 
   feedkeys(',;', 'xt')
   assert_equal("bar", g:found_bar)
@@ -50,23 +50,23 @@
       vim9script
       legacy echo 1'000
   END
-  CheckScriptFailure(lines, 'E115:')
+  v9.CheckScriptFailure(lines, 'E115:')
 
   if has('float')
     lines =<< trim END
         vim9script
         echo .10
     END
-    CheckScriptSuccess(lines)
+    v9.CheckScriptSuccess(lines)
     lines =<< trim END
         vim9cmd echo .10
     END
-    CheckScriptSuccess(lines)
+    v9.CheckScriptSuccess(lines)
     lines =<< trim END
         vim9script
         legacy echo .10
     END
-    CheckScriptFailure(lines, 'E15:')
+    v9.CheckScriptFailure(lines, 'E15:')
   endif
 
   echo v:version
@@ -75,12 +75,12 @@
       vim9script
       echo version
   END
-  CheckScriptFailure(lines, 'E121:')
+  v9.CheckScriptFailure(lines, 'E121:')
   lines =<< trim END
       vim9script
       legacy echo version
   END
-  CheckScriptSuccess(lines)
+  v9.CheckScriptSuccess(lines)
 enddef
 
 def Test_edit_wildcards()
@@ -99,8 +99,8 @@
   edit X`=filename`xx`=filenr`yy
   assert_equal('XXtestxx77yy', bufname())
 
-  CheckDefFailure(['edit `=xxx`'], 'E1001:')
-  CheckDefFailure(['edit `="foo"'], 'E1083:')
+  v9.CheckDefFailure(['edit `=xxx`'], 'E1001:')
+  v9.CheckDefFailure(['edit `="foo"'], 'E1083:')
 
   var files = ['file 1', 'file%2', 'file# 3']
   args `=files`
@@ -179,7 +179,7 @@
     bwipe! altfoo
     bwipe! bar
   END
-  CheckDefAndScriptSuccess(lines)
+  v9.CheckDefAndScriptSuccess(lines)
 enddef
 
 def Test_global_backtick_expansion()
@@ -221,7 +221,7 @@
       enddef
       call Test()
   END
-  CheckScriptFailure(lines, 'E15: Invalid expression: "`=g:val`"')
+  v9.CheckScriptFailure(lines, 'E15: Invalid expression: "`=g:val`"')
 enddef
 
 def Test_hardcopy_wildcards()
@@ -257,7 +257,7 @@
       redir END
       assert_equal("\nonetwo", @a)
   END
-  CheckScriptSuccess(lines)
+  v9.CheckScriptSuccess(lines)
 
   lines =<< trim END
       vim9script
@@ -268,7 +268,7 @@
       redir END
       assert_equal("\n66", @a)
   END
-  CheckScriptSuccess(lines)
+  v9.CheckScriptSuccess(lines)
 enddef
 
 def Test_condition_types()
@@ -276,21 +276,21 @@
       if 'text'
       endif
   END
-  CheckDefAndScriptFailure(lines, 'E1135:', 1)
+  v9.CheckDefAndScriptFailure(lines, 'E1135:', 1)
 
   lines =<< trim END
       if [1]
       endif
   END
-  CheckDefFailure(lines, 'E1012:', 1)
-  CheckScriptFailure(['vim9script'] + lines, 'E745:', 2)
+  v9.CheckDefFailure(lines, 'E1012:', 1)
+  v9.CheckScriptFailure(['vim9script'] + lines, 'E745:', 2)
 
   lines =<< trim END
       g:cond = 'text'
       if g:cond
       endif
   END
-  CheckDefExecAndScriptFailure(lines, 'E1135:', 2)
+  v9.CheckDefExecAndScriptFailure(lines, 'E1135:', 2)
 
   lines =<< trim END
       g:cond = 0
@@ -298,7 +298,7 @@
       elseif 'text'
       endif
   END
-  CheckDefAndScriptFailure(lines, 'E1135:', 3)
+  v9.CheckDefAndScriptFailure(lines, 'E1135:', 3)
 
   lines =<< trim END
       g:cond = 0
@@ -306,7 +306,7 @@
       elseif 'text' garbage
       endif
   END
-  CheckDefAndScriptFailure(lines, 'E488:', 3)
+  v9.CheckDefAndScriptFailure(lines, 'E488:', 3)
 
   lines =<< trim END
       g:cond = 0
@@ -314,8 +314,8 @@
       elseif [1]
       endif
   END
-  CheckDefFailure(lines, 'E1012:', 3)
-  CheckScriptFailure(['vim9script'] + lines, 'E745:', 4)
+  v9.CheckDefFailure(lines, 'E1012:', 3)
+  v9.CheckScriptFailure(['vim9script'] + lines, 'E745:', 4)
 
   lines =<< trim END
       g:cond = 'text'
@@ -323,28 +323,28 @@
       elseif g:cond
       endif
   END
-  CheckDefExecAndScriptFailure(lines, 'E1135:', 3)
+  v9.CheckDefExecAndScriptFailure(lines, 'E1135:', 3)
 
   lines =<< trim END
       while 'text'
       endwhile
   END
-  CheckDefFailure(lines, 'E1012:', 1)
-  CheckScriptFailure(['vim9script'] + lines, 'E1135:', 2)
+  v9.CheckDefFailure(lines, 'E1012:', 1)
+  v9.CheckScriptFailure(['vim9script'] + lines, 'E1135:', 2)
 
   lines =<< trim END
       while [1]
       endwhile
   END
-  CheckDefFailure(lines, 'E1012:', 1)
-  CheckScriptFailure(['vim9script'] + lines, 'E745:', 2)
+  v9.CheckDefFailure(lines, 'E1012:', 1)
+  v9.CheckScriptFailure(['vim9script'] + lines, 'E745:', 2)
 
   lines =<< trim END
       g:cond = 'text'
       while g:cond
       endwhile
   END
-  CheckDefExecAndScriptFailure(lines, 'E1135:', 2)
+  v9.CheckDefExecAndScriptFailure(lines, 'E1135:', 2)
 enddef
 
 def Test_if_linebreak()
@@ -357,7 +357,7 @@
       endif
       assert_equal(42, g:res)
   END
-  CheckScriptSuccess(lines)
+  v9.CheckScriptSuccess(lines)
   unlet g:res
 
   lines =<< trim END
@@ -372,7 +372,7 @@
       endif
       assert_equal(12, g:res)
   END
-  CheckScriptSuccess(lines)
+  v9.CheckScriptSuccess(lines)
   unlet g:res
 enddef
 
@@ -387,7 +387,7 @@
       endwhile
       assert_equal(16, nr)
   END
-  CheckScriptSuccess(lines)
+  v9.CheckScriptSuccess(lines)
 
   lines =<< trim END
       vim9script
@@ -403,7 +403,7 @@
       endwhile
       assert_equal(16, nr)
   END
-  CheckScriptSuccess(lines)
+  v9.CheckScriptSuccess(lines)
 enddef
 
 def Test_for_linebreak()
@@ -417,7 +417,7 @@
       endfor
       assert_equal(10, nr)
   END
-  CheckScriptSuccess(lines)
+  v9.CheckScriptSuccess(lines)
 
   lines =<< trim END
       vim9script
@@ -433,10 +433,10 @@
       endfor
       assert_equal(10, nr)
   END
-  CheckScriptSuccess(lines)
+  v9.CheckScriptSuccess(lines)
 enddef
 
-def MethodAfterLinebreak(arg: string)
+def s:MethodAfterLinebreak(arg: string)
   arg
     ->setline(1)
 enddef
@@ -455,7 +455,7 @@
           3]->RetArg()
       assert_equal([1, 2, 3], res)
   END
-  CheckScriptSuccess(lines)
+  v9.CheckScriptSuccess(lines)
 
   lines =<< trim END
       new
@@ -466,7 +466,7 @@
       assert_equal(['1', '2'], getline(1, 2))
       bwipe!
   END
-  CheckDefAndScriptSuccess(lines)
+  v9.CheckDefAndScriptSuccess(lines)
 
   lines =<< trim END
       new
@@ -484,7 +484,7 @@
       assert_equal('the text', getline(1))
       bwipe!
   END
-  CheckDefAndScriptSuccess(lines)
+  v9.CheckDefAndScriptSuccess(lines)
 
   lines =<< trim END
       new
@@ -495,7 +495,7 @@
       bwipe!
   END
   g:shortlist = [1, 2]
-  CheckDefAndScriptSuccess(lines)
+  v9.CheckDefAndScriptSuccess(lines)
   unlet g:shortlist
 
   new
@@ -516,7 +516,7 @@
       Foo->Bar()
          ->setline(1)
   END
-  CheckScriptSuccess(lines)
+  v9.CheckScriptSuccess(lines)
   assert_equal('# some text', getline(1))
   bwipe!
 enddef
@@ -532,7 +532,7 @@
     assert_equal(['text', 'text', 'text', 'text'], getline(1, 4))
     bwipe!
   END
-  CheckDefAndScriptSuccess(lines)
+  v9.CheckDefAndScriptSuccess(lines)
 enddef
 
 def Test_method_and_user_command()
@@ -559,7 +559,7 @@
       enddef
       InDefFunc()
   END
-  CheckScriptSuccess(lines)
+  v9.CheckScriptSuccess(lines)
 enddef
 
 def Test_option_use_linebreak()
@@ -575,7 +575,7 @@
       assert_equal(['(:)', '[:]', '{:}'], getline(1, '$'))
       bwipe!
   END
-  CheckDefAndScriptSuccess(lines)
+  v9.CheckDefAndScriptSuccess(lines)
 enddef
 
 def Test_use_register()
@@ -591,46 +591,46 @@
       assert_equal(['one', 'two', 'three'], getline(1, '$'))
       bwipe!
   END
-  CheckDefAndScriptSuccess(lines)
+  v9.CheckDefAndScriptSuccess(lines)
 
   lines =<< trim END
       @a = 'echo "text"'
       @a
   END
-  CheckDefAndScriptFailure(lines, 'E1207:', 2)
+  v9.CheckDefAndScriptFailure(lines, 'E1207:', 2)
 
   lines =<< trim END
       @/ = 'pattern'
       @/
   END
-  CheckDefAndScriptFailure(lines, 'E1207:', 2)
+  v9.CheckDefAndScriptFailure(lines, 'E1207:', 2)
 
   lines =<< trim END
       &opfunc = 'nothing'
       &opfunc
   END
-  CheckDefAndScriptFailure(lines, 'E1207:', 2)
+  v9.CheckDefAndScriptFailure(lines, 'E1207:', 2)
   &opfunc = ''
 
   lines =<< trim END
       &l:showbreak = 'nothing'
       &l:showbreak
   END
-  CheckDefAndScriptFailure(lines, 'E1207:', 2)
+  v9.CheckDefAndScriptFailure(lines, 'E1207:', 2)
   &l:showbreak = ''
 
   lines =<< trim END
       &g:showbreak = 'nothing'
       &g:showbreak
   END
-  CheckDefAndScriptFailure(lines, 'E1207:', 2)
+  v9.CheckDefAndScriptFailure(lines, 'E1207:', 2)
   &g:showbreak = ''
 
   lines =<< trim END
       $SomeEnv = 'value'
       $SomeEnv
   END
-  CheckDefAndScriptFailure(lines, 'E1207:', 2)
+  v9.CheckDefAndScriptFailure(lines, 'E1207:', 2)
   $SomeEnv = ''
 enddef
 
@@ -647,7 +647,7 @@
       assert_equal(['one', 'two', 'three'], getline(1, '$'))
       bwipe!
   END
-  CheckDefAndScriptSuccess(lines)
+  v9.CheckDefAndScriptSuccess(lines)
 enddef
 
 def Test_skipped_expr_linebreak()
@@ -671,7 +671,7 @@
       test.data->sort()
       assert_equal({data: [1, 2, 3]}, test)
   END
-  CheckScriptSuccess(lines)
+  v9.CheckScriptSuccess(lines)
 enddef
 
 def Test_bar_after_command()
@@ -680,14 +680,14 @@
     redraw | echo x
   enddef
   RedrawAndEcho()
-  assert_match('did redraw', Screenline(&lines))
+  assert_match('did redraw', g:Screenline(&lines))
 
   def CallAndEcho()
     var x = 'did redraw'
     reg_executing() | echo x
   enddef
   CallAndEcho()
-  assert_match('did redraw', Screenline(&lines))
+  assert_match('did redraw', g:Screenline(&lines))
 
   if has('unix')
     # bar in filter write command does not start new command
@@ -729,15 +729,15 @@
 
     assert_equal(execute('filter /piyo/ registers abc'), expected)
   END
-  CheckDefAndScriptSuccess(lines)
+  v9.CheckDefAndScriptSuccess(lines)
 
   # also do this compiled
   lines =<< trim END
       @a = 'very specific z3d37dh234 string'
       filter z3d37dh234 registers
-      assert_match('very specific z3d37dh234 string', Screenline(&lines))
+      assert_match('very specific z3d37dh234 string', g:Screenline(&lines))
   END
-  CheckDefAndScriptSuccess(lines)
+  v9.CheckDefAndScriptSuccess(lines)
 
   lines =<< trim END
       edit foobar
@@ -747,7 +747,7 @@
       assert_match('"foobar"', g:filter_out)
       unlet g:filter_out
   END
-  CheckDefAndScriptSuccess(lines)
+  v9.CheckDefAndScriptSuccess(lines)
 enddef
 
 def Test_win_command_modifiers()
@@ -930,7 +930,7 @@
       unlet g:readExtra
       unlet g:readMore
   END
-  CheckDefAndScriptSuccess(lines)
+  v9.CheckDefAndScriptSuccess(lines)
 enddef
 
 def Test_command_modifier_other()
@@ -972,10 +972,10 @@
   unlet g:verbose_now
 enddef
 
-def EchoHere()
+def s:EchoHere()
   echomsg 'here'
 enddef
-def EchoThere()
+def s:EchoThere()
   unsilent echomsg 'there'
 enddef
 
@@ -1009,21 +1009,21 @@
       assert_equal(11, &history)
       set history&
   END
-  CheckScriptSuccess(lines)
+  v9.CheckScriptSuccess(lines)
 enddef
 
 def Test_range_after_command_modifier()
-  CheckScriptFailure(['vim9script', 'silent keepjump 1d _'], 'E1050: Colon required before a range: 1d _', 2)
+  v9.CheckScriptFailure(['vim9script', 'silent keepjump 1d _'], 'E1050: Colon required before a range: 1d _', 2)
   new
   setline(1, 'xxx')
-  CheckScriptSuccess(['vim9script', 'silent keepjump :1d _'])
+  v9.CheckScriptSuccess(['vim9script', 'silent keepjump :1d _'])
   assert_equal('', getline(1))
   bwipe!
 
   var lines =<< trim END
       legacy /pat/
   END
-  CheckDefExecAndScriptFailure(lines, 'E486: Pattern not found: pat')
+  v9.CheckDefExecAndScriptFailure(lines, 'E486: Pattern not found: pat')
 enddef
 
 def Test_silent_pattern()
@@ -1038,50 +1038,50 @@
       if g:maybe
       silent endif
   END
-  CheckDefAndScriptFailure(lines, 'E1176:', 2)
+  v9.CheckDefAndScriptFailure(lines, 'E1176:', 2)
 
   lines =<< trim END
       for i in [0]
       silent endfor
   END
-  CheckDefFailure(lines, 'E1176:', 2)
-  CheckScriptSuccess(['vim9script'] + lines)
+  v9.CheckDefFailure(lines, 'E1176:', 2)
+  v9.CheckScriptSuccess(['vim9script'] + lines)
 
   lines =<< trim END
       while g:maybe
       silent endwhile
   END
-  CheckDefFailure(lines, 'E1176:', 2)
+  v9.CheckDefFailure(lines, 'E1176:', 2)
   g:maybe = false
-  CheckScriptSuccess(['vim9script'] + lines)
+  v9.CheckScriptSuccess(['vim9script'] + lines)
 
   lines =<< trim END
       silent try
       finally
       endtry
   END
-  CheckDefAndScriptFailure(lines, 'E1176:', 1)
+  v9.CheckDefAndScriptFailure(lines, 'E1176:', 1)
 
   lines =<< trim END
       try
       silent catch
       endtry
   END
-  CheckDefAndScriptFailure(lines, 'E1176:', 2)
+  v9.CheckDefAndScriptFailure(lines, 'E1176:', 2)
 
   lines =<< trim END
       try
       silent finally
       endtry
   END
-  CheckDefAndScriptFailure(lines, 'E1176:', 2)
+  v9.CheckDefAndScriptFailure(lines, 'E1176:', 2)
 
   lines =<< trim END
       try
       finally
       silent endtry
   END
-  CheckDefAndScriptFailure(lines, 'E1176:', 3)
+  v9.CheckDefAndScriptFailure(lines, 'E1176:', 3)
 enddef
 
 def Test_eval_command()
@@ -1109,7 +1109,7 @@
     assert_equal('yes', g:caught)
     unlet g:caught
   END
-  CheckScriptSuccess(lines)
+  v9.CheckScriptSuccess(lines)
 enddef
 
 def Test_map_command()
@@ -1117,8 +1117,8 @@
       nnoremap <F3> :echo 'hit F3 #'<CR>
       assert_equal(":echo 'hit F3 #'<CR>", maparg("<F3>", "n"))
   END
-  CheckDefSuccess(lines)
-  CheckScriptSuccess(['vim9script'] + lines)
+  v9.CheckDefSuccess(lines)
+  v9.CheckScriptSuccess(['vim9script'] + lines)
 enddef
 
 def Test_normal_command()
@@ -1173,7 +1173,7 @@
 
   bwipe!
 
-  CheckDefFailure(['put =xxx'], 'E1001:')
+  v9.CheckDefFailure(['put =xxx'], 'E1001:')
 enddef
 
 def Test_put_with_linebreak()
@@ -1183,7 +1183,7 @@
     pu =split('abc', '\zs')
             ->join()
   END
-  CheckScriptSuccess(lines)
+  v9.CheckScriptSuccess(lines)
   getline(2)->assert_equal('a b c')
   bwipe!
 enddef
@@ -1215,7 +1215,7 @@
     TestFArgs one two three
     assert_equal(['one', 'two', 'three'], g:args)
   END
-  CheckScriptSuccess(lines)
+  v9.CheckScriptSuccess(lines)
 enddef
 
 def Test_user_command_comment()
@@ -1225,13 +1225,13 @@
       vim9script
       Comd # comment
   END
-  CheckScriptSuccess(lines)
+  v9.CheckScriptSuccess(lines)
 
   lines =<< trim END
       vim9script
       Comd# comment
   END
-  CheckScriptFailure(lines, 'E1144:')
+  v9.CheckScriptFailure(lines, 'E1144:')
   delcommand Comd
 
   lines =<< trim END
@@ -1239,7 +1239,7 @@
       command Foo echo 'Foo'
       Foo3Bar
   END
-  CheckScriptFailure(lines, 'E1144: Command "Foo" is not followed by white space: Foo3Bar')
+  v9.CheckScriptFailure(lines, 'E1144: Command "Foo" is not followed by white space: Foo3Bar')
 
   delcommand Foo
 enddef
@@ -1255,7 +1255,7 @@
     set cpo-=*
     assert_fails("exe '*s'", 'E1050:')
   END
-  CheckScriptSuccess(lines)
+  v9.CheckScriptSuccess(lines)
 enddef
 
 def Test_cmd_argument_without_colon()
@@ -1276,7 +1276,7 @@
   var lines =<< trim END
       Cmd
   END
-  CheckDefAndScriptFailure(lines, 'E464:', 1)
+  v9.CheckDefAndScriptFailure(lines, 'E464:', 1)
   delcommand Cmd1
   delcommand Cmd2
 enddef
@@ -1285,12 +1285,12 @@
   var lines =<< trim END
     d.key = 'asdf'
   END
-  CheckDefFailure(lines, 'E1146:', 1)
+  v9.CheckDefFailure(lines, 'E1146:', 1)
 
   lines =<< trim END
     d['key'] = 'asdf'
   END
-  CheckDefFailure(lines, 'E1146:', 1)
+  v9.CheckDefFailure(lines, 'E1146:', 1)
 enddef
 
 def Test_magic_not_used()
@@ -1378,7 +1378,7 @@
   var lines =<< trim END
       windo if 1
   END
-  CheckDefExecFailure(lines, 'E171:', 1)
+  v9.CheckDefExecFailure(lines, 'E171:', 1)
 enddef
 
 let s:theList = [1, 2, 3]
@@ -1464,26 +1464,26 @@
       enddef
       SetList()
   END
-  CheckScriptFailure(lines, 'E1119', 4)
+  v9.CheckScriptFailure(lines, 'E1119', 4)
 
   lines =<< trim END
       var theList = [1, 2, 3]
       lockvar theList
   END
-  CheckDefFailure(lines, 'E1178', 2)
+  v9.CheckDefFailure(lines, 'E1178', 2)
 
   lines =<< trim END
       var theList = [1, 2, 3]
       unlockvar theList
   END
-  CheckDefFailure(lines, 'E1178', 2)
+  v9.CheckDefFailure(lines, 'E1178', 2)
 
   lines =<< trim END
       vim9script
       var name = 'john'
       lockvar nameX
   END
-  CheckScriptFailure(lines, 'E1246', 3)
+  v9.CheckScriptFailure(lines, 'E1246', 3)
 
   lines =<< trim END
       vim9script
@@ -1493,7 +1493,7 @@
       enddef
       LockIt()
   END
-  CheckScriptFailure(lines, 'E1246', 1)
+  v9.CheckScriptFailure(lines, 'E1246', 1)
 enddef
 
 def Test_substitute_expr()
@@ -1520,8 +1520,8 @@
 
   bwipe!
 
-  CheckDefFailure(['s/from/\="x")/'], 'E488:')
-  CheckDefFailure(['s/from/\="x"/9'], 'E488:')
+  v9.CheckDefFailure(['s/from/\="x")/'], 'E488:')
+  v9.CheckDefFailure(['s/from/\="x"/9'], 'E488:')
 
   # When calling a function the right instruction list needs to be restored.
   g:cond = true
@@ -1545,7 +1545,7 @@
       assert_equal('rep', getline(1))
       bwipe!
   END
-  CheckScriptSuccess(lines)
+  v9.CheckScriptSuccess(lines)
   unlet g:cond
 
   # List results in multiple lines
@@ -1594,14 +1594,14 @@
   var lines =<< trim END
     redir => notexist
   END
-  CheckDefFailure(lines, 'E1089:')
+  v9.CheckDefFailure(lines, 'E1089:')
 
   lines =<< trim END
     var ls = 'asdf'
     redir => ls[1]
     redir END
   END
-  CheckDefFailure(lines, 'E1141:')
+  v9.CheckDefFailure(lines, 'E1141:')
 
   lines =<< trim END
       var text: string
@@ -1610,7 +1610,7 @@
         redir > Xfile
       redir END
   END
-  CheckDefFailure(lines, 'E1185:')
+  v9.CheckDefFailure(lines, 'E1185:')
 
   lines =<< trim END
       var text: number
@@ -1618,7 +1618,7 @@
         echo 'hello'
       redir END
   END
-  CheckDefFailure(lines, 'E1012:')
+  v9.CheckDefFailure(lines, 'E1012:')
 enddef
 
 def Test_echo_void()
@@ -1629,7 +1629,7 @@
       enddef
       echo NoReturn()
   END
-  CheckScriptFailure(lines, 'E1186:', 5)
+  v9.CheckScriptFailure(lines, 'E1186:', 5)
 
   lines =<< trim END
       vim9script
@@ -1641,7 +1641,7 @@
       enddef
       defcompile
   END
-  CheckScriptFailure(lines, 'E1186:', 1)
+  v9.CheckScriptFailure(lines, 'E1186:', 1)
 enddef
 
 def Test_cmdwin_block()
@@ -1661,81 +1661,81 @@
   var lines =<< trim END
       g:notexist:cmd
   END
-  CheckDefAndScriptFailure(lines, ['E488: Trailing characters: :cmd', 'E121: Undefined variable: g:notexist'], 1)
+  v9.CheckDefAndScriptFailure(lines, ['E488: Trailing characters: :cmd', 'E121: Undefined variable: g:notexist'], 1)
 
   lines =<< trim END
       g-pat-cmd
   END
-  CheckDefAndScriptFailure(lines, 'E1241:', 1)
+  v9.CheckDefAndScriptFailure(lines, 'E1241:', 1)
   lines =<< trim END
       g.pat.cmd
   END
-  CheckDefAndScriptFailure(lines, ['E1001: Variable not found: g', 'E121: Undefined variable: g'], 1)
+  v9.CheckDefAndScriptFailure(lines, ['E1001: Variable not found: g', 'E121: Undefined variable: g'], 1)
 
   lines =<< trim END
       s:notexist:repl
   END
-  CheckDefAndScriptFailure(lines, ['E488: Trailing characters: :repl', 'E121: Undefined variable: s:notexist'], 1)
+  v9.CheckDefAndScriptFailure(lines, ['E488: Trailing characters: :repl', 'E121: Undefined variable: s:notexist'], 1)
 
   lines =<< trim END
       s-pat-repl
   END
-  CheckDefAndScriptFailure(lines, 'E1241:', 1)
+  v9.CheckDefAndScriptFailure(lines, 'E1241:', 1)
   lines =<< trim END
       s.pat.repl
   END
-  CheckDefAndScriptFailure(lines, ['E1001: Variable not found: s', 'E121: Undefined variable: s'], 1)
+  v9.CheckDefAndScriptFailure(lines, ['E1001: Variable not found: s', 'E121: Undefined variable: s'], 1)
 
   lines =<< trim END
       w:notexist->len()
   END
-  CheckDefExecAndScriptFailure(lines, 'E121: Undefined variable: w:notexist', 1)
+  v9.CheckDefExecAndScriptFailure(lines, 'E121: Undefined variable: w:notexist', 1)
 
   lines =<< trim END
       b:notexist->len()
   END
-  CheckDefExecAndScriptFailure(lines, 'E121: Undefined variable: b:notexist', 1)
+  v9.CheckDefExecAndScriptFailure(lines, 'E121: Undefined variable: b:notexist', 1)
 
   lines =<< trim END
       t:notexist->len()
   END
-  CheckDefExecAndScriptFailure(lines, 'E121: Undefined variable: t:notexist', 1)
+  v9.CheckDefExecAndScriptFailure(lines, 'E121: Undefined variable: t:notexist', 1)
 enddef
 
 def Test_no_space_after_command()
   var lines =<< trim END
       g /pat/cmd
   END
-  CheckDefAndScriptFailure(lines, 'E1242:', 1)
+  v9.CheckDefAndScriptFailure(lines, 'E1242:', 1)
   lines =<< trim END
       g #pat#cmd
   END
-  CheckDefAndScriptFailure(lines, 'E1242:', 1)
+  v9.CheckDefAndScriptFailure(lines, 'E1242:', 1)
   lines =<< trim END
       g#pat#cmd
   END
-  CheckDefAndScriptSuccess(lines)
+  v9.CheckDefAndScriptSuccess(lines)
   lines =<< trim END
       g# pat#cmd
   END
-  CheckDefAndScriptSuccess(lines)
+  v9.CheckDefAndScriptSuccess(lines)
 
   lines =<< trim END
       s /pat/repl
   END
-  CheckDefAndScriptFailure(lines, 'E1242:', 1)
+  v9.CheckDefAndScriptFailure(lines, 'E1242:', 1)
   lines =<< trim END
       s #pat#repl
   END
-  CheckDefAndScriptFailure(lines, 'E1242:', 1)
+  v9.CheckDefAndScriptFailure(lines, 'E1242:', 1)
   lines =<< trim END
       s#pat#repl
   END
-  CheckDefExecAndScriptFailure(lines, 'E486:', 1)
+  v9.CheckDefExecAndScriptFailure(lines, 'E486:', 1)
   lines =<< trim END
       s# pat#repl
   END
-  CheckDefExecAndScriptFailure(lines, 'E486:', 1)
+  v9.CheckDefExecAndScriptFailure(lines, 'E486:', 1)
 enddef
 
 " Test for the 'previewpopup' option
diff --git a/src/testdir/test_vim9_disassemble.vim b/src/testdir/test_vim9_disassemble.vim
index d333090..5fbdef8 100644
--- a/src/testdir/test_vim9_disassemble.vim
+++ b/src/testdir/test_vim9_disassemble.vim
@@ -1,9 +1,9 @@
 " Test the :disassemble command, and compilation as a side effect
 
 source check.vim
-source vim9.vim
+import './vim9.vim' as v9
 
-func NotCompiled()
+func s:NotCompiled()
   echo "not"
 endfunc
 
@@ -312,7 +312,7 @@
             '2 RETURN void',
             res)
   END
-  CheckScriptSuccess(lines)
+  v9.CheckScriptSuccess(lines)
 
   delete('Xdir', 'rf')
   &rtp = save_rtp
@@ -690,22 +690,22 @@
         res)
 enddef
 
-def FuncWithArg(arg: any)
+def s:FuncWithArg(arg: any)
   echo arg
 enddef
 
-func UserFunc()
+func s:UserFunc()
   echo 'nothing'
 endfunc
 
-func UserFuncWithArg(arg)
+func s:UserFuncWithArg(arg)
   echo a:arg
 endfunc
 
 def s:ScriptFuncCall(): string
   changenr()
   char2nr("abc")
-  Test_disassemble_new()
+  g:Test_disassemble_new()
   FuncWithArg(343)
   ScriptFuncNew()
   s:ScriptFuncNew()
@@ -728,12 +728,12 @@
         '\d PUSHS "abc"\_s*' ..
         '\d BCALL char2nr(argc 1)\_s*' ..
         '\d DROP\_s*' ..
-        'Test_disassemble_new()\_s*' ..
+        'g:Test_disassemble_new()\_s*' ..
         '\d DCALL Test_disassemble_new(argc 0)\_s*' ..
         '\d DROP\_s*' ..
         'FuncWithArg(343)\_s*' ..
         '\d\+ PUSHNR 343\_s*' ..
-        '\d\+ DCALL FuncWithArg(argc 1)\_s*' ..
+        '\d\+ DCALL <SNR>\d\+_FuncWithArg(argc 1)\_s*' ..
         '\d\+ DROP\_s*' ..
         'ScriptFuncNew()\_s*' ..
         '\d\+ DCALL <SNR>\d\+_ScriptFuncNew(argc 0)\_s*' ..
@@ -742,11 +742,11 @@
         '\d\+ DCALL <SNR>\d\+_ScriptFuncNew(argc 0)\_s*' ..
         '\d\+ DROP\_s*' ..
         'UserFunc()\_s*' ..
-        '\d\+ UCALL UserFunc(argc 0)\_s*' ..
+        '\d\+ UCALL <80><fd>R\d\+_UserFunc(argc 0)\_s*' ..
         '\d\+ DROP\_s*' ..
         'UserFuncWithArg("foo")\_s*' ..
         '\d\+ PUSHS "foo"\_s*' ..
-        '\d\+ UCALL UserFuncWithArg(argc 1)\_s*' ..
+        '\d\+ UCALL <80><fd>R\d\+_UserFuncWithArg(argc 1)\_s*' ..
         '\d\+ DROP\_s*' ..
         'var FuncRef = function("UserFunc")\_s*' ..
         '\d\+ PUSHS "UserFunc"\_s*' ..
@@ -811,7 +811,7 @@
 def EchoArg(arg: string): string
   return arg
 enddef
-def RefThis(): func
+def s:RefThis(): func
   return function('EchoArg')
 enddef
 def s:ScriptPCall()
@@ -822,7 +822,7 @@
   var res = execute('disass s:ScriptPCall')
   assert_match('<SNR>\d\+_ScriptPCall\_s*' ..
         'RefThis()("text")\_s*' ..
-        '\d DCALL RefThis(argc 0)\_s*' ..
+        '\d DCALL <SNR>\d\+_RefThis(argc 0)\_s*' ..
         '\d PUSHS "text"\_s*' ..
         '\d PCALL top (argc 1)\_s*' ..
         '\d PCALL end\_s*' ..
@@ -1116,7 +1116,7 @@
         instr)
 enddef
 
-def WithLambda(): string
+def s:WithLambda(): string
   var F = (a) => "X" .. a .. "X"
   return F("x")
 enddef
@@ -1149,7 +1149,7 @@
         instr)
 enddef
 
-def LambdaWithType(): number
+def s:LambdaWithType(): number
   var Ref = (a: number) => a + 10
   return Ref(g:value)
 enddef
@@ -1210,7 +1210,7 @@
         instr)
 enddef
 
-def AndOr(arg: any): string
+def s:AndOr(arg: any): string
   if arg == 1 && arg != 2 || arg == 4
     return 'yes'
   endif
@@ -1239,7 +1239,7 @@
         instr)
 enddef
 
-def AndConstant(arg: any): string
+def s:AndConstant(arg: any): string
   if true && arg
     return "yes"
   endif
@@ -1271,7 +1271,7 @@
       instr)
 enddef
 
-def ForLoop(): list<number>
+def s:ForLoop(): list<number>
   var res: list<number>
   for i in range(3)
     res->add(i)
@@ -1304,7 +1304,7 @@
         instr)
 enddef
 
-def ForLoopEval(): string
+def s:ForLoopEval(): string
   var res = ""
   for str in eval('["one", "two"]')
     res ..= str
@@ -1340,7 +1340,7 @@
         instr)
 enddef
 
-def ForLoopUnpack()
+def s:ForLoopUnpack()
   for [x1, x2] in [[1, 2], [3, 4]]
     echo x1 x2
   endfor
@@ -1373,7 +1373,7 @@
         instr)
 enddef
 
-def ForLoopContinue()
+def s:ForLoopContinue()
   for nr in [1, 2]
     try
       echo "ok"
@@ -1432,7 +1432,7 @@
 
 let g:number = 42
 
-def TypeCast()
+def s:TypeCast()
   var l: list<number> = [23, <number>g:number]
 enddef
 
@@ -1450,7 +1450,7 @@
         instr)
 enddef
 
-def Computing()
+def s:Computing()
   var nr = 3
   var nrres = nr + 7
   nrres = nr - 7
@@ -1525,7 +1525,7 @@
   endif
 enddef
 
-def AddListBlob()
+def s:AddListBlob()
   var reslist = [1, 2] + [3, 4]
   var resblob = 0z1122 + 0z3344
 enddef
@@ -1551,7 +1551,7 @@
 enddef
 
 let g:aa = 'aa'
-def ConcatString(): string
+def s:ConcatString(): string
   var res = g:aa .. "bb"
   return res
 enddef
@@ -1569,7 +1569,7 @@
   assert_equal('aabb', ConcatString())
 enddef
 
-def StringIndex(): string
+def s:StringIndex(): string
   var s = "abcd"
   var res = s[1]
   return res
@@ -1590,7 +1590,7 @@
   assert_equal('b', StringIndex())
 enddef
 
-def StringSlice(): string
+def s:StringSlice(): string
   var s = "abcd"
   var res = s[1 : 8]
   return res
@@ -1612,7 +1612,7 @@
   assert_equal('bcd', StringSlice())
 enddef
 
-def ListIndex(): number
+def s:ListIndex(): number
   var l = [1, 2, 3]
   var res = l[1]
   return res
@@ -1636,7 +1636,7 @@
   assert_equal(2, ListIndex())
 enddef
 
-def ListSlice(): list<number>
+def s:ListSlice(): list<number>
   var l = [1, 2, 3]
   var res = l[1 : 8]
   return res
@@ -1661,7 +1661,7 @@
   assert_equal([2, 3], ListSlice())
 enddef
 
-def DictMember(): number
+def s:DictMember(): number
   var d = {item: 1}
   var res = d.item
   res = d["item"]
@@ -1692,7 +1692,7 @@
 enddef
 
 let somelist = [1, 2, 3, 4, 5]
-def AnyIndex(): number
+def s:AnyIndex(): number
   var res = g:somelist[2]
   return res
 enddef
@@ -1713,7 +1713,7 @@
   assert_equal(3, AnyIndex())
 enddef
 
-def AnySlice(): list<number>
+def s:AnySlice(): list<number>
   var res = g:somelist[1 : 3]
   return res
 enddef
@@ -1735,7 +1735,7 @@
   assert_equal([2, 3, 4], AnySlice())
 enddef
 
-def NegateNumber(): number
+def s:NegateNumber(): number
   g:nr = 9
   var plus = +g:nr
   var minus = -g:nr
@@ -1761,7 +1761,7 @@
   assert_equal(-9, NegateNumber())
 enddef
 
-def InvertBool(): bool
+def s:InvertBool(): bool
   var flag = true
   var invert = !flag
   var res = !!flag
@@ -1786,7 +1786,7 @@
   assert_equal(true, InvertBool())
 enddef
 
-def ReturnBool(): bool
+def s:ReturnBool(): bool
   var one = 1
   var zero = 0
   var none: number
@@ -1818,7 +1818,7 @@
   assert_equal(true, InvertBool())
 enddef
 
-def AutoInit()
+def s:AutoInit()
   var t: number
   t = 1
   t = 0
diff --git a/src/testdir/test_vim9_expr.vim b/src/testdir/test_vim9_expr.vim
index 6428e63..d2f69ab 100644
--- a/src/testdir/test_vim9_expr.vim
+++ b/src/testdir/test_vim9_expr.vim
@@ -1,7 +1,7 @@
 " Tests for Vim9 script expressions
 
 source check.vim
-source vim9.vim
+import './vim9.vim' as v9
 
 let g:cond = v:false
 def FuncOne(arg: number): string
@@ -66,7 +66,7 @@
       var Z = g:cond ? FuncOne : FuncTwo
       assert_equal(123, Z(3))
   END
-  CheckDefAndScriptSuccess(lines)
+  v9.CheckDefAndScriptSuccess(lines)
 enddef
 
 def Test_expr1_trinary_vimscript()
@@ -77,7 +77,7 @@
 		: 'no'
       assert_equal('yes', name)
   END
-  CheckDefAndScriptSuccess(lines)
+  v9.CheckDefAndScriptSuccess(lines)
 
   lines =<< trim END
       var name = v:false
@@ -85,7 +85,7 @@
 		: 'no'
       assert_equal('no', name)
   END
-  CheckDefAndScriptSuccess(lines)
+  v9.CheckDefAndScriptSuccess(lines)
 
   lines =<< trim END
       var name = v:false ?
@@ -93,7 +93,7 @@
 		'no'
       assert_equal('no', name)
   END
-  CheckDefAndScriptSuccess(lines)
+  v9.CheckDefAndScriptSuccess(lines)
 
   lines =<< trim END
       var name = v:false ?  # comment
@@ -102,48 +102,48 @@
 		'no' # comment
       assert_equal('no', name)
   END
-  CheckDefAndScriptSuccess(lines)
+  v9.CheckDefAndScriptSuccess(lines)
 
   # check white space
   lines =<< trim END
       var name = v:true?1:2
   END
-  CheckDefAndScriptFailure(lines, 'E1004: White space required before and after ''?'' at "?1:2"', 1)
+  v9.CheckDefAndScriptFailure(lines, 'E1004: White space required before and after ''?'' at "?1:2"', 1)
 
   lines =<< trim END
       var name = v:true? 1 : 2
   END
-  CheckDefAndScriptFailure(lines, 'E1004:', 1)
+  v9.CheckDefAndScriptFailure(lines, 'E1004:', 1)
 
   lines =<< trim END
       var name = v:true ?1 : 2
   END
-  CheckDefAndScriptFailure(lines, 'E1004:', 1)
+  v9.CheckDefAndScriptFailure(lines, 'E1004:', 1)
 
   lines =<< trim END
       var name = v:true ? 1: 2
   END
-  CheckDefAndScriptFailure(lines, 'E1004: White space required before and after '':'' at ": 2"', 1)
+  v9.CheckDefAndScriptFailure(lines, 'E1004: White space required before and after '':'' at ": 2"', 1)
 
   lines =<< trim END
       var name = v:true ? 1 :2
   END
-  CheckDefAndScriptFailure(lines, 'E1004:', 1)
+  v9.CheckDefAndScriptFailure(lines, 'E1004:', 1)
 
   lines =<< trim END
       var name = 'x' ? 1 : 2
   END
-  CheckDefAndScriptFailure(lines, 'E1135:', 1)
+  v9.CheckDefAndScriptFailure(lines, 'E1135:', 1)
 
   lines =<< trim END
       var name = [] ? 1 : 2
   END
-  CheckDefExecAndScriptFailure(lines, 'E745:', 1)
+  v9.CheckDefExecAndScriptFailure(lines, 'E745:', 1)
 
   lines =<< trim END
       var name = {} ? 1 : 2
   END
-  CheckDefExecAndScriptFailure(lines, 'E728:', 1)
+  v9.CheckDefExecAndScriptFailure(lines, 'E728:', 1)
 
   # check after failure eval_flags is reset
   lines =<< trim END
@@ -153,7 +153,7 @@
       endtry
       assert_equal(v:true, eval(string(v:true)))
   END
-  CheckDefAndScriptSuccess(lines)
+  v9.CheckDefAndScriptSuccess(lines)
 
   lines =<< trim END
       try
@@ -162,53 +162,53 @@
       endtry
       assert_equal(v:true, eval(string(v:true)))
   END
-  CheckDefAndScriptSuccess(lines)
+  v9.CheckDefAndScriptSuccess(lines)
 enddef
 
 func Test_expr1_trinary_fails()
-  call CheckDefAndScriptFailure(["var x = 1 ? 'one'"], "Missing ':' after '?'", 1)
+  call v9.CheckDefAndScriptFailure(["var x = 1 ? 'one'"], "Missing ':' after '?'", 1)
 
   let msg = "White space required before and after '?'"
-  call CheckDefAndScriptFailure(["var x = 1? 'one' : 'two'"], msg, 1)
-  call CheckDefAndScriptFailure(["var x = 1 ?'one' : 'two'"], msg, 1)
-  call CheckDefAndScriptFailure(["var x = 1?'one' : 'two'"], msg, 1)
+  call v9.CheckDefAndScriptFailure(["var x = 1? 'one' : 'two'"], msg, 1)
+  call v9.CheckDefAndScriptFailure(["var x = 1 ?'one' : 'two'"], msg, 1)
+  call v9.CheckDefAndScriptFailure(["var x = 1?'one' : 'two'"], msg, 1)
   let lines =<< trim END
     var x = 1
      ?'one' : 'two'
      # comment
   END
-  call CheckDefAndScriptFailure(lines, 'E1004: White space required before and after ''?'' at "?''one'' : ''two''"', 2)
+  call v9.CheckDefAndScriptFailure(lines, 'E1004: White space required before and after ''?'' at "?''one'' : ''two''"', 2)
 
   let msg = "White space required before and after ':'"
-  call CheckDefAndScriptFailure(["var x = 1 ? 'one': 'two'"], msg, 1)
-  call CheckDefAndScriptFailure(["var x = 1 ? 'one' :'two'"], msg, 1)
-  call CheckDefAndScriptFailure(["var x = 1 ? 'one':'two'"], msg, 1)
+  call v9.CheckDefAndScriptFailure(["var x = 1 ? 'one': 'two'"], msg, 1)
+  call v9.CheckDefAndScriptFailure(["var x = 1 ? 'one' :'two'"], msg, 1)
+  call v9.CheckDefAndScriptFailure(["var x = 1 ? 'one':'two'"], msg, 1)
   let lines =<< trim END
     var x = 1 ? 'one'
           :'two'
           # Comment
   END
-  call CheckDefAndScriptFailure(lines, 'E1004: White space required before and after '':'' at ":''two''"', 2)
+  call v9.CheckDefAndScriptFailure(lines, 'E1004: White space required before and after '':'' at ":''two''"', 2)
 
-  call CheckDefAndScriptFailure(["var x = 'x' ? 'one' : 'two'"], 'E1135:', 1)
-  call CheckDefAndScriptFailure(["var x = 0z1234 ? 'one' : 'two'"], 'E974:', 1)
-  call CheckDefExecAndScriptFailure(["var x = [] ? 'one' : 'two'"], 'E745:', 1)
-  call CheckDefExecAndScriptFailure(["var x = {} ? 'one' : 'two'"], 'E728:', 1)
+  call v9.CheckDefAndScriptFailure(["var x = 'x' ? 'one' : 'two'"], 'E1135:', 1)
+  call v9.CheckDefAndScriptFailure(["var x = 0z1234 ? 'one' : 'two'"], 'E974:', 1)
+  call v9.CheckDefExecAndScriptFailure(["var x = [] ? 'one' : 'two'"], 'E745:', 1)
+  call v9.CheckDefExecAndScriptFailure(["var x = {} ? 'one' : 'two'"], 'E728:', 1)
 
-  call CheckDefExecFailure(["var x = false ? "], 'E1097:', 3)
-  call CheckScriptFailure(['vim9script', "var x = false ? "], 'E15:', 2)
-  call CheckDefExecFailure(["var x = false ? 'one' : "], 'E1097:', 3)
-  call CheckScriptFailure(['vim9script', "var x = false ? 'one' : "], 'E15:', 2)
+  call v9.CheckDefExecFailure(["var x = false ? "], 'E1097:', 3)
+  call v9.CheckScriptFailure(['vim9script', "var x = false ? "], 'E15:', 2)
+  call v9.CheckDefExecFailure(["var x = false ? 'one' : "], 'E1097:', 3)
+  call v9.CheckScriptFailure(['vim9script', "var x = false ? 'one' : "], 'E15:', 2)
 
-  call CheckDefExecAndScriptFailure(["var x = true ? xxx : 'foo'"], ['E1001:', 'E121:'], 1)
-  call CheckDefExecAndScriptFailure(["var x = false ? 'foo' : xxx"], ['E1001:', 'E121:'], 1)
+  call v9.CheckDefExecAndScriptFailure(["var x = true ? xxx : 'foo'"], ['E1001:', 'E121:'], 1)
+  call v9.CheckDefExecAndScriptFailure(["var x = false ? 'foo' : xxx"], ['E1001:', 'E121:'], 1)
 
   if has('float')
-    call CheckDefAndScriptFailure(["var x = 0.1 ? 'one' : 'two'"], 'E805:', 1)
+    call v9.CheckDefAndScriptFailure(["var x = 0.1 ? 'one' : 'two'"], 'E805:', 1)
   endif
 
   " missing argument detected even when common type is used
-  call CheckDefAndScriptFailure([
+  call v9.CheckDefAndScriptFailure([
 	\ 'var X = FuncOne',
 	\ 'var Y = FuncTwo',
 	\ 'var Z = g:cond ? FuncOne : FuncTwo',
@@ -235,21 +235,21 @@
         assert_equal(456, 0.0 ?? 456)
       endif
   END
-  CheckDefAndScriptSuccess(lines)
+  v9.CheckDefAndScriptSuccess(lines)
 
   var msg = "White space required before and after '??'"
-  call CheckDefAndScriptFailure(["var x = 1?? 'one' : 'two'"], msg, 1)
-  call CheckDefAndScriptFailure(["var x = 1 ??'one' : 'two'"], msg, 1)
-  call CheckDefAndScriptFailure(["var x = 1??'one' : 'two'"], msg, 1)
+  call v9.CheckDefAndScriptFailure(["var x = 1?? 'one' : 'two'"], msg, 1)
+  call v9.CheckDefAndScriptFailure(["var x = 1 ??'one' : 'two'"], msg, 1)
+  call v9.CheckDefAndScriptFailure(["var x = 1??'one' : 'two'"], msg, 1)
   lines =<< trim END
     var x = 1
       ??'one' : 'two'
       #comment
   END
-  CheckDefAndScriptFailure(lines, 'E1004: White space required before and after ''??'' at "??''one'' : ''two''"', 2)
+  v9.CheckDefAndScriptFailure(lines, 'E1004: White space required before and after ''??'' at "??''one'' : ''two''"', 2)
 enddef
 
-def Record(val: any): any
+def g:Record(val: any): any
   g:vals->add(val)
   return val
 enddef
@@ -270,35 +270,35 @@
       assert_equal(false, 0 || false)
 
       g:vals = []
-      assert_equal(true, Record(1) || Record(3))
+      assert_equal(true, g:Record(1) || g:Record(3))
       assert_equal([1], g:vals)
 
       g:vals = []
-      assert_equal(true, Record(0) || Record(1))
+      assert_equal(true, g:Record(0) || g:Record(1))
       assert_equal([0, 1], g:vals)
 
       g:vals = []
-      assert_equal(true, Record(0) || Record(true))
+      assert_equal(true, g:Record(0) || g:Record(true))
       assert_equal([0, true], g:vals)
 
       g:vals = []
-      assert_equal(true, Record(0)
-                          || Record(1)
-                          || Record(0))
+      assert_equal(true, g:Record(0)
+                          || g:Record(1)
+                          || g:Record(0))
       assert_equal([0, 1], g:vals)
 
       g:vals = []
-      assert_equal(true, Record(0)
-			  || Record(true)
-			  || Record(0))
+      assert_equal(true, g:Record(0)
+			  || g:Record(true)
+			  || g:Record(0))
       assert_equal([0, true], g:vals)
 
       g:vals = []
-      assert_equal(true, Record(true) || Record(false))
+      assert_equal(true, g:Record(true) || g:Record(false))
       assert_equal([true], g:vals)
 
       g:vals = []
-      assert_equal(false, Record(0) || Record(false) || Record(0))
+      assert_equal(false, g:Record(0) || g:Record(false) || g:Record(0))
       assert_equal([0, false, 0], g:vals)
 
       g:vals = []
@@ -315,7 +315,7 @@
       endif
       assert_equal([1], g:vals)
   END
-  CheckDefAndScriptSuccess(lines)
+  v9.CheckDefAndScriptSuccess(lines)
 enddef
 
 def Test_expr2_vimscript()
@@ -325,7 +325,7 @@
       		|| 1
       assert_equal(true, name)
   END
-  CheckDefAndScriptSuccess(lines)
+  v9.CheckDefAndScriptSuccess(lines)
 
   lines =<< trim END
       var name = v:false
@@ -333,7 +333,7 @@
       		|| v:false
       assert_equal(v:true, name)
   END
-  CheckDefAndScriptSuccess(lines)
+  v9.CheckDefAndScriptSuccess(lines)
 
   lines =<< trim END
       var name = v:false ||
@@ -341,7 +341,7 @@
 		v:false
       assert_equal(v:true, name)
   END
-  CheckDefAndScriptSuccess(lines)
+  v9.CheckDefAndScriptSuccess(lines)
 
   lines =<< trim END
       var name = v:false || # comment
@@ -351,48 +351,48 @@
 		v:false # comment
       assert_equal(v:true, name)
   END
-  CheckDefAndScriptSuccess(lines)
+  v9.CheckDefAndScriptSuccess(lines)
 
   # check white space
   lines =<< trim END
       var name = v:true||v:true
   END
-  CheckDefExecAndScriptFailure(lines, 'E1004: White space required before and after ''||'' at "||v:true"', 1)
+  v9.CheckDefExecAndScriptFailure(lines, 'E1004: White space required before and after ''||'' at "||v:true"', 1)
 
   lines =<< trim END
       var name = v:true ||v:true
   END
-  CheckDefAndScriptFailure(lines, 'E1004:', 1)
+  v9.CheckDefAndScriptFailure(lines, 'E1004:', 1)
 
   lines =<< trim END
       var name = v:true|| v:true
   END
-  CheckDefAndScriptFailure(lines, 'E1004:', 1)
+  v9.CheckDefAndScriptFailure(lines, 'E1004:', 1)
 enddef
 
 def Test_expr2_fails()
   var msg = "White space required before and after '||'"
-  call CheckDefAndScriptFailure(["var x = 1||0"], msg, 1)
-  call CheckDefAndScriptFailure(["var x = 1 ||0"], msg, 1)
-  call CheckDefAndScriptFailure(["var x = 1|| 0"], msg, 1)
+  v9.CheckDefAndScriptFailure(["var x = 1||0"], msg, 1)
+  v9.CheckDefAndScriptFailure(["var x = 1 ||0"], msg, 1)
+  v9.CheckDefAndScriptFailure(["var x = 1|| 0"], msg, 1)
 
-  call CheckDefFailure(["var x = false || "], 'E1097:', 3)
-  call CheckScriptFailure(['vim9script', "var x = false || "], 'E15:', 2)
+  v9.CheckDefFailure(["var x = false || "], 'E1097:', 3)
+  v9.CheckScriptFailure(['vim9script', "var x = false || "], 'E15:', 2)
 
   # script does not fail, the second expression is skipped
-  call CheckDefFailure(["var x = 1 || xxx"], 'E1001:', 1)
+  v9.CheckDefFailure(["var x = 1 || xxx"], 'E1001:', 1)
 
-  call CheckDefAndScriptFailure(["var x = [] || false"], ['E1012:', 'E745:'], 1)
+  v9.CheckDefAndScriptFailure(["var x = [] || false"], ['E1012:', 'E745:'], 1)
 
-  call CheckDefAndScriptFailure(["if 'yes' || 0", 'echo 0', 'endif'], ['E1012: Type mismatch; expected bool but got string', 'E1135: Using a String as a Bool'], 1)
+  v9.CheckDefAndScriptFailure(["if 'yes' || 0", 'echo 0', 'endif'], ['E1012: Type mismatch; expected bool but got string', 'E1135: Using a String as a Bool'], 1)
 
-  call CheckDefAndScriptFailure(["var x = 3 || false"], ['E1012:', 'E1023:'], 1)
-  call CheckDefAndScriptFailure(["var x = false || 3"], ['E1012:', 'E1023:'], 1)
+  v9.CheckDefAndScriptFailure(["var x = 3 || false"], ['E1012:', 'E1023:'], 1)
+  v9.CheckDefAndScriptFailure(["var x = false || 3"], ['E1012:', 'E1023:'], 1)
 
-  call CheckDefAndScriptFailure(["if 3"], 'E1023:', 1)
-  call CheckDefExecAndScriptFailure(['var x = 3', 'if x', 'endif'], 'E1023:', 2)
+  v9.CheckDefAndScriptFailure(["if 3"], 'E1023:', 1)
+  v9.CheckDefExecAndScriptFailure(['var x = 3', 'if x', 'endif'], 'E1023:', 2)
 
-  call CheckDefAndScriptFailure(["var x = [] || false"], ['E1012: Type mismatch; expected bool but got list<unknown>', 'E745:'], 1)
+  v9.CheckDefAndScriptFailure(["var x = [] || false"], ['E1012: Type mismatch; expected bool but got list<unknown>', 'E745:'], 1)
 
   var lines =<< trim END
     vim9script
@@ -400,14 +400,14 @@
       ||true
     # comment
   END
-  CheckScriptFailure(lines, 'E1004: White space required before and after ''||'' at "||true"', 3)
+  v9.CheckScriptFailure(lines, 'E1004: White space required before and after ''||'' at "||true"', 3)
 
   lines =<< trim END
       var x = false
               || false
               || a.b
   END
-  CheckDefFailure(lines, 'E1001:', 3)
+  v9.CheckDefFailure(lines, 'E1001:', 3)
 enddef
 
 " test &&
@@ -425,30 +425,30 @@
       assert_equal(true, 1 && true)
 
       g:vals = []
-      assert_equal(true, Record(true) && Record(1))
+      assert_equal(true, g:Record(true) && g:Record(1))
       assert_equal([true, 1], g:vals)
 
       g:vals = []
-      assert_equal(true, Record(1) && Record(true))
+      assert_equal(true, g:Record(1) && g:Record(true))
       assert_equal([1, true], g:vals)
 
       g:vals = []
-      assert_equal(false, Record(0) && Record(1))
+      assert_equal(false, g:Record(0) && g:Record(1))
       assert_equal([0], g:vals)
 
       g:vals = []
-      assert_equal(false, Record(0) && Record(1) && Record(0))
+      assert_equal(false, g:Record(0) && g:Record(1) && g:Record(0))
       assert_equal([0], g:vals)
 
       g:vals = []
-      assert_equal(false, Record(0) && Record(4) && Record(0))
+      assert_equal(false, g:Record(0) && g:Record(4) && g:Record(0))
       assert_equal([0], g:vals)
 
       g:vals = []
-      assert_equal(false, Record(1) && Record(true) && Record(0))
+      assert_equal(false, g:Record(1) && g:Record(true) && g:Record(0))
       assert_equal([1, true, 0], g:vals)
   END
-  CheckDefAndScriptSuccess(lines)
+  v9.CheckDefAndScriptSuccess(lines)
 enddef
 
 def Test_expr3_vimscript()
@@ -458,7 +458,7 @@
       		&& 1
       assert_equal(false, name)
   END
-  CheckDefAndScriptSuccess(lines)
+  v9.CheckDefAndScriptSuccess(lines)
 
   lines =<< trim END
       var name = v:true
@@ -466,7 +466,7 @@
       		&& v:true
       assert_equal(v:true, name)
   END
-  CheckDefAndScriptSuccess(lines)
+  v9.CheckDefAndScriptSuccess(lines)
 
   lines =<< trim END
       var name = v:true &&
@@ -474,7 +474,7 @@
       		v:true
       assert_equal(v:true, name)
   END
-  CheckDefAndScriptSuccess(lines)
+  v9.CheckDefAndScriptSuccess(lines)
 
   lines =<< trim END
       var name = v:true &&  # comment
@@ -484,62 +484,62 @@
       		v:true
       assert_equal(v:true, name)
   END
-  CheckDefAndScriptSuccess(lines)
+  v9.CheckDefAndScriptSuccess(lines)
 
   # check white space
   lines =<< trim END
       var name = v:true&&v:true
   END
-  CheckDefAndScriptFailure(lines, 'E1004:', 1)
+  v9.CheckDefAndScriptFailure(lines, 'E1004:', 1)
 
   lines =<< trim END
       var name = v:true &&v:true
   END
-  CheckDefAndScriptFailure(lines, 'E1004: White space required before and after ''&&'' at "&&v:true"', 1)
+  v9.CheckDefAndScriptFailure(lines, 'E1004: White space required before and after ''&&'' at "&&v:true"', 1)
 
   lines =<< trim END
       var name = v:true&& v:true
   END
-  CheckDefAndScriptFailure(lines, 'E1004:', 1)
+  v9.CheckDefAndScriptFailure(lines, 'E1004:', 1)
 enddef
 
 def Test_expr3_fails()
   var msg = "White space required before and after '&&'"
-  CheckDefAndScriptFailure(["var x = 1&&0"], msg, 1)
-  CheckDefAndScriptFailure(["var x = 1 &&0"], msg, 1)
-  CheckDefAndScriptFailure(["var x = 1&& 0"], msg, 1)
+  v9.CheckDefAndScriptFailure(["var x = 1&&0"], msg, 1)
+  v9.CheckDefAndScriptFailure(["var x = 1 &&0"], msg, 1)
+  v9.CheckDefAndScriptFailure(["var x = 1&& 0"], msg, 1)
   var lines =<< trim END
     var x = 1
       &&0
     # comment
   END
-  CheckDefAndScriptFailure(lines, 'E1004: White space required before and after ''&&'' at "&&0"', 2)
+  v9.CheckDefAndScriptFailure(lines, 'E1004: White space required before and after ''&&'' at "&&0"', 2)
 
   g:vals = []
-  CheckDefAndScriptFailure(["if 'yes' && 0", 'echo 0', 'endif'], ['E1012: Type mismatch; expected bool but got string', 'E1135: Using a String as a Bool'], 1)
+  v9.CheckDefAndScriptFailure(["if 'yes' && 0", 'echo 0', 'endif'], ['E1012: Type mismatch; expected bool but got string', 'E1135: Using a String as a Bool'], 1)
 
-  CheckDefExecAndScriptFailure(['assert_equal(false, Record(1) && Record(4) && Record(0))'], 'E1023: Using a Number as a Bool: 4', 1)
+  v9.CheckDefExecAndScriptFailure(['assert_equal(false, g:Record(1) && g:Record(4) && g:Record(0))'], 'E1023: Using a Number as a Bool: 4', 1)
 
   lines =<< trim END
       if 3
           && true
       endif
   END
-  CheckDefAndScriptFailure(lines, ['E1012:', 'E1023:'], 1)
+  v9.CheckDefAndScriptFailure(lines, ['E1012:', 'E1023:'], 1)
 
   lines =<< trim END
       if true
           && 3
       endif
   END
-  CheckDefAndScriptFailure(lines, ['E1012:', 'E1023:'], 2)
+  v9.CheckDefAndScriptFailure(lines, ['E1012:', 'E1023:'], 2)
 
   lines =<< trim END
       if 'yes'
           && true
       endif
   END
-  CheckDefAndScriptFailure(lines, ['E1012:', 'E1135: Using a String as a Bool'], 1)
+  v9.CheckDefAndScriptFailure(lines, ['E1012:', 'E1135: Using a String as a Bool'], 1)
 enddef
 
 " global variables to use for tests with the "any" type
@@ -663,18 +663,18 @@
         assert_equal(true, OneFunc('abc') == TwoFunc('123'))
       endif
   END
-  CheckDefAndScriptSuccess(lines)
+  v9.CheckDefAndScriptSuccess(lines)
 
-  CheckDefAndScriptFailure(["var x = 'a' == xxx"], ['E1001:', 'E121:'], 1)
-  CheckDefFailure(["var x = 'a' == "], 'E1097:', 3)
-  CheckScriptFailure(['vim9script', "var x = 'a' == "], 'E15:', 2)
+  v9.CheckDefAndScriptFailure(["var x = 'a' == xxx"], ['E1001:', 'E121:'], 1)
+  v9.CheckDefFailure(["var x = 'a' == "], 'E1097:', 3)
+  v9.CheckScriptFailure(['vim9script', "var x = 'a' == "], 'E15:', 2)
 
-  CheckDefExecAndScriptFailure(['var items: any', 'eval 1 + 1', 'eval 2 + 2', 'if items == []', 'endif'], ['E691:', 'E1072:'], 4)
+  v9.CheckDefExecAndScriptFailure(['var items: any', 'eval 1 + 1', 'eval 2 + 2', 'if items == []', 'endif'], ['E691:', 'E1072:'], 4)
 
-  CheckDefExecAndScriptFailure(['var x: any = "a"', 'echo x == true'], 'E1072: Cannot compare string with bool', 2)
-  CheckDefExecAndScriptFailure(["var x: any = true", 'echo x == ""'], 'E1072: Cannot compare bool with string', 2)
-  CheckDefExecAndScriptFailure(["var x: any = 99", 'echo x == true'], ['E1138', 'E1072:'], 2)
-  CheckDefExecAndScriptFailure(["var x: any = 'a'", 'echo x == 99'], ['E1030:', 'E1072:'], 2)
+  v9.CheckDefExecAndScriptFailure(['var x: any = "a"', 'echo x == true'], 'E1072: Cannot compare string with bool', 2)
+  v9.CheckDefExecAndScriptFailure(["var x: any = true", 'echo x == ""'], 'E1072: Cannot compare bool with string', 2)
+  v9.CheckDefExecAndScriptFailure(["var x: any = 99", 'echo x == true'], ['E1138', 'E1072:'], 2)
+  v9.CheckDefExecAndScriptFailure(["var x: any = 'a'", 'echo x == 99'], ['E1030:', 'E1072:'], 2)
 
   lines =<< trim END
       vim9script
@@ -686,7 +686,7 @@
       g:notReached = true
       Compare()
   END
-  CheckScriptFailure(lines, 'E1030: Using a String as a Number: "3"')
+  v9.CheckScriptFailure(lines, 'E1030: Using a String as a Number: "3"')
   assert_true(g:notReached)
 
   if has('float')
@@ -700,7 +700,7 @@
         g:notReached = true
         Compare()
     END
-    CheckScriptFailure(lines, 'E892: Using a String as a Float')
+    v9.CheckScriptFailure(lines, 'E892: Using a String as a Float')
     assert_true(g:notReached)
   endif
 
@@ -709,30 +709,30 @@
 
 def Test_expr4_wrong_type()
   for op in ['>', '>=', '<', '<=', '=~', '!~']
-    CheckDefExecAndScriptFailure([
+    v9.CheckDefExecAndScriptFailure([
         "var a: any = 'a'",
         'var b: any = true',
         'echo a ' .. op .. ' b'], 'E1072:', 3)
   endfor
   for op in ['>', '>=', '<', '<=']
-    CheckDefExecAndScriptFailure([
+    v9.CheckDefExecAndScriptFailure([
         "var n: any = 2",
         'echo n ' .. op .. ' "3"'], ['E1030:', 'E1072:'], 2)
   endfor
   for op in ['=~', '!~']
-    CheckDefExecAndScriptFailure([
+    v9.CheckDefExecAndScriptFailure([
         "var n: any = 2",
         'echo n ' .. op .. ' "3"'], 'E1072:', 2)
   endfor
 
-  CheckDefAndScriptFailure([
+  v9.CheckDefAndScriptFailure([
       'echo v:none == true'], 'E1072:', 1)
-  CheckDefAndScriptFailure([
+  v9.CheckDefAndScriptFailure([
       'echo false >= true'], 'E1072:', 1)
-  CheckDefExecAndScriptFailure([
+  v9.CheckDefExecAndScriptFailure([
       "var n: any = v:none",
       'echo n == true'], 'E1072:', 2)
-  CheckDefExecAndScriptFailure([
+  v9.CheckDefExecAndScriptFailure([
       "var n: any = v:none",
       'echo n < true'], 'E1072:', 2)
 enddef
@@ -819,7 +819,7 @@
       assert_equal(true, function('g:Test_expr4_equal', [123]) != function('g:Test_expr4_is', [123]))
       assert_equal(true, function('g:Test_expr4_equal', [123]) != function('g:Test_expr4_equal', [999]))
   END
-  CheckDefAndScriptSuccess(lines)
+  v9.CheckDefAndScriptSuccess(lines)
 enddef
 
 " test > comperator
@@ -845,7 +845,7 @@
         assert_false(ff > 3.0)
       endif
   END
-  CheckDefAndScriptSuccess(lines)
+  v9.CheckDefAndScriptSuccess(lines)
 enddef
 
 " test >= comperator
@@ -866,7 +866,7 @@
         assert_false(ff >= 3.0)
       endif
   END
-  CheckDefAndScriptSuccess(lines)
+  v9.CheckDefAndScriptSuccess(lines)
 enddef
 
 " test < comperator
@@ -888,7 +888,7 @@
         assert_true(ff < 3.0)
       endif
   END
-  CheckDefAndScriptSuccess(lines)
+  v9.CheckDefAndScriptSuccess(lines)
 enddef
 
 " test <= comperator
@@ -913,7 +913,7 @@
         assert_true(ff <= 3.0)
       endif
   END
-  CheckDefAndScriptSuccess(lines)
+  v9.CheckDefAndScriptSuccess(lines)
 enddef
 
 " test =~ comperator
@@ -930,7 +930,7 @@
       assert_equal(true, 'abc' =~? 'ABC')
       set noignorecase
   END
-  CheckDefAndScriptSuccess(lines)
+  v9.CheckDefAndScriptSuccess(lines)
 enddef
 
 " test !~ comperator
@@ -942,7 +942,7 @@
       assert_equal(false, '2' !~
                             '[0-9]')
   END
-  CheckDefAndScriptSuccess(lines)
+  v9.CheckDefAndScriptSuccess(lines)
 enddef
 
 " test is comperator
@@ -960,7 +960,7 @@
       var otherblob = myblob
       assert_true(myblob is otherblob)
   END
-  CheckDefAndScriptSuccess(lines)
+  v9.CheckDefAndScriptSuccess(lines)
 enddef
 
 " test isnot comperator
@@ -979,10 +979,10 @@
       var otherblob = myblob
       assert_false(myblob isnot otherblob)
   END
-  CheckDefAndScriptSuccess(lines)
+  v9.CheckDefAndScriptSuccess(lines)
 enddef
 
-def RetVoid()
+def g:RetVoid()
   var x = 1
 enddef
 
@@ -993,7 +993,7 @@
       		< 1
       assert_equal(true, name)
   END
-  CheckDefAndScriptSuccess(lines)
+  v9.CheckDefAndScriptSuccess(lines)
 
   lines =<< trim END
       var name = 123
@@ -1001,14 +1001,14 @@
       		!= 123
       assert_equal(false, name)
   END
-  CheckDefAndScriptSuccess(lines)
+  v9.CheckDefAndScriptSuccess(lines)
 
   lines =<< trim END
       var name = 123 ==
       			123
       assert_equal(true, name)
   END
-  CheckDefAndScriptSuccess(lines)
+  v9.CheckDefAndScriptSuccess(lines)
 
   lines =<< trim END
       var list = [1, 2, 3]
@@ -1016,7 +1016,7 @@
       		is list
       assert_equal(true, name)
   END
-  CheckDefAndScriptSuccess(lines)
+  v9.CheckDefAndScriptSuccess(lines)
 
   lines =<< trim END
       var list = [1, 2, 3]
@@ -1025,7 +1025,7 @@
       		is list
       assert_equal(true, name)
   END
-  CheckDefAndScriptSuccess(lines)
+  v9.CheckDefAndScriptSuccess(lines)
 
   lines =<< trim END
       var myblob = 0z1234
@@ -1033,140 +1033,140 @@
       		isnot 0z11
       assert_equal(true, name)
   END
-  CheckDefAndScriptSuccess(lines)
+  v9.CheckDefAndScriptSuccess(lines)
 
   # spot check mismatching types
   lines =<< trim END
       echo '' == 0
   END
-  CheckDefAndScriptFailure(lines, 'E1072:', 1)
+  v9.CheckDefAndScriptFailure(lines, 'E1072:', 1)
 
   lines =<< trim END
       echo v:true > v:false
   END
-  CheckDefAndScriptFailure(lines, 'Cannot compare bool with bool', 1)
+  v9.CheckDefAndScriptFailure(lines, 'Cannot compare bool with bool', 1)
 
   lines =<< trim END
       echo 123 is 123
   END
-  CheckDefAndScriptFailure(lines, 'Cannot use "is" with number', 1)
+  v9.CheckDefAndScriptFailure(lines, 'Cannot use "is" with number', 1)
 
   # check missing white space
   lines =<< trim END
     echo 2>3
   END
-  CheckDefAndScriptFailure(lines, 'E1004: White space required before and after ''>'' at ">3"', 1)
+  v9.CheckDefAndScriptFailure(lines, 'E1004: White space required before and after ''>'' at ">3"', 1)
 
   lines =<< trim END
     echo 2 >3
   END
-  CheckDefAndScriptFailure(lines, 'E1004:', 1)
+  v9.CheckDefAndScriptFailure(lines, 'E1004:', 1)
 
   lines =<< trim END
     echo 2> 3
   END
-  CheckDefAndScriptFailure(lines, 'E1004:', 1)
+  v9.CheckDefAndScriptFailure(lines, 'E1004:', 1)
 
   lines =<< trim END
     echo 2!=3
   END
-  CheckDefAndScriptFailure(lines, 'E1004:', 1)
+  v9.CheckDefAndScriptFailure(lines, 'E1004:', 1)
 
   lines =<< trim END
     echo 2 !=3
   END
-  CheckDefAndScriptFailure(lines, 'E1004: White space required before and after ''!='' at "!=3"', 1)
+  v9.CheckDefAndScriptFailure(lines, 'E1004: White space required before and after ''!='' at "!=3"', 1)
 
   lines =<< trim END
     echo 2!= 3
   END
-  CheckDefAndScriptFailure(lines, 'E1004:', 1)
+  v9.CheckDefAndScriptFailure(lines, 'E1004:', 1)
 
   for op in ['==', '>', '>=', '<', '<=', '=~', '!~', 'is', 'isnot']
     lines = ["echo 'aaa'", op .. "'bbb'", '# comment']
     var msg = printf("E1004: White space required before and after '%s'", op)
-    CheckDefAndScriptFailure(lines, msg, 2)
+    v9.CheckDefAndScriptFailure(lines, msg, 2)
   endfor
 
   lines =<< trim END
     echo len('xxx') == 3
   END
-  CheckDefAndScriptSuccess(lines)
+  v9.CheckDefAndScriptSuccess(lines)
 
   lines =<< trim END
     var line = 'abc'
     echo line[1] =~ '\w'
   END
-  CheckDefAndScriptSuccess(lines)
+  v9.CheckDefAndScriptSuccess(lines)
 enddef
 
 func Test_expr4_fails()
   let msg = "White space required before and after '>'"
-  call CheckDefAndScriptFailure(["var x = 1>2"], msg, 1)
-  call CheckDefAndScriptFailure(["var x = 1 >2"], msg, 1)
-  call CheckDefAndScriptFailure(["var x = 1> 2"], msg, 1)
+  call v9.CheckDefAndScriptFailure(["var x = 1>2"], msg, 1)
+  call v9.CheckDefAndScriptFailure(["var x = 1 >2"], msg, 1)
+  call v9.CheckDefAndScriptFailure(["var x = 1> 2"], msg, 1)
 
   let msg = "White space required before and after '=='"
-  call CheckDefAndScriptFailure(["var x = 1==2"], msg, 1)
-  call CheckDefAndScriptFailure(["var x = 1 ==2"], msg, 1)
-  call CheckDefAndScriptFailure(["var x = 1== 2"], msg, 1)
+  call v9.CheckDefAndScriptFailure(["var x = 1==2"], msg, 1)
+  call v9.CheckDefAndScriptFailure(["var x = 1 ==2"], msg, 1)
+  call v9.CheckDefAndScriptFailure(["var x = 1== 2"], msg, 1)
 
   let msg = "White space required before and after 'is'"
-  call CheckDefAndScriptFailure(["var x = '1'is'2'"], msg, 1)
-  call CheckDefAndScriptFailure(["var x = '1' is'2'"], msg, 1)
-  call CheckDefAndScriptFailure(["var x = '1'is '2'"], msg, 1)
+  call v9.CheckDefAndScriptFailure(["var x = '1'is'2'"], msg, 1)
+  call v9.CheckDefAndScriptFailure(["var x = '1' is'2'"], msg, 1)
+  call v9.CheckDefAndScriptFailure(["var x = '1'is '2'"], msg, 1)
 
   let msg = "White space required before and after 'isnot'"
-  call CheckDefAndScriptFailure(["var x = '1'isnot'2'"], msg, 1)
-  call CheckDefAndScriptFailure(["var x = '1' isnot'2'"], msg, 1)
-  call CheckDefAndScriptFailure(["var x = '1'isnot '2'"], msg, 1)
+  call v9.CheckDefAndScriptFailure(["var x = '1'isnot'2'"], msg, 1)
+  call v9.CheckDefAndScriptFailure(["var x = '1' isnot'2'"], msg, 1)
+  call v9.CheckDefAndScriptFailure(["var x = '1'isnot '2'"], msg, 1)
 
-  call CheckDefAndScriptFailure(["var x = 1 is# 2"], 'E15:', 1)
-  call CheckDefAndScriptFailure(["var x = 1 is? 2"], 'E15:', 1)
-  call CheckDefAndScriptFailure(["var x = 1 isnot# 2"], 'E15:', 1)
-  call CheckDefAndScriptFailure(["var x = 1 isnot? 2"], 'E15:', 1)
+  call v9.CheckDefAndScriptFailure(["var x = 1 is# 2"], 'E15:', 1)
+  call v9.CheckDefAndScriptFailure(["var x = 1 is? 2"], 'E15:', 1)
+  call v9.CheckDefAndScriptFailure(["var x = 1 isnot# 2"], 'E15:', 1)
+  call v9.CheckDefAndScriptFailure(["var x = 1 isnot? 2"], 'E15:', 1)
 
-  call CheckDefAndScriptFailure(["var x = 1 == '2'"], 'Cannot compare number with string', 1)
-  call CheckDefAndScriptFailure(["var x = '1' == 2"], 'Cannot compare string with number', 1)
-  call CheckDefAndScriptFailure(["var x = 1 == RetVoid()"], 'Cannot compare number with void', 1)
-  call CheckDefAndScriptFailure(["var x = RetVoid() == 1"], 'Cannot compare void with number', 1)
+  call v9.CheckDefAndScriptFailure(["var x = 1 == '2'"], 'Cannot compare number with string', 1)
+  call v9.CheckDefAndScriptFailure(["var x = '1' == 2"], 'Cannot compare string with number', 1)
+  call v9.CheckDefAndScriptFailure(["var x = 1 == g:RetVoid()"], 'Cannot compare number with void', 1)
+  call v9.CheckDefAndScriptFailure(["var x = g:RetVoid() == 1"], 'Cannot compare void with number', 1)
 
-  call CheckDefAndScriptFailure(["var x = true > false"], 'Cannot compare bool with bool', 1)
-  call CheckDefAndScriptFailure(["var x = true >= false"], 'Cannot compare bool with bool', 1)
-  call CheckDefAndScriptFailure(["var x = true < false"], 'Cannot compare bool with bool', 1)
-  call CheckDefAndScriptFailure(["var x = true <= false"], 'Cannot compare bool with bool', 1)
-  call CheckDefAndScriptFailure(["var x = true =~ false"], 'Cannot compare bool with bool', 1)
-  call CheckDefAndScriptFailure(["var x = true !~ false"], 'Cannot compare bool with bool', 1)
-  call CheckDefAndScriptFailure(["var x = true is false"], 'Cannot use "is" with bool', 1)
-  call CheckDefAndScriptFailure(["var x = true isnot false"], 'Cannot use "isnot" with bool', 1)
+  call v9.CheckDefAndScriptFailure(["var x = true > false"], 'Cannot compare bool with bool', 1)
+  call v9.CheckDefAndScriptFailure(["var x = true >= false"], 'Cannot compare bool with bool', 1)
+  call v9.CheckDefAndScriptFailure(["var x = true < false"], 'Cannot compare bool with bool', 1)
+  call v9.CheckDefAndScriptFailure(["var x = true <= false"], 'Cannot compare bool with bool', 1)
+  call v9.CheckDefAndScriptFailure(["var x = true =~ false"], 'Cannot compare bool with bool', 1)
+  call v9.CheckDefAndScriptFailure(["var x = true !~ false"], 'Cannot compare bool with bool', 1)
+  call v9.CheckDefAndScriptFailure(["var x = true is false"], 'Cannot use "is" with bool', 1)
+  call v9.CheckDefAndScriptFailure(["var x = true isnot false"], 'Cannot use "isnot" with bool', 1)
 
-  call CheckDefAndScriptFailure(["var x = v:none is v:null"], 'Cannot use "is" with special', 1)
-  call CheckDefAndScriptFailure(["var x = v:none isnot v:null"], 'Cannot use "isnot" with special', 1)
-  call CheckDefAndScriptFailure(["var x = 123 is 123"], 'Cannot use "is" with number', 1)
-  call CheckDefAndScriptFailure(["var x = 123 isnot 123"], 'Cannot use "isnot" with number', 1)
+  call v9.CheckDefAndScriptFailure(["var x = v:none is v:null"], 'Cannot use "is" with special', 1)
+  call v9.CheckDefAndScriptFailure(["var x = v:none isnot v:null"], 'Cannot use "isnot" with special', 1)
+  call v9.CheckDefAndScriptFailure(["var x = 123 is 123"], 'Cannot use "is" with number', 1)
+  call v9.CheckDefAndScriptFailure(["var x = 123 isnot 123"], 'Cannot use "isnot" with number', 1)
   if has('float')
-    call CheckDefAndScriptFailure(["var x = 1.3 is 1.3"], 'Cannot use "is" with float', 1)
-    call CheckDefAndScriptFailure(["var x = 1.3 isnot 1.3"], 'Cannot use "isnot" with float', 1)
+    call v9.CheckDefAndScriptFailure(["var x = 1.3 is 1.3"], 'Cannot use "is" with float', 1)
+    call v9.CheckDefAndScriptFailure(["var x = 1.3 isnot 1.3"], 'Cannot use "isnot" with float', 1)
   endif
 
-  call CheckDefAndScriptFailure(["var x = 0za1 > 0z34"], 'Cannot compare blob with blob', 1)
-  call CheckDefAndScriptFailure(["var x = 0za1 >= 0z34"], 'Cannot compare blob with blob', 1)
-  call CheckDefAndScriptFailure(["var x = 0za1 < 0z34"], 'Cannot compare blob with blob', 1)
-  call CheckDefAndScriptFailure(["var x = 0za1 <= 0z34"], 'Cannot compare blob with blob', 1)
-  call CheckDefAndScriptFailure(["var x = 0za1 =~ 0z34"], 'Cannot compare blob with blob', 1)
-  call CheckDefAndScriptFailure(["var x = 0za1 !~ 0z34"], 'Cannot compare blob with blob', 1)
+  call v9.CheckDefAndScriptFailure(["var x = 0za1 > 0z34"], 'Cannot compare blob with blob', 1)
+  call v9.CheckDefAndScriptFailure(["var x = 0za1 >= 0z34"], 'Cannot compare blob with blob', 1)
+  call v9.CheckDefAndScriptFailure(["var x = 0za1 < 0z34"], 'Cannot compare blob with blob', 1)
+  call v9.CheckDefAndScriptFailure(["var x = 0za1 <= 0z34"], 'Cannot compare blob with blob', 1)
+  call v9.CheckDefAndScriptFailure(["var x = 0za1 =~ 0z34"], 'Cannot compare blob with blob', 1)
+  call v9.CheckDefAndScriptFailure(["var x = 0za1 !~ 0z34"], 'Cannot compare blob with blob', 1)
 
-  call CheckDefAndScriptFailure(["var x = [13] > [88]"], 'Cannot compare list with list', 1)
-  call CheckDefAndScriptFailure(["var x = [13] >= [88]"], 'Cannot compare list with list', 1)
-  call CheckDefAndScriptFailure(["var x = [13] < [88]"], 'Cannot compare list with list', 1)
-  call CheckDefAndScriptFailure(["var x = [13] <= [88]"], 'Cannot compare list with list', 1)
-  call CheckDefAndScriptFailure(["var x = [13] =~ [88]"], 'Cannot compare list with list', 1)
-  call CheckDefAndScriptFailure(["var x = [13] !~ [88]"], 'Cannot compare list with list', 1)
+  call v9.CheckDefAndScriptFailure(["var x = [13] > [88]"], 'Cannot compare list with list', 1)
+  call v9.CheckDefAndScriptFailure(["var x = [13] >= [88]"], 'Cannot compare list with list', 1)
+  call v9.CheckDefAndScriptFailure(["var x = [13] < [88]"], 'Cannot compare list with list', 1)
+  call v9.CheckDefAndScriptFailure(["var x = [13] <= [88]"], 'Cannot compare list with list', 1)
+  call v9.CheckDefAndScriptFailure(["var x = [13] =~ [88]"], 'Cannot compare list with list', 1)
+  call v9.CheckDefAndScriptFailure(["var x = [13] !~ [88]"], 'Cannot compare list with list', 1)
 
-  call CheckDefAndScriptFailure(['var j: job', 'var chan: channel', 'var r = j == chan'], 'Cannot compare job with channel', 3)
-  call CheckDefAndScriptFailure(['var j: job', 'var x: list<any>', 'var r = j == x'], 'Cannot compare job with list', 3)
-  call CheckDefAndScriptFailure(['var j: job', 'var Xx: func', 'var r = j == Xx'], 'Cannot compare job with func', 3)
-  call CheckDefAndScriptFailure(['var j: job', 'var Xx: func', 'var r = j == Xx'], 'Cannot compare job with func', 3)
+  call v9.CheckDefAndScriptFailure(['var j: job', 'var chan: channel', 'var r = j == chan'], 'Cannot compare job with channel', 3)
+  call v9.CheckDefAndScriptFailure(['var j: job', 'var x: list<any>', 'var r = j == x'], 'Cannot compare job with list', 3)
+  call v9.CheckDefAndScriptFailure(['var j: job', 'var Xx: func', 'var r = j == Xx'], 'Cannot compare job with func', 3)
+  call v9.CheckDefAndScriptFailure(['var j: job', 'var Xx: func', 'var r = j == Xx'], 'Cannot compare job with func', 3)
 endfunc
 
 " test addition, subtraction, concatenation
@@ -1232,7 +1232,7 @@
 
       assert_equal('val', '' .. {key: 'val'}['key'])
   END
-  CheckDefAndScriptSuccess(lines)
+  v9.CheckDefAndScriptSuccess(lines)
 enddef
 
 def Test_expr5_vim9script()
@@ -1243,7 +1243,7 @@
 		- 22
       assert_equal(66, name)
   END
-  CheckDefAndScriptSuccess(lines)
+  v9.CheckDefAndScriptSuccess(lines)
 
   lines =<< trim END
       var name = 11 +
@@ -1251,7 +1251,7 @@
 		  22
       assert_equal(66, name)
   END
-  CheckDefAndScriptSuccess(lines)
+  v9.CheckDefAndScriptSuccess(lines)
 
   lines =<< trim END
       var name = 11 +  # comment
@@ -1260,112 +1260,112 @@
 		  22
       assert_equal(66, name)
   END
-  CheckDefAndScriptSuccess(lines)
+  v9.CheckDefAndScriptSuccess(lines)
 
   lines =<< trim END
       var name = 'one'
       		.. 'two'
       assert_equal('onetwo', name)
   END
-  CheckDefAndScriptSuccess(lines)
+  v9.CheckDefAndScriptSuccess(lines)
 
   lines =<< trim END
       echo 'abc' is# 'abc'
   END
-  CheckDefAndScriptFailure(lines, 'E15:', 1)
+  v9.CheckDefAndScriptFailure(lines, 'E15:', 1)
 
   lines =<< trim END
       echo {} - 22
   END
-  CheckDefAndScriptFailure(lines, ['E1036:', 'E728:'], 1)
+  v9.CheckDefAndScriptFailure(lines, ['E1036:', 'E728:'], 1)
 
   lines =<< trim END
       echo [] - 33
   END
-  CheckDefAndScriptFailure(lines, ['E1036:', 'E745:'], 1)
+  v9.CheckDefAndScriptFailure(lines, ['E1036:', 'E745:'], 1)
 
   lines =<< trim END
       echo 0z1234 - 44
   END
-  CheckDefAndScriptFailure(lines, ['E1036', 'E974:'], 1)
+  v9.CheckDefAndScriptFailure(lines, ['E1036', 'E974:'], 1)
 
   lines =<< trim END
       echo 'abc' is? 'abc'
   END
-  CheckDefAndScriptFailure(lines, 'E15:', 1)
+  v9.CheckDefAndScriptFailure(lines, 'E15:', 1)
 
   lines =<< trim END
       echo 'abc' isnot# 'abc'
   END
-  CheckDefAndScriptFailure(lines, 'E15:', 1)
+  v9.CheckDefAndScriptFailure(lines, 'E15:', 1)
 
   lines =<< trim END
       echo 'abc' isnot? 'abc'
   END
-  CheckDefAndScriptFailure(lines, 'E15:', 1)
+  v9.CheckDefAndScriptFailure(lines, 'E15:', 1)
 
   # check white space
   lines =<< trim END
       echo 5+6
   END
-  CheckDefAndScriptFailure(lines, 'E1004:', 1)
+  v9.CheckDefAndScriptFailure(lines, 'E1004:', 1)
   lines =<< trim END
       echo 5 +6
   END
-  CheckDefAndScriptFailure(lines, 'E1004:', 1)
+  v9.CheckDefAndScriptFailure(lines, 'E1004:', 1)
 
   lines =<< trim END
       echo 5+ 6
   END
-  CheckDefAndScriptFailure(lines, 'E1004:', 1)
+  v9.CheckDefAndScriptFailure(lines, 'E1004:', 1)
 
   lines =<< trim END
       echo 'a'..'b'
   END
-  CheckDefAndScriptFailure(lines, 'E1004: White space required before and after ''..'' at "..''b''"', 1)
+  v9.CheckDefAndScriptFailure(lines, 'E1004: White space required before and after ''..'' at "..''b''"', 1)
 
   lines =<< trim END
       echo 'a' ..'b'
   END
-  CheckDefAndScriptFailure(lines, 'E1004:', 1)
+  v9.CheckDefAndScriptFailure(lines, 'E1004:', 1)
 
   lines =<< trim END
       echo 'a'.. 'b'
   END
-  CheckDefAndScriptFailure(lines, 'E1004: White space required before and after ''..'' at ".. ''b''"', 1)
+  v9.CheckDefAndScriptFailure(lines, 'E1004: White space required before and after ''..'' at ".. ''b''"', 1)
 
   lines =<< trim END
       echo 'a'
           ..'b'
       # comment
   END
-  CheckDefAndScriptFailure(lines, 'E1004: White space required before and after ''..'' at "..''b''"', 2)
+  v9.CheckDefAndScriptFailure(lines, 'E1004: White space required before and after ''..'' at "..''b''"', 2)
 
   # check invalid string concatenation
   lines =<< trim END
       echo 'a' .. [1]
   END
-  CheckDefAndScriptFailure(lines, ['E1105:', 'E730:'], 1)
+  v9.CheckDefAndScriptFailure(lines, ['E1105:', 'E730:'], 1)
 
   lines =<< trim END
       echo 'a' .. {a: 1}
   END
-  CheckDefAndScriptFailure(lines, ['E1105:', 'E731:'], 1)
+  v9.CheckDefAndScriptFailure(lines, ['E1105:', 'E731:'], 1)
 
   lines =<< trim END
       echo 'a' .. test_void()
   END
-  CheckDefAndScriptFailure(lines, ['E1105:', 'E908:'], 1)
+  v9.CheckDefAndScriptFailure(lines, ['E1105:', 'E908:'], 1)
 
   lines =<< trim END
       echo 'a' .. 0z33
   END
-  CheckDefAndScriptFailure(lines, ['E1105:', 'E976:'], 1)
+  v9.CheckDefAndScriptFailure(lines, ['E1105:', 'E976:'], 1)
 
   lines =<< trim END
       echo 'a' .. function('len')
   END
-  CheckDefAndScriptFailure(lines, ['E1105:', 'E729:'], 1)
+  v9.CheckDefAndScriptFailure(lines, ['E1105:', 'E729:'], 1)
 
   lines =<< trim END
       new
@@ -1375,12 +1375,12 @@
       eval 0
       bwipe!
   END
-  CheckDefAndScriptFailure(lines, "E1004: White space required before and after '/' at \"/pattern", 3)
+  v9.CheckDefAndScriptFailure(lines, "E1004: White space required before and after '/' at \"/pattern", 3)
 
   for op in ['+', '-']
     lines = ['var x = 1', op .. '2', '# comment']
     var msg = printf("E1004: White space required before and after '%s' at \"%s2\"", op, op)
-    CheckDefAndScriptFailure(lines, msg, 2)
+    v9.CheckDefAndScriptFailure(lines, msg, 2)
   endfor
 enddef
 
@@ -1391,11 +1391,11 @@
     var lines =<< trim END
         echo 'a' .. test_null_job()
     END
-    CheckDefAndScriptFailure(lines, ['E1105:', 'E908:'], 1)
+    v9.CheckDefAndScriptFailure(lines, ['E1105:', 'E908:'], 1)
     lines =<< trim END
         echo 'a' .. test_null_channel()
     END
-    CheckDefAndScriptFailure(lines, ['E1105:', 'E908:'], 1)
+    v9.CheckDefAndScriptFailure(lines, ['E1105:', 'E908:'], 1)
   endif
 enddef
 
@@ -1423,53 +1423,53 @@
         assert_equal(9.9, g:anint - g:afloat)
         assert_equal(-9.9, g:afloat - g:anint)
     END
-    CheckDefAndScriptSuccess(lines)
+    v9.CheckDefAndScriptSuccess(lines)
   endif
 enddef
 
 func Test_expr5_fails()
   let msg = "White space required before and after '+'"
-  call CheckDefAndScriptFailure(["var x = 1+2"], msg, 1)
-  call CheckDefAndScriptFailure(["var x = 1 +2"], msg, 1)
-  call CheckDefAndScriptFailure(["var x = 1+ 2"], msg, 1)
+  call v9.CheckDefAndScriptFailure(["var x = 1+2"], msg, 1)
+  call v9.CheckDefAndScriptFailure(["var x = 1 +2"], msg, 1)
+  call v9.CheckDefAndScriptFailure(["var x = 1+ 2"], msg, 1)
 
   let msg = "White space required before and after '-'"
-  call CheckDefAndScriptFailure(["var x = 1-2"], msg, 1)
-  call CheckDefAndScriptFailure(["var x = 1 -2"], msg, 1)
-  call CheckDefAndScriptFailure(["var x = 1- 2"], msg, 1)
+  call v9.CheckDefAndScriptFailure(["var x = 1-2"], msg, 1)
+  call v9.CheckDefAndScriptFailure(["var x = 1 -2"], msg, 1)
+  call v9.CheckDefAndScriptFailure(["var x = 1- 2"], msg, 1)
 
   let msg = "White space required before and after '..'"
-  call CheckDefAndScriptFailure(["var x = '1'..'2'"], msg, 1)
-  call CheckDefAndScriptFailure(["var x = '1' ..'2'"], msg, 1)
-  call CheckDefAndScriptFailure(["var x = '1'.. '2'"], msg, 1)
+  call v9.CheckDefAndScriptFailure(["var x = '1'..'2'"], msg, 1)
+  call v9.CheckDefAndScriptFailure(["var x = '1' ..'2'"], msg, 1)
+  call v9.CheckDefAndScriptFailure(["var x = '1'.. '2'"], msg, 1)
 
-  call CheckDefAndScriptFailure(["var x = 0z1122 + 33"], ['E1051:', 'E974:'], 1)
-  call CheckDefAndScriptFailure(["var x = 0z1122 + [3]"], ['E1051:', 'E974:'], 1)
-  call CheckDefAndScriptFailure(["var x = 0z1122 + 'asd'"], ['E1051:', 'E974:'], 1)
-  call CheckDefAndScriptFailure(["var x = 33 + 0z1122"], ['E1051:', 'E974:'], 1)
-  call CheckDefAndScriptFailure(["var x = [3] + 0z1122"], ['E1051:', 'E745:'], 1)
-  call CheckDefAndScriptFailure(["var x = 'asdf' + 0z1122"], ['E1051:', 'E1030:'], 1)
-  call CheckDefAndScriptFailure(["var x = 6 + xxx"], ['E1001:', 'E121:'], 1)
+  call v9.CheckDefAndScriptFailure(["var x = 0z1122 + 33"], ['E1051:', 'E974:'], 1)
+  call v9.CheckDefAndScriptFailure(["var x = 0z1122 + [3]"], ['E1051:', 'E974:'], 1)
+  call v9.CheckDefAndScriptFailure(["var x = 0z1122 + 'asd'"], ['E1051:', 'E974:'], 1)
+  call v9.CheckDefAndScriptFailure(["var x = 33 + 0z1122"], ['E1051:', 'E974:'], 1)
+  call v9.CheckDefAndScriptFailure(["var x = [3] + 0z1122"], ['E1051:', 'E745:'], 1)
+  call v9.CheckDefAndScriptFailure(["var x = 'asdf' + 0z1122"], ['E1051:', 'E1030:'], 1)
+  call v9.CheckDefAndScriptFailure(["var x = 6 + xxx"], ['E1001:', 'E121:'], 1)
 
-  call CheckDefAndScriptFailure(["var x = 'a' .. [1]"], ['E1105:', 'E730:'], 1)
-  call CheckDefAndScriptFailure(["var x = 'a' .. {a: 1}"], ['E1105:', 'E731:'], 1)
-  call CheckDefAndScriptFailure(["var x = 'a' .. test_void()"], ['E1105:', 'E908:'], 1)
-  call CheckDefAndScriptFailure(["var x = 'a' .. 0z32"], ['E1105:', 'E976:'], 1)
-  call CheckDefAndScriptFailure(["var x = 'a' .. function('len')"], ['E1105:', 'E729:'], 1)
-  call CheckDefAndScriptFailure(["var x = 'a' .. function('len', ['a'])"], ['E1105:', 'E729:'], 1)
+  call v9.CheckDefAndScriptFailure(["var x = 'a' .. [1]"], ['E1105:', 'E730:'], 1)
+  call v9.CheckDefAndScriptFailure(["var x = 'a' .. {a: 1}"], ['E1105:', 'E731:'], 1)
+  call v9.CheckDefAndScriptFailure(["var x = 'a' .. test_void()"], ['E1105:', 'E908:'], 1)
+  call v9.CheckDefAndScriptFailure(["var x = 'a' .. 0z32"], ['E1105:', 'E976:'], 1)
+  call v9.CheckDefAndScriptFailure(["var x = 'a' .. function('len')"], ['E1105:', 'E729:'], 1)
+  call v9.CheckDefAndScriptFailure(["var x = 'a' .. function('len', ['a'])"], ['E1105:', 'E729:'], 1)
 
-  call CheckDefAndScriptFailure(['var x = 1 + v:none'], ['E1051:', 'E611:'], 1)
-  call CheckDefAndScriptFailure(['var x = 1 + v:null'], ['E1051:', 'E611:'], 1)
-  call CheckDefAndScriptFailure(['var x = 1 + v:true'], ['E1051:', 'E1138:'], 1)
-  call CheckDefAndScriptFailure(['var x = 1 + v:false'], ['E1051:', 'E1138:'], 1)
-  call CheckDefAndScriptFailure(['var x = 1 + true'], ['E1051:', 'E1138:'], 1)
-  call CheckDefAndScriptFailure(['var x = 1 + false'], ['E1051:', 'E1138:'], 1)
+  call v9.CheckDefAndScriptFailure(['var x = 1 + v:none'], ['E1051:', 'E611:'], 1)
+  call v9.CheckDefAndScriptFailure(['var x = 1 + v:null'], ['E1051:', 'E611:'], 1)
+  call v9.CheckDefAndScriptFailure(['var x = 1 + v:true'], ['E1051:', 'E1138:'], 1)
+  call v9.CheckDefAndScriptFailure(['var x = 1 + v:false'], ['E1051:', 'E1138:'], 1)
+  call v9.CheckDefAndScriptFailure(['var x = 1 + true'], ['E1051:', 'E1138:'], 1)
+  call v9.CheckDefAndScriptFailure(['var x = 1 + false'], ['E1051:', 'E1138:'], 1)
 endfunc
 
 func Test_expr5_fails_channel()
-  CheckFeature channel
-  call CheckDefAndScriptFailure(["var x = 'a' .. test_null_job()"], ['E1105:', 'E908:'], 1)
-  call CheckDefAndScriptFailure(["var x = 'a' .. test_null_channel()"], ['E1105:', 'E908:'], 1)
+  g:CheckFeature channel
+  call v9.CheckDefAndScriptFailure(["var x = 'a' .. test_null_job()"], ['E1105:', 'E908:'], 1)
+  call v9.CheckDefAndScriptFailure(["var x = 'a' .. test_null_channel()"], ['E1105:', 'E908:'], 1)
 endfunc
 
 def Test_expr5_list_add()
@@ -1490,7 +1490,7 @@
       # result of glob() is "any", runtime type check
       var sl: list<string> = glob('*.txt', false, true) + ['']
   END
-  CheckDefAndScriptSuccess(lines)
+  v9.CheckDefAndScriptSuccess(lines)
 enddef
 
 " test multiply, divide, modulo
@@ -1532,26 +1532,26 @@
                             * yf[0])
       endif
   END
-  CheckDefAndScriptSuccess(lines)
+  v9.CheckDefAndScriptSuccess(lines)
 
-  CheckDefAndScriptFailure(["var x = 6 * xxx"], ['E1001:', 'E121:'], 1)
-  CheckDefFailure(["var d = 6 * "], 'E1097:', 3)
-  CheckScriptFailure(['vim9script', "var d = 6 * "], 'E15:', 2)
+  v9.CheckDefAndScriptFailure(["var x = 6 * xxx"], ['E1001:', 'E121:'], 1)
+  v9.CheckDefFailure(["var d = 6 * "], 'E1097:', 3)
+  v9.CheckScriptFailure(['vim9script', "var d = 6 * "], 'E15:', 2)
 
-  CheckDefExecAndScriptFailure(['echo 1 / 0'], 'E1154', 1)
-  CheckDefExecAndScriptFailure(['echo 1 % 0'], 'E1154', 1)
+  v9.CheckDefExecAndScriptFailure(['echo 1 / 0'], 'E1154', 1)
+  v9.CheckDefExecAndScriptFailure(['echo 1 % 0'], 'E1154', 1)
 
   lines =<< trim END
     var n = 0
     eval 1 / n
   END
-  CheckDefExecAndScriptFailure(lines, 'E1154', 2)
+  v9.CheckDefExecAndScriptFailure(lines, 'E1154', 2)
 
   lines =<< trim END
     var n = 0
     eval 1 % n
   END
-  CheckDefExecAndScriptFailure(lines, 'E1154', 2)
+  v9.CheckDefExecAndScriptFailure(lines, 'E1154', 2)
 enddef
 
 def Test_expr6_vim9script()
@@ -1562,14 +1562,14 @@
 		/ 3
       assert_equal(80, name)
   END
-  CheckDefAndScriptSuccess(lines)
+  v9.CheckDefAndScriptSuccess(lines)
 
   lines =<< trim END
       var name = 25
       		% 10
       assert_equal(5, name)
   END
-  CheckDefAndScriptSuccess(lines)
+  v9.CheckDefAndScriptSuccess(lines)
 
   lines =<< trim END
       var name = 25
@@ -1579,7 +1579,7 @@
       		% 10
       assert_equal(5, name)
   END
-  CheckDefAndScriptSuccess(lines)
+  v9.CheckDefAndScriptSuccess(lines)
 
   lines =<< trim END
       var name = 11 *
@@ -1587,23 +1587,23 @@
 		3
       assert_equal(80, name)
   END
-  CheckDefAndScriptSuccess(lines)
+  v9.CheckDefAndScriptSuccess(lines)
 
   # check white space
   lines =<< trim END
       echo 5*6
   END
-  CheckDefAndScriptFailure(lines, 'E1004:', 1)
+  v9.CheckDefAndScriptFailure(lines, 'E1004:', 1)
 
   lines =<< trim END
       echo 5 *6
   END
-  CheckDefAndScriptFailure(lines, 'E1004:', 1)
+  v9.CheckDefAndScriptFailure(lines, 'E1004:', 1)
 
   lines =<< trim END
       echo 5* 6
   END
-  CheckDefAndScriptFailure(lines, 'E1004:', 1)
+  v9.CheckDefAndScriptFailure(lines, 'E1004:', 1)
 enddef
 
 def Test_expr6_float()
@@ -1635,57 +1635,57 @@
 
         assert_equal(4.0, 6.0 * 4.0 / 6.0)
     END
-    CheckDefAndScriptSuccess(lines)
+    v9.CheckDefAndScriptSuccess(lines)
   endif
 enddef
 
 func Test_expr6_fails()
   let msg = "White space required before and after '*'"
-  call CheckDefAndScriptFailure(["var x = 1*2"], msg, 1)
-  call CheckDefAndScriptFailure(["var x = 1 *2"], msg, 1)
-  call CheckDefAndScriptFailure(["var x = 1* 2"], msg, 1)
+  call v9.CheckDefAndScriptFailure(["var x = 1*2"], msg, 1)
+  call v9.CheckDefAndScriptFailure(["var x = 1 *2"], msg, 1)
+  call v9.CheckDefAndScriptFailure(["var x = 1* 2"], msg, 1)
 
   let msg = "White space required before and after '/'"
-  call CheckDefAndScriptFailure(["var x = 1/2"], msg, 1)
-  call CheckDefAndScriptFailure(["var x = 1 /2"], msg, 1)
-  call CheckDefAndScriptFailure(["var x = 1/ 2"], msg, 1)
+  call v9.CheckDefAndScriptFailure(["var x = 1/2"], msg, 1)
+  call v9.CheckDefAndScriptFailure(["var x = 1 /2"], msg, 1)
+  call v9.CheckDefAndScriptFailure(["var x = 1/ 2"], msg, 1)
 
   let msg = "White space required before and after '%'"
-  call CheckDefAndScriptFailure(["var x = 1%2"], msg, 1)
-  call CheckDefAndScriptFailure(["var x = 1 %2"], msg, 1)
-  call CheckDefAndScriptFailure(["var x = 1% 2"], msg, 1)
+  call v9.CheckDefAndScriptFailure(["var x = 1%2"], msg, 1)
+  call v9.CheckDefAndScriptFailure(["var x = 1 %2"], msg, 1)
+  call v9.CheckDefAndScriptFailure(["var x = 1% 2"], msg, 1)
 
-  call CheckDefAndScriptFailure(["var x = '1' * '2'"], ['E1036:', 'E1030:'], 1)
-  call CheckDefAndScriptFailure(["var x = '1' / '2'"], ['E1036:', 'E1030:'], 1)
-  call CheckDefAndScriptFailure(["var x = '1' % '2'"], ['E1035:', 'E1030:'], 1)
+  call v9.CheckDefAndScriptFailure(["var x = '1' * '2'"], ['E1036:', 'E1030:'], 1)
+  call v9.CheckDefAndScriptFailure(["var x = '1' / '2'"], ['E1036:', 'E1030:'], 1)
+  call v9.CheckDefAndScriptFailure(["var x = '1' % '2'"], ['E1035:', 'E1030:'], 1)
 
-  call CheckDefAndScriptFailure(["var x = 0z01 * 0z12"], ['E1036:', 'E974:'], 1)
-  call CheckDefAndScriptFailure(["var x = 0z01 / 0z12"], ['E1036:', 'E974:'], 1)
-  call CheckDefAndScriptFailure(["var x = 0z01 % 0z12"], ['E1035:', 'E974:'], 1)
+  call v9.CheckDefAndScriptFailure(["var x = 0z01 * 0z12"], ['E1036:', 'E974:'], 1)
+  call v9.CheckDefAndScriptFailure(["var x = 0z01 / 0z12"], ['E1036:', 'E974:'], 1)
+  call v9.CheckDefAndScriptFailure(["var x = 0z01 % 0z12"], ['E1035:', 'E974:'], 1)
 
-  call CheckDefAndScriptFailure(["var x = [1] * [2]"], ['E1036:', 'E745:'], 1)
-  call CheckDefAndScriptFailure(["var x = [1] / [2]"], ['E1036:', 'E745:'], 1)
-  call CheckDefAndScriptFailure(["var x = [1] % [2]"], ['E1035:', 'E745:'], 1)
+  call v9.CheckDefAndScriptFailure(["var x = [1] * [2]"], ['E1036:', 'E745:'], 1)
+  call v9.CheckDefAndScriptFailure(["var x = [1] / [2]"], ['E1036:', 'E745:'], 1)
+  call v9.CheckDefAndScriptFailure(["var x = [1] % [2]"], ['E1035:', 'E745:'], 1)
 
-  call CheckDefAndScriptFailure(["var x = {one: 1} * {two: 2}"], ['E1036:', 'E728:'], 1)
-  call CheckDefAndScriptFailure(["var x = {one: 1} / {two: 2}"], ['E1036:', 'E728:'], 1)
-  call CheckDefAndScriptFailure(["var x = {one: 1} % {two: 2}"], ['E1035:', 'E728:'], 1)
+  call v9.CheckDefAndScriptFailure(["var x = {one: 1} * {two: 2}"], ['E1036:', 'E728:'], 1)
+  call v9.CheckDefAndScriptFailure(["var x = {one: 1} / {two: 2}"], ['E1036:', 'E728:'], 1)
+  call v9.CheckDefAndScriptFailure(["var x = {one: 1} % {two: 2}"], ['E1035:', 'E728:'], 1)
 
-  call CheckDefAndScriptFailure(["var x = 0xff[1]"], ['E1107:', 'E1062:'], 1)
+  call v9.CheckDefAndScriptFailure(["var x = 0xff[1]"], ['E1107:', 'E1062:'], 1)
   if has('float')
-    call CheckDefAndScriptFailure(["var x = 0.7[1]"], ['E1107:', 'E806:'], 1)
+    call v9.CheckDefAndScriptFailure(["var x = 0.7[1]"], ['E1107:', 'E806:'], 1)
   endif
 
   for op in ['*', '/', '%']
     let lines = ['var x = 1', op .. '2', '# comment']
     let msg = printf("E1004: White space required before and after '%s' at \"%s2\"", op, op)
-    call CheckDefAndScriptFailure(lines, msg, 2)
+    call v9.CheckDefAndScriptFailure(lines, msg, 2)
   endfor
 endfunc
 
 func Test_expr6_float_fails()
-  CheckFeature float
-  call CheckDefAndScriptFailure(["var x = 1.0 % 2"], ['E1035:', 'E804:'], 1)
+  g:CheckFeature float
+  call v9.CheckDefAndScriptFailure(["var x = 1.0 % 2"], ['E1035:', 'E804:'], 1)
 endfunc
 
 " define here to use old style parsing
@@ -1732,14 +1732,14 @@
         text = <number>'xxx'
       endif
   END
-  CheckDefAndScriptSuccess(lines)
+  v9.CheckDefAndScriptSuccess(lines)
 
-  CheckDefAndScriptFailure(["var x = <nr>123"], 'E1010:', 1)
-  CheckDefFailure(["var x = <number>"], 'E1097:', 3)
-  CheckDefFailure(["var x = <number>string(1)"], 'E1012:', 1)
-  CheckScriptFailure(['vim9script', "var x = <number>"], 'E15:', 2)
-  CheckDefAndScriptFailure(["var x = <number >123"], 'E1068:', 1)
-  CheckDefAndScriptFailure(["var x = <number 123"], 'E1104:', 1)
+  v9.CheckDefAndScriptFailure(["var x = <nr>123"], 'E1010:', 1)
+  v9.CheckDefFailure(["var x = <number>"], 'E1097:', 3)
+  v9.CheckDefFailure(["var x = <number>string(1)"], 'E1012:', 1)
+  v9.CheckScriptFailure(['vim9script', "var x = <number>"], 'E15:', 2)
+  v9.CheckDefAndScriptFailure(["var x = <number >123"], 'E1068:', 1)
+  v9.CheckDefAndScriptFailure(["var x = <number 123"], 'E1104:', 1)
 enddef
 
 " test low level expression
@@ -1753,7 +1753,7 @@
       assert_equal(15, 0xf)
       assert_equal(255, 0xff)
   END
-  CheckDefAndScriptSuccess(lines)
+  v9.CheckDefAndScriptSuccess(lines)
 enddef
 
 def Test_expr8_float()
@@ -1767,7 +1767,7 @@
         assert_equal(g:float_neg, -9.8)
         assert_equal(g:float_big, 9.9e99)
     END
-    CheckDefAndScriptSuccess(lines)
+    v9.CheckDefAndScriptSuccess(lines)
   endif
 enddef
 
@@ -1798,9 +1798,9 @@
       assert_equal(0z, testblob[3 : 3])
       assert_equal(0z, testblob[0 : -4])
   END
-  CheckDefAndScriptSuccess(lines)
+  v9.CheckDefAndScriptSuccess(lines)
 
-  CheckDefAndScriptFailure(["var x = 0z123"], 'E973:', 1)
+  v9.CheckDefAndScriptFailure(["var x = 0z123"], 'E973:', 1)
 enddef
 
 def Test_expr8_string()
@@ -1814,34 +1814,34 @@
       assert_equal(g:string_long, "abcdefghijklm")
       assert_equal(g:string_special, "ab\ncd\ref\ekk")
   END
-  CheckDefAndScriptSuccess(lines)
+  v9.CheckDefAndScriptSuccess(lines)
 
-  CheckDefAndScriptFailure(['var x = "abc'], 'E114:', 1)
-  CheckDefAndScriptFailure(["var x = 'abc"], 'E115:', 1)
+  v9.CheckDefAndScriptFailure(['var x = "abc'], 'E114:', 1)
+  v9.CheckDefAndScriptFailure(["var x = 'abc"], 'E115:', 1)
 enddef
 
 def Test_expr8_vimvar()
   v:errors = []
   var errs: list<string> = v:errors
-  CheckDefFailure(['var errs: list<number> = v:errors'], 'E1012:')
+  v9.CheckDefFailure(['var errs: list<number> = v:errors'], 'E1012:')
 
   var old: list<string> = v:oldfiles
-  CheckDefFailure(['var old: list<number> = v:oldfiles'], 'E1012:')
+  v9.CheckDefFailure(['var old: list<number> = v:oldfiles'], 'E1012:')
 
   var compl: dict<string> = v:completed_item
-  CheckDefFailure(['var compl: dict<number> = v:completed_item'], 'E1012:')
+  v9.CheckDefFailure(['var compl: dict<number> = v:completed_item'], 'E1012:')
 
   var args: list<string> = v:argv
-  CheckDefFailure(['var args: list<number> = v:argv'], 'E1012:')
+  v9.CheckDefFailure(['var args: list<number> = v:argv'], 'E1012:')
 
   var colors: dict<string> = v:colornames
-  CheckDefFailure(['var colors: dict<number> = v:colornames'], 'E1012:')
+  v9.CheckDefFailure(['var colors: dict<number> = v:colornames'], 'E1012:')
 
-  CheckDefFailure(["var old: list<number> = v:oldfiles"], 'E1012: Type mismatch; expected list<number> but got list<string>', 1)
-  CheckScriptFailure(['vim9script', 'v:oldfiles = ["foo"]', "var old: list<number> = v:oldfiles"], 'E1012: Type mismatch; expected list<number> but got list<string>', 3)
+  v9.CheckDefFailure(["var old: list<number> = v:oldfiles"], 'E1012: Type mismatch; expected list<number> but got list<string>', 1)
+  v9.CheckScriptFailure(['vim9script', 'v:oldfiles = ["foo"]', "var old: list<number> = v:oldfiles"], 'E1012: Type mismatch; expected list<number> but got list<string>', 3)
   new
   exec "normal! afoo fo\<C-N>\<Esc>"
-  CheckDefExecAndScriptFailure(["var old: dict<number> = v:completed_item"], 'E1012: Type mismatch; expected dict<number> but got dict<string>', 1)
+  v9.CheckDefExecAndScriptFailure(["var old: dict<number> = v:completed_item"], 'E1012: Type mismatch; expected dict<number> but got dict<string>', 1)
   bwipe!
 enddef
 
@@ -1873,13 +1873,13 @@
       assert_equal(g:special_null, null)
       assert_equal(g:special_none, v:none)
   END
-  CheckDefAndScriptSuccess(lines)
+  v9.CheckDefAndScriptSuccess(lines)
 
-  CheckDefAndScriptFailure(['v:true = true'], 'E46:', 1)
-  CheckDefAndScriptFailure(['v:true = false'], 'E46:', 1)
-  CheckDefAndScriptFailure(['v:false = true'], 'E46:', 1)
-  CheckDefAndScriptFailure(['v:null = 11'], 'E46:', 1)
-  CheckDefAndScriptFailure(['v:none = 22'], 'E46:', 1)
+  v9.CheckDefAndScriptFailure(['v:true = true'], 'E46:', 1)
+  v9.CheckDefAndScriptFailure(['v:true = false'], 'E46:', 1)
+  v9.CheckDefAndScriptFailure(['v:false = true'], 'E46:', 1)
+  v9.CheckDefAndScriptFailure(['v:null = 11'], 'E46:', 1)
+  v9.CheckDefAndScriptFailure(['v:none = 22'], 'E46:', 1)
 enddef
 
 def Test_expr8_list()
@@ -1908,32 +1908,32 @@
       llstring = [[], ['text']]
       llstring = [[], []]
   END
-  CheckDefAndScriptSuccess(lines)
+  v9.CheckDefAndScriptSuccess(lines)
 
   var rangelist: list<number> = range(3)
   g:rangelist = range(3)
-  CheckDefExecAndScriptFailure(["var x: list<string> = g:rangelist"], 'E1012: Type mismatch; expected list<string> but got list<number>', 1)
+  v9.CheckDefExecAndScriptFailure(["var x: list<string> = g:rangelist"], 'E1012: Type mismatch; expected list<string> but got list<number>', 1)
 
-  CheckDefAndScriptFailure(["var x = 1234[3]"], ['E1107:', 'E1062:'], 1)
-  CheckDefExecAndScriptFailure(["var x = g:anint[3]"], 'E1062:', 1)
+  v9.CheckDefAndScriptFailure(["var x = 1234[3]"], ['E1107:', 'E1062:'], 1)
+  v9.CheckDefExecAndScriptFailure(["var x = g:anint[3]"], 'E1062:', 1)
 
-  CheckDefAndScriptFailure(["var x = g:list_mixed[xxx]"], ['E1001:', 'E121:'], 1)
+  v9.CheckDefAndScriptFailure(["var x = g:list_mixed[xxx]"], ['E1001:', 'E121:'], 1)
 
-  CheckDefAndScriptFailure(["var x = [1,2,3]"], 'E1069:', 1)
-  CheckDefAndScriptFailure(["var x = [1 ,2, 3]"], 'E1068:', 1)
+  v9.CheckDefAndScriptFailure(["var x = [1,2,3]"], 'E1069:', 1)
+  v9.CheckDefAndScriptFailure(["var x = [1 ,2, 3]"], 'E1068:', 1)
 
-  CheckDefExecAndScriptFailure(["echo 1", "var x = [][0]", "echo 3"], 'E684:', 2)
+  v9.CheckDefExecAndScriptFailure(["echo 1", "var x = [][0]", "echo 3"], 'E684:', 2)
 
-  CheckDefExecAndScriptFailure(["var x = g:list_mixed['xx']"], ['E1012:', 'E1030:'], 1)
-  CheckDefFailure(["var x = g:list_mixed["], 'E1097:', 3)
-  CheckScriptFailure(['vim9script', "var x = g:list_mixed["], 'E15:', 2)
-  CheckDefFailure(["var x = g:list_mixed[0"], 'E1097:', 3)
-  CheckScriptFailure(['vim9script', "var x = g:list_mixed[0"], 'E111:', 2)
-  CheckDefExecAndScriptFailure(["var x = g:list_empty[3]"], 'E684:', 1)
-  CheckDefExecAndScriptFailure(["var l: list<number> = [234, 'x']"], 'E1012:', 1)
-  CheckDefExecAndScriptFailure(["var l: list<number> = ['x', 234]"], 'E1012:', 1)
-  CheckDefExecAndScriptFailure(["var l: list<string> = [234, 'x']"], 'E1012:', 1)
-  CheckDefExecAndScriptFailure(["var l: list<string> = ['x', 123]"], 'E1012:', 1)
+  v9.CheckDefExecAndScriptFailure(["var x = g:list_mixed['xx']"], ['E1012:', 'E1030:'], 1)
+  v9.CheckDefFailure(["var x = g:list_mixed["], 'E1097:', 3)
+  v9.CheckScriptFailure(['vim9script', "var x = g:list_mixed["], 'E15:', 2)
+  v9.CheckDefFailure(["var x = g:list_mixed[0"], 'E1097:', 3)
+  v9.CheckScriptFailure(['vim9script', "var x = g:list_mixed[0"], 'E111:', 2)
+  v9.CheckDefExecAndScriptFailure(["var x = g:list_empty[3]"], 'E684:', 1)
+  v9.CheckDefExecAndScriptFailure(["var l: list<number> = [234, 'x']"], 'E1012:', 1)
+  v9.CheckDefExecAndScriptFailure(["var l: list<number> = ['x', 234]"], 'E1012:', 1)
+  v9.CheckDefExecAndScriptFailure(["var l: list<string> = [234, 'x']"], 'E1012:', 1)
+  v9.CheckDefExecAndScriptFailure(["var l: list<string> = ['x', 123]"], 'E1012:', 1)
 
   lines =<< trim END
       var datalist: list<string>
@@ -1942,17 +1942,17 @@
       enddef
       Main()
   END
-  CheckDefAndScriptFailure(lines, 'E1127:')
+  v9.CheckDefAndScriptFailure(lines, 'E1127:')
 
   lines =<< trim END
       var numbers = [1, 2, 3, 4]
       var a = 1
       var b = 2
   END
-  CheckDefAndScriptFailure(lines + ['echo numbers[1:b]'],
+  v9.CheckDefAndScriptFailure(lines + ['echo numbers[1:b]'],
       'E1004: White space required before and after '':'' at ":b]"', 4)
-  CheckDefAndScriptFailure(lines + ['echo numbers[1: b]'], 'E1004:', 4)
-  CheckDefAndScriptFailure(lines + ['echo numbers[a :b]'], 'E1004:', 4)
+  v9.CheckDefAndScriptFailure(lines + ['echo numbers[1: b]'], 'E1004:', 4)
+  v9.CheckDefAndScriptFailure(lines + ['echo numbers[a :b]'], 'E1004:', 4)
 enddef
 
 def Test_expr8_list_vim9script()
@@ -1973,44 +1973,44 @@
             # comment
 		    4]
   END
-  CheckDefAndScriptSuccess(lines)
+  v9.CheckDefAndScriptSuccess(lines)
 
   lines =<< trim END
       var l = [11,
 		22]
       assert_equal([11, 22], l)
   END
-  CheckDefAndScriptSuccess(lines)
+  v9.CheckDefAndScriptSuccess(lines)
 
   lines =<< trim END
       var l = [11,22]
   END
-  CheckDefAndScriptFailure(lines, 'E1069:', 1)
+  v9.CheckDefAndScriptFailure(lines, 'E1069:', 1)
 
   lines =<< trim END
       var l = [11 , 22]
   END
-  CheckDefAndScriptFailure(lines, 'E1068:', 1)
+  v9.CheckDefAndScriptFailure(lines, 'E1068:', 1)
 
   lines =<< trim END
     var l: list<number> = [234, 'x']
   END
-  CheckDefAndScriptFailure(lines, 'E1012:', 1)
+  v9.CheckDefAndScriptFailure(lines, 'E1012:', 1)
 
   lines =<< trim END
     var l: list<number> = ['x', 234]
   END
-  CheckDefAndScriptFailure(lines, 'E1012:', 1)
+  v9.CheckDefAndScriptFailure(lines, 'E1012:', 1)
 
   lines =<< trim END
     var l: list<string> = ['x', 234]
   END
-  CheckDefAndScriptFailure(lines, 'E1012:', 1)
+  v9.CheckDefAndScriptFailure(lines, 'E1012:', 1)
 
   lines =<< trim END
     var l: list<string> = [234, 'x']
   END
-  CheckDefAndScriptFailure(lines, 'E1012:', 1)
+  v9.CheckDefAndScriptFailure(lines, 'E1012:', 1)
 
   lines =<< trim END
       def Failing()
@@ -2019,9 +2019,9 @@
       var list = [Failing]
   END
   if has('channel')
-    CheckDefAndScriptFailure(lines, 'E119:', 0)
+    v9.CheckDefAndScriptFailure(lines, 'E119:', 0)
   else
-    CheckDefAndScriptFailure(lines, 'E117:', 0)
+    v9.CheckDefAndScriptFailure(lines, 'E117:', 0)
   endif
 enddef
 
@@ -2084,49 +2084,49 @@
       assert_equal([{key: 12}], filter(dl,
             (_, v) => has_key(v, 'key') ? v['key'] == 12 : 0))
 
-      assert_equal(false, LambdaWithComments()(0))
-      assert_equal(true, LambdaWithComments()(1))
-      assert_equal(true, LambdaWithComments()(2))
-      assert_equal(false, LambdaWithComments()(3))
+      assert_equal(false, g:LambdaWithComments()(0))
+      assert_equal(true, g:LambdaWithComments()(1))
+      assert_equal(true, g:LambdaWithComments()(2))
+      assert_equal(false, g:LambdaWithComments()(3))
 
-      assert_equal(false, LambdaUsingArg(0)())
-      assert_equal(true, LambdaUsingArg(1)())
+      assert_equal(false, g:LambdaUsingArg(0)())
+      assert_equal(true, g:LambdaUsingArg(1)())
 
       var res = map([1, 2, 3], (i: number, v: number) => i + v)
       assert_equal([1, 3, 5], res)
   END
-  CheckDefAndScriptSuccess(lines)
+  v9.CheckDefAndScriptSuccess(lines)
 
-  CheckDefAndScriptFailure(["var Ref = (a)=>a + 1"], 'E1004:')
-  CheckDefAndScriptFailure(["var Ref = (a)=> a + 1"], 'E1004: White space required before and after ''=>'' at "=> a + 1"')
-  CheckDefAndScriptFailure(["var Ref = (a) =>a + 1"], 'E1004:')
-  CheckDefAndScriptFailure(["var Ref = (a) =< a + 1"], ['E1001:', 'E121:'])
-  CheckDefAndScriptFailure(["var Ref = (a: int) => a + 1"], 'E1010:')
-  CheckDefAndScriptFailure(["var Ref = (a): int => a + 1"], 'E1010:')
+  v9.CheckDefAndScriptFailure(["var Ref = (a)=>a + 1"], 'E1004:')
+  v9.CheckDefAndScriptFailure(["var Ref = (a)=> a + 1"], 'E1004: White space required before and after ''=>'' at "=> a + 1"')
+  v9.CheckDefAndScriptFailure(["var Ref = (a) =>a + 1"], 'E1004:')
+  v9.CheckDefAndScriptFailure(["var Ref = (a) =< a + 1"], ['E1001:', 'E121:'])
+  v9.CheckDefAndScriptFailure(["var Ref = (a: int) => a + 1"], 'E1010:')
+  v9.CheckDefAndScriptFailure(["var Ref = (a): int => a + 1"], 'E1010:')
 
-  CheckDefAndScriptFailure(["filter([1, 2], (k,v) => 1)"], 'E1069:', 1)
+  v9.CheckDefAndScriptFailure(["filter([1, 2], (k,v) => 1)"], 'E1069:', 1)
   # error is in first line of the lambda
-  CheckDefAndScriptFailure(["var L = (a) => a + b"], 'E1001:', 0)
+  v9.CheckDefAndScriptFailure(["var L = (a) => a + b"], 'E1001:', 0)
 
   assert_equal('xxxyyy', 'xxx'->((a, b) => a .. b)('yyy'))
 
-  CheckDefExecFailure(["var s = 'asdf'->((a) => a)('x')"], 'E118:')
-  CheckDefExecFailure(["var s = 'asdf'->((a) => a)('x', 'y')"], 'E118:')
-  CheckDefAndScriptFailure(["echo 'asdf'->((a) => a)(x)"], ['E1001:', 'E121:'], 1)
+  v9.CheckDefExecFailure(["var s = 'asdf'->((a) => a)('x')"], 'E118:')
+  v9.CheckDefExecFailure(["var s = 'asdf'->((a) => a)('x', 'y')"], 'E118:')
+  v9.CheckDefAndScriptFailure(["echo 'asdf'->((a) => a)(x)"], ['E1001:', 'E121:'], 1)
 
-  CheckDefAndScriptSuccess(['var Fx = (a) => ({k1: 0,', ' k2: 1})'])
-  CheckDefAndScriptFailure(['var Fx = (a) => ({k1: 0', ' k2: 1})'], 'E722:', 2)
-  CheckDefAndScriptFailure(['var Fx = (a) => ({k1: 0,', ' k2 1})'], 'E720:', 2)
+  v9.CheckDefAndScriptSuccess(['var Fx = (a) => ({k1: 0,', ' k2: 1})'])
+  v9.CheckDefAndScriptFailure(['var Fx = (a) => ({k1: 0', ' k2: 1})'], 'E722:', 2)
+  v9.CheckDefAndScriptFailure(['var Fx = (a) => ({k1: 0,', ' k2 1})'], 'E720:', 2)
 
-  CheckDefAndScriptSuccess(['var Fx = (a) => [0,', ' 1]'])
-  CheckDefAndScriptFailure(['var Fx = (a) => [0', ' 1]'], 'E696:', 2)
+  v9.CheckDefAndScriptSuccess(['var Fx = (a) => [0,', ' 1]'])
+  v9.CheckDefAndScriptFailure(['var Fx = (a) => [0', ' 1]'], 'E696:', 2)
 
   # no error for existing script variable when checking for lambda
   lines =<< trim END
     var name = 0
     eval (name + 2) / 3
   END
-  CheckDefAndScriptSuccess(lines)
+  v9.CheckDefAndScriptSuccess(lines)
 enddef
 
 def Test_expr8_lambda_block()
@@ -2154,41 +2154,41 @@
         }
       assert_equal(10, Safe(3))
   END
-  CheckDefAndScriptSuccess(lines)
+  v9.CheckDefAndScriptSuccess(lines)
 
   lines =<< trim END
       map([1, 2], (k, v) => { redrawt })
   END
-  CheckDefAndScriptFailure(lines, 'E488')
+  v9.CheckDefAndScriptFailure(lines, 'E488')
 
   lines =<< trim END
       var Func = (nr: int) => {
               echo nr
             }
   END
-  CheckDefAndScriptFailure(lines, 'E1010', 1)
+  v9.CheckDefAndScriptFailure(lines, 'E1010', 1)
 
   lines =<< trim END
       var Func = (nr: number): int => {
               return nr
             }
   END
-  CheckDefAndScriptFailure(lines, 'E1010', 1)
+  v9.CheckDefAndScriptFailure(lines, 'E1010', 1)
 
   lines =<< trim END
       var Func = (nr: number): int => {
               return nr
   END
-  CheckDefFailure(lines, 'E1171', 0)  # line nr is function start
-  CheckScriptFailure(['vim9script'] + lines, 'E1171', 2)
+  v9.CheckDefFailure(lines, 'E1171', 0)  # line nr is function start
+  v9.CheckScriptFailure(['vim9script'] + lines, 'E1171', 2)
 
   lines =<< trim END
       var Func = (nr: number): int => {
           var ll =<< ENDIT
              nothing
   END
-  CheckDefFailure(lines, 'E1145: Missing heredoc end marker: ENDIT', 0)
-  CheckScriptFailure(['vim9script'] + lines, 'E1145: Missing heredoc end marker: ENDIT', 2)
+  v9.CheckDefFailure(lines, 'E1145: Missing heredoc end marker: ENDIT', 0)
+  v9.CheckScriptFailure(['vim9script'] + lines, 'E1145: Missing heredoc end marker: ENDIT', 2)
 enddef
 
 def NewLambdaWithComments(): func
@@ -2243,13 +2243,13 @@
       assert_equal([{key: 12}], filter(dl,
             (_, v) => has_key(v, 'key') ? v['key'] == 12 : 0))
 
-      assert_equal(false, NewLambdaWithComments()(0))
-      assert_equal(true, NewLambdaWithComments()(1))
-      assert_equal(true, NewLambdaWithComments()(2))
-      assert_equal(false, NewLambdaWithComments()(3))
+      assert_equal(false, g:NewLambdaWithComments()(0))
+      assert_equal(true, g:NewLambdaWithComments()(1))
+      assert_equal(true, g:NewLambdaWithComments()(2))
+      assert_equal(false, g:NewLambdaWithComments()(3))
 
-      assert_equal(false, NewLambdaUsingArg(0)())
-      assert_equal(true, NewLambdaUsingArg(1)())
+      assert_equal(false, g:NewLambdaUsingArg(0)())
+      assert_equal(true, g:NewLambdaUsingArg(1)())
 
       var res = map([1, 2, 3], (i: number, v: number) => i + v)
       assert_equal([1, 3, 5], res)
@@ -2266,32 +2266,32 @@
       var Fy = (a) => [0,
                        1]
   END
-  CheckDefAndScriptSuccess(lines)
+  v9.CheckDefAndScriptSuccess(lines)
 
-  CheckDefAndScriptFailure(["var Ref = (a)=>a + 1"], 'E1004:')
-  CheckDefAndScriptFailure(["var Ref = (a)=> a + 1"], 'E1004:')
-  CheckDefAndScriptFailure(["var Ref = (a) =>a + 1"],
+  v9.CheckDefAndScriptFailure(["var Ref = (a)=>a + 1"], 'E1004:')
+  v9.CheckDefAndScriptFailure(["var Ref = (a)=> a + 1"], 'E1004:')
+  v9.CheckDefAndScriptFailure(["var Ref = (a) =>a + 1"],
       'E1004: White space required before and after ''=>'' at " =>a + 1"')
 
-  CheckDefAndScriptFailure(["var Ref: func(number): number = (a: number): string => 'x'"], 'E1012:')
-  CheckDefAndScriptFailure(["var Ref: func(number): string = (a: number): string => 99"], 'E1012:')
+  v9.CheckDefAndScriptFailure(["var Ref: func(number): number = (a: number): string => 'x'"], 'E1012:')
+  v9.CheckDefAndScriptFailure(["var Ref: func(number): string = (a: number): string => 99"], 'E1012:')
 
-  CheckDefAndScriptFailure(["filter([1, 2], (k,v) => 1)"], 'E1069:', 1)
+  v9.CheckDefAndScriptFailure(["filter([1, 2], (k,v) => 1)"], 'E1069:', 1)
   # error is in first line of the lambda
-  CheckDefAndScriptFailure(["var L = (a) -> a + b"], ['E1001:', 'E121:'], 1)
+  v9.CheckDefAndScriptFailure(["var L = (a) -> a + b"], ['E1001:', 'E121:'], 1)
 
   assert_equal('xxxyyy', 'xxx'->((a, b) => a .. b)('yyy'))
 
-  CheckDefExecFailure(["var s = 'asdf'->((a) => a)('x')"],
+  v9.CheckDefExecFailure(["var s = 'asdf'->((a) => a)('x')"],
         'E118: Too many arguments for function:')
-  CheckDefExecFailure(["var s = 'asdf'->((a) => a)('x', 'y')"],
+  v9.CheckDefExecFailure(["var s = 'asdf'->((a) => a)('x', 'y')"],
         'E118: Too many arguments for function:')
-  CheckDefFailure(["echo 'asdf'->((a) => a)(x)"], 'E1001:', 1)
+  v9.CheckDefFailure(["echo 'asdf'->((a) => a)(x)"], 'E1001:', 1)
 
-  CheckDefAndScriptFailure(['var Fx = (a) => ({k1: 0', ' k2: 1})'], 'E722:', 2)
-  CheckDefAndScriptFailure(['var Fx = (a) => ({k1: 0,', ' k2 1})'], 'E720:', 2)
+  v9.CheckDefAndScriptFailure(['var Fx = (a) => ({k1: 0', ' k2: 1})'], 'E722:', 2)
+  v9.CheckDefAndScriptFailure(['var Fx = (a) => ({k1: 0,', ' k2 1})'], 'E720:', 2)
 
-  CheckDefAndScriptFailure(['var Fx = (a) => [0', ' 1]'], 'E696:', 2)
+  v9.CheckDefAndScriptFailure(['var Fx = (a) => [0', ' 1]'], 'E696:', 2)
 enddef
 
 def Test_expr8_lambda_vim9script()
@@ -2302,7 +2302,7 @@
             )()
       assert_equal(12, v)
   END
-  CheckDefAndScriptSuccess(lines)
+  v9.CheckDefAndScriptSuccess(lines)
 
   # nested lambda with line breaks
   lines =<< trim END
@@ -2310,7 +2310,7 @@
 	synstack('.', col('.'))
           ->mapnew((_, v) => synIDattr(v, 'name'))->len())
   END
-  CheckDefAndScriptSuccess(lines)
+  v9.CheckDefAndScriptSuccess(lines)
 enddef
 
 def Test_expr8_funcref()
@@ -2321,7 +2321,7 @@
       var FuncRef = RetNumber
       assert_equal(123, FuncRef())
   END
-  CheckDefAndScriptSuccess(lines)
+  v9.CheckDefAndScriptSuccess(lines)
 
   lines =<< trim END
       vim9script
@@ -2344,7 +2344,7 @@
       enddef
       Test()
   END
-  CheckScriptSuccess(lines)
+  v9.CheckScriptSuccess(lines)
 enddef
 
 let g:test_space_dict = {'': 'empty', ' ': 'space'}
@@ -2425,40 +2425,40 @@
       var x1: number #{{ fold
       var x2 = 9 #{{ fold
   END
-  CheckDefAndScriptSuccess(lines)
+  v9.CheckDefAndScriptSuccess(lines)
  
   # legacy syntax doesn't work
-  CheckDefAndScriptFailure(["var x = #{key: 8}"], 'E1170:', 1)
-  CheckDefAndScriptFailure(["var x = 'a' #{a: 1}"], 'E1170:', 1)
-  CheckDefAndScriptFailure(["var x = 'a' .. #{a: 1}"], 'E1170:', 1)
-  CheckDefAndScriptFailure(["var x = true ? #{a: 1}"], 'E1170:', 1)
+  v9.CheckDefAndScriptFailure(["var x = #{key: 8}"], 'E1170:', 1)
+  v9.CheckDefAndScriptFailure(["var x = 'a' #{a: 1}"], 'E1170:', 1)
+  v9.CheckDefAndScriptFailure(["var x = 'a' .. #{a: 1}"], 'E1170:', 1)
+  v9.CheckDefAndScriptFailure(["var x = true ? #{a: 1}"], 'E1170:', 1)
 
-  CheckDefAndScriptFailure(["var x = {a:8}"], 'E1069:', 1)
-  CheckDefAndScriptFailure(["var x = {a : 8}"], 'E1068:', 1)
-  CheckDefAndScriptFailure(["var x = {a :8}"], 'E1068:', 1)
-  CheckDefAndScriptFailure(["var x = {a: 8 , b: 9}"], 'E1068:', 1)
-  CheckDefAndScriptFailure(["var x = {a: 1,b: 2}"], 'E1069:', 1)
+  v9.CheckDefAndScriptFailure(["var x = {a:8}"], 'E1069:', 1)
+  v9.CheckDefAndScriptFailure(["var x = {a : 8}"], 'E1068:', 1)
+  v9.CheckDefAndScriptFailure(["var x = {a :8}"], 'E1068:', 1)
+  v9.CheckDefAndScriptFailure(["var x = {a: 8 , b: 9}"], 'E1068:', 1)
+  v9.CheckDefAndScriptFailure(["var x = {a: 1,b: 2}"], 'E1069:', 1)
 
-  CheckDefAndScriptFailure(["var x = {xxx}"], 'E720:', 1)
-  CheckDefAndScriptFailure(["var x = {xxx: 1", "var y = 2"], 'E722:', 2)
-  CheckDefFailure(["var x = {xxx: 1,"], 'E723:', 2)
-  CheckScriptFailure(['vim9script', "var x = {xxx: 1,"], 'E723:', 2)
-  CheckDefAndScriptFailure(["var x = {['a']: xxx}"], ['E1001:', 'E121:'], 1)
-  CheckDefAndScriptFailure(["var x = {a: 1, a: 2}"], 'E721:', 1)
-  CheckDefExecAndScriptFailure(["var x = g:anint.member"], ['E715:', 'E488:'], 1)
-  CheckDefExecAndScriptFailure(["var x = g:dict_empty.member"], 'E716:', 1)
+  v9.CheckDefAndScriptFailure(["var x = {xxx}"], 'E720:', 1)
+  v9.CheckDefAndScriptFailure(["var x = {xxx: 1", "var y = 2"], 'E722:', 2)
+  v9.CheckDefFailure(["var x = {xxx: 1,"], 'E723:', 2)
+  v9.CheckScriptFailure(['vim9script', "var x = {xxx: 1,"], 'E723:', 2)
+  v9.CheckDefAndScriptFailure(["var x = {['a']: xxx}"], ['E1001:', 'E121:'], 1)
+  v9.CheckDefAndScriptFailure(["var x = {a: 1, a: 2}"], 'E721:', 1)
+  v9.CheckDefExecAndScriptFailure(["var x = g:anint.member"], ['E715:', 'E488:'], 1)
+  v9.CheckDefExecAndScriptFailure(["var x = g:dict_empty.member"], 'E716:', 1)
 
-  CheckDefExecAndScriptFailure(['var x: dict<number> = {a: 234, b: "1"}'], 'E1012:', 1)
-  CheckDefExecAndScriptFailure(['var x: dict<number> = {a: "x", b: 134}'], 'E1012:', 1)
-  CheckDefExecAndScriptFailure(['var x: dict<string> = {a: 234, b: "1"}'], 'E1012:', 1)
-  CheckDefExecAndScriptFailure(['var x: dict<string> = {a: "x", b: 134}'], 'E1012:', 1)
+  v9.CheckDefExecAndScriptFailure(['var x: dict<number> = {a: 234, b: "1"}'], 'E1012:', 1)
+  v9.CheckDefExecAndScriptFailure(['var x: dict<number> = {a: "x", b: 134}'], 'E1012:', 1)
+  v9.CheckDefExecAndScriptFailure(['var x: dict<string> = {a: 234, b: "1"}'], 'E1012:', 1)
+  v9.CheckDefExecAndScriptFailure(['var x: dict<string> = {a: "x", b: 134}'], 'E1012:', 1)
 
   # invalid types for the key
-  CheckDefAndScriptFailure(["var x = {[[1, 2]]: 0}"], ['E1105:', 'E730:'], 1)
+  v9.CheckDefAndScriptFailure(["var x = {[[1, 2]]: 0}"], ['E1105:', 'E730:'], 1)
 
-  CheckDefFailure(['var x = ({'], 'E723:', 2)
-  CheckScriptFailure(['vim9script', 'var x = ({'], 'E723:', 2)
-  CheckDefExecAndScriptFailure(['{}[getftype("file")]'], 'E716: Key not present in Dictionary: ""', 1)
+  v9.CheckDefFailure(['var x = ({'], 'E723:', 2)
+  v9.CheckScriptFailure(['vim9script', 'var x = ({'], 'E723:', 2)
+  v9.CheckDefExecAndScriptFailure(['{}[getftype("file")]'], 'E716: Key not present in Dictionary: ""', 1)
 enddef
 
 def Test_expr8_dict_vim9script()
@@ -2484,13 +2484,13 @@
       var dd = {k: 123->len()}
       assert_equal(3, dd.k)
   END
-  CheckDefAndScriptSuccess(lines)
+  v9.CheckDefAndScriptSuccess(lines)
 
   lines =<< trim END
       var d = { ["one"]: "one", ["two"]: "two", }
       assert_equal({one: 'one', two: 'two'}, d)
   END
-  CheckDefAndScriptSuccess(lines)
+  v9.CheckDefAndScriptSuccess(lines)
 
   lines =<< trim END
       var d = {one: 1,
@@ -2498,57 +2498,57 @@
 	       }
       assert_equal({one: 1, two: 2}, d)
   END
-  CheckDefAndScriptSuccess(lines)
+  v9.CheckDefAndScriptSuccess(lines)
 
   lines =<< trim END
       var d = {one:1, two: 2}
   END
-  CheckDefAndScriptFailure(lines, 'E1069:', 1)
+  v9.CheckDefAndScriptFailure(lines, 'E1069:', 1)
 
   lines =<< trim END
       var d = {one: 1,two: 2}
   END
-  CheckDefAndScriptFailure(lines, 'E1069:', 1)
+  v9.CheckDefAndScriptFailure(lines, 'E1069:', 1)
 
   lines =<< trim END
       var d = {one : 1}
   END
-  CheckDefAndScriptFailure(lines, 'E1068:', 1)
+  v9.CheckDefAndScriptFailure(lines, 'E1068:', 1)
 
   lines =<< trim END
       var d = {one:1}
   END
-  CheckDefAndScriptFailure(lines, 'E1069:', 1)
+  v9.CheckDefAndScriptFailure(lines, 'E1069:', 1)
 
   lines =<< trim END
       var d = {one: 1 , two: 2}
   END
-  CheckDefAndScriptFailure(lines, 'E1068:', 1)
+  v9.CheckDefAndScriptFailure(lines, 'E1068:', 1)
 
   lines =<< trim END
     var l: dict<number> = {a: 234, b: 'x'}
   END
-  CheckDefAndScriptFailure(lines, 'E1012:', 1)
+  v9.CheckDefAndScriptFailure(lines, 'E1012:', 1)
 
   lines =<< trim END
     var l: dict<number> = {a: 'x', b: 234}
   END
-  CheckDefAndScriptFailure(lines, 'E1012:', 1)
+  v9.CheckDefAndScriptFailure(lines, 'E1012:', 1)
 
   lines =<< trim END
     var l: dict<string> = {a: 'x', b: 234}
   END
-  CheckDefAndScriptFailure(lines, 'E1012:', 1)
+  v9.CheckDefAndScriptFailure(lines, 'E1012:', 1)
 
   lines =<< trim END
     var l: dict<string> = {a: 234, b: 'x'}
   END
-  CheckDefAndScriptFailure(lines, 'E1012:', 1)
+  v9.CheckDefAndScriptFailure(lines, 'E1012:', 1)
 
   lines =<< trim END
     var d = {['a']: 234, ['b': 'x'}
   END
-  CheckDefAndScriptFailure(lines, 'E1139:', 1)
+  v9.CheckDefAndScriptFailure(lines, 'E1139:', 1)
 
   lines =<< trim END
     def Func()
@@ -2556,13 +2556,13 @@
     enddef
     defcompile
   END
-  CheckDefAndScriptFailure(lines, 'E1139:', 0)
+  v9.CheckDefAndScriptFailure(lines, 'E1139:', 0)
 
   lines =<< trim END
     var d = {'a':
   END
-  CheckDefFailure(lines, 'E723:', 2)
-  CheckScriptFailure(['vim9script'] + lines, 'E15:', 2)
+  v9.CheckDefFailure(lines, 'E723:', 2)
+  v9.CheckScriptFailure(['vim9script'] + lines, 'E15:', 2)
 
   lines =<< trim END
     def Func()
@@ -2570,7 +2570,7 @@
     enddef
     defcompile
   END
-  CheckDefAndScriptFailure(lines, 'E723:', 0)
+  v9.CheckDefAndScriptFailure(lines, 'E723:', 0)
 
   lines =<< trim END
       def Failing()
@@ -2579,9 +2579,9 @@
       var dict = {name: Failing}
   END
   if has('channel')
-    CheckDefAndScriptFailure(lines, 'E119:', 0)
+    v9.CheckDefAndScriptFailure(lines, 'E119:', 0)
   else
-    CheckDefAndScriptFailure(lines, 'E117:', 0)
+    v9.CheckDefAndScriptFailure(lines, 'E117:', 0)
   endif
 
   lines =<< trim END
@@ -2589,7 +2589,7 @@
       var x = 99
       assert_equal({x: 99}, s:)
   END
-  CheckScriptSuccess(lines)
+  v9.CheckScriptSuccess(lines)
 enddef
 
 def Test_expr8_dict_in_block()
@@ -2609,7 +2609,7 @@
       assert_equal({key: 'value'}, g:global)
       unlet g:global
   END
-  CheckScriptSuccess(lines)
+  v9.CheckScriptSuccess(lines)
 
   delcommand MyCommand
   delcommand YourCommand
@@ -2631,7 +2631,7 @@
 
       TestBrokenCall()
   END
-  CheckScriptSuccess(lines)
+  v9.CheckScriptSuccess(lines)
 enddef
 
 let g:oneString = 'one'
@@ -2656,11 +2656,11 @@
       assert_equal('one', {one: 'one'}.one)
       assert_equal('one', {one: 'one'}[g:oneString])
   END
-  CheckDefAndScriptSuccess(lines)
+  v9.CheckDefAndScriptSuccess(lines)
 
-  CheckDefAndScriptFailure(["var x = g:dict_one.#$!"], ['E1002:', 'E15:'], 1)
-  CheckDefExecAndScriptFailure(["var d: dict<any>", "echo d['a']"], 'E716:', 2)
-  CheckDefExecAndScriptFailure(["var d: dict<number>", "d = g:list_empty"], 'E1012: Type mismatch; expected dict<number> but got list<unknown>', 2)
+  v9.CheckDefAndScriptFailure(["var x = g:dict_one.#$!"], ['E1002:', 'E15:'], 1)
+  v9.CheckDefExecAndScriptFailure(["var d: dict<any>", "echo d['a']"], 'E716:', 2)
+  v9.CheckDefExecAndScriptFailure(["var d: dict<number>", "d = g:list_empty"], 'E1012: Type mismatch; expected dict<number> but got list<unknown>', 2)
 enddef
 
 def Test_expr8_any_index_slice()
@@ -2756,16 +2756,16 @@
     assert_equal(2, g:testdict['b'])
   END
 
-  CheckDefAndScriptSuccess(lines)
+  v9.CheckDefAndScriptSuccess(lines)
 
-  CheckDefExecAndScriptFailure(['echo g:testblob[2]'], 'E979:', 1)
-  CheckDefExecAndScriptFailure(['echo g:testblob[-3]'], 'E979:', 1)
+  v9.CheckDefExecAndScriptFailure(['echo g:testblob[2]'], 'E979:', 1)
+  v9.CheckDefExecAndScriptFailure(['echo g:testblob[-3]'], 'E979:', 1)
 
-  CheckDefExecAndScriptFailure(['echo g:testlist[4]'], 'E684: list index out of range: 4', 1)
-  CheckDefExecAndScriptFailure(['echo g:testlist[-5]'], 'E684:', 1)
+  v9.CheckDefExecAndScriptFailure(['echo g:testlist[4]'], 'E684: list index out of range: 4', 1)
+  v9.CheckDefExecAndScriptFailure(['echo g:testlist[-5]'], 'E684:', 1)
 
-  CheckDefExecAndScriptFailure(['echo g:testdict["a" : "b"]'], 'E719:', 1)
-  CheckDefExecAndScriptFailure(['echo g:testdict[1]'], 'E716:', 1)
+  v9.CheckDefExecAndScriptFailure(['echo g:testdict["a" : "b"]'], 'E719:', 1)
+  v9.CheckDefExecAndScriptFailure(['echo g:testdict[1]'], 'E716:', 1)
 
   unlet g:teststring
   unlet g:testblob
@@ -2790,7 +2790,7 @@
 			    'one'
 			    ])
   END
-  CheckDefAndScriptSuccess(lines)
+  v9.CheckDefAndScriptSuccess(lines)
 
   lines =<< trim END
       var l = [1,
@@ -2810,7 +2810,7 @@
 				:
 				])
   END
-  CheckDefAndScriptSuccess(lines)
+  v9.CheckDefAndScriptSuccess(lines)
 enddef
 
 def SetSomeVar()
@@ -2837,11 +2837,11 @@
       var sval: string = &path
 
       # check v_lock is cleared (requires using valgrind, doesn't always show)
-      SetSomeVar()
+      g:SetSomeVar()
       b:someVar = 0
       unlet b:someVar
   END
-  CheckDefAndScriptSuccess(lines)
+  v9.CheckDefAndScriptSuccess(lines)
 enddef
 
 def Test_expr8_environment()
@@ -2850,10 +2850,10 @@
       assert_equal('testvar', $TESTVAR)
       assert_equal('', $ASDF_ASD_XXX)
   END
-  CheckDefAndScriptSuccess(lines)
+  v9.CheckDefAndScriptSuccess(lines)
 
-  CheckDefAndScriptFailure(["var x = $$$"], ['E1002:', 'E15:'], 1)
-  CheckDefAndScriptFailure(["$"], ['E1002:', 'E15:'], 1)
+  v9.CheckDefAndScriptFailure(["var x = $$$"], ['E1002:', 'E15:'], 1)
+  v9.CheckDefAndScriptFailure(["$"], ['E1002:', 'E15:'], 1)
 enddef
 
 def Test_expr8_register()
@@ -2876,9 +2876,9 @@
       @= = 'equal'
       assert_equal('equal', @=)
   END
-  CheckDefAndScriptSuccess(lines)
+  v9.CheckDefAndScriptSuccess(lines)
 
-  CheckDefAndScriptFailure(["@. = 'yes'"], ['E354:', 'E488:'], 1)
+  v9.CheckDefAndScriptFailure(["@. = 'yes'"], ['E354:', 'E488:'], 1)
 enddef
 
 " This is slow when run under valgrind.
@@ -2908,7 +2908,7 @@
       assert_equal('xxx', get(t:, 'no_var', 'xxx'))
       unlet t:some_var
   END
-  CheckDefAndScriptSuccess(lines)
+  v9.CheckDefAndScriptSuccess(lines)
 enddef
 
 def Test_expr8_namespace_loop_def()
@@ -2926,7 +2926,7 @@
       assert_equal(0, exists)
       assert_equal(100000, exists_not)
   END
-  CheckDefSuccess(lines)
+  v9.CheckDefSuccess(lines)
 enddef
 
 " NOTE: this is known to be slow.  To skip use:
@@ -2947,7 +2947,7 @@
       assert_equal(0, exists)
       assert_equal(100000, exists_not)
   END
-  CheckScriptSuccess(lines)
+  v9.CheckScriptSuccess(lines)
 enddef
 
 def Test_expr8_parens()
@@ -2979,7 +2979,7 @@
 		)
       assert_equal('onetwo', s)
   END
-  CheckDefAndScriptSuccess(lines)
+  v9.CheckDefAndScriptSuccess(lines)
 enddef
 
 def Test_expr8_negate_add()
@@ -2993,38 +2993,38 @@
       assert_equal(-88, - nr)
       assert_equal(88, + nr)
   END
-  CheckDefAndScriptSuccess(lines)
+  v9.CheckDefAndScriptSuccess(lines)
 
   lines =<< trim END
     var n = 12
     echo ++n
   END
-  CheckDefAndScriptFailure(lines, 'E15:')
+  v9.CheckDefAndScriptFailure(lines, 'E15:')
   lines =<< trim END
     var n = 12
     echo --n
   END
-  CheckDefAndScriptFailure(lines, 'E15:')
+  v9.CheckDefAndScriptFailure(lines, 'E15:')
   lines =<< trim END
     var n = 12
     echo +-n
   END
-  CheckDefAndScriptFailure(lines, 'E15:')
+  v9.CheckDefAndScriptFailure(lines, 'E15:')
   lines =<< trim END
     var n = 12
     echo -+n
   END
-  CheckDefAndScriptFailure(lines, 'E15:')
+  v9.CheckDefAndScriptFailure(lines, 'E15:')
   lines =<< trim END
     var n = 12
     echo - -n
   END
-  CheckDefAndScriptFailure(lines, 'E15:')
+  v9.CheckDefAndScriptFailure(lines, 'E15:')
   lines =<< trim END
     var n = 12
     echo + +n
   END
-  CheckDefAndScriptFailure(lines, 'E15:')
+  v9.CheckDefAndScriptFailure(lines, 'E15:')
 enddef
 
 def LegacyReturn(): string
@@ -3043,9 +3043,9 @@
       call assert_equal('legacy', GetLocal())
       call assert_equal('legacy', GetLocalPrefix())
   END
-  CheckScriptSuccess(lines)
+  v9.CheckScriptSuccess(lines)
 
-  assert_equal('ok', LegacyReturn())
+  assert_equal('ok', g:LegacyReturn())
 
   lines =<< trim END
       vim9script 
@@ -3054,7 +3054,7 @@
       enddef 
       echo GetNumber()
   END
-  CheckScriptFailure(lines, 'E1012: Type mismatch; expected number but got list<number>')
+  v9.CheckScriptFailure(lines, 'E1012: Type mismatch; expected number but got list<number>')
 enddef
 
 def Echo(arg: any): string
@@ -3067,21 +3067,41 @@
 
 def Test_expr8_call()
   var lines =<< trim END
-      assert_equal('yes', 'yes'->Echo())
+      assert_equal('yes', 'yes'->g:Echo())
       assert_equal(true, !range(5)->empty())
       assert_equal([0, 1, 2], 3->range())
   END
-  CheckDefAndScriptSuccess(lines)
+  v9.CheckDefAndScriptSuccess(lines)
 
   assert_equal('yes', 'yes'
                         ->s:Echo4Arg())
 
-  CheckDefAndScriptFailure(["var x = 'yes'->Echo"], 'E107:', 1)
-  CheckDefAndScriptFailure([
+  v9.CheckDefAndScriptFailure(["var x = 'yes'->g:Echo"], 'E107:', 1)
+  v9.CheckDefAndScriptFailure([
        "var x = substitute ('x', 'x', 'x', 'x')"
        ], ['E1001:', 'E121:'], 1)
-  CheckDefAndScriptFailure(["var Ref = function('len' [1, 2])"], ['E1123:', 'E116:'], 1)
+  v9.CheckDefAndScriptFailure(["var Ref = function('len' [1, 2])"], ['E1123:', 'E116:'], 1)
+enddef
 
+def g:ExistingGloba(): string
+  return 'existing'
+enddef
+
+def Test_expr8_call_global()
+  assert_equal('existing', g:ExistingGloba())
+
+  def g:DefinedLater(): string
+    return 'later'
+  enddef
+  assert_equal('later', g:DefinedLater())
+
+  var lines =<< trim END
+    echo ExistingGlobal()
+  END
+  v9.CheckDefAndScriptFailure(lines, 'E117: Unknown function: ExistingGlobal')
+enddef
+
+def Test_expr8_call_autoload()
   var auto_lines =<< trim END
       def g:some#func(): string
 	return 'found'
@@ -3137,7 +3157,7 @@
                     -> sort()
       assert_equal([1, 2, 3], sorted)
   END
-  CheckDefAndScriptSuccess(lines)
+  v9.CheckDefAndScriptSuccess(lines)
 
   lines =<< trim END
       def SetNumber(n: number)
@@ -3165,14 +3185,14 @@
 
       unlet g:number
   END
-  CheckDefAndScriptSuccess(lines)
+  v9.CheckDefAndScriptSuccess(lines)
 
   lines =<< trim END
     def RetVoid()
     enddef
     RetVoid()->byteidx(3)
   END
-  CheckDefExecFailure(lines, 'E1013:')
+  v9.CheckDefExecFailure(lines, 'E1013:')
 enddef
 
 def Test_expr8_method_call_linebreak()
@@ -3188,7 +3208,7 @@
       defcompile
       assert_equal('', v:errmsg)
   END
-  CheckScriptSuccess(lines)
+  v9.CheckScriptSuccess(lines)
 enddef
 
 def Test_expr8_method_call_import()
@@ -3212,7 +3232,7 @@
 
       assert_equal([0, 10, 40, 90, 160], Test())
   END
-  CheckScriptSuccess(lines)
+  v9.CheckScriptSuccess(lines)
 
   lines =<< trim END
       vim9script
@@ -3220,7 +3240,7 @@
 
       echo range(5)->Xsquare.NoSuchFunc()
   END
-  CheckScriptFailure(lines, 'E1048: Item not found in script: NoSuchFunc')
+  v9.CheckScriptFailure(lines, 'E1048: Item not found in script: NoSuchFunc')
 
   delete('Xsquare.vim')
 enddef
@@ -3273,7 +3293,7 @@
       assert_equal(false, ![1, 2, 3]->reverse())
       assert_equal(true, ![]->reverse())
   END
-  CheckDefAndScriptSuccess(lines)
+  v9.CheckDefAndScriptSuccess(lines)
 enddef
 
 let g:anumber = 42
@@ -3284,57 +3304,57 @@
       assert_equal(-1, -nr)
       assert_equal(-42, -g:anumber)
   END
-  CheckDefAndScriptSuccess(lines)
+  v9.CheckDefAndScriptSuccess(lines)
 enddef
 
 func Test_expr8_fails()
-  call CheckDefFailure(["var x = (12"], "E1097:", 3)
-  call CheckScriptFailure(['vim9script', "var x = (12"], 'E110:', 2)
+  call v9.CheckDefFailure(["var x = (12"], "E1097:", 3)
+  call v9.CheckScriptFailure(['vim9script', "var x = (12"], 'E110:', 2)
 
-  call CheckDefAndScriptFailure(["var x = -'xx'"], "E1030:", 1)
-  call CheckDefAndScriptFailure(["var x = +'xx'"], "E1030:", 1)
-  call CheckDefAndScriptFailure(["var x = -0z12"], "E974:", 1)
-  call CheckDefExecAndScriptFailure(["var x = -[8]"], ["E1012:", 'E745:'], 1)
-  call CheckDefExecAndScriptFailure(["var x = -{a: 1}"], ["E1012:", 'E728:'], 1)
+  call v9.CheckDefAndScriptFailure(["var x = -'xx'"], "E1030:", 1)
+  call v9.CheckDefAndScriptFailure(["var x = +'xx'"], "E1030:", 1)
+  call v9.CheckDefAndScriptFailure(["var x = -0z12"], "E974:", 1)
+  call v9.CheckDefExecAndScriptFailure(["var x = -[8]"], ["E1012:", 'E745:'], 1)
+  call v9.CheckDefExecAndScriptFailure(["var x = -{a: 1}"], ["E1012:", 'E728:'], 1)
 
-  call CheckDefAndScriptFailure(["var x = @"], "E1002:", 1)
-  call CheckDefAndScriptFailure(["var x = @<"], "E354:", 1)
+  call v9.CheckDefAndScriptFailure(["var x = @"], "E1002:", 1)
+  call v9.CheckDefAndScriptFailure(["var x = @<"], "E354:", 1)
 
-  call CheckDefFailure(["var x = [1, 2"], "E697:", 2)
-  call CheckScriptFailure(['vim9script', "var x = [1, 2"], 'E696:', 2)
+  call v9.CheckDefFailure(["var x = [1, 2"], "E697:", 2)
+  call v9.CheckScriptFailure(['vim9script', "var x = [1, 2"], 'E696:', 2)
 
-  call CheckDefAndScriptFailure(["var x = [notfound]"], ["E1001:", 'E121:'], 1)
+  call v9.CheckDefAndScriptFailure(["var x = [notfound]"], ["E1001:", 'E121:'], 1)
 
-  call CheckDefAndScriptFailure(["var X = () => 123)"], 'E488:', 1)
-  call CheckDefAndScriptFailure(["var x = 123->((x) => x + 5)"], "E107:", 1)
+  call v9.CheckDefAndScriptFailure(["var X = () => 123)"], 'E488:', 1)
+  call v9.CheckDefAndScriptFailure(["var x = 123->((x) => x + 5)"], "E107:", 1)
 
-  call CheckDefAndScriptFailure(["var x = &notexist"], 'E113:', 1)
-  call CheckDefAndScriptFailure(["&grepprg = [343]"], ['E1012:', 'E730:'], 1)
+  call v9.CheckDefAndScriptFailure(["var x = &notexist"], 'E113:', 1)
+  call v9.CheckDefAndScriptFailure(["&grepprg = [343]"], ['E1012:', 'E730:'], 1)
 
-  call CheckDefExecAndScriptFailure(["echo s:doesnt_exist"], 'E121:', 1)
-  call CheckDefExecAndScriptFailure(["echo g:doesnt_exist"], 'E121:', 1)
+  call v9.CheckDefExecAndScriptFailure(["echo s:doesnt_exist"], 'E121:', 1)
+  call v9.CheckDefExecAndScriptFailure(["echo g:doesnt_exist"], 'E121:', 1)
 
-  call CheckDefAndScriptFailure(["echo a:somevar"], ['E1075:', 'E121:'], 1)
-  call CheckDefAndScriptFailure(["echo l:somevar"], ['E1075:', 'E121:'], 1)
-  call CheckDefAndScriptFailure(["echo x:somevar"], ['E1075:', 'E121:'], 1)
+  call v9.CheckDefAndScriptFailure(["echo a:somevar"], ['E1075:', 'E121:'], 1)
+  call v9.CheckDefAndScriptFailure(["echo l:somevar"], ['E1075:', 'E121:'], 1)
+  call v9.CheckDefAndScriptFailure(["echo x:somevar"], ['E1075:', 'E121:'], 1)
 
-  call CheckDefExecAndScriptFailure(["var x = +g:astring"], ['E1012:', 'E1030:'], 1)
-  call CheckDefExecAndScriptFailure(["var x = +g:ablob"], ['E1012:', 'E974:'], 1)
-  call CheckDefExecAndScriptFailure(["var x = +g:alist"], ['E1012:', 'E745:'], 1)
-  call CheckDefExecAndScriptFailure(["var x = +g:adict"], ['E1012:', 'E728:'], 1)
+  call v9.CheckDefExecAndScriptFailure(["var x = +g:astring"], ['E1012:', 'E1030:'], 1)
+  call v9.CheckDefExecAndScriptFailure(["var x = +g:ablob"], ['E1012:', 'E974:'], 1)
+  call v9.CheckDefExecAndScriptFailure(["var x = +g:alist"], ['E1012:', 'E745:'], 1)
+  call v9.CheckDefExecAndScriptFailure(["var x = +g:adict"], ['E1012:', 'E728:'], 1)
 
-  call CheckDefAndScriptFailure(["var x = ''", "var y = x.memb"], ['E1229: Expected dictionary for using key "memb", but got string', 'E488:'], 2)
+  call v9.CheckDefAndScriptFailure(["var x = ''", "var y = x.memb"], ['E1229: Expected dictionary for using key "memb", but got string', 'E488:'], 2)
 
-  call CheckDefAndScriptFailure(["'yes'->", "Echo()"], ['E488: Trailing characters: ->', 'E260: Missing name after ->'], 1)
+  call v9.CheckDefAndScriptFailure(["'yes'->", "Echo()"], ['E488: Trailing characters: ->', 'E260: Missing name after ->'], 1)
 
-  call CheckDefExecFailure(["[1, 2->len()"], 'E697:', 2)
-  call CheckScriptFailure(['vim9script', "[1, 2->len()"], 'E696:', 2)
+  call v9.CheckDefExecFailure(["[1, 2->len()"], 'E697:', 2)
+  call v9.CheckScriptFailure(['vim9script', "[1, 2->len()"], 'E696:', 2)
 
-  call CheckDefFailure(["{a: 1->len()"], 'E723:', 2)
-  call CheckScriptFailure(['vim9script', "{a: 1->len()"], 'E722:', 2)
+  call v9.CheckDefFailure(["{a: 1->len()"], 'E723:', 2)
+  call v9.CheckScriptFailure(['vim9script', "{a: 1->len()"], 'E722:', 2)
 
-  call CheckDefExecFailure(["{['a']: 1->len()"], 'E723:', 2)
-  call CheckScriptFailure(['vim9script', "{['a']: 1->len()"], 'E722:', 2)
+  call v9.CheckDefExecFailure(["{['a']: 1->len()"], 'E723:', 2)
+  call v9.CheckScriptFailure(['vim9script', "{['a']: 1->len()"], 'E722:', 2)
 endfunc
 
 let g:Funcrefs = [function('add')]
@@ -3380,7 +3400,7 @@
       var d = {key: 123}
       assert_equal(123, d.key)
   END
-  CheckDefAndScriptSuccess(lines)
+  v9.CheckDefAndScriptSuccess(lines)
 enddef
 
 def Test_expr8_string_subscript()
@@ -3438,48 +3458,48 @@
     assert_equal('sd', g:astring[1 : 2])
     assert_equal('asdf', g:astring[:])
   END
-  CheckDefAndScriptSuccess(lines)
+  v9.CheckDefAndScriptSuccess(lines)
 
   lines =<< trim END
       var d = 'asdf'[1 :
   END
-  CheckDefFailure(lines, 'E1097:', 3)
-  CheckScriptFailure(['vim9script'] + lines, 'E15:', 2)
+  v9.CheckDefFailure(lines, 'E1097:', 3)
+  v9.CheckScriptFailure(['vim9script'] + lines, 'E15:', 2)
 
   lines =<< trim END
       var d = 'asdf'[1 : xxx]
   END
-  CheckDefAndScriptFailure(lines, ['E1001:', 'E121:'], 1)
+  v9.CheckDefAndScriptFailure(lines, ['E1001:', 'E121:'], 1)
 
   lines =<< trim END
       var d = 'asdf'[1 : 2
   END
-  CheckDefFailure(lines, 'E1097:', 3)
-  CheckScriptFailure(['vim9script'] + lines, 'E111:', 2)
+  v9.CheckDefFailure(lines, 'E1097:', 3)
+  v9.CheckScriptFailure(['vim9script'] + lines, 'E111:', 2)
 
   lines =<< trim END
       var d = 'asdf'[1 : 2
       echo d
   END
-  CheckDefAndScriptFailure(lines, 'E111:', 2)
+  v9.CheckDefAndScriptFailure(lines, 'E111:', 2)
 
   lines =<< trim END
       var d = 'asdf'['1']
       echo d
   END
-  CheckDefAndScriptFailure(lines, ['E1012: Type mismatch; expected number but got string', 'E1030: Using a String as a Number: "1"'], 1)
+  v9.CheckDefAndScriptFailure(lines, ['E1012: Type mismatch; expected number but got string', 'E1030: Using a String as a Number: "1"'], 1)
 
   lines =<< trim END
       var d = 'asdf'['1' : 2]
       echo d
   END
-  CheckDefAndScriptFailure(lines, ['E1012: Type mismatch; expected number but got string', 'E1030: Using a String as a Number: "1"'], 1)
+  v9.CheckDefAndScriptFailure(lines, ['E1012: Type mismatch; expected number but got string', 'E1030: Using a String as a Number: "1"'], 1)
 
   lines =<< trim END
       var d = 'asdf'[1 : '2']
       echo d
   END
-  CheckDefAndScriptFailure(lines, ['E1012: Type mismatch; expected number but got string', 'E1030: Using a String as a Number: "2"'], 1)
+  v9.CheckDefAndScriptFailure(lines, ['E1012: Type mismatch; expected number but got string', 'E1030: Using a String as a Number: "2"'], 1)
 enddef
 
 def Test_expr8_list_subscript()
@@ -3510,10 +3530,10 @@
       assert_equal(2, g:alist[0])
       assert_equal([2, 3, 4], g:alist[:])
   END
-  CheckDefAndScriptSuccess(lines)
+  v9.CheckDefAndScriptSuccess(lines)
 
   lines = ['var l = [0, 1, 2]', 'echo l[g:astring : g:theone]']
-  CheckDefExecAndScriptFailure(lines, ['E1012:', 'E1030:'], 2)
+  v9.CheckDefExecAndScriptFailure(lines, ['E1012:', 'E1030:'], 2)
 
   lines =<< trim END
       var ld = []
@@ -3522,7 +3542,7 @@
       enddef
       defcompile
   END
-  CheckDefAndScriptSuccess(lines)
+  v9.CheckDefAndScriptSuccess(lines)
 enddef
 
 def Test_expr8_dict_subscript()
@@ -3543,7 +3563,7 @@
       enddef
       defcompile
   END
-  CheckDefAndScriptSuccess(lines)
+  v9.CheckDefAndScriptSuccess(lines)
 enddef
 
 def Test_expr8_blob_subscript()
@@ -3555,7 +3575,7 @@
       assert_equal(0x01, g:ablob[0])
       assert_equal(0z01ab, g:ablob[:])
   END
-  CheckDefAndScriptSuccess(lines)
+  v9.CheckDefAndScriptSuccess(lines)
 enddef
 
 def Test_expr8_subscript_linebreak()
@@ -3591,38 +3611,38 @@
       assert_equal(33, d
             .one)
   END
-  CheckDefAndScriptSuccess(lines)
+  v9.CheckDefAndScriptSuccess(lines)
 
   lines =<< trim END
       var d = {one: 33}
       assert_equal(33, d.
             one)
   END
-  CheckDefAndScriptFailure(lines, ['E1127:', 'E116:'], 2)
+  v9.CheckDefAndScriptFailure(lines, ['E1127:', 'E116:'], 2)
 enddef
 
 func Test_expr8_trailing_fails()
-  call CheckDefAndScriptFailure(['var l = [2]', 'l->((ll) => add(ll, 8))'], 'E107:', 2)
-  call CheckDefAndScriptFailure(['var l = [2]', 'l->((ll) => add(ll, 8)) ()'], 'E274:', 2)
+  call v9.CheckDefAndScriptFailure(['var l = [2]', 'l->((ll) => add(ll, 8))'], 'E107:', 2)
+  call v9.CheckDefAndScriptFailure(['var l = [2]', 'l->((ll) => add(ll, 8)) ()'], 'E274:', 2)
 endfunc
 
 func Test_expr_fails()
-  call CheckDefAndScriptFailure(["var x = '1'is2"], 'E488:', 1)
-  call CheckDefAndScriptFailure(["var x = '1'isnot2"], 'E488:', 1)
+  call v9.CheckDefAndScriptFailure(["var x = '1'is2"], 'E488:', 1)
+  call v9.CheckDefAndScriptFailure(["var x = '1'isnot2"], 'E488:', 1)
 
-  call CheckDefAndScriptFailure(["CallMe ('yes')"], ['E476:', 'E492:'], 1)
+  call v9.CheckDefAndScriptFailure(["CallMe ('yes')"], ['E476:', 'E492:'], 1)
 
-  call CheckDefAndScriptFailure(["CallMe2('yes','no')"], 'E1069:', 1)
+  call v9.CheckDefAndScriptFailure(["CallMe2('yes','no')"], 'E1069:', 1)
 
-  call CheckDefAndScriptFailure(["v:nosuch += 3"], ['E1001:', 'E121:'], 1)
-  call CheckDefAndScriptFailure(["var v:statusmsg = ''"], 'E1016: Cannot declare a v: variable:', 1)
-  call CheckDefAndScriptFailure(["var asdf = v:nosuch"], ['E1001:', 'E121:'], 1)
+  call v9.CheckDefAndScriptFailure(["v:nosuch += 3"], ['E1001:', 'E121:'], 1)
+  call v9.CheckDefAndScriptFailure(["var v:statusmsg = ''"], 'E1016: Cannot declare a v: variable:', 1)
+  call v9.CheckDefAndScriptFailure(["var asdf = v:nosuch"], ['E1001:', 'E121:'], 1)
 
-  call CheckDefFailure(["echo len('asdf'"], 'E110:', 2)
-  call CheckScriptFailure(['vim9script', "echo len('asdf'"], 'E116:', 2)
+  call v9.CheckDefFailure(["echo len('asdf'"], 'E110:', 2)
+  call v9.CheckScriptFailure(['vim9script', "echo len('asdf'"], 'E116:', 2)
 
-  call CheckDefAndScriptFailure(["echo Func0123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789()"], ['E1011:', 'E117:'], 1)
-  call CheckDefAndScriptFailure(["echo doesnotexist()"], 'E117:', 1)
+  call v9.CheckDefAndScriptFailure(["echo Func0123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789()"], ['E1011:', 'E117:'], 1)
+  call v9.CheckDefAndScriptFailure(["echo doesnotexist()"], 'E117:', 1)
 endfunc
 
 " vim: shiftwidth=2 sts=2 expandtab
diff --git a/src/testdir/test_vim9_func.vim b/src/testdir/test_vim9_func.vim
index f495ddf..9378c14 100644
--- a/src/testdir/test_vim9_func.vim
+++ b/src/testdir/test_vim9_func.vim
@@ -3,7 +3,7 @@
 source check.vim
 source term_util.vim
 source view_util.vim
-source vim9.vim
+import './vim9.vim' as v9
 source screendump.vim
 
 func Test_def_basic()
@@ -30,13 +30,13 @@
     defcompile
   END
   writefile(lines, 'XTest_compile_error')
-  var buf = RunVimInTerminal('-S XTest_compile_error',
+  var buf = g:RunVimInTerminal('-S XTest_compile_error',
               {rows: 10, wait_for_ruler: 0})
-  WaitForAssert(() => assert_match('Error detected while compiling command line.*Fails.*Variable not found: nothing',
-                     Term_getlines(buf, range(1, 9))))
+  g:WaitForAssert(() => assert_match('Error detected while compiling command line.*Fails.*Variable not found: nothing',
+                     g:Term_getlines(buf, range(1, 9))))
 
   # clean up
-  StopVimInTerminal(buf)
+  g:StopVimInTerminal(buf)
   delete('XTest_compile_error')
 enddef
 
@@ -64,12 +64,12 @@
   lines[1] = 'set rtp=' .. getcwd() .. '/Xdir'
   writefile(lines, 'XTest_compile_error')
 
-  var buf = RunVimInTerminal('-S XTest_compile_error', {rows: 10, wait_for_ruler: 0})
-  WaitForAssert(() => assert_match('Error detected while compiling command line.*function script#OnlyCompiled.*Invalid command: invalid',
-                     Term_getlines(buf, range(1, 9))))
+  var buf = g:RunVimInTerminal('-S XTest_compile_error', {rows: 10, wait_for_ruler: 0})
+  g:WaitForAssert(() => assert_match('Error detected while compiling command line.*function script#OnlyCompiled.*Invalid command: invalid',
+                     g:Term_getlines(buf, range(1, 9))))
 
   # clean up
-  StopVimInTerminal(buf)
+  g:StopVimInTerminal(buf)
   delete('XTest_compile_error')
   delete('Xdir', 'rf')
 enddef
@@ -87,7 +87,7 @@
       silent! Foo()
       Bar()
   END
-  CheckScriptFailureList(lines, ['E1012:', 'E1191:'])
+  v9.CheckScriptFailureList(lines, ['E1012:', 'E1191:'])
 enddef
 
 def Test_wrong_function_name()
@@ -97,7 +97,7 @@
         echo 'foo'
       endfunc
   END
-  CheckScriptFailure(lines, 'E128:')
+  v9.CheckScriptFailure(lines, 'E128:')
 
   lines =<< trim END
       vim9script
@@ -105,7 +105,7 @@
         echo 'foo'
       enddef
   END
-  CheckScriptFailure(lines, 'E128:')
+  v9.CheckScriptFailure(lines, 'E128:')
 enddef
 
 def Test_autoload_name_mismatch()
@@ -126,7 +126,7 @@
   lines =<< trim END
       call script#Function()
   END
-  CheckScriptFailure(lines, 'E746:', 2)
+  v9.CheckScriptFailure(lines, 'E746:', 2)
 
   &rtp = save_rtp
   delete(dir, 'rf')
@@ -154,7 +154,7 @@
 
       assert_equal('no', foobar#var)
   END
-  CheckDefAndScriptSuccess(lines)
+  v9.CheckDefAndScriptSuccess(lines)
 
   &rtp = save_rtp
   delete(dir, 'rf')
@@ -179,7 +179,7 @@
   # The error in the autoload script cannot be checked with assert_fails(), use
   # CheckDefSuccess() instead of CheckDefFailure()
   try
-    CheckDefSuccess(['scripterror#function()'])
+    v9.CheckDefSuccess(['scripterror#function()'])
   catch
     assert_match('E121: Undefined variable: 0', v:exception)
   endtry
@@ -198,7 +198,7 @@
   writefile(lines, dir .. '/scriptcaught.vim')
 
   g:called_function = 'no'
-  CheckDefSuccess(['scriptcaught#function()'])
+  v9.CheckDefSuccess(['scriptcaught#function()'])
   assert_match('E121: Undefined variable: 0', g:caught)
   assert_equal('yes', g:called_function)
 
@@ -206,11 +206,11 @@
   delete(dir, 'rf')
 enddef
 
-def CallRecursive(n: number): number
+def s:CallRecursive(n: number): number
   return CallRecursive(n + 1)
 enddef
 
-def CallMapRecursive(l: list<number>): number
+def s:CallMapRecursive(l: list<number>): number
   return map(l, (_, v) => CallMapRecursive([v]))[0]
 enddef
 
@@ -243,7 +243,7 @@
       endfunc
     enddef
   END
-  CheckScriptFailure(lines, 'E1151:', 3)
+  v9.CheckScriptFailure(lines, 'E1151:', 3)
 
   lines =<< trim END
     def Test()
@@ -252,7 +252,7 @@
       enddef
     enddef
   END
-  CheckScriptFailure(lines, 'E1152:', 4)
+  v9.CheckScriptFailure(lines, 'E1152:', 4)
 
   lines =<< trim END
     def Ok()
@@ -262,7 +262,7 @@
       echo 'hello'
     enddef there
   END
-  CheckScriptFailure(lines, 'E1173: Text found after enddef: there', 6)
+  v9.CheckScriptFailure(lines, 'E1173: Text found after enddef: there', 6)
 enddef
 
 def Test_missing_endfunc_enddef()
@@ -272,7 +272,7 @@
       echo 'test'
     endef
   END
-  CheckScriptFailure(lines, 'E1057:', 2)
+  v9.CheckScriptFailure(lines, 'E1057:', 2)
 
   lines =<< trim END
     vim9script
@@ -280,7 +280,7 @@
       echo 'test'
     enfffunc
   END
-  CheckScriptFailure(lines, 'E126:', 2)
+  v9.CheckScriptFailure(lines, 'E126:', 2)
 enddef
 
 def Test_white_space_before_paren()
@@ -290,7 +290,7 @@
       echo 'test'
     enddef
   END
-  CheckScriptFailure(lines, 'E1068:', 2)
+  v9.CheckScriptFailure(lines, 'E1068:', 2)
 
   lines =<< trim END
     vim9script
@@ -298,21 +298,21 @@
       echo 'test'
     endfunc
   END
-  CheckScriptFailure(lines, 'E1068:', 2)
+  v9.CheckScriptFailure(lines, 'E1068:', 2)
 
   lines =<< trim END
     def Test ()
       echo 'test'
     enddef
   END
-  CheckScriptFailure(lines, 'E1068:', 1)
+  v9.CheckScriptFailure(lines, 'E1068:', 1)
 
   lines =<< trim END
     func Test ()
       echo 'test'
     endfunc
   END
-  CheckScriptSuccess(lines)
+  v9.CheckScriptSuccess(lines)
 enddef
 
 def Test_enddef_dict_key()
@@ -338,8 +338,8 @@
 enddef
 
 def Test_return_something()
-  ReturnString()->assert_equal('string')
-  ReturnNumber()->assert_equal(123)
+  g:ReturnString()->assert_equal('string')
+  g:ReturnNumber()->assert_equal(123)
   assert_fails('ReturnGlobal()', 'E1012: Type mismatch; expected number but got string', '', 1, 'ReturnGlobal')
 
   var lines =<< trim END
@@ -354,7 +354,7 @@
       enddef
       defcompile
   END
-  CheckScriptFailure(lines, 'E1096:')
+  v9.CheckScriptFailure(lines, 'E1096:')
 enddef
 
 def Test_check_argument_type()
@@ -370,25 +370,25 @@
       disass Func
       Func()
   END
-  CheckScriptFailure(lines, 'E1013: Argument 2: type mismatch, expected number but got bool', 2)
+  v9.CheckScriptFailure(lines, 'E1013: Argument 2: type mismatch, expected number but got bool', 2)
 enddef
 
 def Test_missing_return()
-  CheckDefFailure(['def Missing(): number',
+  v9.CheckDefFailure(['def Missing(): number',
                    '  if g:cond',
                    '    echo "no return"',
                    '  else',
                    '    return 0',
                    '  endif'
                    'enddef'], 'E1027:')
-  CheckDefFailure(['def Missing(): number',
+  v9.CheckDefFailure(['def Missing(): number',
                    '  if g:cond',
                    '    return 1',
                    '  else',
                    '    echo "no return"',
                    '  endif'
                    'enddef'], 'E1027:')
-  CheckDefFailure(['def Missing(): number',
+  v9.CheckDefFailure(['def Missing(): number',
                    '  if g:cond',
                    '    return 1',
                    '  else',
@@ -409,7 +409,7 @@
       enddef
       defcompile
   END
-  CheckScriptSuccess(lines)
+  v9.CheckScriptSuccess(lines)
 enddef
 
 let s:nothing = 0
@@ -422,7 +422,7 @@
 enddef
 
 def Test_return_nothing()
-  ReturnNothing()
+  g:ReturnNothing()
   s:nothing->assert_equal(1)
 enddef
 
@@ -434,7 +434,7 @@
     enddef
     defcompile
   END
-  CheckScriptFailure(lines, 'E1010:', 2)
+  v9.CheckScriptFailure(lines, 'E1010:', 2)
 
   lines =<< trim END
       vim9script
@@ -448,8 +448,8 @@
       echo Test(Inc)
   END
   # doing this twice was leaking memory
-  CheckScriptFailure(lines, 'E1010:')
-  CheckScriptFailure(lines, 'E1010:')
+  v9.CheckScriptFailure(lines, 'E1010:')
+  v9.CheckScriptFailure(lines, 'E1010:')
 enddef
 
 def Test_return_list_any()
@@ -464,7 +464,7 @@
       enddef
       echo Func()
   END
-  CheckScriptSuccess(lines)
+  v9.CheckScriptSuccess(lines)
 
   lines =<< trim END
       vim9script
@@ -475,10 +475,10 @@
       enddef
       echo Func()
   END
-  CheckScriptSuccess(lines)
+  v9.CheckScriptSuccess(lines)
 enddef
 
-func Increment()
+func s:Increment()
   let g:counter += 1
 endfunc
 
@@ -493,7 +493,7 @@
   unlet g:counter
 enddef
 
-def MyVarargs(arg: string, ...rest: list<string>): string
+def s:MyVarargs(arg: string, ...rest: list<string>): string
   var res = arg
   for s in rest
     res ..= ',' .. s
@@ -508,23 +508,23 @@
 enddef
 
 def Test_call_white_space()
-  CheckDefAndScriptFailure(["call Test ('text')"], ['E476:', 'E1068:'])
+  v9.CheckDefAndScriptFailure(["call Test ('text')"], ['E476:', 'E1068:'])
 enddef
 
 def MyDefaultArgs(name = 'string'): string
   return name
 enddef
 
-def MyDefaultSecond(name: string, second: bool  = true): string
+def s:MyDefaultSecond(name: string, second: bool  = true): string
   return second ? name : 'none'
 enddef
 
 
 def Test_call_default_args()
-  MyDefaultArgs()->assert_equal('string')
-  MyDefaultArgs(v:none)->assert_equal('string')
-  MyDefaultArgs('one')->assert_equal('one')
-  assert_fails('MyDefaultArgs("one", "two")', 'E118:', '', 4, 'Test_call_default_args')
+  g:MyDefaultArgs()->assert_equal('string')
+  g:MyDefaultArgs(v:none)->assert_equal('string')
+  g:MyDefaultArgs('one')->assert_equal('one')
+  assert_fails('g:MyDefaultArgs("one", "two")', 'E118:', '', 4, 'Test_call_default_args')
 
   MyDefaultSecond('test')->assert_equal('test')
   MyDefaultSecond('test', true)->assert_equal('test')
@@ -549,13 +549,13 @@
       DefArg(1234)->assert_equal('12341234')
       DefArg("ok")->assert_equal('okok')
   END
-  CheckDefAndScriptSuccess(lines)
+  v9.CheckDefAndScriptSuccess(lines)
 
-  CheckScriptFailure(['def Func(arg: number = asdf)', 'enddef', 'defcompile'], 'E1001:')
+  v9.CheckScriptFailure(['def Func(arg: number = asdf)', 'enddef', 'defcompile'], 'E1001:')
   delfunc g:Func
-  CheckScriptFailure(['def Func(arg: number = "text")', 'enddef', 'defcompile'], 'E1013: Argument 1: type mismatch, expected number but got string')
+  v9.CheckScriptFailure(['def Func(arg: number = "text")', 'enddef', 'defcompile'], 'E1013: Argument 1: type mismatch, expected number but got string')
   delfunc g:Func
-  CheckDefFailure(['def Func(x: number = )', 'enddef'], 'E15:')
+  v9.CheckDefFailure(['def Func(x: number = )', 'enddef'], 'E15:')
 
   lines =<< trim END
       vim9script
@@ -563,7 +563,7 @@
       enddef
       defcompile
   END
-  CheckScriptFailure(lines, 'E1001: Variable not found: b')
+  v9.CheckScriptFailure(lines, 'E1001: Variable not found: b')
 
   # using script variable requires matching type or type cast when executed
   lines =<< trim END
@@ -574,8 +574,8 @@
       enddef
       defcompile
   END
-  CheckScriptSuccess(lines + ['a = "text"', 'Func()'])
-  CheckScriptFailure(lines + ['a = 123', 'Func()'], 'E1013: Argument 1: type mismatch, expected string but got number')
+  v9.CheckScriptSuccess(lines + ['a = "text"', 'Func()'])
+  v9.CheckScriptFailure(lines + ['a = 123', 'Func()'], 'E1013: Argument 1: type mismatch, expected string but got number')
 
   # using global variable does not require type cast
   lines =<< trim END
@@ -586,10 +586,10 @@
       g:str = 'works'
       Func()
   END
-  CheckScriptSuccess(lines)
+  v9.CheckScriptSuccess(lines)
 enddef
 
-def FuncWithComment(  # comment
+def s:FuncWithComment(  # comment
   a: number, #comment
   b: bool, # comment
   c: string) #comment
@@ -606,7 +606,7 @@
         arg: string)
       enddef
   END
-  CheckScriptFailure(lines, 'E125:', 1)
+  v9.CheckScriptFailure(lines, 'E125:', 1)
 
   lines =<< trim END
       def Func(
@@ -614,7 +614,7 @@
         )
       enddef
   END
-  CheckScriptFailure(lines, 'E475:', 2)
+  v9.CheckScriptFailure(lines, 'E475:', 2)
 
   lines =<< trim END
       def Func(
@@ -622,7 +622,7 @@
         )# comment
       enddef
   END
-  CheckScriptFailure(lines, 'E488:', 3)
+  v9.CheckScriptFailure(lines, 'E488:', 3)
 enddef
 
 def Test_nested_function()
@@ -636,11 +636,11 @@
   endfunc
   NestedFunc(':func')->assert_equal('nested :func')
 
-  CheckDefFailure(['def Nested()', 'enddef', 'Nested(66)'], 'E118:')
-  CheckDefFailure(['def Nested(arg: string)', 'enddef', 'Nested()'], 'E119:')
+  v9.CheckDefFailure(['def Nested()', 'enddef', 'Nested(66)'], 'E118:')
+  v9.CheckDefFailure(['def Nested(arg: string)', 'enddef', 'Nested()'], 'E119:')
 
-  CheckDefFailure(['def s:Nested()', 'enddef'], 'E1075:')
-  CheckDefFailure(['def b:Nested()', 'enddef'], 'E1075:')
+  v9.CheckDefFailure(['def s:Nested()', 'enddef'], 'E1075:')
+  v9.CheckDefFailure(['def b:Nested()', 'enddef'], 'E1075:')
 
   var lines =<< trim END
       def Outer()
@@ -651,7 +651,7 @@
         enddef
       enddef
   END
-  CheckDefFailure(lines, 'E1073:')
+  v9.CheckDefFailure(lines, 'E1073:')
 
   lines =<< trim END
       def Outer()
@@ -662,7 +662,7 @@
         enddef
       enddef
   END
-  CheckDefFailure(lines, 'E1117:')
+  v9.CheckDefFailure(lines, 'E1117:')
 
   lines =<< trim END
       vim9script
@@ -675,7 +675,7 @@
       Outer()
       Inner()
   END
-  CheckScriptFailure(lines, 'E117: Unknown function: Inner')
+  v9.CheckScriptFailure(lines, 'E117: Unknown function: Inner')
   assert_equal('ok', g:result)
   unlet g:result
 
@@ -696,7 +696,7 @@
       assert_equal(1, Test())
       assert_equal(2, Test())
   END
-  CheckScriptSuccess(lines)
+  v9.CheckScriptSuccess(lines)
 
   # also works when "thecount" is inside the "if" block
   lines =<< trim END
@@ -715,7 +715,7 @@
       assert_equal(1, Test())
       assert_equal(2, Test())
   END
-  CheckScriptSuccess(lines)
+  v9.CheckScriptSuccess(lines)
 
   lines =<< trim END
       vim9script
@@ -726,7 +726,7 @@
       enddef
       defcompile
   END
-  CheckScriptFailure(lines, 'E1173: Text found after enddef: burp', 3)
+  v9.CheckScriptFailure(lines, 'E1173: Text found after enddef: burp', 3)
 enddef
 
 def Test_not_nested_function()
@@ -759,7 +759,7 @@
       g:Inner()->assert_equal('inner')
       delfunc g:Inner
   END
-  CheckScriptSuccess(lines)
+  v9.CheckScriptSuccess(lines)
 
   lines =<< trim END
       vim9script
@@ -779,7 +779,7 @@
       g:Inner()->assert_equal('inner')
       delfunc g:Inner
   END
-  CheckScriptSuccess(lines)
+  v9.CheckScriptSuccess(lines)
 
   lines =<< trim END
       vim9script
@@ -792,7 +792,7 @@
       Outer()
       Outer()
   END
-  CheckScriptFailure(lines, "E122:")
+  v9.CheckScriptFailure(lines, "E122:")
   delfunc g:Inner
 
   lines =<< trim END
@@ -805,7 +805,7 @@
       enddef
       Outer()
   END
-  CheckScriptSuccess(lines)
+  v9.CheckScriptSuccess(lines)
   delfunc g:Inner
 
   lines =<< trim END
@@ -820,7 +820,7 @@
       enddef
       defcompile
   END
-  CheckScriptFailure(lines, "E1073:", 1)
+  v9.CheckScriptFailure(lines, "E1073:", 1)
 
   lines =<< trim END
       vim9script
@@ -831,7 +831,7 @@
         echo 'script'
       enddef
   END
-  CheckScriptFailure(lines, "E1073:", 5)
+  v9.CheckScriptFailure(lines, "E1073:", 5)
 enddef
 
 def DefListAll()
@@ -867,7 +867,7 @@
     enddef
     defcompile
   END
-  CheckScriptFailure(lines, 'E476:', 1)
+  v9.CheckScriptFailure(lines, 'E476:', 1)
 enddef
 
 def Test_global_local_function()
@@ -883,7 +883,7 @@
       Func()->assert_equal('local')
       delfunc g:Func
   END
-  CheckScriptSuccess(lines)
+  v9.CheckScriptSuccess(lines)
 
   lines =<< trim END
       vim9script
@@ -892,7 +892,7 @@
       enddef
       s:Funcy()
   END
-  CheckScriptFailure(lines, 'E117:')
+  v9.CheckScriptFailure(lines, 'E117:')
 enddef
 
 def Test_local_function_shadows_global()
@@ -909,7 +909,7 @@
       AnotherFunc()->assert_equal(7)
       delfunc g:Gfunc
   END
-  CheckScriptSuccess(lines)
+  v9.CheckScriptSuccess(lines)
 
   lines =<< trim END
       vim9script
@@ -921,10 +921,10 @@
       enddef
       AnotherFunc()
   END
-  CheckScriptFailure(lines, 'E705:')
+  v9.CheckScriptFailure(lines, 'E705:')
   delfunc g:Func
 
-  # global function is found without g: prefix
+  # global function is not found with g: prefix
   lines =<< trim END
       vim9script
       def g:Func(): string
@@ -934,9 +934,9 @@
         return Func()
       enddef
       assert_equal('global', AnotherFunc())
-    delfunc g:Func
   END
-  CheckScriptSuccess(lines)
+  v9.CheckScriptFailure(lines, 'E117:')
+  delfunc g:Func
 
   lines =<< trim END
       vim9script
@@ -946,7 +946,7 @@
       assert_equal('global', Func())
       delfunc g:Func
   END
-  CheckScriptSuccess(lines)
+  v9.CheckScriptSuccess(lines)
 
   # This does not shadow "i" which is visible only inside the for loop
   lines =<< trim END
@@ -961,7 +961,7 @@
         Foo(i)
       endfor
   END
-  CheckScriptSuccess(lines)
+  v9.CheckScriptSuccess(lines)
 enddef
 
 func TakesOneArg(arg)
@@ -969,10 +969,10 @@
 endfunc
 
 def Test_call_wrong_args()
-  CheckDefFailure(['TakesOneArg()'], 'E119:')
-  CheckDefFailure(['TakesOneArg(11, 22)'], 'E118:')
-  CheckDefFailure(['bufnr(xxx)'], 'E1001:')
-  CheckScriptFailure(['def Func(Ref: func(s: string))'], 'E475:')
+  v9.CheckDefFailure(['g:TakesOneArg()'], 'E119:')
+  v9.CheckDefFailure(['g:TakesOneArg(11, 22)'], 'E118:')
+  v9.CheckDefFailure(['bufnr(xxx)'], 'E1001:')
+  v9.CheckScriptFailure(['def Func(Ref: func(s: string))'], 'E475:')
 
   var lines =<< trim END
     vim9script
@@ -981,7 +981,7 @@
     enddef
     Func([])
   END
-  CheckScriptFailure(lines, 'E1013: Argument 1: type mismatch, expected string but got list<unknown>', 5)
+  v9.CheckScriptFailure(lines, 'E1013: Argument 1: type mismatch, expected string but got list<unknown>', 5)
 
   # argument name declared earlier is found when declaring a function
   lines =<< trim END
@@ -991,7 +991,7 @@
       echo nr
     enddef
   END
-  CheckScriptFailure(lines, 'E1168:')
+  v9.CheckScriptFailure(lines, 'E1168:')
 
   # argument name declared later is only found when compiling
   lines =<< trim END
@@ -1001,8 +1001,8 @@
     enddef
     var name = 'piet'
   END
-  CheckScriptSuccess(lines)
-  CheckScriptFailure(lines + ['defcompile'], 'E1168:')
+  v9.CheckScriptSuccess(lines)
+  v9.CheckScriptFailure(lines + ['defcompile'], 'E1168:')
 
   lines =<< trim END
     vim9script
@@ -1062,10 +1062,10 @@
       enddef
       Testme()
   END
-  CheckScriptSuccess(head + ["funcMap['func']('str', 123, [1, 2, 3])"] + tail)
+  v9.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:')
+  v9.CheckScriptFailure(head + ["funcMap['func']('str', 123)"] + tail, 'E119:')
+  v9.CheckScriptFailure(head + ["funcMap['func']('str', 123, [1], 4)"] + tail, 'E118:')
 
   var lines =<< trim END
       vim9script
@@ -1073,7 +1073,7 @@
       Ref = (j) => !j
       echo Ref(false)
   END
-  CheckScriptFailure(lines, 'E1013: Argument 1: type mismatch, expected number but got bool', 4)
+  v9.CheckScriptFailure(lines, 'E1013: Argument 1: type mismatch, expected number but got bool', 4)
 
   lines =<< trim END
       vim9script
@@ -1081,7 +1081,7 @@
       Ref = (j) => !j
       call Ref(false)
   END
-  CheckScriptFailure(lines, 'E1013: Argument 1: type mismatch, expected number but got bool', 4)
+  v9.CheckScriptFailure(lines, 'E1013: Argument 1: type mismatch, expected number but got bool', 4)
 enddef
 
 def Test_call_lambda_args()
@@ -1093,42 +1093,42 @@
 
     assert_equal('xyz', ((a: string): string => a)('xyz'))
   END
-  CheckDefAndScriptSuccess(lines)
+  v9.CheckDefAndScriptSuccess(lines)
 
-  CheckDefFailure(['echo ((i) => 0)()'],
+  v9.CheckDefFailure(['echo ((i) => 0)()'],
                   'E119: Not enough arguments for function: ((i) => 0)()')
 
   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')
+  v9.CheckDefFailure(lines, 'E1013: Argument 2: type mismatch, expected number but got string')
 
   lines =<< trim END
     var Ref: func(job, string, number)
     Ref = (x, y) => 0
   END
-  CheckDefAndScriptFailure(lines, 'E1012:')
+  v9.CheckDefAndScriptFailure(lines, 'E1012:')
 
   lines =<< trim END
     var Ref: func(job, string)
     Ref = (x, y, z) => 0
   END
-  CheckDefAndScriptFailure(lines, 'E1012:')
+  v9.CheckDefAndScriptFailure(lines, 'E1012:')
 
   lines =<< trim END
       var one = 1
       var l = [1, 2, 3]
       echo map(l, (one) => one)
   END
-  CheckDefFailure(lines, 'E1167:')
-  CheckScriptFailure(['vim9script'] + lines, 'E1168:')
+  v9.CheckDefFailure(lines, 'E1167:')
+  v9.CheckScriptFailure(['vim9script'] + lines, 'E1168:')
 
   lines =<< trim END
     var Ref: func(any, ?any): bool
     Ref = (_, y = 1) => false
   END
-  CheckDefAndScriptFailure(lines, 'E1172:')
+  v9.CheckDefAndScriptFailure(lines, 'E1172:')
 
   lines =<< trim END
       var a = 0
@@ -1138,7 +1138,7 @@
       b = (txt =~ 'x' ? 1 : 2)
       assert_equal(2, b)
   END
-  CheckDefAndScriptSuccess(lines)
+  v9.CheckDefAndScriptSuccess(lines)
 
   lines =<< trim END
       def ShadowLocal()
@@ -1147,7 +1147,7 @@
         echo map(l, (one) => one)
       enddef
   END
-  CheckDefFailure(lines, 'E1167:')
+  v9.CheckDefFailure(lines, 'E1167:')
 
   lines =<< trim END
       def Shadowarg(one: number)
@@ -1155,18 +1155,18 @@
         echo map(l, (one) => one)
       enddef
   END
-  CheckDefFailure(lines, 'E1167:')
+  v9.CheckDefFailure(lines, 'E1167:')
 
   lines =<< trim END
     echo ((a) => a)('aa', 'bb')
   END
-  CheckDefAndScriptFailure(lines, 'E118:', 1)
+  v9.CheckDefAndScriptFailure(lines, 'E118:', 1)
 
   lines =<< trim END
     echo 'aa'->((a) => a)('bb')
   END
-  CheckDefFailure(lines, 'E118: Too many arguments for function: ->((a) => a)(''bb'')', 1)
-  CheckScriptFailure(['vim9script'] + lines, 'E118: Too many arguments for function: <lambda>', 2)
+  v9.CheckDefFailure(lines, 'E118: Too many arguments for function: ->((a) => a)(''bb'')', 1)
+  v9.CheckScriptFailure(['vim9script'] + lines, 'E118: Too many arguments for function: <lambda>', 2)
 enddef
 
 def Test_lambda_line_nr()
@@ -1180,7 +1180,7 @@
           ->substitute("('\\|')", ' ', 'g'))
       assert_match('Last set from .* line 4', out)
   END
-  CheckScriptSuccess(lines)
+  v9.CheckScriptSuccess(lines)
 enddef
 
 def FilterWithCond(x: string, Cond: func(string): bool): bool
@@ -1191,24 +1191,24 @@
   var lines =<< trim END
     var Ref = (): => 123
   END
-  CheckDefAndScriptFailure(lines, 'E1157:', 1)
+  v9.CheckDefAndScriptFailure(lines, 'E1157:', 1)
 
   # no space before the return type
   lines =<< trim END
     var Ref = (x):number => x + 1
   END
-  CheckDefAndScriptFailure(lines, 'E1069:', 1)
+  v9.CheckDefAndScriptFailure(lines, 'E1069:', 1)
 
   # this works
   for x in ['foo', 'boo']
-    echo FilterWithCond(x, (v) => v =~ '^b')
+    echo g:FilterWithCond(x, (v) => v =~ '^b')
   endfor
 
   # this fails
   lines =<< trim END
-      echo FilterWithCond('foo', (v) => v .. '^b')
+      echo g:FilterWithCond('foo', (v) => v .. '^b')
   END
-  CheckDefAndScriptFailure(lines, 'E1013: Argument 2: type mismatch, expected func(string): bool but got func(any): string', 1)
+  v9.CheckDefAndScriptFailure(lines, 'E1013: Argument 2: type mismatch, expected func(string): bool but got func(any): string', 1)
 
   lines =<< trim END
       var Lambda1 = (x) => {
@@ -1220,7 +1220,7 @@
               }
       assert_equal('foo', Lambda2('foo'))
   END
-  CheckDefAndScriptSuccess(lines)
+  v9.CheckDefAndScriptSuccess(lines)
 
   lines =<< trim END
       var Lambda = (x): string => {
@@ -1228,11 +1228,11 @@
               }
       echo Lambda(['foo'])
   END
-  CheckDefExecAndScriptFailure(lines, 'E1012:')
+  v9.CheckDefExecAndScriptFailure(lines, 'E1012:')
 enddef
 
 def Test_lambda_uses_assigned_var()
-  CheckDefSuccess([
+  v9.CheckDefSuccess([
         'var x: any = "aaa"'
         'x = filter(["bbb"], (_, v) => v =~ x)'])
 enddef
@@ -1247,7 +1247,7 @@
       enddef
       Foo()
   END
-  CheckScriptSuccess(lines)
+  v9.CheckScriptSuccess(lines)
 
   lines =<< trim END
       vim9script
@@ -1261,7 +1261,7 @@
       legacy call g:TestFunc({nr -> 0})
       delfunc g:TestFunc
   END
-  CheckScriptSuccess(lines)
+  v9.CheckScriptSuccess(lines)
 enddef
 
 def Test_lambda_in_reduce_line_break()
@@ -1281,7 +1281,7 @@
           }, {})
       assert_equal({Bob: 2, Sam: 1, Cat: 3}, result)
   END
-  CheckScriptSuccess(lines)
+  v9.CheckScriptSuccess(lines)
 enddef
 
 def Test_set_opfunc_to_lambda()
@@ -1303,7 +1303,7 @@
     assert_equal(4, g:result)
     bwipe!
   END
-  CheckScriptSuccess(lines)
+  v9.CheckScriptSuccess(lines)
 enddef
 
 def Test_set_opfunc_to_global_function()
@@ -1333,7 +1333,7 @@
 
     bwipe!
   END
-  CheckScriptSuccess(lines)
+  v9.CheckScriptSuccess(lines)
   &operatorfunc = ''
 enddef
 
@@ -1346,7 +1346,7 @@
       var Fn = s:Getit
       assert_equal('it', Fn())
   END
-  CheckScriptSuccess(lines)
+  v9.CheckScriptSuccess(lines)
 enddef
 
 def Test_lambda_type_allocated()
@@ -1365,7 +1365,7 @@
     &omnifunc = string(Lambda)
     Lambda = (a, b) => strlen(a)
   END
-  CheckScriptSuccess(lines)
+  v9.CheckScriptSuccess(lines)
 enddef
 
 " Default arg and varargs
@@ -1378,13 +1378,13 @@
 enddef
 
 def Test_call_def_varargs()
-  assert_fails('MyDefVarargs()', 'E119:', '', 1, 'Test_call_def_varargs')
-  MyDefVarargs('one')->assert_equal('one,foo')
-  MyDefVarargs('one', 'two')->assert_equal('one,two')
-  MyDefVarargs('one', 'two', 'three')->assert_equal('one,two,three')
-  CheckDefFailure(['MyDefVarargs("one", 22)'],
+  assert_fails('g:MyDefVarargs()', 'E119:', '', 1, 'Test_call_def_varargs')
+  g:MyDefVarargs('one')->assert_equal('one,foo')
+  g:MyDefVarargs('one', 'two')->assert_equal('one,two')
+  g:MyDefVarargs('one', 'two', 'three')->assert_equal('one,two,three')
+  v9.CheckDefFailure(['g:MyDefVarargs("one", 22)'],
       'E1013: Argument 2: type mismatch, expected string but got number')
-  CheckDefFailure(['MyDefVarargs("one", "two", 123)'],
+  v9.CheckDefFailure(['g:MyDefVarargs("one", "two", 123)'],
       'E1013: Argument 3: type mismatch, expected string but got number')
 
   var lines =<< trim END
@@ -1394,7 +1394,7 @@
       enddef
       Func('a', 'b', 'c')
   END
-  CheckScriptSuccess(lines)
+  v9.CheckScriptSuccess(lines)
 
   lines =<< trim END
       vim9script
@@ -1403,7 +1403,7 @@
       enddef
       Func()
   END
-  CheckScriptSuccess(lines)
+  v9.CheckScriptSuccess(lines)
 
   lines =<< trim END
       vim9script
@@ -1412,7 +1412,7 @@
       enddef
       Func(0)
   END
-  CheckScriptSuccess(lines)
+  v9.CheckScriptSuccess(lines)
 
   lines =<< trim END
       vim9script
@@ -1421,7 +1421,7 @@
       enddef
       Func(0)
   END
-  CheckScriptFailure(lines, 'E1180:', 2)
+  v9.CheckScriptFailure(lines, 'E1180:', 2)
 
   lines =<< trim END
       vim9script
@@ -1430,7 +1430,7 @@
       enddef
       Func('a', 'b', 'c')
   END
-  CheckScriptSuccess(lines)
+  v9.CheckScriptSuccess(lines)
 
   lines =<< trim END
       vim9script
@@ -1439,7 +1439,7 @@
       enddef
       Func(1, 2, 3)
   END
-  CheckScriptFailure(lines, 'E1013: Argument 1: type mismatch')
+  v9.CheckScriptFailure(lines, 'E1013: Argument 1: type mismatch')
 
   lines =<< trim END
       vim9script
@@ -1448,7 +1448,7 @@
       enddef
       Func('a', 9)
   END
-  CheckScriptFailure(lines, 'E1013: Argument 2: type mismatch')
+  v9.CheckScriptFailure(lines, 'E1013: Argument 2: type mismatch')
 
   lines =<< trim END
       vim9script
@@ -1457,7 +1457,7 @@
       enddef
       Func(1, 'a')
   END
-  CheckScriptFailure(lines, 'E1013: Argument 1: type mismatch')
+  v9.CheckScriptFailure(lines, 'E1013: Argument 1: type mismatch')
 
   lines =<< trim END
       vim9script
@@ -1467,7 +1467,7 @@
         echo l
       enddef
   END
-  CheckScriptFailure(lines, 'E1160:')
+  v9.CheckScriptFailure(lines, 'E1160:')
 
   lines =<< trim END
       vim9script
@@ -1479,7 +1479,7 @@
       enddef
       DoIt()
   END
-  CheckScriptFailure(lines, 'E1013: Argument 1: type mismatch, expected number but got string')
+  v9.CheckScriptFailure(lines, 'E1013: Argument 1: type mismatch, expected number but got string')
 enddef
 
 let s:value = ''
@@ -1510,8 +1510,8 @@
   RefDef2Arg(99)->assert_equal('99text')
   RefDef2Arg(77, 'some')->assert_equal('77some')
 
-  CheckDefFailure(['var RefWrong: func(string?)'], 'E1010:')
-  CheckDefFailure(['var RefWrong: func(?string, string)'], 'E1007:')
+  v9.CheckDefFailure(['var RefWrong: func(string?)'], 'E1010:')
+  v9.CheckDefFailure(['var RefWrong: func(?string, string)'], 'E1007:')
 
   var RefVarargs: func(...list<string>): string
   RefVarargs = FuncVarargs
@@ -1519,8 +1519,8 @@
   RefVarargs('one')->assert_equal('one')
   RefVarargs('one', 'two')->assert_equal('one,two')
 
-  CheckDefFailure(['var RefWrong: func(...list<string>, string)'], 'E110:')
-  CheckDefFailure(['var RefWrong: func(...list<string>, ?string)'], 'E110:')
+  v9.CheckDefFailure(['var RefWrong: func(...list<string>, string)'], 'E110:')
+  v9.CheckDefFailure(['var RefWrong: func(...list<string>, ?string)'], 'E110:')
 enddef
 
 " Only varargs
@@ -1529,11 +1529,11 @@
 enddef
 
 def Test_call_varargs_only()
-  MyVarargsOnly()->assert_equal('')
-  MyVarargsOnly('one')->assert_equal('one')
-  MyVarargsOnly('one', 'two')->assert_equal('one,two')
-  CheckDefFailure(['MyVarargsOnly(1)'], 'E1013: Argument 1: type mismatch, expected string but got number')
-  CheckDefFailure(['MyVarargsOnly("one", 2)'], 'E1013: Argument 2: type mismatch, expected string but got number')
+  g:MyVarargsOnly()->assert_equal('')
+  g:MyVarargsOnly('one')->assert_equal('one')
+  g:MyVarargsOnly('one', 'two')->assert_equal('one,two')
+  v9.CheckDefFailure(['g:MyVarargsOnly(1)'], 'E1013: Argument 1: type mismatch, expected string but got number')
+  v9.CheckDefFailure(['g:MyVarargsOnly("one", 2)'], 'E1013: Argument 2: type mismatch, expected string but got number')
 enddef
 
 def Test_using_var_as_arg()
@@ -1542,7 +1542,7 @@
         var x = 234
       enddef
   END
-  CheckDefFailure(lines, 'E1006:')
+  v9.CheckDefFailure(lines, 'E1006:')
 
   lines =<< trim END
       def Func(Ref: number)
@@ -1550,14 +1550,14 @@
         enddef
       enddef
   END
-  CheckDefFailure(lines, 'E1073:')
+  v9.CheckDefFailure(lines, 'E1073:')
 enddef
 
-def DictArg(arg: dict<string>)
+def s:DictArg(arg: dict<string>)
   arg['key'] = 'value'
 enddef
 
-def ListArg(arg: list<string>)
+def s:ListArg(arg: list<string>)
   arg[0] = 'value'
 enddef
 
@@ -1570,12 +1570,12 @@
   ListArg(l)
   l[0]->assert_equal('value')
 
-  CheckScriptFailure(['def Func(arg: number)', 'arg = 3', 'enddef', 'defcompile'], 'E1090:')
+  v9.CheckScriptFailure(['def Func(arg: number)', 'arg = 3', 'enddef', 'defcompile'], 'E1090:')
   delfunc! g:Func
 enddef
 
 " These argument names are reserved in legacy functions.
-def WithReservedNames(firstline: string, lastline: string): string
+def s:WithReservedNames(firstline: string, lastline: string): string
   return firstline .. lastline
 enddef
 
@@ -1605,7 +1605,7 @@
     var Funcref: func: number = function('RetNumber')
     Funcref()->assert_equal(123)
   END
-  CheckScriptSuccess(lines)
+  v9.CheckScriptSuccess(lines)
 
   lines =<< trim END
     vim9script
@@ -1618,7 +1618,7 @@
     var Funcref = function('RetNumber')
     Bar(Funcref)->assert_equal(123)
   END
-  CheckScriptSuccess(lines)
+  v9.CheckScriptSuccess(lines)
 
   lines =<< trim END
     vim9script
@@ -1628,7 +1628,7 @@
     var Funcref: func(number) = function('UseNumber')
     Funcref(123)
   END
-  CheckScriptSuccess(lines)
+  v9.CheckScriptSuccess(lines)
 
   lines =<< trim END
     vim9script
@@ -1637,7 +1637,7 @@
     enddef
     var Funcref: func(string) = function('UseNumber')
   END
-  CheckScriptFailure(lines, 'E1012: Type mismatch; expected func(string) but got func(number)')
+  v9.CheckScriptFailure(lines, 'E1012: Type mismatch; expected func(string) but got func(number)')
 
   lines =<< trim END
     vim9script
@@ -1650,7 +1650,7 @@
     Funcref(123)
     g:echo->assert_equal(123)
   END
-  CheckScriptSuccess(lines)
+  v9.CheckScriptSuccess(lines)
 
   lines =<< trim END
     vim9script
@@ -1663,7 +1663,7 @@
     Funcref(1, 2, 3)
     g:echo->assert_equal([1, 2, 3])
   END
-  CheckScriptSuccess(lines)
+  v9.CheckScriptSuccess(lines)
 
   lines =<< trim END
     vim9script
@@ -1685,7 +1685,7 @@
     g:optarg->assert_equal(18)
     g:listarg->assert_equal([1, 2, 3])
   END
-  CheckScriptSuccess(lines)
+  v9.CheckScriptSuccess(lines)
 enddef
 
 let SomeFunc = function('len')
@@ -1741,7 +1741,7 @@
       # Compile all functions
       defcompile
   END
-  CheckScriptFailure(lines, 'E1173: Text found after enddef: BBBB')
+  v9.CheckScriptFailure(lines, 'E1173: Text found after enddef: BBBB')
 enddef
 
 def Test_nested_function_with_args_split()
@@ -1758,7 +1758,7 @@
       # Compile all functions
       defcompile
   END
-  CheckScriptFailure(lines, 'E1173: Text found after enddef: BBBB')
+  v9.CheckScriptFailure(lines, 'E1173: Text found after enddef: BBBB')
 
   lines =<< trim END
       vim9script
@@ -1768,7 +1768,7 @@
       enddef
       defcompile
   END
-  CheckScriptFailure(lines, 'E1173: Text found after endfunction: BBBB')
+  v9.CheckScriptFailure(lines, 'E1173: Text found after endfunction: BBBB')
 enddef
 
 def Test_error_in_function_args()
@@ -1783,30 +1783,30 @@
       # Compile all functions
       defcompile
   END
-  CheckScriptFailure(lines, 'E488:')
+  v9.CheckScriptFailure(lines, 'E488:')
 enddef
 
 def Test_return_type_wrong()
-  CheckScriptFailure([
+  v9.CheckScriptFailure([
         'def Func(): number',
         'return "a"',
         'enddef',
         'defcompile'], 'expected number but got string')
   delfunc! g:Func
-  CheckScriptFailure([
+  v9.CheckScriptFailure([
         'def Func(): string',
         'return 1',
         'enddef',
         'defcompile'], 'expected string but got number')
   delfunc! g:Func
-  CheckScriptFailure([
+  v9.CheckScriptFailure([
         'def Func(): void',
         'return "a"',
         'enddef',
         'defcompile'],
         'E1096: Returning a value in a function without a return type')
   delfunc! g:Func
-  CheckScriptFailure([
+  v9.CheckScriptFailure([
         'def Func()',
         'return "a"',
         'enddef',
@@ -1814,42 +1814,42 @@
         'E1096: Returning a value in a function without a return type')
   delfunc! g:Func
 
-  CheckScriptFailure([
+  v9.CheckScriptFailure([
         'def Func(): number',
         'return',
         'enddef',
         'defcompile'], 'E1003:')
   delfunc! g:Func
 
-  CheckScriptFailure([
+  v9.CheckScriptFailure([
         'def Func():number',
         'return 123',
         'enddef',
         'defcompile'], 'E1069:')
   delfunc! g:Func
 
-  CheckScriptFailure([
+  v9.CheckScriptFailure([
         'def Func() :number',
         'return 123',
         'enddef',
         'defcompile'], 'E1059:')
   delfunc! g:Func
 
-  CheckScriptFailure([
+  v9.CheckScriptFailure([
         'def Func() : number',
         'return 123',
         'enddef',
         'defcompile'], 'E1059:')
   delfunc! g:Func
 
-  CheckScriptFailure(['def Func(): list', 'return []', 'enddef'], 'E1008:')
+  v9.CheckScriptFailure(['def Func(): list', 'return []', 'enddef'], 'E1008:')
   delfunc! g:Func
-  CheckScriptFailure(['def Func(): dict', 'return {}', 'enddef'], 'E1008:')
+  v9.CheckScriptFailure(['def Func(): dict', 'return {}', 'enddef'], 'E1008:')
   delfunc! g:Func
-  CheckScriptFailure(['def Func()', 'return 1'], 'E1057:')
+  v9.CheckScriptFailure(['def Func()', 'return 1'], 'E1057:')
   delfunc! g:Func
 
-  CheckScriptFailure([
+  v9.CheckScriptFailure([
         'vim9script',
         'def FuncB()',
         '  return 123',
@@ -1861,12 +1861,12 @@
 enddef
 
 def Test_arg_type_wrong()
-  CheckScriptFailure(['def Func3(items: list)', 'echo "a"', 'enddef'], 'E1008: Missing <type>')
-  CheckScriptFailure(['def Func4(...)', 'echo "a"', 'enddef'], 'E1055: Missing name after ...')
-  CheckScriptFailure(['def Func5(items:string)', 'echo "a"'], 'E1069:')
-  CheckScriptFailure(['def Func5(items)', 'echo "a"'], 'E1077:')
-  CheckScriptFailure(['def Func6(...x:list<number>)', 'echo "a"', 'enddef'], 'E1069:')
-  CheckScriptFailure(['def Func7(...x: int)', 'echo "a"', 'enddef'], 'E1010:')
+  v9.CheckScriptFailure(['def Func3(items: list)', 'echo "a"', 'enddef'], 'E1008: Missing <type>')
+  v9.CheckScriptFailure(['def Func4(...)', 'echo "a"', 'enddef'], 'E1055: Missing name after ...')
+  v9.CheckScriptFailure(['def Func5(items:string)', 'echo "a"'], 'E1069:')
+  v9.CheckScriptFailure(['def Func5(items)', 'echo "a"'], 'E1077:')
+  v9.CheckScriptFailure(['def Func6(...x:list<number>)', 'echo "a"', 'enddef'], 'E1069:')
+  v9.CheckScriptFailure(['def Func7(...x: int)', 'echo "a"', 'enddef'], 'E1010:')
 enddef
 
 def Test_white_space_before_comma()
@@ -1875,7 +1875,7 @@
     def Func(a: number , b: number)
     enddef
   END
-  CheckScriptFailure(lines, 'E1068:')
+  v9.CheckScriptFailure(lines, 'E1068:')
   call assert_fails('vim9cmd echo stridx("a" .. "b" , "a")', 'E1068:')
 enddef
 
@@ -1885,7 +1885,7 @@
     def Func(a: number,b: number)
     enddef
   END
-  CheckScriptFailure(lines, 'E1069:')
+  v9.CheckScriptFailure(lines, 'E1069:')
 
   # OK in legacy function
   lines =<< trim END
@@ -1893,7 +1893,7 @@
     func Func(a,b)
     endfunc
   END
-  CheckScriptSuccess(lines)
+  v9.CheckScriptSuccess(lines)
 enddef
 
 def Test_vim9script_call()
@@ -1998,7 +1998,7 @@
     enddef
     defcompile
   END
-  CheckScriptFailure(lines, 'E1054:')
+  v9.CheckScriptFailure(lines, 'E1054:')
 enddef
 
 def Test_vim9script_call_fail_type()
@@ -2009,7 +2009,7 @@
     enddef
     MyFunc(1234)
   END
-  CheckScriptFailure(lines, 'E1013: Argument 1: type mismatch, expected string but got number')
+  v9.CheckScriptFailure(lines, 'E1013: Argument 1: type mismatch, expected string but got number')
 enddef
 
 def Test_vim9script_call_fail_const()
@@ -2034,7 +2034,7 @@
       call Change()
       unlet g:Aconst
   END
-  CheckScriptFailure(lines, 'E741: Value is locked: Aconst', 2)
+  v9.CheckScriptFailure(lines, 'E741: Value is locked: Aconst', 2)
 enddef
 
 " Test that inside :function a Python function can be defined, :def is not
@@ -2056,7 +2056,7 @@
     enddef
 
     def CallGoneSoon()
-      GoneSoon()
+      g:GoneSoon()
     enddef
     defcompile
 
@@ -2099,7 +2099,7 @@
       timer_start(1000, (_) => feedkeys("\<F4>"))
       sleep 1500m
   END
-  CheckScriptSuccess(lines)
+  v9.CheckScriptSuccess(lines)
   nunmap <F4>
   set updatetime&
 enddef
@@ -2167,34 +2167,34 @@
   s:funcResult = two
 enddef
 
-def FuncOneArgRetString(arg: string): string
+def s:FuncOneArgRetString(arg: string): string
   return arg
 enddef
 
-def FuncOneArgRetAny(arg: any): any
+def s:FuncOneArgRetAny(arg: any): any
   return arg
 enddef
 
 def Test_func_type()
   var Ref1: func()
   s:funcResult = 0
-  Ref1 = FuncNoArgNoRet
+  Ref1 = g:FuncNoArgNoRet
   Ref1()
   s:funcResult->assert_equal(11)
 
   var Ref2: func
   s:funcResult = 0
-  Ref2 = FuncNoArgNoRet
+  Ref2 = g:FuncNoArgNoRet
   Ref2()
   s:funcResult->assert_equal(11)
 
   s:funcResult = 0
-  Ref2 = FuncOneArgNoRet
+  Ref2 = g:FuncOneArgNoRet
   Ref2(12)
   s:funcResult->assert_equal(12)
 
   s:funcResult = 0
-  Ref2 = FuncNoArgRetNumber
+  Ref2 = g:FuncNoArgRetNumber
   Ref2()->assert_equal(1234)
   s:funcResult->assert_equal(22)
 
@@ -2229,51 +2229,51 @@
 
 def Test_func_type_part()
   var RefVoid: func: void
-  RefVoid = FuncNoArgNoRet
-  RefVoid = FuncOneArgNoRet
-  CheckDefFailure(['var RefVoid: func: void', 'RefVoid = FuncNoArgRetNumber'], 'E1012: Type mismatch; expected func(...) but got func(): number')
-  CheckDefFailure(['var RefVoid: func: void', 'RefVoid = FuncNoArgRetString'], 'E1012: Type mismatch; expected func(...) but got func(): string')
+  RefVoid = g:FuncNoArgNoRet
+  RefVoid = g:FuncOneArgNoRet
+  v9.CheckDefFailure(['var RefVoid: func: void', 'RefVoid = g:FuncNoArgRetNumber'], 'E1012: Type mismatch; expected func(...) but got func(): number')
+  v9.CheckDefFailure(['var RefVoid: func: void', 'RefVoid = FuncNoArgRetString'], 'E1012: Type mismatch; expected func(...) but got func(): string')
 
   var RefAny: func(): any
-  RefAny = FuncNoArgRetNumber
+  RefAny = g:FuncNoArgRetNumber
   RefAny = FuncNoArgRetString
-  CheckDefFailure(['var RefAny: func(): any', 'RefAny = FuncNoArgNoRet'], 'E1012: Type mismatch; expected func(): any but got func()')
-  CheckDefFailure(['var RefAny: func(): any', 'RefAny = FuncOneArgNoRet'], 'E1012: Type mismatch; expected func(): any but got func(number)')
+  v9.CheckDefFailure(['var RefAny: func(): any', 'RefAny = g:FuncNoArgNoRet'], 'E1012: Type mismatch; expected func(): any but got func()')
+  v9.CheckDefFailure(['var RefAny: func(): any', 'RefAny = g:FuncOneArgNoRet'], 'E1012: Type mismatch; expected func(): any but got func(number)')
 
   var RefAnyNoArgs: func: any = RefAny
 
   var RefNr: func: number
-  RefNr = FuncNoArgRetNumber
+  RefNr = g:FuncNoArgRetNumber
   RefNr = FuncOneArgRetNumber
-  CheckDefFailure(['var RefNr: func: number', 'RefNr = FuncNoArgNoRet'], 'E1012: Type mismatch; expected func(...): number but got func()')
-  CheckDefFailure(['var RefNr: func: number', 'RefNr = FuncNoArgRetString'], 'E1012: Type mismatch; expected func(...): number but got func(): string')
+  v9.CheckDefFailure(['var RefNr: func: number', 'RefNr = g:FuncNoArgNoRet'], 'E1012: Type mismatch; expected func(...): number but got func()')
+  v9.CheckDefFailure(['var RefNr: func: number', 'RefNr = FuncNoArgRetString'], 'E1012: Type mismatch; expected func(...): number but got func(): string')
 
   var RefStr: func: string
   RefStr = FuncNoArgRetString
   RefStr = FuncOneArgRetString
-  CheckDefFailure(['var RefStr: func: string', 'RefStr = FuncNoArgNoRet'], 'E1012: Type mismatch; expected func(...): string but got func()')
-  CheckDefFailure(['var RefStr: func: string', 'RefStr = FuncNoArgRetNumber'], 'E1012: Type mismatch; expected func(...): string but got func(): number')
+  v9.CheckDefFailure(['var RefStr: func: string', 'RefStr = g:FuncNoArgNoRet'], 'E1012: Type mismatch; expected func(...): string but got func()')
+  v9.CheckDefFailure(['var RefStr: func: string', 'RefStr = g:FuncNoArgRetNumber'], 'E1012: Type mismatch; expected func(...): string but got func(): number')
 enddef
 
 def Test_func_type_fails()
-  CheckDefFailure(['var ref1: func()'], 'E704:')
+  v9.CheckDefFailure(['var ref1: func()'], 'E704:')
 
-  CheckDefFailure(['var Ref1: func()', 'Ref1 = FuncNoArgRetNumber'], 'E1012: Type mismatch; expected func() but got func(): number')
-  CheckDefFailure(['var Ref1: func()', 'Ref1 = FuncOneArgNoRet'], 'E1012: Type mismatch; expected func() but got func(number)')
-  CheckDefFailure(['var Ref1: func()', 'Ref1 = FuncOneArgRetNumber'], 'E1012: Type mismatch; expected func() but got func(number): number')
-  CheckDefFailure(['var Ref1: func(bool)', 'Ref1 = FuncTwoArgNoRet'], 'E1012: Type mismatch; expected func(bool) but got func(bool, number)')
-  CheckDefFailure(['var Ref1: func(?bool)', 'Ref1 = FuncTwoArgNoRet'], 'E1012: Type mismatch; expected func(?bool) but got func(bool, number)')
-  CheckDefFailure(['var Ref1: func(...bool)', 'Ref1 = FuncTwoArgNoRet'], 'E1012: Type mismatch; expected func(...bool) but got func(bool, number)')
+  v9.CheckDefFailure(['var Ref1: func()', 'Ref1 = g:FuncNoArgRetNumber'], 'E1012: Type mismatch; expected func() but got func(): number')
+  v9.CheckDefFailure(['var Ref1: func()', 'Ref1 = g:FuncOneArgNoRet'], 'E1012: Type mismatch; expected func() but got func(number)')
+  v9.CheckDefFailure(['var Ref1: func()', 'Ref1 = FuncOneArgRetNumber'], 'E1012: Type mismatch; expected func() but got func(number): number')
+  v9.CheckDefFailure(['var Ref1: func(bool)', 'Ref1 = g:FuncTwoArgNoRet'], 'E1012: Type mismatch; expected func(bool) but got func(bool, number)')
+  v9.CheckDefFailure(['var Ref1: func(?bool)', 'Ref1 = g:FuncTwoArgNoRet'], 'E1012: Type mismatch; expected func(?bool) but got func(bool, number)')
+  v9.CheckDefFailure(['var Ref1: func(...bool)', 'Ref1 = g:FuncTwoArgNoRet'], 'E1012: Type mismatch; expected func(...bool) but got func(bool, number)')
 
-  CheckDefFailure(['var RefWrong: func(string ,number)'], 'E1068:')
-  CheckDefFailure(['var RefWrong: func(string,number)'], 'E1069:')
-  CheckDefFailure(['var RefWrong: func(bool, bool, bool, bool, bool, bool, bool, bool, bool, bool, bool, bool, bool, bool, bool, bool, bool, bool, bool, bool)'], 'E1005:')
-  CheckDefFailure(['var RefWrong: func(bool):string'], 'E1069:')
+  v9.CheckDefFailure(['var RefWrong: func(string ,number)'], 'E1068:')
+  v9.CheckDefFailure(['var RefWrong: func(string,number)'], 'E1069:')
+  v9.CheckDefFailure(['var RefWrong: func(bool, bool, bool, bool, bool, bool, bool, bool, bool, bool, bool, bool, bool, bool, bool, bool, bool, bool, bool, bool)'], 'E1005:')
+  v9.CheckDefFailure(['var RefWrong: func(bool):string'], 'E1069:')
 enddef
 
 def Test_func_return_type()
   var nr: number
-  nr = FuncNoArgRetNumber()
+  nr = g:FuncNoArgRetNumber()
   nr->assert_equal(1234)
 
   nr = FuncOneArgRetAny(122)
@@ -2283,7 +2283,7 @@
   str = FuncOneArgRetAny('yes')
   str->assert_equal('yes')
 
-  CheckDefFailure(['var str: string', 'str = FuncNoArgRetNumber()'], 'E1012: Type mismatch; expected string but got number')
+  v9.CheckDefFailure(['var str: string', 'str = g:FuncNoArgRetNumber()'], 'E1012: Type mismatch; expected string but got number')
 enddef
 
 def Test_func_common_type()
@@ -2302,7 +2302,7 @@
   assert_equal(7, list[2](3, 'word'))
 enddef
 
-def MultiLine(
+def s:MultiLine(
     arg1: string,
     arg2 = 1234,
     ...rest: list<string>
@@ -2326,10 +2326,10 @@
 enddef
 
 func Test_multiline_not_vim9()
-  call MultiLine('text')->assert_equal('text1234')
-  call MultiLine('text', 777)->assert_equal('text777')
-  call MultiLine('text', 777, 'one')->assert_equal('text777one')
-  call MultiLine('text', 777, 'one', 'two')->assert_equal('text777one-two')
+  call s:MultiLine('text')->assert_equal('text1234')
+  call s:MultiLine('text', 777)->assert_equal('text777')
+  call s:MultiLine('text', 777, 'one')->assert_equal('text777one')
+  call s:MultiLine('text', 777, 'one', 'two')->assert_equal('text777one-two')
 endfunc
 
 
@@ -2426,19 +2426,19 @@
 enddef
 
 def Test_deleted_function()
-  CheckDefExecFailure([
+  v9.CheckDefExecFailure([
       'var RefMe: func = function("g:DelMe")',
       'delfunc g:DelMe',
       'echo RefMe()'], 'E117:')
 enddef
 
 def Test_unknown_function()
-  CheckDefExecFailure([
+  v9.CheckDefExecFailure([
       'var Ref: func = function("NotExist")',
       'delfunc g:NotExist'], 'E700:')
 enddef
 
-def RefFunc(Ref: func(any): any): string
+def s:RefFunc(Ref: func(any): any): string
   return Ref('more')
 enddef
 
@@ -2447,7 +2447,7 @@
   RefFunc((s) => local .. s)->assert_equal('some more')
 enddef
 
-def MakeRef()
+def s:MakeRef()
   var local = 'some '
   g:Ref = (s) => local .. s
 enddef
@@ -2458,7 +2458,7 @@
   unlet g:Ref
 enddef
 
-def MakeTwoRefs()
+def s:MakeTwoRefs()
   var local = ['some']
   g:Extend = (s) => local->add(s)
   g:Read = () => local
@@ -2476,11 +2476,11 @@
   unlet g:Read
 enddef
 
-def ReadRef(Ref: func(): list<string>): string
+def s:ReadRef(Ref: func(): list<string>): string
   return join(Ref(), ' ')
 enddef
 
-def ExtendRef(Ref: func(string): list<string>, add: string)
+def s:ExtendRef(Ref: func(string): list<string>, add: string)
   Ref(add)
 enddef
 
@@ -2496,12 +2496,12 @@
   unlet g:Read
 enddef
 
-def MakeArgRefs(theArg: string)
+def s:MakeArgRefs(theArg: string)
   var local = 'loc_val'
   g:UseArg = (s) => theArg .. '/' .. local .. '/' .. s
 enddef
 
-def MakeArgRefsVarargs(theArg: string, ...rest: list<string>)
+def s:MakeArgRefsVarargs(theArg: string, ...rest: list<string>)
   var local = 'the_loc'
   g:UseVararg = (s) => theArg .. '/' .. local .. '/' .. s .. '/' .. join(rest)
 enddef
@@ -2526,10 +2526,10 @@
       enddef
       assert_equal([3, 4, 5], Test(Inc))
   END
-  CheckScriptSuccess(lines)
+  v9.CheckScriptSuccess(lines)
 enddef
 
-def MakeGetAndAppendRefs()
+def s:MakeGetAndAppendRefs()
   var local = 'a'
 
   def Append(arg: string)
@@ -2563,7 +2563,7 @@
   Closure('!!!')->assert_equal('text!!!')
 enddef
 
-func GetResult(Ref)
+func s:GetResult(Ref)
   return a:Ref('some')
 endfunc
 
@@ -2584,7 +2584,7 @@
     enddef
     Func()
   END
-  CheckScriptSuccess(lines)
+  v9.CheckScriptSuccess(lines)
 enddef
 
 def Test_nested_closure_used()
@@ -2598,7 +2598,7 @@
       Func()
       assert_equal('hello', g:Myclosure())
   END
-  CheckScriptSuccess(lines)
+  v9.CheckScriptSuccess(lines)
 enddef
 
 def Test_nested_closure_fails()
@@ -2612,7 +2612,7 @@
     enddef
     FuncA()
   END
-  CheckScriptFailure(lines, 'E1012:')
+  v9.CheckScriptFailure(lines, 'E1012:')
 enddef
 
 def Test_global_closure()
@@ -2632,7 +2632,7 @@
       repeat(['aaa', 'bbb', 'ccc'], 3)->setline(1)
       ReverseEveryNLines(3, 1, 9)
   END
-  CheckScriptSuccess(lines)
+  v9.CheckScriptSuccess(lines)
   var expected = repeat(['ccc', 'bbb', 'aaa'], 3)
   assert_equal(expected, getline(1, 9))
   bwipe!
@@ -2653,7 +2653,7 @@
       enddef
       Outer()
   END
-  CheckScriptSuccess(lines)
+  v9.CheckScriptSuccess(lines)
   delfunc g:Inner
 enddef
 
@@ -2669,7 +2669,7 @@
       enddef
       Func()
   END
-  CheckScriptFailure(lines, 'E1248')
+  v9.CheckScriptFailure(lines, 'E1248')
 enddef
 
 def Test_failure_in_called_function()
@@ -2692,7 +2692,7 @@
       endtry
       au! TerminalWinOpen
   END
-  CheckScriptSuccess(lines)
+  v9.CheckScriptSuccess(lines)
 enddef
 
 def Test_nested_lambda()
@@ -2707,7 +2707,7 @@
     enddef
     Func()
   END
-  CheckScriptSuccess(lines)
+  v9.CheckScriptSuccess(lines)
 enddef
 
 def Test_double_nested_lambda()
@@ -2720,7 +2720,7 @@
       enddef
       assert_equal('hello-there', F('hello')('-')('there'))
   END
-  CheckScriptSuccess(lines)
+  v9.CheckScriptSuccess(lines)
 enddef
 
 def Test_nested_inline_lambda()
@@ -2733,7 +2733,7 @@
       enddef
       assert_equal('--there++', F('++')('there')('--'))
   END
-  CheckScriptSuccess(lines)
+  v9.CheckScriptSuccess(lines)
 
   lines =<< trim END
       vim9script
@@ -2743,7 +2743,7 @@
           })
         })
   END
-  CheckScriptSuccess(lines)
+  v9.CheckScriptSuccess(lines)
 
   lines =<< trim END
       vim9script
@@ -2759,7 +2759,7 @@
 
       defcomp
   END
-  CheckScriptSuccess(lines)
+  v9.CheckScriptSuccess(lines)
 enddef
 
 def Shadowed(): list<number>
@@ -2768,10 +2768,10 @@
 enddef
 
 def Test_lambda_arg_shadows_func()
-  assert_equal([42], Shadowed())
+  assert_equal([42], g:Shadowed())
 enddef
 
-def Line_continuation_in_def(dir: string = ''): string
+def s:Line_continuation_in_def(dir: string = ''): string
   var path: string = empty(dir)
           \ ? 'empty'
           \ : 'full'
@@ -2788,10 +2788,10 @@
       var script = 'test'
       assert_equal(['test'], map(['one'], (_, _) => script))
   END
-  CheckScriptSuccess(lines)
+  v9.CheckScriptSuccess(lines)
 enddef
 
-def Line_continuation_in_lambda(): list<string>
+def s:Line_continuation_in_lambda(): list<string>
   var x = range(97, 100)
       ->mapnew((_, v) => nr2char(v)
           ->toupper())
@@ -2812,7 +2812,7 @@
                     ))
       assert_equal(['1:2:yyy'], res)
   END
-  CheckScriptSuccess(lines)
+  v9.CheckScriptSuccess(lines)
 enddef
 
 def Test_list_lambda()
@@ -2834,7 +2834,7 @@
           flist[i] = () => inloop
       endfor
   END
-  CheckScriptSuccess(lines)
+  v9.CheckScriptSuccess(lines)
 
   lines =<< trim END
       vim9script
@@ -2846,7 +2846,7 @@
         endfor
       endif
   END
-  CheckScriptSuccess(lines)
+  v9.CheckScriptSuccess(lines)
 
   lines =<< trim END
       vim9script
@@ -2858,7 +2858,7 @@
         flist[i] = () => outloop
       endfor
   END
-  CheckScriptFailure(lines, 'E1001: Variable not found: outloop', 1)
+  v9.CheckScriptFailure(lines, 'E1001: Variable not found: outloop', 1)
 
   lines =<< trim END
       vim9script
@@ -2867,7 +2867,7 @@
       endfor
       assert_equal(0, ((i) => 0)(0))
   END
-  CheckScriptSuccess(lines)
+  v9.CheckScriptSuccess(lines)
 enddef
 
 def Test_legacy_lambda()
@@ -2876,7 +2876,7 @@
   var lines =<< trim END
       echo {x -> 'hello ' .. x}('foo')
   END
-  CheckDefAndScriptFailure(lines, 'E720:')
+  v9.CheckDefAndScriptFailure(lines, 'E720:')
 
   lines =<< trim END
       vim9script
@@ -2885,7 +2885,7 @@
       enddef
       legacy call s:Func()
   END
-  CheckScriptSuccess(lines)
+  v9.CheckScriptSuccess(lines)
 enddef
 
 def Test_legacy()
@@ -2902,7 +2902,7 @@
       unlet g:legacyvar
       delfunc g:LegacyFunction
   END
-  CheckScriptSuccess(lines)
+  v9.CheckScriptSuccess(lines)
 enddef
 
 def Test_legacy_errors()
@@ -2910,7 +2910,7 @@
               'for', 'endfor', 'continue', 'break',
               'while', 'endwhile',
               'try', 'catch', 'finally', 'endtry']
-    CheckDefFailure(['legacy ' .. cmd .. ' expr'], 'E1189:')
+    v9.CheckDefFailure(['legacy ' .. cmd .. ' expr'], 'E1189:')
   endfor
 enddef
 
@@ -2942,10 +2942,10 @@
       assert_equal('bar', g:result)
       unlet g:result
   END
-  CheckScriptSuccess(lines)
+  v9.CheckScriptSuccess(lines)
 enddef
 
-def DoFilterThis(a: string): list<string>
+def s:DoFilterThis(a: string): list<string>
   # closure nested inside another closure using argument
   var Filter = (l) => filter(l, (_, v) => stridx(v, a) == 0)
   return ['x', 'y', 'a', 'x2', 'c']->Filter()
@@ -2978,12 +2978,12 @@
   writefile(lines, 'XTest_silent_echo')
 
   # Check that the balloon shows up after a mouse move
-  var buf = RunVimInTerminal('-S XTest_silent_echo', {'rows': 6})
+  var buf = g:RunVimInTerminal('-S XTest_silent_echo', {'rows': 6})
   term_sendkeys(buf, ":abc")
-  VerifyScreenDump(buf, 'Test_vim9_silent_echo', {})
+  g:VerifyScreenDump(buf, 'Test_vim9_silent_echo', {})
 
   # clean up
-  StopVimInTerminal(buf)
+  g:StopVimInTerminal(buf)
   delete('XTest_silent_echo')
 enddef
 
@@ -2992,7 +2992,7 @@
   g:did_it = 'yes'
 enddef
 
-func UserError()
+func s:UserError()
   silent! invalid
 endfunc
 
@@ -3028,10 +3028,10 @@
       popup_create('popup', {filter: Filter})
       feedkeys("o\r", 'xnt')
   END
-  CheckScriptSuccess(lines)
+  v9.CheckScriptSuccess(lines)
 enddef
 
-def Fibonacci(n: number): number
+def s:Fibonacci(n: number): number
   if n < 2
     return n
   else
@@ -3043,7 +3043,7 @@
   Fibonacci(20)->assert_equal(6765)
 enddef
 
-def TreeWalk(dir: string): list<any>
+def s:TreeWalk(dir: string): list<any>
   return readdir(dir)->mapnew((_, val) =>
             fnamemodify(dir .. '/' .. val, ':p')->isdirectory()
                ? {[val]: TreeWalk(dir .. '/' .. val)}
@@ -3067,25 +3067,25 @@
       vim9script
       def s: list<string>
   END
-  CheckScriptFailure(lines, 'E129:')
+  v9.CheckScriptFailure(lines, 'E129:')
 
   lines =<< trim END
       vim9script
       def g: list<string>
   END
-  CheckScriptFailure(lines, 'E129:')
+  v9.CheckScriptFailure(lines, 'E129:')
 
   lines =<< trim END
       vim9script
       def <SID>: list<string>
   END
-  CheckScriptFailure(lines, 'E884:')
+  v9.CheckScriptFailure(lines, 'E884:')
 
   lines =<< trim END
       vim9script
       def F list<string>
   END
-  CheckScriptFailure(lines, 'E488:')
+  v9.CheckScriptFailure(lines, 'E488:')
 enddef
 
 def Test_partial_call()
@@ -3113,7 +3113,7 @@
       var RepeatFunc = function('repeat', ['o'])
       assert_equal('ooooo', RepeatFunc(5))
   END
-  CheckDefAndScriptSuccess(lines)
+  v9.CheckDefAndScriptSuccess(lines)
 
   lines =<< trim END
       vim9script
@@ -3122,12 +3122,12 @@
       var Expr: func(dict<any>): dict<any>
       const Call = Foo(Expr)
   END
-  CheckScriptFailure(lines, 'E1235:')
+  v9.CheckScriptFailure(lines, 'E1235:')
 enddef
 
 def Test_cmd_modifier()
   tab echo '0'
-  CheckDefFailure(['5tab echo 3'], 'E16:')
+  v9.CheckDefFailure(['5tab echo 3'], 'E16:')
 enddef
 
 def Test_restore_modifiers()
@@ -3146,7 +3146,7 @@
       endfunc
       Func()
   END
-  CheckScriptSuccess(lines)
+  v9.CheckScriptSuccess(lines)
   g:ei_after->assert_equal('')
 enddef
 
@@ -3154,7 +3154,7 @@
   eval 1 + 2
   eval 2 + 3
   # call not on fourth line
-  StackBot()
+  g:StackBot()
 enddef
 
 def StackBot()
@@ -3164,7 +3164,7 @@
 
 def Test_callstack_def()
   try
-    StackTop()
+    g:StackTop()
   catch
     v:throwpoint->assert_match('Test_callstack_def\[2\]..StackTop\[4\]..StackBot, line 2')
   endtry
@@ -3185,7 +3185,7 @@
       enddef
       Func()
   END
-  CheckScriptSuccess(lines)
+  v9.CheckScriptSuccess(lines)
 enddef
 
 def Test_reset_did_emsg()
@@ -3199,7 +3199,7 @@
       enddef
       Func()
   END
-  CheckScriptFailure(lines, 'E492:', 8)
+  v9.CheckScriptFailure(lines, 'E492:', 8)
   delfunc! g:Func
 enddef
 
@@ -3236,7 +3236,7 @@
       assert_equal('none', g:result)
       unlet g:result
   END
-  CheckScriptSuccess(lines)
+  v9.CheckScriptSuccess(lines)
 enddef
 
 def Test_continues_with_silent_error()
@@ -3252,7 +3252,7 @@
       assert_equal('yes', g:result)
       unlet g:result
   END
-  CheckScriptSuccess(lines)
+  v9.CheckScriptSuccess(lines)
 enddef
 
 def Test_abort_even_with_silent()
@@ -3267,7 +3267,7 @@
       assert_equal('none', g:result)
       unlet g:result
   END
-  CheckScriptSuccess(lines)
+  v9.CheckScriptSuccess(lines)
 enddef
 
 def Test_cmdmod_silent_restored()
@@ -3315,7 +3315,7 @@
       Crash()
       assert_equal('CbEbEaCa', result)
   END
-  CheckScriptSuccess(lines)
+  v9.CheckScriptSuccess(lines)
 enddef
 
 def Test_dict_member_with_silent()
@@ -3333,7 +3333,7 @@
       assert_equal('0', g:result)
       unlet g:result
   END
-  CheckScriptSuccess(lines)
+  v9.CheckScriptSuccess(lines)
 enddef
 
 def Test_skip_cmds_with_silent()
@@ -3351,7 +3351,7 @@
 
       Func(true)
   END
-  CheckScriptSuccess(lines)
+  v9.CheckScriptSuccess(lines)
 enddef
 
 def Test_opfunc()
@@ -3396,12 +3396,12 @@
   END
   call writefile(lines, 'XTest_opfunc_error')
 
-  var buf = RunVimInTerminal('-S XTest_opfunc_error', {rows: 6, wait_for_ruler: 0})
-  WaitForAssert(() => assert_match('Press ENTER', term_getline(buf, 6)))
-  WaitForAssert(() => assert_match('E684: list index out of range: 0', term_getline(buf, 5)))
+  var buf = g:RunVimInTerminal('-S XTest_opfunc_error', {rows: 6, wait_for_ruler: 0})
+  g:WaitForAssert(() => assert_match('Press ENTER', term_getline(buf, 6)))
+  g:WaitForAssert(() => assert_match('E684: list index out of range: 0', term_getline(buf, 5)))
 
   # clean up
-  StopVimInTerminal(buf)
+  g:StopVimInTerminal(buf)
   delete('XTest_opfunc_error')
 enddef
 
@@ -3419,7 +3419,7 @@
       defcompile
       # not reached
   END
-  if !RunVim([], lines, '--clean -c WriteDone -c quit')
+  if !g:RunVim([], lines, '--clean -c WriteDone -c quit')
     return
   endif
   assert_equal(['Done'], readfile('XnestedDone'))
@@ -3446,8 +3446,8 @@
       enddef
   END
 
-  CheckScriptSuccess(lines + ['echo H(G(F1))'])
-  CheckScriptFailure(lines + ['echo H(G(F2))'], 'E1013:')
+  v9.CheckScriptSuccess(lines + ['echo H(G(F1))'])
+  v9.CheckScriptFailure(lines + ['echo H(G(F2))'], 'E1013:')
 enddef
 
 def Test_list_any_type_checked()
@@ -3462,13 +3462,13 @@
       Foo()
   END
   lines[2] = 'var l: list<any>'
-  CheckScriptFailure(lines, 'E1013: Argument 1: type mismatch, expected list<dict<any>> but got list<any>', 2)
+  v9.CheckScriptFailure(lines, 'E1013: Argument 1: type mismatch, expected list<dict<any>> but got list<any>', 2)
 
   lines[2] = 'var l: list<any> = []'
-  CheckScriptFailure(lines, 'E1013: Argument 1: type mismatch, expected list<dict<any>> but got list<any>', 2)
+  v9.CheckScriptFailure(lines, 'E1013: Argument 1: type mismatch, expected list<dict<any>> but got list<any>', 2)
 
   lines[2] = 'var l: list<any> = [11]'
-  CheckScriptFailure(lines, 'E1013: Argument 1: type mismatch, expected list<dict<any>> but got list<number>', 2)
+  v9.CheckScriptFailure(lines, 'E1013: Argument 1: type mismatch, expected list<dict<any>> but got list<number>', 2)
 enddef
 
 def Test_compile_error()
@@ -3479,7 +3479,7 @@
     call g:Broken()
   END
   # First call: compilation error
-  CheckScriptFailure(lines, 'E1051: Wrong argument type for +')
+  v9.CheckScriptFailure(lines, 'E1051: Wrong argument type for +')
 
   # Second call won't try compiling again
   assert_fails('call g:Broken()', 'E1091: Function is not compiled: Broken')
@@ -3492,7 +3492,7 @@
     enddef
     silent! defcompile
   END
-  CheckScriptSuccess(lines)
+  v9.CheckScriptSuccess(lines)
 
   # Calling the function won't try compiling again
   assert_fails('call g:Broken()', 'E1091: Function is not compiled: Broken')
@@ -3520,7 +3520,7 @@
 
       assert_equal([[1], [2], [3]], range(3)->mapnew((_, v) => [v]->map((_, w) => w + 1)))
   END
-  CheckScriptSuccess(lines)
+  v9.CheckScriptSuccess(lines)
 
   lines =<< trim END
       def Ignore(_: string): string
@@ -3528,29 +3528,29 @@
       enddef
       defcompile
   END
-  CheckScriptFailure(lines, 'E1181:', 1)
+  v9.CheckScriptFailure(lines, 'E1181:', 1)
 
   lines =<< trim END
       var _ = 1
   END
-  CheckDefAndScriptFailure(lines, 'E1181:', 1)
+  v9.CheckDefAndScriptFailure(lines, 'E1181:', 1)
 
   lines =<< trim END
       var x = _
   END
-  CheckDefAndScriptFailure(lines, 'E1181:', 1)
+  v9.CheckDefAndScriptFailure(lines, 'E1181:', 1)
 enddef
 
 def Test_too_many_arguments()
   var lines =<< trim END
     echo [0, 1, 2]->map(() => 123)
   END
-  CheckDefExecAndScriptFailure(lines, 'E1106: 2 arguments too many', 1)
+  v9.CheckDefExecAndScriptFailure(lines, 'E1106: 2 arguments too many', 1)
 
   lines =<< trim END
     echo [0, 1, 2]->map((_) => 123)
   END
-  CheckDefExecAndScriptFailure(lines, 'E1106: One argument too many', 1)
+  v9.CheckDefExecAndScriptFailure(lines, 'E1106: One argument too many', 1)
 enddef
 
 def Test_closing_brace_at_start_of_line()
@@ -3560,10 +3560,10 @@
       Func(
       )
   END
-  call CheckDefAndScriptSuccess(lines)
+  v9.CheckDefAndScriptSuccess(lines)
 enddef
 
-func CreateMydict()
+func s:CreateMydict()
   let g:mydict = {}
   func g:mydict.afunc()
     let g:result = self.key
@@ -3588,7 +3588,7 @@
     enddef
     defcompile
   END
-  CheckScriptFailure(lines, 'E476:')
+  v9.CheckScriptFailure(lines, 'E476:')
 enddef
 
 if has('python3')
diff --git a/src/testdir/test_vim9_import.vim b/src/testdir/test_vim9_import.vim
index 7878788..440bef1 100644
--- a/src/testdir/test_vim9_import.vim
+++ b/src/testdir/test_vim9_import.vim
@@ -3,7 +3,7 @@
 
 source check.vim
 source term_util.vim
-source vim9.vim
+import './vim9.vim' as v9
 
 let s:export_script_lines =<< trim END
   vim9script
@@ -33,7 +33,7 @@
   export var AddRef = AddSome
 END
 
-def Undo_export_script_lines()
+def s:Undo_export_script_lines()
   unlet g:result
   unlet g:localname
 enddef
@@ -411,7 +411,7 @@
       enddef
       DoTest()
   END
-  CheckScriptSuccess(lines)
+  v9.CheckScriptSuccess(lines)
 
   delete('Xlib.vim')
 enddef
@@ -422,42 +422,42 @@
       import './Xfoo.vim' as foo
       foo = 'bar'
   END
-  CheckDefAndScriptFailure(lines, ['E1094:', 'E1236: Cannot use foo itself'])
+  v9.CheckDefAndScriptFailure(lines, ['E1094:', 'E1236: Cannot use foo itself'])
   lines =<< trim END
       vim9script
       import './Xfoo.vim' as foo
       var that = foo
   END
-  CheckScriptFailure(lines, 'E1060: Expected dot after name: foo')
+  v9.CheckScriptFailure(lines, 'E1060: Expected dot after name: foo')
   lines =<< trim END
       vim9script
       import './Xfoo.vim' as foo
       var that: any
       that += foo
   END
-  CheckScriptFailure(lines, 'E1060: Expected dot after name: foo')
+  v9.CheckScriptFailure(lines, 'E1060: Expected dot after name: foo')
   lines =<< trim END
       vim9script
       import './Xfoo.vim' as foo
       foo += 9
   END
-  CheckScriptFailure(lines, 'E1060: Expected dot after name: foo')
+  v9.CheckScriptFailure(lines, 'E1060: Expected dot after name: foo')
 
   lines =<< trim END
       vim9script
       import './Xfoo.vim' as 9foo
   END
-  CheckScriptFailure(lines, 'E1047:')
+  v9.CheckScriptFailure(lines, 'E1047:')
   lines =<< trim END
       vim9script
       import './Xfoo.vim' as the#foo
   END
-  CheckScriptFailure(lines, 'E1047:')
+  v9.CheckScriptFailure(lines, 'E1047:')
   lines =<< trim END
       vim9script
       import './Xfoo.vim' as g:foo
   END
-  CheckScriptFailure(lines, 'E1047:')
+  v9.CheckScriptFailure(lines, 'E1047:')
 
   delete('Xfoo.vim')
 
@@ -474,7 +474,7 @@
       import './Xthat.vim' as That
       That()
   END
-  CheckDefAndScriptFailure(lines, ['E1094:', 'E1236: Cannot use That itself'])
+  v9.CheckDefAndScriptFailure(lines, ['E1094:', 'E1236: Cannot use That itself'])
 
   lines =<< trim END
       vim9script
@@ -484,13 +484,13 @@
       enddef
       Func()
   END
-  CheckScriptFailure(lines, 'E1236: Cannot use That itself')
+  v9.CheckScriptFailure(lines, 'E1236: Cannot use That itself')
 
   lines =<< trim END
       import './Xthat.vim' as one
       import './Xthat.vim' as two
   END
-  CheckScriptFailure(lines, 'E1262:')
+  v9.CheckScriptFailure(lines, 'E1262:')
 
   delete('Xthat.vim')
  
@@ -501,24 +501,24 @@
       vim9script
       import './Ximport/.vim'
   END
-  CheckScriptFailure(lines, 'E1261: Cannot import .vim without using "as"')
+  v9.CheckScriptFailure(lines, 'E1261: Cannot import .vim without using "as"')
   lines =<< trim END
       vim9script
       import './Ximport/.vim' as vim
   END
-  CheckScriptSuccess(lines)
+  v9.CheckScriptSuccess(lines)
 
   writefile(['vim9script'], 'Ximport/.vimrc')
   lines =<< trim END
       vim9script
       import './Ximport/.vimrc'
   END
-  CheckScriptFailure(lines, 'E1257: Imported script must use "as" or end in .vim')
+  v9.CheckScriptFailure(lines, 'E1257: Imported script must use "as" or end in .vim')
   lines =<< trim END
       vim9script
       import './Ximport/.vimrc' as vimrc
   END
-  CheckScriptSuccess(lines)
+  v9.CheckScriptSuccess(lines)
 
   delete('Ximport', 'rf')
 enddef
@@ -626,7 +626,7 @@
       feedkeys(":Cmd ab\<Tab>\<C-B>#\<CR>", 'xnt')
       assert_equal('#Cmd abcd', @:)
   END
-  CheckScriptSuccess(lines)
+  v9.CheckScriptSuccess(lines)
 
   delcommand Cmd
   delete('Xscript.vim')
@@ -665,7 +665,7 @@
       assert_equal('experiment', getline(1))
       assert_equal('yes', g:completion_loaded)
   END
-  CheckScriptSuccess(lines)
+  v9.CheckScriptSuccess(lines)
 
   set thesaurusfunc=
   bwipe!
@@ -698,7 +698,7 @@
       feedkeys("\<F3>l", 'xt')
       assert_equal('yes', g:opfunc_called)
   END
-  CheckScriptSuccess(lines)
+  v9.CheckScriptSuccess(lines)
 
   set opfunc=
   bwipe!
@@ -732,7 +732,7 @@
       feedkeys("\<F3>l", 'xt')
       assert_equal('yes', g:opfunc_called)
   END
-  CheckScriptSuccess(lines)
+  v9.CheckScriptSuccess(lines)
 
   set opfunc=
   bwipe!
@@ -769,7 +769,7 @@
   new
   setline(1, ['# one', 'text', '# two', 'text'])
   g:fold_loaded = 'no'
-  CheckScriptSuccess(lines)
+  v9.CheckScriptSuccess(lines)
   assert_equal('no', g:fold_loaded)
   redraw
   assert_equal('yes', g:fold_loaded)
@@ -810,7 +810,7 @@
       set diffexpr=diff.DiffExpr()
       set diffopt=foldcolumn:0
   END
-  CheckScriptSuccess(lines)
+  v9.CheckScriptSuccess(lines)
 
   enew!
   call setline(1, ['one', 'two', 'three'])
@@ -842,7 +842,7 @@
       import './Xpatchexpr' as patch
       set patchexpr=patch.TPatch()
   END
-  CheckScriptSuccess(lines)
+  v9.CheckScriptSuccess(lines)
 
   call writefile(['input file'], 'Xinput')
   call writefile(['diff file'], 'Xdiff')
@@ -873,7 +873,7 @@
       import './Xformatter' as format
       set formatexpr=format.MyFormatExpr()
   END
-  CheckScriptSuccess(lines)
+  v9.CheckScriptSuccess(lines)
 
   new
   setline(1, ['a', 'b', 'c'])
@@ -903,7 +903,7 @@
     import './Xinclude.vim'
     set includeexpr=Xinclude.DoSub()
   END
-  CheckScriptSuccess(lines)
+  v9.CheckScriptSuccess(lines)
 
   setline(1, ['Xthatfile'])
   exe "normal \<C-W>f"
@@ -931,7 +931,7 @@
       set indentexpr=indent.GetIndent()
       set debug=throw
   END
-  CheckScriptSuccess(lines)
+  v9.CheckScriptSuccess(lines)
 
   new
   setline(1, 'hello')
@@ -964,7 +964,7 @@
       import './Xprint.vim'
       set printexpr=Xprint.PrintFile()
   END
-  CheckScriptSuccess(lines)
+  v9.CheckScriptSuccess(lines)
 
   help
   hardcopy dummy args
@@ -991,7 +991,7 @@
       import './Xconvert.vim' as conv
       set charconvert=conv.MakeUpper()
   END
-  CheckScriptSuccess(lines)
+  v9.CheckScriptSuccess(lines)
 
   writefile(['one', 'two'], 'Xfile')
   new Xfile
@@ -1024,7 +1024,7 @@
       import './Xsuggest.vim' as sugg
       set spell spellsuggest=expr:sugg.MySuggest()
   END
-  CheckScriptSuccess(lines)
+  v9.CheckScriptSuccess(lines)
 
   set verbose=1  # report errors
   call assert_equal(['Fox', 'Fop'], spellsuggest('Fo', 2))
@@ -1056,7 +1056,7 @@
       import autoload 'shadow.vim'
       assert_equal('Shadow()', shadow.Shadow())
   END
-  CheckScriptSuccess(lines)
+  v9.CheckScriptSuccess(lines)
 
   delfunc g:Shadow
   bwipe!
@@ -1065,9 +1065,9 @@
 enddef
 
 def Test_export_fails()
-  CheckScriptFailure(['export var some = 123'], 'E1042:')
-  CheckScriptFailure(['vim9script', 'export var g:some'], 'E1022:')
-  CheckScriptFailure(['vim9script', 'export echo 134'], 'E1043:')
+  v9.CheckScriptFailure(['export var some = 123'], 'E1042:')
+  v9.CheckScriptFailure(['vim9script', 'export var g:some'], 'E1022:')
+  v9.CheckScriptFailure(['vim9script', 'export echo 134'], 'E1043:')
 
   assert_fails('export something', 'E1043:')
 enddef
@@ -1088,12 +1088,12 @@
   END
   writefile(export, 'XexportCmd.vim')
 
-  var buf = RunVimInTerminal('-c "import Foo from ''./XexportCmd.vim''"', {
+  var buf = g:RunVimInTerminal('-c "import Foo from ''./XexportCmd.vim''"', {
                 rows: 6, wait_for_ruler: 0})
-  WaitForAssert(() => assert_match('^E1094:', term_getline(buf, 5)))
+  g:WaitForAssert(() => assert_match('^E1094:', term_getline(buf, 5)))
 
   delete('XexportCmd.vim')
-  StopVimInTerminal(buf)
+  g:StopVimInTerminal(buf)
 enddef
 
 def Test_vim9_reload_noclear()
@@ -1348,7 +1348,7 @@
     enddef
     TestDirect()
   END
-  CheckScriptSuccess(lines)
+  v9.CheckScriptSuccess(lines)
   delete('Xfilter.vim')
 enddef
 
@@ -1461,7 +1461,7 @@
       echo 'local to function'
     enddef
   END
-  CheckScriptFailure(lines, 'E1213: Redefining imported item "Func"')
+  v9.CheckScriptFailure(lines, 'E1213: Redefining imported item "Func"')
 
   lines =<< trim END
     vim9script
@@ -1473,7 +1473,7 @@
     enddef
     defcompile
   END
-  CheckScriptFailure(lines, 'E1236:')
+  v9.CheckScriptFailure(lines, 'E1236:')
 
   delete('XexportedFunc.vim')
 enddef
@@ -1696,10 +1696,10 @@
       assert_equal('final', prefixed.fname)
       assert_equal('const', prefixed.cname)
   END
-  CheckScriptSuccess(lines)
+  v9.CheckScriptSuccess(lines)
   # can source it again, autoload script not loaded again
   g:expected_loaded = 1
-  CheckScriptSuccess(lines)
+  v9.CheckScriptSuccess(lines)
 
   # can also get the items by autoload name
   lines =<< trim END
@@ -1709,7 +1709,7 @@
       call assert_equal('final', prefixed#fname)
       call assert_equal('const', prefixed#cname)
   END
-  CheckScriptSuccess(lines)
+  v9.CheckScriptSuccess(lines)
 
   unlet g:prefixed_loaded
   unlet g:expected_loaded
@@ -1737,42 +1737,42 @@
       import autoload 'notExport1.vim'
       echo notExport1.notFound
   END
-  CheckScriptFailure(lines, 'E1048: Item not found in script: notFound')
+  v9.CheckScriptFailure(lines, 'E1048: Item not found in script: notFound')
 
   lines =<< trim END
       vim9script
       import autoload 'notExport1.vim'
       echo notExport1.notExported
   END
-  CheckScriptFailure(lines, 'E1049: Item not exported in script: notExported')
+  v9.CheckScriptFailure(lines, 'E1049: Item not exported in script: notExported')
 
   lines =<< trim END
       vim9script
       import autoload 'notExport1.vim'
       echo notExport1.NotFunc()
   END
-  CheckScriptFailure(lines, 'E1048: Item not found in script: NotFunc')
+  v9.CheckScriptFailure(lines, 'E1048: Item not found in script: NotFunc')
 
   lines =<< trim END
       vim9script
       import autoload 'notExport1.vim'
       echo notExport1.NotExport()
   END
-  CheckScriptFailure(lines, 'E1049: Item not exported in script: NotExport')
+  v9.CheckScriptFailure(lines, 'E1049: Item not exported in script: NotExport')
 
   lines =<< trim END
       vim9script
       import autoload 'notExport1.vim'
       echo 'text'->notExport1.NotFunc()
   END
-  CheckScriptFailure(lines, 'E1048: Item not found in script: NotFunc')
+  v9.CheckScriptFailure(lines, 'E1048: Item not found in script: NotFunc')
 
   lines =<< trim END
       vim9script
       import autoload 'notExport1.vim'
       echo 'text'->notExport1.NotExport()
   END
-  CheckScriptFailure(lines, 'E1049: Item not exported in script: NotExport')
+  v9.CheckScriptFailure(lines, 'E1049: Item not exported in script: NotExport')
 
   # using a :def function we use a different autoload script every time so that
   # the function is compiled without the script loaded
@@ -1785,7 +1785,7 @@
       enddef
       Testit()
   END
-  CheckScriptFailure(lines, 'E1048: Item not found in script: notExport2#notFound')
+  v9.CheckScriptFailure(lines, 'E1048: Item not found in script: notExport2#notFound')
 
   writefile(exportLines, 'Xdir/autoload/notExport3.vim')
   lines =<< trim END
@@ -1797,7 +1797,7 @@
       Testit()
   END
   # don't get E1049 because it is too complicated to figure out
-  CheckScriptFailure(lines, 'E1048: Item not found in script: notExport3#notExported')
+  v9.CheckScriptFailure(lines, 'E1048: Item not found in script: notExport3#notExported')
 
   writefile(exportLines, 'Xdir/autoload/notExport4.vim')
   lines =<< trim END
@@ -1808,7 +1808,7 @@
       enddef
       Testit()
   END
-  CheckScriptFailure(lines, 'E117: Unknown function: notExport4#NotFunc')
+  v9.CheckScriptFailure(lines, 'E117: Unknown function: notExport4#NotFunc')
 
   writefile(exportLines, 'Xdir/autoload/notExport5.vim')
   lines =<< trim END
@@ -1819,7 +1819,7 @@
       enddef
       Testit()
   END
-  CheckScriptFailure(lines, 'E117: Unknown function: notExport5#NotExport')
+  v9.CheckScriptFailure(lines, 'E117: Unknown function: notExport5#NotExport')
 
   writefile(exportLines, 'Xdir/autoload/notExport6.vim')
   lines =<< trim END
@@ -1830,7 +1830,7 @@
       enddef
       Testit()
   END
-  CheckScriptFailure(lines, 'E117: Unknown function: notExport6#NotFunc')
+  v9.CheckScriptFailure(lines, 'E117: Unknown function: notExport6#NotFunc')
 
   writefile(exportLines, 'Xdir/autoload/notExport7.vim')
   lines =<< trim END
@@ -1841,7 +1841,7 @@
       enddef
       Testit()
   END
-  CheckScriptFailure(lines, 'E117: Unknown function: notExport7#NotExport')
+  v9.CheckScriptFailure(lines, 'E117: Unknown function: notExport7#NotExport')
 
   delete('Xdir', 'rf')
   &rtp = save_rtp
@@ -1880,7 +1880,7 @@
 
       assert_equal('arg', call('another.RetArg', ['arg']))
   END
-  CheckScriptSuccess(lines)
+  v9.CheckScriptSuccess(lines)
 
   unlet g:result
   delete('Xdir', 'rf')
@@ -2025,7 +2025,7 @@
      enddef
   END
   writefile(lines, 'Xscriptname.vim')
-  CheckScriptFailure(lines, 'E1263:')
+  v9.CheckScriptFailure(lines, 'E1263:')
 
   delete('Xscriptname.vim')
 enddef
@@ -2056,9 +2056,9 @@
       enddef
       defcompile
   END
-  CheckScriptSuccess(lines)
+  v9.CheckScriptSuccess(lines)
   assert_false(exists('g:loaded_postponed'))
-  CheckScriptSuccess(lines + ['Tryit()'])
+  v9.CheckScriptSuccess(lines + ['Tryit()'])
   assert_equal('true', g:loaded_postponed)
 
   unlet g:loaded_postponed
@@ -2094,7 +2094,7 @@
       enddef
       defcompile
   END
-  CheckScriptFailure(lines, 'E1048: Item not found in script: doesNotExist', 1)
+  v9.CheckScriptFailure(lines, 'E1048: Item not found in script: doesNotExist', 1)
 
   test_override('autoload', 0)
   unlet g:loaded_override
@@ -2130,7 +2130,7 @@
       nnoremap <silent> xx <ScriptCmd>toggle.Doit()<CR>
       nnoremap <silent> yy <Cmd>toggle.Doit()<CR>
   END
-  CheckScriptSuccess(lines)
+  v9.CheckScriptSuccess(lines)
   assert_false(exists("g:toggle_loaded"))
   assert_false(exists("g:toggle_called"))
   assert_match('\d A: \f*[/\\]toggle.vim', execute('scriptnames'))
@@ -2159,13 +2159,13 @@
       vim9script autoload
       var n = 0
   END
-  CheckScriptFailure(lines, 'E475: Invalid argument: autoload')
+  v9.CheckScriptFailure(lines, 'E475: Invalid argument: autoload')
 
   lines =<< trim END
       vim9script noclear noclear
       var n = 0
   END
-  CheckScriptFailure(lines, 'E983: Duplicate argument: noclear')
+  v9.CheckScriptFailure(lines, 'E983: Duplicate argument: noclear')
 enddef
 
 def Test_import_autoload_fails()
@@ -2173,25 +2173,25 @@
       vim9script
       import autoload autoload 'prefixed.vim'
   END
-  CheckScriptFailure(lines, 'E121: Undefined variable: autoload')
+  v9.CheckScriptFailure(lines, 'E121: Undefined variable: autoload')
 
   lines =<< trim END
       vim9script
       import autoload './doesNotExist.vim'
   END
-  CheckScriptFailure(lines, 'E1264:')
+  v9.CheckScriptFailure(lines, 'E1264:')
 
   lines =<< trim END
       vim9script
       import autoload '/dir/doesNotExist.vim'
   END
-  CheckScriptFailure(lines, 'E1264:')
+  v9.CheckScriptFailure(lines, 'E1264:')
 
   lines =<< trim END
       vim9script
       import autoload 'doesNotExist.vim'
   END
-  CheckScriptFailure(lines, 'E1053: Could not import "doesNotExist.vim"')
+  v9.CheckScriptFailure(lines, 'E1053: Could not import "doesNotExist.vim"')
 enddef
 
 " test disassembling an auto-loaded function starting with "debug"
@@ -2223,7 +2223,7 @@
     assert_equal('profile', profileit#test())
     disass profileit#test
   END
-  CheckScriptSuccess(lines)
+  v9.CheckScriptSuccess(lines)
 
   delete('Xdir', 'rf')
   &rtp = save_rtp
@@ -2274,7 +2274,7 @@
       import autoload 'CaseSensitive.vim'
       assert_equal('done', CaseSensitive.CaseSensitive())
   END
-  CheckScriptSuccess(lines)
+  v9.CheckScriptSuccess(lines)
 
   if !has('fname_case')
     lines =<< trim END
@@ -2282,7 +2282,7 @@
         import autoload 'CaseSensitive.vim'
         import autoload 'casesensitive.vim'
     END
-    CheckScriptFailure(lines, 'E1262:')
+    v9.CheckScriptFailure(lines, 'E1262:')
   endif
 
   delete('Xdir', 'rf')
@@ -2320,7 +2320,7 @@
     qall!
   END
   writefile(lines, 'Xscript')
-  RunVim([], [], '-S Xscript')
+  g:RunVim([], [], '-S Xscript')
   assert_equal(['ok'], readfile('Xdidit'))
 
   delete('Xdidit')
@@ -2331,7 +2331,7 @@
     vim9script
     var foo#bar = 'asdf'
   END
-  CheckScriptFailure(lines, 'E461: Illegal variable name: foo#bar', 2)
+  v9.CheckScriptFailure(lines, 'E461: Illegal variable name: foo#bar', 2)
 enddef
 
 
diff --git a/src/testdir/test_vim9_script.vim b/src/testdir/test_vim9_script.vim
index eb84c35..d6142a6 100644
--- a/src/testdir/test_vim9_script.vim
+++ b/src/testdir/test_vim9_script.vim
@@ -2,7 +2,7 @@
 
 source check.vim
 source term_util.vim
-source vim9.vim
+import './vim9.vim' as v9
 source screendump.vim
 source shared.vim
 
@@ -18,7 +18,7 @@
       # Vim9 script commands go here
       g:didit = true
   END
-  CheckScriptSuccess(lines)
+  v9.CheckScriptSuccess(lines)
   assert_equal(true, g:didit)
   unlet g:didit
 enddef
@@ -35,20 +35,20 @@
   setline(1, ['one', 'two', 'three'])
   :2
   print
-  assert_equal('two', Screenline(&lines))
+  assert_equal('two', g:Screenline(&lines))
   :3
   list
-  assert_equal('three$', Screenline(&lines))
+  assert_equal('three$', g:Screenline(&lines))
 
   # missing command does not print the line
   var lines =<< trim END
     vim9script
     :1|
-    assert_equal('three$', Screenline(&lines))
+    assert_equal('three$', g:Screenline(&lines))
     :|
-    assert_equal('three$', Screenline(&lines))
+    assert_equal('three$', g:Screenline(&lines))
   END
-  CheckScriptSuccess(lines)
+  v9.CheckScriptSuccess(lines)
 
   bwipe!
 
@@ -64,7 +64,7 @@
 
 def Test_delfunction()
   # Check function is defined in script namespace
-  CheckScriptSuccess([
+  v9.CheckScriptSuccess([
       'vim9script',
       'func CheckMe()',
       '  return 123',
@@ -73,13 +73,13 @@
       ])
 
   # Check function in script namespace cannot be deleted
-  CheckScriptFailure([
+  v9.CheckScriptFailure([
       'vim9script',
       'func DeleteMe1()',
       'endfunc',
       'delfunction DeleteMe1',
       ], 'E1084:')
-  CheckScriptFailure([
+  v9.CheckScriptFailure([
       'vim9script',
       'func DeleteMe2()',
       'endfunc',
@@ -88,13 +88,13 @@
       'enddef',
       'DoThat()',
       ], 'E1084:')
-  CheckScriptFailure([
+  v9.CheckScriptFailure([
       'vim9script',
       'def DeleteMe3()',
       'enddef',
       'delfunction DeleteMe3',
       ], 'E1084:')
-  CheckScriptFailure([
+  v9.CheckScriptFailure([
       'vim9script',
       'def DeleteMe4()',
       'enddef',
@@ -118,7 +118,7 @@
       delfunc g:Global
       assert_false(exists('*g:Global'))
   END
-  CheckScriptSuccess(lines)
+  v9.CheckScriptSuccess(lines)
 
   # Check that global function can be replaced by a :def function and deleted
   lines =<< trim END
@@ -134,7 +134,7 @@
       delfunc g:Global
       assert_false(exists('*g:Global'))
   END
-  CheckScriptSuccess(lines)
+  v9.CheckScriptSuccess(lines)
 
   # Check that global :def function can be replaced by a function and deleted
   lines =<< trim END
@@ -150,32 +150,32 @@
       delfunc g:Global
       assert_false(exists('*g:Global'))
   END
-  CheckScriptSuccess(lines)
+  v9.CheckScriptSuccess(lines)
 enddef
 
 def Test_wrong_type()
-  CheckDefFailure(['var name: list<nothing>'], 'E1010:')
-  CheckDefFailure(['var name: list<list<nothing>>'], 'E1010:')
-  CheckDefFailure(['var name: dict<nothing>'], 'E1010:')
-  CheckDefFailure(['var name: dict<dict<nothing>>'], 'E1010:')
+  v9.CheckDefFailure(['var name: list<nothing>'], 'E1010:')
+  v9.CheckDefFailure(['var name: list<list<nothing>>'], 'E1010:')
+  v9.CheckDefFailure(['var name: dict<nothing>'], 'E1010:')
+  v9.CheckDefFailure(['var name: dict<dict<nothing>>'], 'E1010:')
 
-  CheckDefFailure(['var name: dict<number'], 'E1009:')
-  CheckDefFailure(['var name: dict<list<number>'], 'E1009:')
+  v9.CheckDefFailure(['var name: dict<number'], 'E1009:')
+  v9.CheckDefFailure(['var name: dict<list<number>'], 'E1009:')
 
-  CheckDefFailure(['var name: ally'], 'E1010:')
-  CheckDefFailure(['var name: bram'], 'E1010:')
-  CheckDefFailure(['var name: cathy'], 'E1010:')
-  CheckDefFailure(['var name: dom'], 'E1010:')
-  CheckDefFailure(['var name: freddy'], 'E1010:')
-  CheckDefFailure(['var name: john'], 'E1010:')
-  CheckDefFailure(['var name: larry'], 'E1010:')
-  CheckDefFailure(['var name: ned'], 'E1010:')
-  CheckDefFailure(['var name: pam'], 'E1010:')
-  CheckDefFailure(['var name: sam'], 'E1010:')
-  CheckDefFailure(['var name: vim'], 'E1010:')
+  v9.CheckDefFailure(['var name: ally'], 'E1010:')
+  v9.CheckDefFailure(['var name: bram'], 'E1010:')
+  v9.CheckDefFailure(['var name: cathy'], 'E1010:')
+  v9.CheckDefFailure(['var name: dom'], 'E1010:')
+  v9.CheckDefFailure(['var name: freddy'], 'E1010:')
+  v9.CheckDefFailure(['var name: john'], 'E1010:')
+  v9.CheckDefFailure(['var name: larry'], 'E1010:')
+  v9.CheckDefFailure(['var name: ned'], 'E1010:')
+  v9.CheckDefFailure(['var name: pam'], 'E1010:')
+  v9.CheckDefFailure(['var name: sam'], 'E1010:')
+  v9.CheckDefFailure(['var name: vim'], 'E1010:')
 
-  CheckDefFailure(['var Ref: number', 'Ref()'], 'E1085:')
-  CheckDefFailure(['var Ref: string', 'var res = Ref()'], 'E1085:')
+  v9.CheckDefFailure(['var Ref: number', 'Ref()'], 'E1085:')
+  v9.CheckDefFailure(['var Ref: string', 'var res = Ref()'], 'E1085:')
 enddef
 
 def Test_script_wrong_type()
@@ -184,15 +184,15 @@
       var s:dict: dict<string>
       s:dict['a'] = ['x']
   END
-  CheckScriptFailure(lines, 'E1012: Type mismatch; expected string but got list<string>', 3)
+  v9.CheckScriptFailure(lines, 'E1012: Type mismatch; expected string but got list<string>', 3)
 enddef
 
 def Test_const()
-  CheckDefFailure(['final name = 234', 'name = 99'], 'E1018:')
-  CheckDefFailure(['final one = 234', 'var one = 99'], 'E1017:')
-  CheckDefFailure(['final list = [1, 2]', 'var list = [3, 4]'], 'E1017:')
-  CheckDefFailure(['final two'], 'E1125:')
-  CheckDefFailure(['final &option'], 'E996:')
+  v9.CheckDefFailure(['final name = 234', 'name = 99'], 'E1018:')
+  v9.CheckDefFailure(['final one = 234', 'var one = 99'], 'E1017:')
+  v9.CheckDefFailure(['final list = [1, 2]', 'var list = [3, 4]'], 'E1017:')
+  v9.CheckDefFailure(['final two'], 'E1125:')
+  v9.CheckDefFailure(['final &option'], 'E996:')
 
   var lines =<< trim END
     final list = [1, 2, 3]
@@ -217,7 +217,7 @@
     cd['six'] = 66
     constdict->assert_equal({one: 1, two: {five: 55, six: 66}, three: 3})
   END
-  CheckDefAndScriptSuccess(lines)
+  v9.CheckDefAndScriptSuccess(lines)
 enddef
 
 def Test_const_bang()
@@ -225,43 +225,43 @@
       const var = 234
       var = 99
   END
-  CheckDefExecFailure(lines, 'E1018:', 2)
-  CheckScriptFailure(['vim9script'] + lines, 'E46:', 3)
+  v9.CheckDefExecFailure(lines, 'E1018:', 2)
+  v9.CheckScriptFailure(['vim9script'] + lines, 'E46:', 3)
 
   lines =<< trim END
       const ll = [2, 3, 4]
       ll[0] = 99
   END
-  CheckDefExecFailure(lines, 'E1119:', 2)
-  CheckScriptFailure(['vim9script'] + lines, 'E741:', 3)
+  v9.CheckDefExecFailure(lines, 'E1119:', 2)
+  v9.CheckScriptFailure(['vim9script'] + lines, 'E741:', 3)
 
   lines =<< trim END
       const ll = [2, 3, 4]
       ll[3] = 99
   END
-  CheckDefExecFailure(lines, 'E1118:', 2)
-  CheckScriptFailure(['vim9script'] + lines, 'E684:', 3)
+  v9.CheckDefExecFailure(lines, 'E1118:', 2)
+  v9.CheckScriptFailure(['vim9script'] + lines, 'E684:', 3)
 
   lines =<< trim END
       const dd = {one: 1, two: 2}
       dd["one"] = 99
   END
-  CheckDefExecFailure(lines, 'E1121:', 2)
-  CheckScriptFailure(['vim9script'] + lines, 'E741:', 3)
+  v9.CheckDefExecFailure(lines, 'E1121:', 2)
+  v9.CheckScriptFailure(['vim9script'] + lines, 'E741:', 3)
 
   lines =<< trim END
       const dd = {one: 1, two: 2}
       dd["three"] = 99
   END
-  CheckDefExecFailure(lines, 'E1120:')
-  CheckScriptFailure(['vim9script'] + lines, 'E741:', 3)
+  v9.CheckDefExecFailure(lines, 'E1120:')
+  v9.CheckScriptFailure(['vim9script'] + lines, 'E741:', 3)
 enddef
 
 def Test_range_no_colon()
-  CheckDefFailure(['%s/a/b/'], 'E1050:')
-  CheckDefFailure(['+ s/a/b/'], 'E1050:')
-  CheckDefFailure(['- s/a/b/'], 'E1050:')
-  CheckDefFailure(['. s/a/b/'], 'E1050:')
+  v9.CheckDefFailure(['%s/a/b/'], 'E1050:')
+  v9.CheckDefFailure(['+ s/a/b/'], 'E1050:')
+  v9.CheckDefFailure(['- s/a/b/'], 'E1050:')
+  v9.CheckDefFailure(['. s/a/b/'], 'E1050:')
 enddef
 
 
@@ -278,9 +278,9 @@
 enddef
 
 def Test_block_failure()
-  CheckDefFailure(['{', 'var inner = 1', '}', 'echo inner'], 'E1001:')
-  CheckDefFailure(['}'], 'E1025:')
-  CheckDefFailure(['{', 'echo 1'], 'E1026:')
+  v9.CheckDefFailure(['{', 'var inner = 1', '}', 'echo inner'], 'E1001:')
+  v9.CheckDefFailure(['}'], 'E1025:')
+  v9.CheckDefFailure(['{', 'echo 1'], 'E1026:')
 enddef
 
 def Test_block_local_vars()
@@ -322,7 +322,7 @@
   # need to execute this with a separate Vim instance to avoid the current
   # context gets garbage collected.
   writefile(lines, 'Xscript')
-  RunVim([], [], '-S Xscript')
+  g:RunVim([], [], '-S Xscript')
   assert_equal(['ok'], readfile('Xdidit'))
 
   delete('Xscript')
@@ -345,11 +345,11 @@
       # "foo" and "bar"
       assert_equal(['foo', 'bar'], Func())
   END
-  CheckScriptSuccess(lines)
+  v9.CheckScriptSuccess(lines)
 enddef
 
 " legacy func for command that's defined later
-func InvokeSomeCommand()
+func s:InvokeSomeCommand()
   SomeCommand
 endfunc
 
@@ -557,7 +557,7 @@
   assert_equal(333, n)
 
   try
-    l = DeletedFunc()
+    l = g:DeletedFunc()
   catch /E933:/
     n = 344
   endtry
@@ -679,7 +679,7 @@
         g:caught = v:exception
       endtry
   END
-  CheckScriptSuccess(lines)
+  v9.CheckScriptSuccess(lines)
   assert_match('E1219: Float or Number required for argument 1', g:caught)
   unlet g:caught
 
@@ -690,7 +690,7 @@
         echo 'something'
       endtry
   END
-  CheckScriptFailure(lines, 'E1032:')
+  v9.CheckScriptFailure(lines, 'E1032:')
 
   # skipping try-finally-endtry when try-finally-endtry is used in another block
   lines =<< trim END
@@ -704,7 +704,7 @@
         endtry
       endif
   END
-  CheckDefAndScriptSuccess(lines)
+  v9.CheckDefAndScriptSuccess(lines)
 enddef
 
 def Test_try_ends_in_return()
@@ -719,7 +719,7 @@
       enddef
       assert_equal('foo', Foo())
   END
-  CheckScriptSuccess(lines)
+  v9.CheckScriptSuccess(lines)
 
   lines =<< trim END
       vim9script
@@ -733,7 +733,7 @@
       enddef
       assert_equal('foo', Foo())
   END
-  CheckScriptFailure(lines, 'E1095:')
+  v9.CheckScriptFailure(lines, 'E1095:')
 
   lines =<< trim END
       vim9script
@@ -746,7 +746,7 @@
       enddef
       assert_equal('foo', Foo())
   END
-  CheckScriptFailure(lines, 'E1027:')
+  v9.CheckScriptFailure(lines, 'E1027:')
 
   lines =<< trim END
       vim9script
@@ -761,7 +761,7 @@
       enddef
       assert_equal('done', Foo())
   END
-  CheckScriptSuccess(lines)
+  v9.CheckScriptSuccess(lines)
 
 enddef
 
@@ -799,11 +799,11 @@
         eval [][0]
       endtry
   END
-  CheckDefExecFailure(lines, 'E684:', 4)
+  v9.CheckDefExecFailure(lines, 'E684:', 4)
 enddef
 
 " :while at the very start of a function that :continue jumps to
-def TryContinueFunc()
+def s:TryContinueFunc()
  while g:Count < 2
    g:sequence ..= 't'
     try
@@ -867,7 +867,7 @@
       qall
   END
   writefile(lines, 'XCatchCnext')
-  RunVim([], [], '--clean -S XCatchCnext')
+  g:RunVim([], [], '--clean -S XCatchCnext')
   assert_equal(['1'], readfile('Xresult'))
 
   delete('Xfile1')
@@ -901,19 +901,19 @@
 defcompile
 delfunc DeletedFunc
 
-def ThrowFromDef()
+def s:ThrowFromDef()
   throw "getout" # comment
 enddef
 
-func CatchInFunc()
+func s:CatchInFunc()
   try
-    call ThrowFromDef()
+    call s:ThrowFromDef()
   catch
     let g:thrown_func = v:exception
   endtry
 endfunc
 
-def CatchInDef()
+def s:CatchInDef()
   try
     ThrowFromDef()
   catch
@@ -921,7 +921,7 @@
   endtry
 enddef
 
-def ReturnFinally(): string
+def s:ReturnFinally(): string
   try
     return 'intry'
   finall
@@ -984,7 +984,7 @@
   assert_equal(['1', '2', '3', '4'], l)
 enddef
 
-def TryOne(): number
+def s:TryOne(): number
   try
     return 0
   catch
@@ -992,7 +992,7 @@
   return 0
 enddef
 
-def TryTwo(n: number): string
+def s:TryTwo(n: number): string
   try
     var x = {}
   catch
@@ -1023,19 +1023,19 @@
 enddef
 
 def Test_try_catch_fails()
-  CheckDefFailure(['catch'], 'E603:')
-  CheckDefFailure(['try', 'echo 0', 'catch', 'catch'], 'E1033:')
-  CheckDefFailure(['try', 'echo 0', 'catch /pat'], 'E1067:')
-  CheckDefFailure(['finally'], 'E606:')
-  CheckDefFailure(['try', 'echo 0', 'finally', 'echo 1', 'finally'], 'E607:')
-  CheckDefFailure(['endtry'], 'E602:')
-  CheckDefFailure(['while 1', 'endtry'], 'E170:')
-  CheckDefFailure(['for i in range(5)', 'endtry'], 'E170:')
-  CheckDefFailure(['if 1', 'endtry'], 'E171:')
-  CheckDefFailure(['try', 'echo 1', 'endtry'], 'E1032:')
+  v9.CheckDefFailure(['catch'], 'E603:')
+  v9.CheckDefFailure(['try', 'echo 0', 'catch', 'catch'], 'E1033:')
+  v9.CheckDefFailure(['try', 'echo 0', 'catch /pat'], 'E1067:')
+  v9.CheckDefFailure(['finally'], 'E606:')
+  v9.CheckDefFailure(['try', 'echo 0', 'finally', 'echo 1', 'finally'], 'E607:')
+  v9.CheckDefFailure(['endtry'], 'E602:')
+  v9.CheckDefFailure(['while 1', 'endtry'], 'E170:')
+  v9.CheckDefFailure(['for i in range(5)', 'endtry'], 'E170:')
+  v9.CheckDefFailure(['if 1', 'endtry'], 'E171:')
+  v9.CheckDefFailure(['try', 'echo 1', 'endtry'], 'E1032:')
 
-  CheckDefFailure(['throw'], 'E1143:')
-  CheckDefFailure(['throw xxx'], 'E1001:')
+  v9.CheckDefFailure(['throw'], 'E1143:')
+  v9.CheckDefFailure(['throw xxx'], 'E1001:')
 enddef
 
 def Try_catch_skipped()
@@ -1070,7 +1070,7 @@
         assert_equal('onetwo', v:exception)
       endtry
   END
-  CheckScriptSuccess(lines)
+  v9.CheckScriptSuccess(lines)
 
   lines =<< trim END
     vim9script
@@ -1086,7 +1086,7 @@
     endtry
     assert_equal('caught', result)
   END
-  CheckScriptSuccess(lines)
+  v9.CheckScriptSuccess(lines)
 enddef
 
 def Test_error_in_nested_function()
@@ -1103,7 +1103,7 @@
       Func()
   END
   g:test_var = 0
-  CheckScriptFailure(lines, 'E684:')
+  v9.CheckScriptFailure(lines, 'E684:')
   assert_equal(0, g:test_var)
 enddef
 
@@ -1116,7 +1116,7 @@
       g:gotthere = true
   END
   g:gotthere = false
-  CheckScriptFailure(lines, 'E121:')
+  v9.CheckScriptFailure(lines, 'E121:')
   assert_false(g:gotthere)
   unlet g:gotthere
 enddef
@@ -1131,7 +1131,7 @@
                    ' line 19'
       assert_equal(19, getqflist()[0].lnum)
   END
-  CheckScriptSuccess(lines)
+  v9.CheckScriptSuccess(lines)
   set errorformat&
 enddef
 
@@ -1146,7 +1146,7 @@
       redrawstatus
       set laststatus statusline= 
   END
-  CheckScriptSuccess(lines)
+  v9.CheckScriptSuccess(lines)
 enddef
 
 def Test_list_vimscript()
@@ -1162,7 +1162,7 @@
             ]
       assert_equal(['one', 'two', 'three'], mylist)
   END
-  CheckScriptSuccess(lines)
+  v9.CheckScriptSuccess(lines)
 
   # check all lines from heredoc are kept
   lines =<< trim END
@@ -1179,7 +1179,7 @@
     [{
       a: 0}]->string()->assert_equal("[{'a': 0}]")
   END
-  CheckDefAndScriptSuccess(lines)
+  v9.CheckDefAndScriptSuccess(lines)
 enddef
 
 if has('channel')
@@ -1210,21 +1210,21 @@
   END
   g:feature = 'eval'
   g:legacy = -1
-  CheckScriptSuccess(lines)
+  v9.CheckScriptSuccess(lines)
   assert_equal(1, g:legacy)
 
   g:feature = 'noteval'
   g:legacy = -1
-  CheckScriptSuccess(lines)
+  v9.CheckScriptSuccess(lines)
   assert_equal(0, g:legacy)
 enddef
 
 def Test_vim9script_fails()
-  CheckScriptFailure(['scriptversion 2', 'vim9script'], 'E1039:')
-  CheckScriptFailure(['vim9script', 'scriptversion 2'], 'E1040:')
+  v9.CheckScriptFailure(['scriptversion 2', 'vim9script'], 'E1039:')
+  v9.CheckScriptFailure(['vim9script', 'scriptversion 2'], 'E1040:')
 
-  CheckScriptFailure(['vim9script', 'var str: string', 'str = 1234'], 'E1012:')
-  CheckScriptFailure(['vim9script', 'const str = "asdf"', 'str = "xxx"'], 'E46:')
+  v9.CheckScriptFailure(['vim9script', 'var str: string', 'str = 1234'], 'E1012:')
+  v9.CheckScriptFailure(['vim9script', 'const str = "asdf"', 'str = "xxx"'], 'E46:')
 
   assert_fails('vim9script', 'E1038:')
 enddef
@@ -1237,7 +1237,7 @@
       enddef
       var Func = 1
   END
-  CheckScriptFailure(lines, 'E1041:', 5)
+  v9.CheckScriptFailure(lines, 'E1041:', 5)
 enddef
 
 def Test_function_shadows_script_var()
@@ -1248,7 +1248,7 @@
         return 123
       enddef
   END
-  CheckScriptFailure(lines, 'E1041:', 3)
+  v9.CheckScriptFailure(lines, 'E1041:', 3)
 enddef
 
 def Test_script_var_shadows_command()
@@ -1257,13 +1257,13 @@
       undo = 2
       assert_equal(2, undo)
   END
-  CheckDefAndScriptSuccess(lines)
+  v9.CheckDefAndScriptSuccess(lines)
 
   lines =<< trim END
       var undo = 1
       undo
   END
-  CheckDefAndScriptFailure(lines, 'E1207:', 2)
+  v9.CheckDefAndScriptFailure(lines, 'E1207:', 2)
 enddef
 
 def Test_vim9script_call_wrong_type()
@@ -1272,7 +1272,7 @@
       var Time = 'localtime'
       Time()
   END
-  CheckScriptFailure(lines, 'E1085:')
+  v9.CheckScriptFailure(lines, 'E1085:')
 enddef
 
 def Test_vim9script_reload_delfunc()
@@ -1371,7 +1371,7 @@
       echo 'two'
     enddef
   END
-  CheckScriptFailure(lines, 'E1073:')
+  v9.CheckScriptFailure(lines, 'E1073:')
 
   lines =<< trim END
     vim9script
@@ -1383,7 +1383,7 @@
     enddef
     defcompile
   END
-  CheckScriptFailure(lines, 'E1073:')
+  v9.CheckScriptFailure(lines, 'E1073:')
 enddef
 
 def Test_fixed_size_list()
@@ -1396,26 +1396,26 @@
 enddef
 
 def Test_no_insert_xit()
-  CheckDefExecFailure(['a = 1'], 'E1100:')
-  CheckDefExecFailure(['c = 1'], 'E1100:')
-  CheckDefExecFailure(['i = 1'], 'E1100:')
-  CheckDefExecFailure(['t = 1'], 'E1100:')
-  CheckDefExecFailure(['x = 1'], 'E1100:')
+  v9.CheckDefExecFailure(['a = 1'], 'E1100:')
+  v9.CheckDefExecFailure(['c = 1'], 'E1100:')
+  v9.CheckDefExecFailure(['i = 1'], 'E1100:')
+  v9.CheckDefExecFailure(['t = 1'], 'E1100:')
+  v9.CheckDefExecFailure(['x = 1'], 'E1100:')
 
-  CheckScriptFailure(['vim9script', 'a = 1'], 'E488:')
-  CheckScriptFailure(['vim9script', 'a'], 'E1100:')
-  CheckScriptFailure(['vim9script', 'c = 1'], 'E488:')
-  CheckScriptFailure(['vim9script', 'c'], 'E1100:')
-  CheckScriptFailure(['vim9script', 'i = 1'], 'E488:')
-  CheckScriptFailure(['vim9script', 'i'], 'E1100:')
-  CheckScriptFailure(['vim9script', 'o = 1'], 'E1100:')
-  CheckScriptFailure(['vim9script', 'o'], 'E1100:')
-  CheckScriptFailure(['vim9script', 't'], 'E1100:')
-  CheckScriptFailure(['vim9script', 't = 1'], 'E1100:')
-  CheckScriptFailure(['vim9script', 'x = 1'], 'E1100:')
+  v9.CheckScriptFailure(['vim9script', 'a = 1'], 'E488:')
+  v9.CheckScriptFailure(['vim9script', 'a'], 'E1100:')
+  v9.CheckScriptFailure(['vim9script', 'c = 1'], 'E488:')
+  v9.CheckScriptFailure(['vim9script', 'c'], 'E1100:')
+  v9.CheckScriptFailure(['vim9script', 'i = 1'], 'E488:')
+  v9.CheckScriptFailure(['vim9script', 'i'], 'E1100:')
+  v9.CheckScriptFailure(['vim9script', 'o = 1'], 'E1100:')
+  v9.CheckScriptFailure(['vim9script', 'o'], 'E1100:')
+  v9.CheckScriptFailure(['vim9script', 't'], 'E1100:')
+  v9.CheckScriptFailure(['vim9script', 't = 1'], 'E1100:')
+  v9.CheckScriptFailure(['vim9script', 'x = 1'], 'E1100:')
 enddef
 
-def IfElse(what: number): string
+def s:IfElse(what: number): string
   var res = ''
   if what == 1
     res = "one"
@@ -1434,18 +1434,18 @@
 enddef
 
 def Test_if_elseif_else_fails()
-  CheckDefFailure(['elseif true'], 'E582:')
-  CheckDefFailure(['else'], 'E581:')
-  CheckDefFailure(['endif'], 'E580:')
-  CheckDefFailure(['if g:abool', 'elseif xxx'], 'E1001:')
-  CheckDefFailure(['if true', 'echo 1'], 'E171:')
+  v9.CheckDefFailure(['elseif true'], 'E582:')
+  v9.CheckDefFailure(['else'], 'E581:')
+  v9.CheckDefFailure(['endif'], 'E580:')
+  v9.CheckDefFailure(['if g:abool', 'elseif xxx'], 'E1001:')
+  v9.CheckDefFailure(['if true', 'echo 1'], 'E171:')
 
   var lines =<< trim END
       var s = ''
       if s = ''
       endif
   END
-  CheckDefFailure(lines, 'E488:')
+  v9.CheckDefFailure(lines, 'E488:')
 
   lines =<< trim END
       var s = ''
@@ -1453,7 +1453,7 @@
       elseif s = ''
       endif
   END
-  CheckDefFailure(lines, 'E488:')
+  v9.CheckDefFailure(lines, 'E488:')
 enddef
 
 let g:bool_true = v:true
@@ -1590,13 +1590,13 @@
 enddef
 
 def Test_if_const_expr_fails()
-  CheckDefFailure(['if "aaa" == "bbb'], 'E114:')
-  CheckDefFailure(["if 'aaa' == 'bbb"], 'E115:')
-  CheckDefFailure(["if has('aaa'"], 'E110:')
-  CheckDefFailure(["if has('aaa') ? true false"], 'E109:')
+  v9.CheckDefFailure(['if "aaa" == "bbb'], 'E114:')
+  v9.CheckDefFailure(["if 'aaa' == 'bbb"], 'E115:')
+  v9.CheckDefFailure(["if has('aaa'"], 'E110:')
+  v9.CheckDefFailure(["if has('aaa') ? true false"], 'E109:')
 enddef
 
-def RunNested(i: number): number
+def s:RunNested(i: number): number
   var x: number = 0
   if i % 2
     if 1
@@ -1645,14 +1645,14 @@
 
   var n = true
   execute 'echomsg' (n ? '"true"' : '"no"')
-  assert_match('^true$', Screenline(&lines))
+  assert_match('^true$', g:Screenline(&lines))
 
   echomsg [1, 2, 3] {a: 1, b: 2}
-  assert_match('^\[1, 2, 3\] {''a'': 1, ''b'': 2}$', Screenline(&lines))
+  assert_match('^\[1, 2, 3\] {''a'': 1, ''b'': 2}$', g:Screenline(&lines))
 
-  CheckDefFailure(['execute xxx'], 'E1001:', 1)
-  CheckDefExecFailure(['execute "tabnext " .. 8'], 'E475:', 1)
-  CheckDefFailure(['execute "cmd"# comment'], 'E488:', 1)
+  v9.CheckDefFailure(['execute xxx'], 'E1001:', 1)
+  v9.CheckDefExecFailure(['execute "tabnext " .. 8'], 'E475:', 1)
+  v9.CheckDefFailure(['execute "cmd"# comment'], 'E488:', 1)
 enddef
 
 def Test_execute_cmd_vimscript()
@@ -1665,34 +1665,34 @@
       assert_equal(28, g:someVar)
       unlet g:someVar
   END
-  CheckScriptSuccess(lines)
+  v9.CheckScriptSuccess(lines)
 enddef
 
 def Test_echo_cmd()
   echo 'some' # comment
   echon 'thing'
-  assert_match('^something$', Screenline(&lines))
+  assert_match('^something$', g:Screenline(&lines))
 
   echo "some" # comment
   echon "thing"
-  assert_match('^something$', Screenline(&lines))
+  assert_match('^something$', g:Screenline(&lines))
 
   var str1 = 'some'
   var str2 = 'more'
   echo str1 str2
-  assert_match('^some more$', Screenline(&lines))
+  assert_match('^some more$', g:Screenline(&lines))
 
-  CheckDefFailure(['echo "xxx"# comment'], 'E488:')
+  v9.CheckDefFailure(['echo "xxx"# comment'], 'E488:')
 enddef
 
 def Test_echomsg_cmd()
   echomsg 'some' 'more' # comment
-  assert_match('^some more$', Screenline(&lines))
+  assert_match('^some more$', g:Screenline(&lines))
   echo 'clear'
   :1messages
-  assert_match('^some more$', Screenline(&lines))
+  assert_match('^some more$', g:Screenline(&lines))
 
-  CheckDefFailure(['echomsg "xxx"# comment'], 'E488:')
+  v9.CheckDefFailure(['echomsg "xxx"# comment'], 'E488:')
 enddef
 
 def Test_echomsg_cmd_vimscript()
@@ -1702,9 +1702,9 @@
       echomsg 'here'
                 .. ' is ' ..
                    'a message'
-      assert_match('^here is a message$', Screenline(&lines))
+      assert_match('^here is a message$', g:Screenline(&lines))
   END
-  CheckScriptSuccess(lines)
+  v9.CheckScriptSuccess(lines)
 enddef
 
 def Test_echoerr_cmd()
@@ -1728,7 +1728,7 @@
         assert_match('this is wrong', v:exception)
       endtry
   END
-  CheckScriptSuccess(lines)
+  v9.CheckScriptSuccess(lines)
 enddef
 
 def Test_echoconsole_cmd()
@@ -1786,7 +1786,7 @@
     endif
     assert_equal([3, 4], result)
   END
-  CheckDefAndScriptSuccess(lines)
+  v9.CheckDefAndScriptSuccess(lines)
 
   # test skipped blocks at inside of function
   lines =<< trim END
@@ -1820,7 +1820,7 @@
     enddef
     DefFalse()
   END
-  CheckDefAndScriptSuccess(lines)
+  v9.CheckDefAndScriptSuccess(lines)
 enddef
 
 def Test_for_loop()
@@ -1931,7 +1931,7 @@
       endfor
       assert_equal(['x', 'x', 'x'], reslist)
   END
-  CheckDefAndScriptSuccess(lines)
+  v9.CheckDefAndScriptSuccess(lines)
 enddef
 
 def Test_for_loop_with_closure()
@@ -1945,7 +1945,7 @@
         assert_equal(4, flist[i]())
       endfor
   END
-  CheckDefAndScriptSuccess(lines)
+  v9.CheckDefAndScriptSuccess(lines)
 
   lines =<< trim END
       var flist: list<func>
@@ -1959,29 +1959,29 @@
         assert_equal(4, flist[i]())
       endfor
   END
-  CheckDefAndScriptSuccess(lines)
+  v9.CheckDefAndScriptSuccess(lines)
 enddef
 
 def Test_for_loop_fails()
-  CheckDefAndScriptFailure(['for '], ['E1097:', 'E690:'])
-  CheckDefAndScriptFailure(['for x'], ['E1097:', 'E690:'])
-  CheckDefAndScriptFailure(['for x in'], ['E1097:', 'E15:'])
-  CheckDefAndScriptFailure(['for # in range(5)'], 'E690:')
-  CheckDefAndScriptFailure(['for i In range(5)'], 'E690:')
-  CheckDefAndScriptFailure(['var x = 5', 'for x in range(5)', 'endfor'], ['E1017:', 'E1041:'])
-  CheckScriptFailure(['vim9script', 'var x = 5', 'for x in range(5)', '# comment', 'endfor'], 'E1041:', 3)
-  CheckScriptFailure(['def Func(arg: any)', 'for arg in range(5)', 'enddef', 'defcompile'], 'E1006:')
+  v9.CheckDefAndScriptFailure(['for '], ['E1097:', 'E690:'])
+  v9.CheckDefAndScriptFailure(['for x'], ['E1097:', 'E690:'])
+  v9.CheckDefAndScriptFailure(['for x in'], ['E1097:', 'E15:'])
+  v9.CheckDefAndScriptFailure(['for # in range(5)'], 'E690:')
+  v9.CheckDefAndScriptFailure(['for i In range(5)'], 'E690:')
+  v9.CheckDefAndScriptFailure(['var x = 5', 'for x in range(5)', 'endfor'], ['E1017:', 'E1041:'])
+  v9.CheckScriptFailure(['vim9script', 'var x = 5', 'for x in range(5)', '# comment', 'endfor'], 'E1041:', 3)
+  v9.CheckScriptFailure(['def Func(arg: any)', 'for arg in range(5)', 'enddef', 'defcompile'], 'E1006:')
   delfunc! g:Func
-  CheckDefFailure(['for i in xxx'], 'E1001:')
-  CheckDefFailure(['endfor'], 'E588:')
-  CheckDefFailure(['for i in range(3)', 'echo 3'], 'E170:')
+  v9.CheckDefFailure(['for i in xxx'], 'E1001:')
+  v9.CheckDefFailure(['endfor'], 'E588:')
+  v9.CheckDefFailure(['for i in range(3)', 'echo 3'], 'E170:')
 
   # wrong type detected at compile time
-  CheckDefFailure(['for i in {a: 1}', 'echo 3', 'endfor'], 'E1177: For loop on dict not supported')
+  v9.CheckDefFailure(['for i in {a: 1}', 'echo 3', 'endfor'], 'E1177: For loop on dict not supported')
 
   # wrong type detected at runtime
   g:adict = {a: 1}
-  CheckDefExecFailure(['for i in g:adict', 'echo 3', 'endfor'], 'E1177: For loop on dict not supported')
+  v9.CheckDefExecFailure(['for i in g:adict', 'echo 3', 'endfor'], 'E1177: For loop on dict not supported')
   unlet g:adict
 
   var lines =<< trim END
@@ -1990,20 +1990,20 @@
         e = {a: 0, b: ''}
       endfor
   END
-  CheckDefAndScriptFailure(lines, ['E1018:', 'E46:'], 3)
+  v9.CheckDefAndScriptFailure(lines, ['E1018:', 'E46:'], 3)
 
   lines =<< trim END
       for nr: number in ['foo']
       endfor
   END
-  CheckDefAndScriptFailure(lines, 'E1012: Type mismatch; expected number but got string', 1)
+  v9.CheckDefAndScriptFailure(lines, 'E1012: Type mismatch; expected number but got string', 1)
 
   lines =<< trim END
       for n : number in [1, 2]
         echo n
       endfor
   END
-  CheckDefAndScriptFailure(lines, 'E1059:', 1)
+  v9.CheckDefAndScriptFailure(lines, 'E1059:', 1)
 
   lines =<< trim END
       var d: dict<number> = {a: 1, b: 2}
@@ -2011,7 +2011,7 @@
         echo k v
       endfor
   END
-  CheckDefExecAndScriptFailure(lines, 'E1012: Type mismatch; expected job but got string', 2)
+  v9.CheckDefExecAndScriptFailure(lines, 'E1012: Type mismatch; expected job but got string', 2)
 
   lines =<< trim END
       var i = 0
@@ -2019,7 +2019,7 @@
         echo i
       endfor
   END
-  CheckDefExecAndScriptFailure(lines, ['E1017:', 'E1041:'])
+  v9.CheckDefExecAndScriptFailure(lines, ['E1017:', 'E1041:'])
 
   lines =<< trim END
       var l = [0]
@@ -2027,7 +2027,7 @@
         echo l[0]
       endfor
   END
-  CheckDefExecAndScriptFailure(lines, ['E461:', 'E1017:'])
+  v9.CheckDefExecAndScriptFailure(lines, ['E461:', 'E1017:'])
 
   lines =<< trim END
       var d = {x: 0}
@@ -2035,12 +2035,12 @@
         echo d.x
       endfor
   END
-  CheckDefExecAndScriptFailure(lines, ['E461:', 'E1017:'])
+  v9.CheckDefExecAndScriptFailure(lines, ['E461:', 'E1017:'])
 enddef
 
 def Test_for_loop_script_var()
   # cannot use s:var in a :def function
-  CheckDefFailure(['for s:var in range(3)', 'echo 3'], 'E1254:')
+  v9.CheckDefFailure(['for s:var in range(3)', 'echo 3'], 'E1254:')
 
   # can use s:var in Vim9 script, with or without s:
   var lines =<< trim END
@@ -2107,28 +2107,28 @@
       endfor
       assert_equal([2, 5], res)
   END
-  CheckDefAndScriptSuccess(lines)
+  v9.CheckDefAndScriptSuccess(lines)
 
   lines =<< trim END
       for [v1, v2] in [[1, 2, 3], [3, 4]]
         echo v1 v2
       endfor
   END
-  CheckDefExecFailure(lines, 'E710:', 1)
+  v9.CheckDefExecFailure(lines, 'E710:', 1)
 
   lines =<< trim END
       for [v1, v2] in [[1], [3, 4]]
         echo v1 v2
       endfor
   END
-  CheckDefExecFailure(lines, 'E711:', 1)
+  v9.CheckDefExecFailure(lines, 'E711:', 1)
 
   lines =<< trim END
       for [v1, v1] in [[1, 2], [3, 4]]
         echo v1
       endfor
   END
-  CheckDefExecFailure(lines, 'E1017:', 1)
+  v9.CheckDefExecFailure(lines, 'E1017:', 1)
 enddef
 
 def Test_for_loop_with_try_continue()
@@ -2148,7 +2148,7 @@
       assert_equal(3, looped)
       assert_equal(3, cleanup)
   END
-  CheckDefAndScriptSuccess(lines)
+  v9.CheckDefAndScriptSuccess(lines)
 enddef
 
 def Test_while_skipped_block()
@@ -2187,7 +2187,7 @@
     endif
     assert_equal([3, 4], result)
   END
-  CheckDefAndScriptSuccess(lines)
+  v9.CheckDefAndScriptSuccess(lines)
 
   # test skipped blocks at inside of function
   lines =<< trim END
@@ -2231,7 +2231,7 @@
     enddef
     DefFalse()
   END
-  CheckDefAndScriptSuccess(lines)
+  v9.CheckDefAndScriptSuccess(lines)
 enddef
 
 def Test_while_loop()
@@ -2266,24 +2266,24 @@
       endwhile
       assert_equal('v0v1v2', result)
   END
-  CheckScriptSuccess(lines)
+  v9.CheckScriptSuccess(lines)
 enddef
 
 def Test_while_loop_fails()
-  CheckDefFailure(['while xxx'], 'E1001:')
-  CheckDefFailure(['endwhile'], 'E588:')
-  CheckDefFailure(['continue'], 'E586:')
-  CheckDefFailure(['if true', 'continue'], 'E586:')
-  CheckDefFailure(['break'], 'E587:')
-  CheckDefFailure(['if true', 'break'], 'E587:')
-  CheckDefFailure(['while 1', 'echo 3'], 'E170:')
+  v9.CheckDefFailure(['while xxx'], 'E1001:')
+  v9.CheckDefFailure(['endwhile'], 'E588:')
+  v9.CheckDefFailure(['continue'], 'E586:')
+  v9.CheckDefFailure(['if true', 'continue'], 'E586:')
+  v9.CheckDefFailure(['break'], 'E587:')
+  v9.CheckDefFailure(['if true', 'break'], 'E587:')
+  v9.CheckDefFailure(['while 1', 'echo 3'], 'E170:')
 
   var lines =<< trim END
       var s = ''
       while s = ''
       endwhile
   END
-  CheckDefFailure(lines, 'E488:')
+  v9.CheckDefFailure(lines, 'E488:')
 enddef
 
 def Test_interrupt_loop()
@@ -2342,7 +2342,7 @@
 enddef
 
 def Test_vim9_comment()
-  CheckScriptSuccess([
+  v9.CheckScriptSuccess([
       'vim9script',
       '# something',
       '#something',
@@ -2350,126 +2350,126 @@
       ])
 
   split Xfile
-  CheckScriptSuccess([
+  v9.CheckScriptSuccess([
       'vim9script',
       'edit #something',
       ])
-  CheckScriptSuccess([
+  v9.CheckScriptSuccess([
       'vim9script',
       'edit #{something',
       ])
   close
 
-  CheckScriptFailure([
+  v9.CheckScriptFailure([
       'vim9script',
       ':# something',
       ], 'E488:')
-  CheckScriptFailure([
+  v9.CheckScriptFailure([
       '# something',
       ], 'E488:')
-  CheckScriptFailure([
+  v9.CheckScriptFailure([
       ':# something',
       ], 'E488:')
 
   { # block start
   } # block end
-  CheckDefFailure([
+  v9.CheckDefFailure([
       '{# comment',
       ], 'E488:')
-  CheckDefFailure([
+  v9.CheckDefFailure([
       '{',
       '}# comment',
       ], 'E488:')
 
   echo "yes" # comment
-  CheckDefFailure([
+  v9.CheckDefFailure([
       'echo "yes"# comment',
       ], 'E488:')
-  CheckScriptSuccess([
+  v9.CheckScriptSuccess([
       'vim9script',
       'echo "yes" # something',
       ])
-  CheckScriptFailure([
+  v9.CheckScriptFailure([
       'vim9script',
       'echo "yes"# something',
       ], 'E121:')
-  CheckScriptFailure([
+  v9.CheckScriptFailure([
       'vim9script',
       'echo# something',
       ], 'E1144:')
-  CheckScriptFailure([
+  v9.CheckScriptFailure([
       'echo "yes" # something',
       ], 'E121:')
 
   exe "echo" # comment
-  CheckDefFailure([
+  v9.CheckDefFailure([
       'exe "echo"# comment',
       ], 'E488:')
-  CheckScriptSuccess([
+  v9.CheckScriptSuccess([
       'vim9script',
       'exe "echo" # something',
       ])
-  CheckScriptFailure([
+  v9.CheckScriptFailure([
       'vim9script',
       'exe "echo"# something',
       ], 'E121:')
-  CheckScriptFailure([
+  v9.CheckScriptFailure([
       'vim9script',
       'exe# something',
       ], 'E1144:')
-  CheckScriptFailure([
+  v9.CheckScriptFailure([
       'exe "echo" # something',
       ], 'E121:')
 
-  CheckDefFailure([
+  v9.CheckDefFailure([
       'try# comment',
       '  echo "yes"',
       'catch',
       'endtry',
       ], 'E1144:')
-  CheckScriptFailure([
+  v9.CheckScriptFailure([
       'vim9script',
       'try# comment',
       'echo "yes"',
       ], 'E1144:')
-  CheckDefFailure([
+  v9.CheckDefFailure([
       'try',
       '  throw#comment',
       'catch',
       'endtry',
       ], 'E1144:')
-  CheckDefFailure([
+  v9.CheckDefFailure([
       'try',
       '  throw "yes"#comment',
       'catch',
       'endtry',
       ], 'E488:')
-  CheckDefFailure([
+  v9.CheckDefFailure([
       'try',
       '  echo "yes"',
       'catch# comment',
       'endtry',
       ], 'E1144:')
-  CheckScriptFailure([
+  v9.CheckScriptFailure([
       'vim9script',
       'try',
       '  echo "yes"',
       'catch# comment',
       'endtry',
       ], 'E1144:')
-  CheckDefFailure([
+  v9.CheckDefFailure([
       'try',
       '  echo "yes"',
       'catch /pat/# comment',
       'endtry',
       ], 'E488:')
-  CheckDefFailure([
+  v9.CheckDefFailure([
       'try',
       'echo "yes"',
       'catch',
       'endtry# comment',
       ], 'E1144:')
-  CheckScriptFailure([
+  v9.CheckScriptFailure([
       'vim9script',
       'try',
       '  echo "yes"',
@@ -2477,192 +2477,192 @@
       'endtry# comment',
       ], 'E1144:')
 
-  CheckScriptSuccess([
+  v9.CheckScriptSuccess([
       'vim9script',
       'hi # comment',
       ])
-  CheckScriptFailure([
+  v9.CheckScriptFailure([
       'vim9script',
       'hi# comment',
       ], 'E1144:')
-  CheckScriptSuccess([
+  v9.CheckScriptSuccess([
       'vim9script',
       'hi Search # comment',
       ])
-  CheckScriptFailure([
+  v9.CheckScriptFailure([
       'vim9script',
       'hi Search# comment',
       ], 'E416:')
-  CheckScriptSuccess([
+  v9.CheckScriptSuccess([
       'vim9script',
       'hi link This Search # comment',
       ])
-  CheckScriptFailure([
+  v9.CheckScriptFailure([
       'vim9script',
       'hi link This That# comment',
       ], 'E413:')
-  CheckScriptSuccess([
+  v9.CheckScriptSuccess([
       'vim9script',
       'hi clear This # comment',
       'hi clear # comment',
       ])
   # not tested, because it doesn't give an error but a warning:
   # hi clear This# comment',
-  CheckScriptFailure([
+  v9.CheckScriptFailure([
       'vim9script',
       'hi clear# comment',
       ], 'E416:')
 
-  CheckScriptSuccess([
+  v9.CheckScriptSuccess([
       'vim9script',
       'hi Group term=bold',
       'match Group /todo/ # comment',
       ])
-  CheckScriptFailure([
+  v9.CheckScriptFailure([
       'vim9script',
       'hi Group term=bold',
       'match Group /todo/# comment',
       ], 'E488:')
-  CheckScriptSuccess([
+  v9.CheckScriptSuccess([
       'vim9script',
       'match # comment',
       ])
-  CheckScriptFailure([
+  v9.CheckScriptFailure([
       'vim9script',
       'match# comment',
       ], 'E1144:')
-  CheckScriptSuccess([
+  v9.CheckScriptSuccess([
       'vim9script',
       'match none # comment',
       ])
-  CheckScriptFailure([
+  v9.CheckScriptFailure([
       'vim9script',
       'match none# comment',
       ], 'E475:')
 
-  CheckScriptSuccess([
+  v9.CheckScriptSuccess([
       'vim9script',
       'menutrans clear # comment',
       ])
-  CheckScriptFailure([
+  v9.CheckScriptFailure([
       'vim9script',
       'menutrans clear# comment text',
       ], 'E474:')
 
-  CheckScriptSuccess([
+  v9.CheckScriptSuccess([
       'vim9script',
       'syntax clear # comment',
       ])
-  CheckScriptFailure([
+  v9.CheckScriptFailure([
       'vim9script',
       'syntax clear# comment text',
       ], 'E28:')
-  CheckScriptSuccess([
+  v9.CheckScriptSuccess([
       'vim9script',
       'syntax keyword Word some',
       'syntax clear Word # comment',
       ])
-  CheckScriptFailure([
+  v9.CheckScriptFailure([
       'vim9script',
       'syntax keyword Word some',
       'syntax clear Word# comment text',
       ], 'E28:')
 
-  CheckScriptSuccess([
+  v9.CheckScriptSuccess([
       'vim9script',
       'syntax list # comment',
       ])
-  CheckScriptFailure([
+  v9.CheckScriptFailure([
       'vim9script',
       'syntax list# comment text',
       ], 'E28:')
 
-  CheckScriptSuccess([
+  v9.CheckScriptSuccess([
       'vim9script',
       'syntax match Word /pat/ oneline # comment',
       ])
-  CheckScriptFailure([
+  v9.CheckScriptFailure([
       'vim9script',
       'syntax match Word /pat/ oneline# comment',
       ], 'E475:')
 
-  CheckScriptSuccess([
+  v9.CheckScriptSuccess([
       'vim9script',
       'syntax keyword Word word # comm[ent',
       ])
-  CheckScriptFailure([
+  v9.CheckScriptFailure([
       'vim9script',
       'syntax keyword Word word# comm[ent',
       ], 'E789:')
 
-  CheckScriptSuccess([
+  v9.CheckScriptSuccess([
       'vim9script',
       'syntax match Word /pat/ # comment',
       ])
-  CheckScriptFailure([
+  v9.CheckScriptFailure([
       'vim9script',
       'syntax match Word /pat/# comment',
       ], 'E402:')
 
-  CheckScriptSuccess([
+  v9.CheckScriptSuccess([
       'vim9script',
       'syntax match Word /pat/ contains=Something # comment',
       ])
-  CheckScriptFailure([
+  v9.CheckScriptFailure([
       'vim9script',
       'syntax match Word /pat/ contains=Something# comment',
       ], 'E475:')
-  CheckScriptFailure([
+  v9.CheckScriptFailure([
       'vim9script',
       'syntax match Word /pat/ contains= # comment',
       ], 'E406:')
-  CheckScriptFailure([
+  v9.CheckScriptFailure([
       'vim9script',
       'syntax match Word /pat/ contains=# comment',
       ], 'E475:')
 
-  CheckScriptSuccess([
+  v9.CheckScriptSuccess([
       'vim9script',
       'syntax region Word start=/pat/ end=/pat/ # comment',
       ])
-  CheckScriptFailure([
+  v9.CheckScriptFailure([
       'vim9script',
       'syntax region Word start=/pat/ end=/pat/# comment',
       ], 'E402:')
 
-  CheckScriptSuccess([
+  v9.CheckScriptSuccess([
       'vim9script',
       'syntax sync # comment',
       ])
-  CheckScriptFailure([
+  v9.CheckScriptFailure([
       'vim9script',
       'syntax sync# comment',
       ], 'E404:')
-  CheckScriptSuccess([
+  v9.CheckScriptSuccess([
       'vim9script',
       'syntax sync ccomment # comment',
       ])
-  CheckScriptFailure([
+  v9.CheckScriptFailure([
       'vim9script',
       'syntax sync ccomment# comment',
       ], 'E404:')
 
-  CheckScriptSuccess([
+  v9.CheckScriptSuccess([
       'vim9script',
       'syntax cluster Some contains=Word # comment',
       ])
-  CheckScriptFailure([
+  v9.CheckScriptFailure([
       'vim9script',
       'syntax cluster Some contains=Word# comment',
       ], 'E475:')
 
-  CheckScriptSuccess([
+  v9.CheckScriptSuccess([
       'vim9script',
       'command Echo echo # comment',
       'command Echo # comment',
       'delcommand Echo',
       ])
-  CheckScriptFailure([
+  v9.CheckScriptFailure([
       'vim9script',
       'command Echo echo# comment',
       'Echo',
@@ -2670,18 +2670,18 @@
   delcommand Echo
 
   var curdir = getcwd()
-  CheckScriptSuccess([
+  v9.CheckScriptSuccess([
       'command Echo cd " comment',
       'Echo',
       'delcommand Echo',
       ])
-  CheckScriptSuccess([
+  v9.CheckScriptSuccess([
       'vim9script',
       'command Echo cd # comment',
       'Echo',
       'delcommand Echo',
       ])
-  CheckScriptFailure([
+  v9.CheckScriptFailure([
       'vim9script',
       'command Echo cd " comment',
       'Echo',
@@ -2689,86 +2689,88 @@
   delcommand Echo
   chdir(curdir)
 
-  CheckScriptFailure([
+  v9.CheckScriptFailure([
       'vim9script',
       'command Echo# comment',
       ], 'E182:')
-  CheckScriptFailure([
+  v9.CheckScriptFailure([
       'vim9script',
       'command Echo echo',
       'command Echo# comment',
       ], 'E182:')
   delcommand Echo
 
-  CheckScriptSuccess([
+  v9.CheckScriptSuccess([
       'vim9script',
       'function # comment',
       ])
-  CheckScriptFailure([
+  v9.CheckScriptFailure([
       'vim9script',
       'function " comment',
       ], 'E129:')
-  CheckScriptFailure([
+  v9.CheckScriptFailure([
       'vim9script',
       'function# comment',
       ], 'E1144:')
-  CheckScriptSuccess([
+  v9.CheckScriptSuccess([
       'vim9script',
-      'function CheckScriptSuccess # comment',
+      'import "./vim9.vim" as v9',
+      'function v9.CheckScriptSuccess # comment',
       ])
-  CheckScriptFailure([
+  v9.CheckScriptFailure([
       'vim9script',
-      'function CheckScriptSuccess# comment',
-      ], 'E488:')
+      'import "./vim9.vim" as v9',
+      'function v9.CheckScriptSuccess# comment',
+      ], 'E1048: Item not found in script: CheckScriptSuccess#')
 
-  CheckScriptSuccess([
+  v9.CheckScriptSuccess([
       'vim9script',
       'func g:DeleteMeA()',
       'endfunc',
       'delfunction g:DeleteMeA # comment',
       ])
-  CheckScriptFailure([
+  v9.CheckScriptFailure([
       'vim9script',
       'func g:DeleteMeB()',
       'endfunc',
       'delfunction g:DeleteMeB# comment',
       ], 'E488:')
 
-  CheckScriptSuccess([
+  v9.CheckScriptSuccess([
       'vim9script',
       'call execute("ls") # comment',
       ])
-  CheckScriptFailure([
+  v9.CheckScriptFailure([
       'vim9script',
       'call execute("ls")# comment',
       ], 'E488:')
 
-  CheckScriptFailure([
+  v9.CheckScriptFailure([
       'def Test() " comment',
       'enddef',
       ], 'E488:')
-  CheckScriptFailure([
+  v9.CheckScriptFailure([
       'vim9script',
       'def Test() " comment',
       'enddef',
       ], 'E488:')
 
-  CheckScriptSuccess([
+  v9.CheckScriptSuccess([
       'func Test() " comment',
       'endfunc',
       'delfunc Test',
       ])
-  CheckScriptSuccess([
+  v9.CheckScriptSuccess([
       'vim9script',
       'func Test() " comment',
       'endfunc',
       ])
 
-  CheckScriptSuccess([
+  v9.CheckScriptSuccess([
       'def Test() # comment',
       'enddef',
       ])
-  CheckScriptFailure([
+  v9.CheckScriptFailure([
       'func Test() # comment',
       'endfunc',
       ], 'E488:')
@@ -2783,7 +2785,7 @@
       #\ comment
       \ end='bar'
   END
-  CheckScriptSuccess(lines)
+  v9.CheckScriptSuccess(lines)
 
   lines =<< trim END
       vim9script
@@ -2792,17 +2794,17 @@
       "\ comment
       \ end='bar'
   END
-  CheckScriptFailure(lines, 'E399:')
+  v9.CheckScriptFailure(lines, 'E399:')
 enddef
 
 def Test_vim9_comment_gui()
   CheckCanRunGui
 
-  CheckScriptFailure([
+  v9.CheckScriptFailure([
       'vim9script',
       'gui#comment'
       ], 'E1144:')
-  CheckScriptFailure([
+  v9.CheckScriptFailure([
       'vim9script',
       'gui -f#comment'
       ], 'E194:')
@@ -2828,7 +2830,7 @@
   au! TabEnter
   unlet g:entered
 
-  CheckScriptSuccess([
+  v9.CheckScriptSuccess([
       'vim9script',
       'g:var = 123',
       'b:var = 456',
@@ -2837,53 +2839,53 @@
       'unlet g:var w:var # something',
       ])
 
-  CheckScriptFailure([
+  v9.CheckScriptFailure([
       'vim9script',
       'let var = 123',
       ], 'E1126: Cannot use :let in Vim9 script')
 
-  CheckScriptFailure([
+  v9.CheckScriptFailure([
       'vim9script',
       'var g:var = 123',
       ], 'E1016: Cannot declare a global variable:')
 
-  CheckScriptFailure([
+  v9.CheckScriptFailure([
       'vim9script',
       'var b:var = 123',
       ], 'E1016: Cannot declare a buffer variable:')
 
-  CheckScriptFailure([
+  v9.CheckScriptFailure([
       'vim9script',
       'var w:var = 123',
       ], 'E1016: Cannot declare a window variable:')
 
-  CheckScriptFailure([
+  v9.CheckScriptFailure([
       'vim9script',
       'var t:var = 123',
       ], 'E1016: Cannot declare a tab variable:')
 
-  CheckScriptFailure([
+  v9.CheckScriptFailure([
       'vim9script',
       'var v:version = 123',
       ], 'E1016: Cannot declare a v: variable:')
 
-  CheckScriptFailure([
+  v9.CheckScriptFailure([
       'vim9script',
       'var $VARIABLE = "text"',
       ], 'E1016: Cannot declare an environment variable:')
 
-  CheckScriptFailure([
+  v9.CheckScriptFailure([
       'vim9script',
       'g:var = 123',
       'unlet g:var# comment1',
       ], 'E108:')
 
-  CheckScriptFailure([
+  v9.CheckScriptFailure([
       'let g:var = 123',
       'unlet g:var # something',
       ], 'E488:')
 
-  CheckScriptSuccess([
+  v9.CheckScriptSuccess([
       'vim9script',
       'if 1 # comment2',
       '  echo "yes"',
@@ -2892,14 +2894,14 @@
       'endif',
       ])
 
-  CheckScriptFailure([
+  v9.CheckScriptFailure([
       'vim9script',
       'if 1# comment3',
       '  echo "yes"',
       'endif',
       ], 'E488:')
 
-  CheckScriptFailure([
+  v9.CheckScriptFailure([
       'vim9script',
       'if 0 # comment4',
       '  echo "yes"',
@@ -2908,17 +2910,17 @@
       'endif',
       ], 'E488:')
 
-  CheckScriptSuccess([
+  v9.CheckScriptSuccess([
       'vim9script',
       'var v = 1 # comment5',
       ])
 
-  CheckScriptFailure([
+  v9.CheckScriptFailure([
       'vim9script',
       'var v = 1# comment6',
       ], 'E488:')
 
-  CheckScriptSuccess([
+  v9.CheckScriptSuccess([
       'vim9script',
       'new'
       'setline(1, ["# define pat", "last"])',
@@ -2927,7 +2929,7 @@
       'bwipe!',
       ])
 
-  CheckScriptFailure([
+  v9.CheckScriptFailure([
       'vim9script',
       'new'
       'setline(1, ["# define pat", "last"])',
@@ -2936,7 +2938,7 @@
       'bwipe!',
       ], 'E488:')
 
-  CheckScriptFailure([
+  v9.CheckScriptFailure([
       'vim9script',
       'func! SomeFunc()',
       ], 'E477:')
@@ -3005,7 +3007,7 @@
       endtry
       assert_match('E741: Value is locked: local', error)
   END
-  CheckScriptSuccess(lines)
+  v9.CheckScriptSuccess(lines)
 enddef
         
 
@@ -3065,7 +3067,7 @@
     call assert_equal(2, s:counter)
     au! CursorHold
   END
-  CheckScriptSuccess(lines)
+  v9.CheckScriptSuccess(lines)
 enddef
 
 def Test_error_in_autoload_script()
@@ -3102,7 +3104,7 @@
 
       Legacy()
   END
-  CheckScriptSuccess(lines)
+  v9.CheckScriptSuccess(lines)
 
   &rtp = save_rtp
   delete(dir, 'rf')
@@ -3111,7 +3113,7 @@
 def Test_invalid_sid()
   assert_fails('func <SNR>1234_func', 'E123:')
 
-  if RunVim([], ['wq! Xdidit'], '+"func <SNR>1_func"')
+  if g:RunVim([], ['wq! Xdidit'], '+"func <SNR>1_func"')
     assert_equal([], readfile('Xdidit'))
   endif
   delete('Xdidit')
@@ -3120,7 +3122,7 @@
 def Test_restoring_cpo()
   writefile(['vim9script', 'set nocp'], 'Xsourced')
   writefile(['call writefile(["done"], "Xdone")', 'quit!'], 'Xclose')
-  if RunVim([], [], '-u NONE +"set cpo+=a" -S Xsourced -S Xclose')
+  if g:RunVim([], [], '-u NONE +"set cpo+=a" -S Xsourced -S Xclose')
     assert_equal(['done'], readfile('Xdone'))
   endif
   delete('Xsourced')
@@ -3169,7 +3171,7 @@
     END
     writefile(lines, 'Xvim9')
 
-    var cmd = GetVimCommand() .. " -S Xlegacy -S Xvim9"
+    var cmd = g:GetVimCommand() .. " -S Xlegacy -S Xvim9"
     cmd = substitute(cmd, '-u NONE', '', '')
     exe "silent !" .. cmd
 
@@ -3208,13 +3210,13 @@
       setline(1, 'some text')
   END
   call writefile(lines, 'XTest_redraw_cpo')
-  let buf = RunVimInTerminal('-S XTest_redraw_cpo', {'rows': 6})
+  let buf = g:RunVimInTerminal('-S XTest_redraw_cpo', {'rows': 6})
   call term_sendkeys(buf, "V:")
   call VerifyScreenDump(buf, 'Test_vim9_no_redraw', {})
 
   " clean up
   call term_sendkeys(buf, "\<Esc>u")
-  call StopVimInTerminal(buf)
+  call g:StopVimInTerminal(buf)
   call delete('XTest_redraw_cpo')
   call delete('Xdir', 'rf')
 endfunc
@@ -3225,7 +3227,7 @@
     var name: any
     assert_equal(0, name)
   END
-  CheckDefAndScriptSuccess(lines)
+  v9.CheckDefAndScriptSuccess(lines)
 enddef
 
 func Test_define_func_at_command_line()
@@ -3245,13 +3247,13 @@
   END
   writefile([''], 'Xdidcmd')
   writefile(lines, 'XcallFunc')
-  var buf = RunVimInTerminal('-S XcallFunc', {rows: 6})
+  var buf = g:RunVimInTerminal('-S XcallFunc', {rows: 6})
   # define Afunc() on the command line
   term_sendkeys(buf, ":def Afunc()\<CR>Bfunc()\<CR>enddef\<CR>")
   term_sendkeys(buf, ":call CheckAndQuit()\<CR>")
-  WaitForAssert(() => assert_equal(['errors: []'], readfile('Xdidcmd')))
+  g:WaitForAssert(() => assert_equal(['errors: []'], readfile('Xdidcmd')))
 
-  call StopVimInTerminal(buf)
+  call g:StopVimInTerminal(buf)
   delete('XcallFunc')
   delete('Xdidcmd')
 enddef
@@ -3267,7 +3269,7 @@
         echo one
       endif
   END
-  CheckScriptFailure(lines, 'E121:', 7)
+  v9.CheckScriptFailure(lines, 'E121:', 7)
 
   lines =<< trim END
       vim9script
@@ -3282,7 +3284,7 @@
         echo one
       endif
   END
-  CheckScriptFailure(lines, 'E121:', 10)
+  v9.CheckScriptFailure(lines, 'E121:', 10)
 
   lines =<< trim END
       vim9script
@@ -3293,7 +3295,7 @@
       endwhile
       echo one
   END
-  CheckScriptFailure(lines, 'E121:', 7)
+  v9.CheckScriptFailure(lines, 'E121:', 7)
 
   lines =<< trim END
       vim9script
@@ -3303,7 +3305,7 @@
       endfor
       echo one
   END
-  CheckScriptFailure(lines, 'E121:', 6)
+  v9.CheckScriptFailure(lines, 'E121:', 6)
 
   lines =<< trim END
       vim9script
@@ -3314,7 +3316,7 @@
       assert_false(exists('one'))
       assert_false(exists('s:one'))
   END
-  CheckScriptSuccess(lines)
+  v9.CheckScriptSuccess(lines)
 
   lines =<< trim END
       vim9script
@@ -3324,7 +3326,7 @@
       }
       echo one
   END
-  CheckScriptFailure(lines, 'E121:', 6)
+  v9.CheckScriptFailure(lines, 'E121:', 6)
 enddef
 
 def Test_catch_exception_in_callback()
@@ -3344,7 +3346,7 @@
     popup_menu('popup', {callback: Callback})
     feedkeys("\r", 'xt')
   END
-  CheckScriptSuccess(lines)
+  v9.CheckScriptSuccess(lines)
 
   unlet g:caught
 enddef
@@ -3396,12 +3398,12 @@
   var lines =<< trim END
     exit_cb: Func})
   END
-  CheckDefAndScriptFailure(lines, 'E1144:', 1)
+  v9.CheckDefAndScriptFailure(lines, 'E1144:', 1)
 
   lines =<< trim END
     e#
   END
-  CheckDefAndScriptFailure(lines, 'E1144:', 1)
+  v9.CheckDefAndScriptFailure(lines, 'E1144:', 1)
 enddef
 
 def Test_script_var_gone_when_sourced_twice()
@@ -3438,32 +3440,32 @@
   var lines =<< trim END
       ka
   END
-  CheckDefFailure(lines, 'E476:')
-  CheckScriptFailure(['vim9script'] + lines, 'E492:')
+  v9.CheckDefFailure(lines, 'E476:')
+  v9.CheckScriptFailure(['vim9script'] + lines, 'E492:')
 
   lines =<< trim END
       :1ka
   END
-  CheckDefFailure(lines, 'E476:')
-  CheckScriptFailure(['vim9script'] + lines, 'E492:')
+  v9.CheckDefFailure(lines, 'E476:')
+  v9.CheckScriptFailure(['vim9script'] + lines, 'E492:')
 
   lines =<< trim END
     t
   END
-  CheckDefFailure(lines, 'E1100:')
-  CheckScriptFailure(['vim9script'] + lines, 'E1100:')
+  v9.CheckDefFailure(lines, 'E1100:')
+  v9.CheckScriptFailure(['vim9script'] + lines, 'E1100:')
 
   lines =<< trim END
     x
   END
-  CheckDefFailure(lines, 'E1100:')
-  CheckScriptFailure(['vim9script'] + lines, 'E1100:')
+  v9.CheckDefFailure(lines, 'E1100:')
+  v9.CheckScriptFailure(['vim9script'] + lines, 'E1100:')
 
   lines =<< trim END
     xit
   END
-  CheckDefFailure(lines, 'E1100:')
-  CheckScriptFailure(['vim9script'] + lines, 'E1100:')
+  v9.CheckDefFailure(lines, 'E1100:')
+  v9.CheckScriptFailure(['vim9script'] + lines, 'E1100:')
 enddef
 
 def Test_mapping_line_number()
@@ -3485,7 +3487,7 @@
               .. 'c'
       enddef
   END
-  CheckScriptSuccess(lines)
+  v9.CheckScriptSuccess(lines)
   var res = execute('verbose nmap <F3>')
   assert_match('No mapping found', res)
 
@@ -3503,7 +3505,7 @@
       set foldlevel  =11
       call assert_equal(11, &foldlevel)
   END
-  CheckScriptSuccess(lines)
+  v9.CheckScriptSuccess(lines)
 
   set foldlevel
   set foldlevel=12
@@ -3516,22 +3518,22 @@
   lines =<< trim END
       set foldlevel =1
   END
-  CheckDefExecAndScriptFailure(lines, 'E1205: No white space allowed between option and: =1')
+  v9.CheckDefExecAndScriptFailure(lines, 'E1205: No white space allowed between option and: =1')
 
   lines =<< trim END
       set foldlevel +=1
   END
-  CheckDefExecAndScriptFailure(lines, 'E1205: No white space allowed between option and: +=1')
+  v9.CheckDefExecAndScriptFailure(lines, 'E1205: No white space allowed between option and: +=1')
 
   lines =<< trim END
       set foldlevel ^=1
   END
-  CheckDefExecAndScriptFailure(lines, 'E1205: No white space allowed between option and: ^=1')
+  v9.CheckDefExecAndScriptFailure(lines, 'E1205: No white space allowed between option and: ^=1')
 
   lines =<< trim END
       set foldlevel -=1
   END
-  CheckDefExecAndScriptFailure(lines, 'E1205: No white space allowed between option and: -=1')
+  v9.CheckDefExecAndScriptFailure(lines, 'E1205: No white space allowed between option and: -=1')
 
   set foldlevel&
 enddef
@@ -3542,7 +3544,7 @@
       set hlsearch &  hlsearch  !
       call assert_equal(1, &hlsearch)
   END
-  CheckScriptSuccess(lines)
+  v9.CheckScriptSuccess(lines)
 
   set hlsearch
   set hlsearch!
@@ -3555,12 +3557,12 @@
   lines =<< trim END
       set hlsearch &
   END
-  CheckDefExecAndScriptFailure(lines, 'E1205: No white space allowed between option and: &')
+  v9.CheckDefExecAndScriptFailure(lines, 'E1205: No white space allowed between option and: &')
 
   lines =<< trim END
       set hlsearch   !
   END
-  CheckDefExecAndScriptFailure(lines, 'E1205: No white space allowed between option and: !')
+  v9.CheckDefExecAndScriptFailure(lines, 'E1205: No white space allowed between option and: !')
 
   set hlsearch&
 enddef
@@ -3572,7 +3574,7 @@
          .. ' error'
          .. ' continued'
   END
-  CheckDefExecAndScriptFailure(lines, 'some error continued', 1)
+  v9.CheckDefExecAndScriptFailure(lines, 'some error continued', 1)
 enddef
 
 func Test_debug_with_lambda()
@@ -3593,13 +3595,13 @@
       Func()
   END
   writefile(lines, 'XdebugFunc')
-  var buf = RunVimInTerminal('-S XdebugFunc', {rows: 6, wait_for_ruler: 0})
-  WaitForAssert(() => assert_match('^>', term_getline(buf, 6)))
+  var buf = g:RunVimInTerminal('-S XdebugFunc', {rows: 6, wait_for_ruler: 0})
+  g:WaitForAssert(() => assert_match('^>', term_getline(buf, 6)))
 
   term_sendkeys(buf, "cont\<CR>")
-  WaitForAssert(() => assert_match('\[0\]', term_getline(buf, 5)))
+  g:WaitForAssert(() => assert_match('\[0\]', term_getline(buf, 5)))
 
-  StopVimInTerminal(buf)
+  g:StopVimInTerminal(buf)
   delete('XdebugFunc')
 enddef
 
@@ -3629,26 +3631,26 @@
       Crash()
   END
   writefile(lines, 'XdebugFunc')
-  var buf = RunVimInTerminal('-S XdebugFunc', {rows: 6, wait_for_ruler: 0})
-  WaitForAssert(() => assert_match('^>', term_getline(buf, 6)))
+  var buf = g:RunVimInTerminal('-S XdebugFunc', {rows: 6, wait_for_ruler: 0})
+  g:WaitForAssert(() => assert_match('^>', term_getline(buf, 6)))
 
   term_sendkeys(buf, "next\<CR>")
-  TermWait(buf)
-  WaitForAssert(() => assert_match('^>', term_getline(buf, 6)))
+  g:TermWait(buf)
+  g:WaitForAssert(() => assert_match('^>', term_getline(buf, 6)))
 
   term_sendkeys(buf, "cont\<CR>")
-  TermWait(buf)
+  g:TermWait(buf)
 
-  StopVimInTerminal(buf)
+  g:StopVimInTerminal(buf)
   delete('XdebugFunc')
 enddef
 
-def ProfiledWithLambda()
+def s:ProfiledWithLambda()
   var n = 3
   echo [[1, 2], [3, 4]]->filter((_, l) => l[0] == n)
 enddef
 
-def ProfiledNested()
+def s:ProfiledNested()
   var x = 0
   def Nested(): any
       return x
@@ -3671,7 +3673,7 @@
       command CmdB echomsg 'CmdB'
       Cmd
   END
-  CheckScriptFailure(lines, 'E464: Ambiguous use of user-defined command: Cmd', 4)
+  v9.CheckScriptFailure(lines, 'E464: Ambiguous use of user-defined command: Cmd', 4)
 
   lines =<< trim END
       vim9script
@@ -3680,14 +3682,14 @@
       enddef
       Func()
   END
-  CheckScriptFailure(lines, 'E464: Ambiguous use of user-defined command: Cmd', 1)
+  v9.CheckScriptFailure(lines, 'E464: Ambiguous use of user-defined command: Cmd', 1)
 
   lines =<< trim END
       vim9script
       nnoremap <F3> <ScriptCmd>Cmd<CR>
       feedkeys("\<F3>", 'xt')
   END
-  CheckScriptFailure(lines, 'E464: Ambiguous use of user-defined command: Cmd', 3)
+  v9.CheckScriptFailure(lines, 'E464: Ambiguous use of user-defined command: Cmd', 3)
 
   delcommand CmdA
   delcommand CmdB
@@ -3709,7 +3711,7 @@
   # Also profile the nested function.  Use a different function, although the
   # contents is the same, to make sure it was not already compiled.
   profile func *
-  ProfiledNestedProfiled()
+  g:ProfiledNestedProfiled()
 
   profdel func *
   profile pause
diff --git a/src/testdir/vim9.vim b/src/testdir/vim9.vim
index 89f3c79..92ea0ba 100644
--- a/src/testdir/vim9.vim
+++ b/src/testdir/vim9.vim
@@ -1,10 +1,12 @@
-" Utility functions for testing vim9 script
+vim9script
 
-" Use a different file name for each run.
-let s:sequence = 1
+# Utility functions for testing vim9 script
 
-" Check that "lines" inside a ":def" function has no error when called.
-func CheckDefSuccess(lines)
+# Use a different file name for each run.
+var sequence = 1
+
+# Check that "lines" inside a ":def" function has no error when called.
+export func CheckDefSuccess(lines)
   let cwd = getcwd()
   let fname = 'XdefSuccess' .. s:sequence
   let s:sequence += 1
@@ -19,8 +21,8 @@
   endtry
 endfunc
 
-" Check that "lines" inside a ":def" function has no error when compiled.
-func CheckDefCompileSuccess(lines)
+# Check that "lines" inside a ":def" function has no error when compiled.
+export func CheckDefCompileSuccess(lines)
   let fname = 'XdefSuccess' .. s:sequence
   let s:sequence += 1
   call writefile(['def Func()'] + a:lines + ['enddef', 'defcompile'], fname)
@@ -32,11 +34,11 @@
   endtry
 endfunc
 
-" Check that "lines" inside ":def" results in an "error" message.
-" If "lnum" is given check that the error is reported for this line.
-" Add a line before and after to make it less likely that the line number is
-" accidentally correct.
-func CheckDefFailure(lines, error, lnum = -3)
+# Check that "lines" inside ":def" results in an "error" message.
+# If "lnum" is given check that the error is reported for this line.
+# Add a line before and after to make it less likely that the line number is
+# accidentally correct.
+export func CheckDefFailure(lines, error, lnum = -3)
   let cwd = getcwd()
   let fname = 'XdefFailure' .. s:sequence
   let s:sequence += 1
@@ -50,11 +52,11 @@
   endtry
 endfunc
 
-" Check that "lines" inside ":def" results in an "error" message when executed.
-" If "lnum" is given check that the error is reported for this line.
-" Add a line before and after to make it less likely that the line number is
-" accidentally correct.
-func CheckDefExecFailure(lines, error, lnum = -3)
+# Check that "lines" inside ":def" results in an "error" message when executed.
+# If "lnum" is given check that the error is reported for this line.
+# Add a line before and after to make it less likely that the line number is
+# accidentally correct.
+export func CheckDefExecFailure(lines, error, lnum = -3)
   let cwd = getcwd()
   let fname = 'XdefExecFailure' .. s:sequence
   let s:sequence += 1
@@ -69,7 +71,7 @@
   endtry
 endfunc
 
-def CheckScriptFailure(lines: list<string>, error: string, lnum = -3)
+export def CheckScriptFailure(lines: list<string>, error: string, lnum = -3)
   var cwd = getcwd()
   var fname = 'XScriptFailure' .. s:sequence
   s:sequence += 1
@@ -82,7 +84,7 @@
   endtry
 enddef
 
-def CheckScriptFailureList(lines: list<string>, errors: list<string>, lnum = -3)
+export def CheckScriptFailureList(lines: list<string>, errors: list<string>, lnum = -3)
   var cwd = getcwd()
   var fname = 'XScriptFailure' .. s:sequence
   s:sequence += 1
@@ -95,7 +97,7 @@
   endtry
 enddef
 
-def CheckScriptSuccess(lines: list<string>)
+export def CheckScriptSuccess(lines: list<string>)
   var cwd = getcwd()
   var fname = 'XScriptSuccess' .. s:sequence
   s:sequence += 1
@@ -108,17 +110,17 @@
   endtry
 enddef
 
-def CheckDefAndScriptSuccess(lines: list<string>)
+export def CheckDefAndScriptSuccess(lines: list<string>)
   CheckDefSuccess(lines)
   CheckScriptSuccess(['vim9script'] + lines)
 enddef
 
-" 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)
+# 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]".
+export def CheckDefAndScriptFailure(lines: list<string>, error: any, lnum = -3)
   var errorDef: string
   var errorScript: string
   if type(error) == v:t_string
@@ -135,12 +137,12 @@
   CheckScriptFailure(['vim9script'] + lines, errorScript, lnum + 1)
 enddef
 
-" 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)
+# 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]".
+export def CheckDefExecAndScriptFailure(lines: list<string>, error: any, lnum = -3)
   var errorDef: string
   var errorScript: string
   if type(error) == v:t_string
@@ -158,8 +160,8 @@
 enddef
 
 
-" Check that "lines" inside a legacy function has no error.
-func CheckLegacySuccess(lines)
+# Check that "lines" inside a legacy function has no error.
+export func CheckLegacySuccess(lines)
   let cwd = getcwd()
   let fname = 'XlegacySuccess' .. s:sequence
   let s:sequence += 1
@@ -174,8 +176,8 @@
   endtry
 endfunc
 
-" Check that "lines" inside a legacy function results in the expected error
-func CheckLegacyFailure(lines, error)
+# Check that "lines" inside a legacy function results in the expected error
+export func CheckLegacyFailure(lines, error)
   let cwd = getcwd()
   let fname = 'XlegacyFails' .. s:sequence
   let s:sequence += 1
@@ -189,9 +191,9 @@
   endtry
 endfunc
 
-" Execute "lines" in a legacy function, translated as in
-" CheckLegacyAndVim9Success()
-def CheckTransLegacySuccess(lines: list<string>)
+# Execute "lines" in a legacy function, translated as in
+# CheckLegacyAndVim9Success()
+export def CheckTransLegacySuccess(lines: list<string>)
   var legacylines = lines->mapnew((_, v) =>
   				v->substitute('\<VAR\>', 'let', 'g')
 		           	 ->substitute('\<LET\>', 'let', 'g')
@@ -204,7 +206,7 @@
   CheckLegacySuccess(legacylines)
 enddef
 
-def Vim9Trans(lines: list<string>): list<string>
+export def Vim9Trans(lines: list<string>): list<string>
   return lines->mapnew((_, v) =>
 	    v->substitute('\<VAR\>', 'var', 'g')
 	    ->substitute('\<LET ', '', 'g')
@@ -215,36 +217,36 @@
 	    ->substitute('\<FALSE\>', 'false', 'g'))
 enddef
 
-" Execute "lines" in a :def function, translated as in
-" CheckLegacyAndVim9Success()
-def CheckTransDefSuccess(lines: list<string>)
+# Execute "lines" in a :def function, translated as in
+# CheckLegacyAndVim9Success()
+export def CheckTransDefSuccess(lines: list<string>)
   CheckDefSuccess(Vim9Trans(lines))
 enddef
 
-" Execute "lines" in a Vim9 script, translated as in
-" CheckLegacyAndVim9Success()
-def CheckTransVim9Success(lines: list<string>)
+# Execute "lines" in a Vim9 script, translated as in
+# CheckLegacyAndVim9Success()
+export def CheckTransVim9Success(lines: list<string>)
   CheckScriptSuccess(['vim9script'] + Vim9Trans(lines))
 enddef
 
-" Execute "lines" in a legacy function, :def function and Vim9 script.
-" Use 'VAR' for a declaration.
-" Use 'LET' for an assignment
-" Use ' #"' for a comment
-" Use LSTART arg LMIDDLE expr LEND for lambda
-" Use 'TRUE' for 1 in legacy, true in Vim9
-" Use 'FALSE' for 0 in legacy, false in Vim9
-def CheckLegacyAndVim9Success(lines: list<string>)
+# Execute "lines" in a legacy function, :def function and Vim9 script.
+# Use 'VAR' for a declaration.
+# Use 'LET' for an assignment
+# Use ' #"' for a comment
+# Use LSTART arg LMIDDLE expr LEND for lambda
+# Use 'TRUE' for 1 in legacy, true in Vim9
+# Use 'FALSE' for 0 in legacy, false in Vim9
+export def CheckLegacyAndVim9Success(lines: list<string>)
   CheckTransLegacySuccess(lines)
   CheckTransDefSuccess(lines)
   CheckTransVim9Success(lines)
 enddef
 
-" Execute "lines" in a legacy function, :def function and Vim9 script.
-" Use 'VAR' for a declaration.
-" Use 'LET' for an assignment
-" Use ' #"' for a comment
-def CheckLegacyAndVim9Failure(lines: list<string>, error: any)
+# Execute "lines" in a legacy function, :def function and Vim9 script.
+# Use 'VAR' for a declaration.
+# Use 'LET' for an assignment
+# Use ' #"' for a comment
+export def CheckLegacyAndVim9Failure(lines: list<string>, error: any)
   var legacyError: string
   var defError: string
   var scriptError: string
diff --git a/src/userfunc.c b/src/userfunc.c
index 8c20439..097d4f1 100644
--- a/src/userfunc.c
+++ b/src/userfunc.c
@@ -3789,7 +3789,7 @@
 	    sid_buf[1] = KS_EXTRA;
 	    sid_buf[2] = (int)KE_SNR;
 	    vim_snprintf((char *)sid_buf + 3, sizeof(sid_buf) - 3,
-					    "%ld_", (long)current_sctx.sc_sid);
+						      "%ld_", (long)lv.ll_sid);
 	    name = concat_str(sid_buf, lv.ll_name);
 	}
 	*lv.ll_name_end = cc;
diff --git a/src/version.c b/src/version.c
index c76a475..0d84d58 100644
--- a/src/version.c
+++ b/src/version.c
@@ -751,6 +751,8 @@
 static int included_patches[] =
 {   /* Add new patch number below this line */
 /**/
+    4257,
+/**/
     4256,
 /**/
     4255,
diff --git a/src/vim9expr.c b/src/vim9expr.c
index a56219f..2727c5c 100644
--- a/src/vim9expr.c
+++ b/src/vim9expr.c
@@ -254,12 +254,6 @@
 	return FAIL;
     si = SCRIPT_ITEM(current_sctx.sc_sid);
     idx = get_script_item_idx(current_sctx.sc_sid, name, 0, cctx);
-    if (idx == -1 || si->sn_version != SCRIPT_VERSION_VIM9)
-    {
-	// variable is not in sn_var_vals: old style script.
-	return generate_OLDSCRIPT(cctx, ISN_LOADS, name, current_sctx.sc_sid,
-								       &t_any);
-    }
     if (idx >= 0)
     {
 	svar_T		*sv = ((svar_T *)si->sn_var_vals.ga_data) + idx;
@@ -344,6 +338,11 @@
 	return OK;
     }
 
+    if (idx == -1 || si->sn_version != SCRIPT_VERSION_VIM9)
+	// variable is not in sn_var_vals: old style script.
+	return generate_OLDSCRIPT(cctx, ISN_LOADS, name, current_sctx.sc_sid,
+								       &t_any);
+
     if (error)
 	semsg(_(e_item_not_found_str), name);
     return FAIL;
@@ -667,6 +666,7 @@
     ufunc_T	*ufunc = NULL;
     int		res = FAIL;
     int		is_autoload;
+    int		has_g_namespace;
     int		is_searchpair;
     imported_T	*import;
 
@@ -783,6 +783,8 @@
 	goto theend;
     }
 
+    has_g_namespace = STRNCMP(namebuf, "g:", 2) == 0;
+
     // An argument or local variable can be a function reference, this
     // overrules a function name.
     if (lookup_local(namebuf, varlen, NULL, cctx) == FAIL
@@ -791,10 +793,20 @@
 	// If we can find the function by name generate the right call.
 	// Skip global functions here, a local funcref takes precedence.
 	ufunc = find_func(name, FALSE);
-	if (ufunc != NULL && !func_is_global(ufunc))
+	if (ufunc != NULL)
 	{
-	    res = generate_CALL(cctx, ufunc, argcount);
-	    goto theend;
+	    if (!func_is_global(ufunc))
+	    {
+		res = generate_CALL(cctx, ufunc, argcount);
+		goto theend;
+	    }
+	    if (!has_g_namespace
+			  && vim_strchr(ufunc->uf_name, AUTOLOAD_CHAR) == NULL)
+	    {
+		// A function name without g: prefix must be found locally.
+		semsg(_(e_unknown_function_str), namebuf);
+		goto theend;
+	    }
 	}
     }
 
@@ -802,7 +814,7 @@
     // Not for g:Func(), we don't know if it is a variable or not.
     // Not for eome#Func(), it will be loaded later.
     p = namebuf;
-    if (STRNCMP(namebuf, "g:", 2) != 0 && !is_autoload
+    if (!has_g_namespace && !is_autoload
 	    && compile_load(&p, namebuf + varlen, cctx, FALSE, FALSE) == OK)
     {
 	type_T	    *type = get_type_on_stack(cctx, 0);
@@ -820,7 +832,7 @@
 
     // A global function may be defined only later.  Need to figure out at
     // runtime.  Also handles a FuncRef at runtime.
-    if (STRNCMP(namebuf, "g:", 2) == 0 || is_autoload)
+    if (has_g_namespace || is_autoload)
 	res = generate_UCALL(cctx, name, argcount);
     else
 	semsg(_(e_unknown_function_str), namebuf);
