diff --git a/src/eval.c b/src/eval.c
index f5fd3e0..55fda77 100644
--- a/src/eval.c
+++ b/src/eval.c
@@ -2330,7 +2330,7 @@
 	{
 	    if (evaluate && vim9script && !VIM_ISWHITE(p[-1]))
 	    {
-		error_white_both(p, 1);
+		error_white_both(p, op_falsy ? 2 : 1);
 		clear_tv(rettv);
 		return FAIL;
 	    }
@@ -2361,7 +2361,7 @@
 	    ++*arg;
 	if (evaluate && vim9script && !IS_WHITE_OR_NUL((*arg)[1]))
 	{
-	    error_white_both(p, 1);
+	    error_white_both(p, op_falsy ? 2 : 1);
 	    clear_tv(rettv);
 	    return FAIL;
 	}
@@ -2774,7 +2774,7 @@
 	 */
 	if (evaluate && vim9script && !IS_WHITE_OR_NUL(p[len]))
 	{
-	    error_white_both(p, 1);
+	    error_white_both(p, len);
 	    clear_tv(rettv);
 	    return FAIL;
 	}
@@ -3438,9 +3438,16 @@
     case '@':	++*arg;
 		if (evaluate)
 		{
-		    rettv->v_type = VAR_STRING;
-		    rettv->vval.v_string = get_reg_contents(**arg,
-							    GREG_EXPR_SRC);
+		    if (in_vim9script() && IS_WHITE_OR_NUL(**arg))
+			semsg(_(e_syntax_error_at_str), *arg);
+		    else if (in_vim9script() && !valid_yank_reg(**arg, FALSE))
+			emsg_invreg(**arg);
+		    else
+		    {
+			rettv->v_type = VAR_STRING;
+			rettv->vval.v_string = get_reg_contents(**arg,
+								GREG_EXPR_SRC);
+		    }
 		}
 		if (**arg != NUL)
 		    ++*arg;
diff --git a/src/testdir/test_vim9_expr.vim b/src/testdir/test_vim9_expr.vim
index 4758fec..f5a0cd5 100644
--- a/src/testdir/test_vim9_expr.vim
+++ b/src/testdir/test_vim9_expr.vim
@@ -72,139 +72,131 @@
 def Test_expr1_trinary_vimscript()
   # check line continuation
   var lines =<< trim END
-      vim9script
       var name = 1
       		? 'yes'
 		: 'no'
       assert_equal('yes', name)
   END
-  CheckScriptSuccess(lines)
+  CheckDefAndScriptSuccess(lines)
 
   lines =<< trim END
-      vim9script
       var name = v:false
       		? 'yes'
 		: 'no'
       assert_equal('no', name)
   END
-  CheckScriptSuccess(lines)
+  CheckDefAndScriptSuccess(lines)
 
   lines =<< trim END
-      vim9script
       var name = v:false ?
       		'yes' :
 		'no'
       assert_equal('no', name)
   END
-  CheckScriptSuccess(lines)
+  CheckDefAndScriptSuccess(lines)
 
   lines =<< trim END
-      vim9script
       var name = v:false ?  # comment
       		'yes' :
                 # comment
 		'no' # comment
       assert_equal('no', name)
   END
-  CheckScriptSuccess(lines)
+  CheckDefAndScriptSuccess(lines)
 
   # check white space
   lines =<< trim END
-      vim9script
       var name = v:true?1:2
   END
-  CheckScriptFailure(lines, 'E1004: White space required before and after ''?'' at "?1:2"', 2)
+  CheckDefAndScriptFailure(lines, 'E1004: White space required before and after ''?'' at "?1:2"', 1)
+
   lines =<< trim END
-      vim9script
       var name = v:true? 1 : 2
   END
-  CheckScriptFailure(lines, 'E1004:', 2)
+  CheckDefAndScriptFailure(lines, 'E1004:', 1)
+
   lines =<< trim END
-      vim9script
       var name = v:true ?1 : 2
   END
-  CheckScriptFailure(lines, 'E1004:', 2)
+  CheckDefAndScriptFailure(lines, 'E1004:', 1)
+
   lines =<< trim END
-      vim9script
       var name = v:true ? 1: 2
   END
-  CheckScriptFailure(lines, 'E1004: White space required before and after '':'' at ": 2"', 2)
+  CheckDefAndScriptFailure(lines, 'E1004: White space required before and after '':'' at ": 2"', 1)
+
   lines =<< trim END
-      vim9script
       var name = v:true ? 1 :2
   END
-  CheckScriptFailure(lines, 'E1004:', 2)
+  CheckDefAndScriptFailure(lines, 'E1004:', 1)
 
   lines =<< trim END
-      vim9script
       var name = 'x' ? 1 : 2
   END
-  CheckScriptFailure(lines, 'E1135:', 2)
+  CheckDefAndScriptFailure(lines, 'E1135:', 1)
 
   lines =<< trim END
-      vim9script
       var name = [] ? 1 : 2
   END
-  CheckScriptFailure(lines, 'E745:', 2)
+  CheckDefExecAndScriptFailure(lines, 'E745:', 1)
 
   lines =<< trim END
-      vim9script
       var name = {} ? 1 : 2
   END
-  CheckScriptFailure(lines, 'E728:', 2)
+  CheckDefExecAndScriptFailure(lines, 'E728:', 1)
 
   # check after failure eval_flags is reset
   lines =<< trim END
-      vim9script
       try
         eval('0 ? 1: 2')
       catch
       endtry
       assert_equal(v:true, eval(string(v:true)))
   END
-  CheckScriptSuccess(lines)
+  CheckDefAndScriptSuccess(lines)
 
   lines =<< trim END
-      vim9script
       try
         eval('0 ? 1 :2')
       catch
       endtry
       assert_equal(v:true, eval(string(v:true)))
   END
-  CheckScriptSuccess(lines)
+  CheckDefAndScriptSuccess(lines)
 enddef
 
 func Test_expr1_trinary_fails()
-  call CheckDefFailure(["var x = 1 ? 'one'"], "Missing ':' after '?'", 1)
+  call CheckDefAndScriptFailure(["var x = 1 ? 'one'"], "Missing ':' after '?'", 1)
 
   let msg = "White space required before and after '?'"
-  call CheckDefFailure(["var x = 1? 'one' : 'two'"], msg, 1)
-  call CheckDefFailure(["var x = 1 ?'one' : 'two'"], msg, 1)
-  call CheckDefFailure(["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 CheckDefAndScriptFailure(["var x = 1?'one' : 'two'"], msg, 1)
 
   let msg = "White space required before and after ':'"
-  call CheckDefFailure(["var x = 1 ? 'one': 'two'"], msg, 1)
-  call CheckDefFailure(["var x = 1 ? 'one' :'two'"], msg, 1)
-  call CheckDefFailure(["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 CheckDefAndScriptFailure(["var x = 1 ? 'one':'two'"], msg, 1)
 
-  call CheckDefFailure(["var x = 'x' ? 'one' : 'two'"], 'E1135:', 1)
-  call CheckDefFailure(["var x = 0z1234 ? 'one' : 'two'"], 'E974:', 1)
-  call CheckDefExecFailure(["var x = [] ? 'one' : 'two'"], 'E745:', 1)
-  call CheckDefExecFailure(["var x = {} ? 'one' : 'two'"], 'E728:', 1)
+  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 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 CheckDefExecFailure(["var x = true ? xxx : 'foo'"], 'E1001:', 1)
-  call CheckDefExecFailure(["var x = false ? 'foo' : xxx"], 'E1001:', 1)
+  call CheckDefExecAndScriptFailure2(["var x = true ? xxx : 'foo'"], 'E1001:', 'E121:', 1)
+  call CheckDefExecAndScriptFailure2(["var x = false ? 'foo' : xxx"], 'E1001:', 'E121:', 1)
 
   if has('float')
-    call CheckDefFailure(["var x = 0.1 ? 'one' : 'two'"], 'E805:', 1)
+    call CheckDefAndScriptFailure(["var x = 0.1 ? 'one' : 'two'"], 'E805:', 1)
   endif
 
   " missing argument detected even when common type is used
-  call CheckDefFailure([
+  call CheckDefAndScriptFailure([
 	\ 'var X = FuncOne',
 	\ 'var Y = FuncTwo',
 	\ 'var Z = g:cond ? FuncOne : FuncTwo',
@@ -234,9 +226,9 @@
   CheckDefAndScriptSuccess(lines)
 
   var msg = "White space required before and after '??'"
-  call CheckDefFailure(["var x = 1?? 'one' : 'two'"], msg, 1)
-  call CheckDefFailure(["var x = 1 ??'one' : 'two'"], msg, 1)
-  call CheckDefFailure(["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 CheckDefAndScriptFailure(["var x = 1??'one' : 'two'"], msg, 1)
 enddef
 
 def Record(val: any): any
@@ -297,33 +289,29 @@
 def Test_expr2_vimscript()
   # check line continuation
   var lines =<< trim END
-      vim9script
       var name = 0
       		|| 1
       assert_equal(true, name)
   END
-  CheckScriptSuccess(lines)
+  CheckDefAndScriptSuccess(lines)
 
   lines =<< trim END
-      vim9script
       var name = v:false
       		|| v:true
       		|| v:false
       assert_equal(v:true, name)
   END
-  CheckScriptSuccess(lines)
+  CheckDefAndScriptSuccess(lines)
 
   lines =<< trim END
-      vim9script
       var name = v:false ||
       		v:true ||
 		v:false
       assert_equal(v:true, name)
   END
-  CheckScriptSuccess(lines)
+  CheckDefAndScriptSuccess(lines)
 
   lines =<< trim END
-      vim9script
       var name = v:false || # comment
                 # comment
       		v:true ||
@@ -331,42 +319,46 @@
 		v:false # comment
       assert_equal(v:true, name)
   END
-  CheckScriptSuccess(lines)
+  CheckDefAndScriptSuccess(lines)
 
   # check white space
   lines =<< trim END
-      vim9script
       var name = v:true||v:true
   END
-  CheckScriptFailure(lines, 'E1004: White space required before and after ''||'' at "||v:true"', 2)
+  CheckDefExecAndScriptFailure(lines, 'E1004: White space required before and after ''||'' at "||v:true"', 1)
+
   lines =<< trim END
-      vim9script
       var name = v:true ||v:true
   END
-  CheckScriptFailure(lines, 'E1004:', 2)
+  CheckDefAndScriptFailure(lines, 'E1004:', 1)
+
   lines =<< trim END
-      vim9script
       var name = v:true|| v:true
   END
-  CheckScriptFailure(lines, 'E1004:', 2)
+  CheckDefAndScriptFailure(lines, 'E1004:', 1)
 enddef
 
 def Test_expr2_fails()
   var msg = "White space required before and after '||'"
-  call CheckDefFailure(["var x = 1||2"], msg, 1)
-  call CheckDefFailure(["var x = 1 ||2"], msg, 1)
-  call CheckDefFailure(["var x = 1|| 2"], msg, 1)
+  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 CheckDefFailure(["var x = false || "], 'E1097:', 3)
+  call CheckScriptFailure(['vim9script', "var x = false || "], 'E15:', 2)
 
+  # script does not fail, the second expression is skipped
   call CheckDefFailure(["var x = 1 || xxx"], 'E1001:', 1)
-  call CheckDefFailure(["var x = [] || false"], 'E1012:', 1)
-  call CheckDefFailure(["if 'yes' || 0", 'echo 0', 'endif'], 'E1012: Type mismatch; expected bool but got string', 1)
+
+  call CheckDefAndScriptFailure2(["var x = [] || false"], 'E1012:', 'E745:', 1)
+
+  call CheckDefAndScriptFailure2(["if 'yes' || 0", 'echo 0', 'endif'], 'E1012: Type mismatch; expected bool but got string', 'E1135: Using a String as a Bool', 1)
 
   # TODO: should fail at compile time
-  call CheckDefExecFailure(["var x = 3 || 7"], 'E1023:', 1)
-  call CheckScriptFailure(["vim9script", "var x = 3 || 7"], 'E1023:', 2)
-  call CheckScriptFailure(["vim9script", "var x = [] || false"], 'E745:', 2)
+  call CheckDefExecAndScriptFailure(["var x = 3 || 7"], 'E1023:', 1)
+
+  call CheckDefAndScriptFailure2(["var x = [] || false"], 'E1012: Type mismatch; expected bool but got list<unknown>', 'E745:', 1)
+
 enddef
 
 " test &&
@@ -413,33 +405,29 @@
 def Test_expr3_vimscript()
   # check line continuation
   var lines =<< trim END
-      vim9script
       var name = 0
       		&& 1
       assert_equal(false, name)
   END
-  CheckScriptSuccess(lines)
+  CheckDefAndScriptSuccess(lines)
 
   lines =<< trim END
-      vim9script
       var name = v:true
       		&& v:true
       		&& v:true
       assert_equal(v:true, name)
   END
-  CheckScriptSuccess(lines)
+  CheckDefAndScriptSuccess(lines)
 
   lines =<< trim END
-      vim9script
       var name = v:true &&
       		v:true &&
       		v:true
       assert_equal(v:true, name)
   END
-  CheckScriptSuccess(lines)
+  CheckDefAndScriptSuccess(lines)
 
   lines =<< trim END
-      vim9script
       var name = v:true &&  # comment
                 # comment
       		v:true &&
@@ -447,49 +435,49 @@
       		v:true
       assert_equal(v:true, name)
   END
-  CheckScriptSuccess(lines)
+  CheckDefAndScriptSuccess(lines)
 
   # check white space
   lines =<< trim END
-      vim9script
       var name = v:true&&v:true
   END
-  CheckScriptFailure(lines, 'E1004:', 2)
+  CheckDefAndScriptFailure(lines, 'E1004:', 1)
+
   lines =<< trim END
-      vim9script
       var name = v:true &&v:true
   END
-  CheckScriptFailure(lines, 'E1004: White space required before and after ''&&'' at "&&v:true"', 2)
+  CheckDefAndScriptFailure(lines, 'E1004: White space required before and after ''&&'' at "&&v:true"', 1)
+
   lines =<< trim END
-      vim9script
       var name = v:true&& v:true
   END
-  CheckScriptFailure(lines, 'E1004:', 2)
+  CheckDefAndScriptFailure(lines, 'E1004:', 1)
 enddef
 
 def Test_expr3_fails()
   var msg = "White space required before and after '&&'"
-  CheckDefFailure(["var x = 1&&2"], msg, 1)
-  CheckDefFailure(["var x = 1 &&2"], msg, 1)
-  CheckDefFailure(["var x = 1&& 2"], msg, 1)
+  CheckDefAndScriptFailure(["var x = 1&&2"], msg, 1)
+  CheckDefAndScriptFailure(["var x = 1 &&2"], msg, 1)
+  CheckDefAndScriptFailure(["var x = 1&& 2"], msg, 1)
 
-  CheckDefFailure(["if 'yes' && 0", 'echo 0', 'endif'], 'E1012: Type mismatch; expected bool but got string', 1)
+  g:vals = []
+  CheckDefAndScriptFailure2(["if 'yes' && 0", 'echo 0', 'endif'], 'E1012: Type mismatch; expected bool but got string', 'E1135: Using a String as a Bool', 1)
 
-  CheckDefExecFailure(['assert_equal(false, Record(1) && Record(4) && Record(0))'], 'E1023: Using a Number as a Bool: 4', 1)
+  CheckDefExecAndScriptFailure(['assert_equal(false, Record(1) && Record(4) && Record(0))'], 'E1023: Using a Number as a Bool: 4', 1)
 
   var lines =<< trim END
       if 3
           && true
       endif
   END
-  CheckDefExecFailure(lines, 'E1023:', 1)
+  CheckDefExecAndScriptFailure(lines, 'E1023:', 1)
 
   lines =<< trim END
       if 'yes'
           && true
       endif
   END
-  CheckDefFailure(lines, 'E1012:', 1)
+  CheckDefAndScriptFailure2(lines, 'E1012:', 'E1135: Using a String as a Bool', 1)
 enddef
 
 " global variables to use for tests with the "any" type
@@ -607,18 +595,19 @@
   END
   CheckDefAndScriptSuccess(lines)
 
-  CheckDefFailure(["var x = 'a' == xxx"], 'E1001:', 1)
+  CheckDefAndScriptFailure2(["var x = 'a' == xxx"], 'E1001:', 'E121:', 1)
   CheckDefFailure(["var x = 'a' == "], 'E1097:', 3)
+  CheckScriptFailure(['vim9script', "var x = 'a' == "], 'E15:', 2)
 
-  CheckDefExecFailure(['var items: any', 'eval 1', 'eval 2', 'if items == []', 'endif'], 'E691:', 4)
+  CheckDefExecAndScriptFailure2(['var items: any', 'eval 1', 'eval 2', 'if items == []', 'endif'], 'E691:', 'E1072:', 4)
 
-  CheckDefExecFailure(['var x: any = "a"', 'echo x == true'], 'E1072: Cannot compare string with bool', 2)
-  CheckDefExecFailure(["var x: any = true", 'echo x == ""'], 'E1072: Cannot compare bool with string', 2)
-  CheckDefExecFailure(["var x: any = 99", 'echo x == true'], 'E1138', 2)
-  CheckDefExecFailure(["var x: any = 'a'", 'echo x == 99'], 'E1030:', 2)
+  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)
+  CheckDefExecAndScriptFailure2(["var x: any = 99", 'echo x == true'], 'E1138', 'E1072:', 2)
+  CheckDefExecAndScriptFailure2(["var x: any = 'a'", 'echo x == 99'], 'E1030:', 'E1072:', 2)
 
   for op in ['>', '>=', '<', '<=', '=~', '!~']
-    CheckDefExecFailure([
+    CheckDefExecAndScriptFailure([
         "var a: any = 'a'",
         'var b: any = true',
         'echo a ' .. op .. ' b'], 'E1072:', 3)
@@ -877,190 +866,178 @@
 def Test_expr4_vim9script()
   # check line continuation
   var lines =<< trim END
-      vim9script
       var name = 0
       		< 1
       assert_equal(true, name)
   END
-  CheckScriptSuccess(lines)
+  CheckDefAndScriptSuccess(lines)
 
   lines =<< trim END
-      vim9script
       var name = 123
                 # comment
       		!= 123
       assert_equal(false, name)
   END
-  CheckScriptSuccess(lines)
+  CheckDefAndScriptSuccess(lines)
 
   lines =<< trim END
-      vim9script
       var name = 123 ==
       			123
       assert_equal(true, name)
   END
-  CheckScriptSuccess(lines)
+  CheckDefAndScriptSuccess(lines)
 
   lines =<< trim END
-      vim9script
       var list = [1, 2, 3]
       var name = list
       		is list
       assert_equal(true, name)
   END
-  CheckScriptSuccess(lines)
+  CheckDefAndScriptSuccess(lines)
 
   lines =<< trim END
-      vim9script
       var list = [1, 2, 3]
       var name = list # comment
                  # comment
       		is list
       assert_equal(true, name)
   END
-  CheckScriptSuccess(lines)
+  CheckDefAndScriptSuccess(lines)
 
   lines =<< trim END
-      vim9script
       var myblob = 0z1234
       var name = myblob
       		isnot 0z11
       assert_equal(true, name)
   END
-  CheckScriptSuccess(lines)
+  CheckDefAndScriptSuccess(lines)
 
   # spot check mismatching types
   lines =<< trim END
-      vim9script
       echo '' == 0
   END
-  CheckScriptFailure(lines, 'E1072:', 2)
+  CheckDefAndScriptFailure(lines, 'E1072:', 1)
 
   lines =<< trim END
-      vim9script
       echo v:true > v:false
   END
-  CheckScriptFailure(lines, 'Cannot compare bool with bool', 2)
+  CheckDefAndScriptFailure(lines, 'Cannot compare bool with bool', 1)
 
   lines =<< trim END
-      vim9script
       echo 123 is 123
   END
-  CheckScriptFailure(lines, 'Cannot use "is" with number', 2)
+  CheckDefAndScriptFailure(lines, 'Cannot use "is" with number', 1)
 
   # check missing white space
   lines =<< trim END
-    vim9script
     echo 2>3
   END
-  CheckScriptFailure(lines, 'E1004: White space required before and after ''>'' at ">3"', 2)
+  CheckDefAndScriptFailure(lines, 'E1004: White space required before and after ''>'' at ">3"', 1)
+
   lines =<< trim END
-    vim9script
     echo 2 >3
   END
-  CheckScriptFailure(lines, 'E1004:', 2)
+  CheckDefAndScriptFailure(lines, 'E1004:', 1)
+
   lines =<< trim END
-    vim9script
     echo 2> 3
   END
-  CheckScriptFailure(lines, 'E1004:', 2)
+  CheckDefAndScriptFailure(lines, 'E1004:', 1)
+
   lines =<< trim END
-    vim9script
     echo 2!=3
   END
-  CheckScriptFailure(lines, 'E1004:', 2)
+  CheckDefAndScriptFailure(lines, 'E1004:', 1)
+
   lines =<< trim END
-    vim9script
     echo 2 !=3
   END
-  CheckScriptFailure(lines, 'E1004: White space required before and after ''!'' at "!=3"', 2)
+  CheckDefAndScriptFailure(lines, 'E1004: White space required before and after ''!='' at "!=3"', 1)
+
   lines =<< trim END
-    vim9script
     echo 2!= 3
   END
-  CheckScriptFailure(lines, 'E1004:', 2)
+  CheckDefAndScriptFailure(lines, 'E1004:', 1)
 
   lines =<< trim END
-    vim9script
     echo len('xxx') == 3
   END
-  CheckScriptSuccess(lines)
+  CheckDefAndScriptSuccess(lines)
 
   lines =<< trim END
-    vim9script
     var line = 'abc'
     echo line[1] =~ '\w'
   END
-  CheckScriptSuccess(lines)
+  CheckDefAndScriptSuccess(lines)
 enddef
 
 func Test_expr4_fails()
   let msg = "White space required before and after '>'"
-  call CheckDefFailure(["var x = 1>2"], msg, 1)
-  call CheckDefFailure(["var x = 1 >2"], msg, 1)
-  call CheckDefFailure(["var x = 1> 2"], msg, 1)
+  call CheckDefAndScriptFailure(["var x = 1>2"], msg, 1)
+  call CheckDefAndScriptFailure(["var x = 1 >2"], msg, 1)
+  call CheckDefAndScriptFailure(["var x = 1> 2"], msg, 1)
 
   let msg = "White space required before and after '=='"
-  call CheckDefFailure(["var x = 1==2"], msg, 1)
-  call CheckDefFailure(["var x = 1 ==2"], msg, 1)
-  call CheckDefFailure(["var x = 1== 2"], msg, 1)
+  call CheckDefAndScriptFailure(["var x = 1==2"], msg, 1)
+  call CheckDefAndScriptFailure(["var x = 1 ==2"], msg, 1)
+  call CheckDefAndScriptFailure(["var x = 1== 2"], msg, 1)
 
   let msg = "White space required before and after 'is'"
-  call CheckDefFailure(["var x = '1'is'2'"], msg, 1)
-  call CheckDefFailure(["var x = '1' is'2'"], msg, 1)
-  call CheckDefFailure(["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 CheckDefAndScriptFailure(["var x = '1'is '2'"], msg, 1)
 
   let msg = "White space required before and after 'isnot'"
-  call CheckDefFailure(["var x = '1'isnot'2'"], msg, 1)
-  call CheckDefFailure(["var x = '1' isnot'2'"], msg, 1)
-  call CheckDefFailure(["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 CheckDefAndScriptFailure(["var x = '1'isnot '2'"], msg, 1)
 
-  call CheckDefFailure(["var x = 1 is# 2"], 'E15:', 1)
-  call CheckDefFailure(["var x = 1 is? 2"], 'E15:', 1)
-  call CheckDefFailure(["var x = 1 isnot# 2"], 'E15:', 1)
-  call CheckDefFailure(["var x = 1 isnot? 2"], 'E15:', 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 CheckDefFailure(["var x = 1 == '2'"], 'Cannot compare number with string', 1)
-  call CheckDefFailure(["var x = '1' == 2"], 'Cannot compare string with number', 1)
-  call CheckDefFailure(["var x = 1 == RetVoid()"], 'Cannot compare number with void', 1)
-  call CheckDefFailure(["var x = RetVoid() == 1"], 'Cannot compare void with number', 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 CheckDefFailure(["var x = true > false"], 'Cannot compare bool with bool', 1)
-  call CheckDefFailure(["var x = true >= false"], 'Cannot compare bool with bool', 1)
-  call CheckDefFailure(["var x = true < false"], 'Cannot compare bool with bool', 1)
-  call CheckDefFailure(["var x = true <= false"], 'Cannot compare bool with bool', 1)
-  call CheckDefFailure(["var x = true =~ false"], 'Cannot compare bool with bool', 1)
-  call CheckDefFailure(["var x = true !~ false"], 'Cannot compare bool with bool', 1)
-  call CheckDefFailure(["var x = true is false"], 'Cannot use "is" with bool', 1)
-  call CheckDefFailure(["var x = true isnot false"], 'Cannot use "isnot" 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 !~ 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 CheckDefFailure(["var x = v:none is v:null"], 'Cannot use "is" with special', 1)
-  call CheckDefFailure(["var x = v:none isnot v:null"], 'Cannot use "isnot" with special', 1)
-  call CheckDefFailure(["var x = 123 is 123"], 'Cannot use "is" with number', 1)
-  call CheckDefFailure(["var x = 123 isnot 123"], 'Cannot use "isnot" with number', 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)
   if has('float')
-    call CheckDefFailure(["var x = 1.3 is 1.3"], 'Cannot use "is" with float', 1)
-    call CheckDefFailure(["var x = 1.3 isnot 1.3"], 'Cannot use "isnot" with float', 1)
+    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)
   endif
 
-  call CheckDefFailure(["var x = 0za1 > 0z34"], 'Cannot compare blob with blob', 1)
-  call CheckDefFailure(["var x = 0za1 >= 0z34"], 'Cannot compare blob with blob', 1)
-  call CheckDefFailure(["var x = 0za1 < 0z34"], 'Cannot compare blob with blob', 1)
-  call CheckDefFailure(["var x = 0za1 <= 0z34"], 'Cannot compare blob with blob', 1)
-  call CheckDefFailure(["var x = 0za1 =~ 0z34"], 'Cannot compare blob with blob', 1)
-  call CheckDefFailure(["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 CheckDefAndScriptFailure(["var x = 0za1 !~ 0z34"], 'Cannot compare blob with blob', 1)
 
-  call CheckDefFailure(["var x = [13] > [88]"], 'Cannot compare list with list', 1)
-  call CheckDefFailure(["var x = [13] >= [88]"], 'Cannot compare list with list', 1)
-  call CheckDefFailure(["var x = [13] < [88]"], 'Cannot compare list with list', 1)
-  call CheckDefFailure(["var x = [13] <= [88]"], 'Cannot compare list with list', 1)
-  call CheckDefFailure(["var x = [13] =~ [88]"], 'Cannot compare list with list', 1)
-  call CheckDefFailure(["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 CheckDefAndScriptFailure(["var x = [13] !~ [88]"], 'Cannot compare list with list', 1)
 
-  call CheckDefFailure(['var j: job', 'var chan: channel', 'var r = j == chan'], 'Cannot compare job with channel', 3)
-  call CheckDefFailure(['var j: job', 'var x: list<any>', 'var r = j == x'], 'Cannot compare job with list', 3)
-  call CheckDefFailure(['var j: job', 'var Xx: func', 'var r = j == Xx'], 'Cannot compare job with func', 3)
-  call CheckDefFailure(['var j: job', 'var Xx: func', 'var r = j == Xx'], 'Cannot compare job with func', 3)
+  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)
 endfunc
 
 " test addition, subtraction, concatenation
@@ -1132,145 +1109,129 @@
 def Test_expr5_vim9script()
   # check line continuation
   var lines =<< trim END
-      vim9script
       var name = 11
       		+ 77
 		- 22
       assert_equal(66, name)
   END
-  CheckScriptSuccess(lines)
+  CheckDefAndScriptSuccess(lines)
 
   lines =<< trim END
-      vim9script
       var name = 11 +
 		  77 -
 		  22
       assert_equal(66, name)
   END
-  CheckScriptSuccess(lines)
+  CheckDefAndScriptSuccess(lines)
 
   lines =<< trim END
-      vim9script
       var name = 11 +  # comment
 		  77 -
                   # comment
 		  22
       assert_equal(66, name)
   END
-  CheckScriptSuccess(lines)
+  CheckDefAndScriptSuccess(lines)
 
   lines =<< trim END
-      vim9script
       var name = 'one'
       		.. 'two'
       assert_equal('onetwo', name)
   END
-  CheckScriptSuccess(lines)
+  CheckDefAndScriptSuccess(lines)
 
   lines =<< trim END
-      vim9script
       echo 'abc' is# 'abc'
   END
-  CheckScriptFailure(lines, 'E15:', 2)
+  CheckDefAndScriptFailure(lines, 'E15:', 1)
 
   lines =<< trim END
-      vim9script
       echo {} - 22
   END
-  CheckScriptFailure(lines, 'E728:', 2)
+  CheckDefAndScriptFailure2(lines, 'E1036:', 'E728:', 1)
 
   lines =<< trim END
-      vim9script
       echo [] - 33
   END
-  CheckScriptFailure(lines, 'E745:', 2)
+  CheckDefAndScriptFailure2(lines, 'E1036:', 'E745:', 1)
 
   lines =<< trim END
-      vim9script
       echo 0z1234 - 44
   END
-  CheckScriptFailure(lines, 'E974:', 2)
+  CheckDefAndScriptFailure2(lines, 'E1036', 'E974:', 1)
 
   lines =<< trim END
-      vim9script
       echo 'abc' is? 'abc'
   END
-  CheckScriptFailure(lines, 'E15:', 2)
+  CheckDefAndScriptFailure(lines, 'E15:', 1)
 
   lines =<< trim END
-      vim9script
       echo 'abc' isnot# 'abc'
   END
-  CheckScriptFailure(lines, 'E15:', 2)
+  CheckDefAndScriptFailure(lines, 'E15:', 1)
 
   lines =<< trim END
-      vim9script
       echo 'abc' isnot? 'abc'
   END
-  CheckScriptFailure(lines, 'E15:', 2)
+  CheckDefAndScriptFailure(lines, 'E15:', 1)
 
   # check white space
   lines =<< trim END
-      vim9script
       echo 5+6
   END
-  CheckScriptFailure(lines, 'E1004:', 2)
+  CheckDefAndScriptFailure(lines, 'E1004:', 1)
   lines =<< trim END
-      vim9script
       echo 5 +6
   END
-  CheckScriptFailure(lines, 'E1004:', 2)
-  lines =<< trim END
-      vim9script
-      echo 5+ 6
-  END
-  CheckScriptFailure(lines, 'E1004:', 2)
+  CheckDefAndScriptFailure(lines, 'E1004:', 1)
 
   lines =<< trim END
-      vim9script
+      echo 5+ 6
+  END
+  CheckDefAndScriptFailure(lines, 'E1004:', 1)
+
+  lines =<< trim END
       echo 'a'..'b'
   END
-  CheckScriptFailure(lines, 'E1004: White space required before and after ''..'' at "..''b''"', 2)
+  CheckDefAndScriptFailure(lines, 'E1004: White space required before and after ''..'' at "..''b''"', 1)
+
   lines =<< trim END
-      vim9script
       echo 'a' ..'b'
   END
-  CheckScriptFailure(lines, 'E1004:', 2)
+  CheckDefAndScriptFailure(lines, 'E1004:', 1)
+
   lines =<< trim END
-      vim9script
       echo 'a'.. 'b'
   END
-  CheckScriptFailure(lines, 'E1004:', 2)
+  CheckDefAndScriptFailure(lines, 'E1004:', 1)
 
   # check invalid string concatenation
   lines =<< trim END
-      vim9script
       echo 'a' .. [1]
   END
-  CheckScriptFailure(lines, 'E730:', 2)
-  lines =<< trim END
-      vim9script
-      echo 'a' .. {a: 1}
-  END
-  CheckScriptFailure(lines, 'E731:', 2)
-  lines =<< trim END
-      vim9script
-      echo 'a' .. test_void()
-  END
-  CheckScriptFailure(lines, 'E908:', 2)
-  lines =<< trim END
-      vim9script
-      echo 'a' .. 0z33
-  END
-  CheckScriptFailure(lines, 'E976:', 2)
-  lines =<< trim END
-      vim9script
-      echo 'a' .. function('len')
-  END
-  CheckScriptFailure(lines, 'E729:', 2)
+  CheckDefAndScriptFailure2(lines, 'E1105:', 'E730:', 1)
 
   lines =<< trim END
-      vim9script
+      echo 'a' .. {a: 1}
+  END
+  CheckDefAndScriptFailure2(lines, 'E1105:', 'E731:', 1)
+
+  lines =<< trim END
+      echo 'a' .. test_void()
+  END
+  CheckDefAndScriptFailure2(lines, 'E1105:', 'E908:', 1)
+
+  lines =<< trim END
+      echo 'a' .. 0z33
+  END
+  CheckDefAndScriptFailure2(lines, 'E1105:', 'E976:', 1)
+
+  lines =<< trim END
+      echo 'a' .. function('len')
+  END
+  CheckDefAndScriptFailure2(lines, 'E1105:', 'E729:', 1)
+
+  lines =<< trim END
       new
       ['']->setline(1)
       /pattern
@@ -1278,7 +1239,7 @@
       eval 0
       bwipe!
   END
-  CheckScriptFailure(lines, "E1004: White space required before and after '/' at \"/pattern")
+  CheckDefAndScriptFailure(lines, "E1004: White space required before and after '/' at \"/pattern", 3)
 enddef
 
 def Test_expr5_vim9script_channel()
@@ -1286,15 +1247,13 @@
     MissingFeature 'float'
   else
     var lines =<< trim END
-        vim9script
         echo 'a' .. test_null_job()
     END
-    CheckScriptFailure(lines, 'E908:', 2)
+    CheckDefAndScriptFailure2(lines, 'E1105:', 'E908:', 1)
     lines =<< trim END
-        vim9script
         echo 'a' .. test_null_channel()
     END
-    CheckScriptFailure(lines, 'E908:', 2)
+    CheckDefAndScriptFailure2(lines, 'E1105:', 'E908:', 1)
   endif
 enddef
 
@@ -1328,65 +1287,68 @@
 
 func Test_expr5_fails()
   let msg = "White space required before and after '+'"
-  call CheckDefFailure(["var x = 1+2"], msg, 1)
-  call CheckDefFailure(["var x = 1 +2"], msg, 1)
-  call CheckDefFailure(["var x = 1+ 2"], msg, 1)
+  call CheckDefAndScriptFailure(["var x = 1+2"], msg, 1)
+  call CheckDefAndScriptFailure(["var x = 1 +2"], msg, 1)
+  call CheckDefAndScriptFailure(["var x = 1+ 2"], msg, 1)
 
   let msg = "White space required before and after '-'"
-  call CheckDefFailure(["var x = 1-2"], msg, 1)
-  call CheckDefFailure(["var x = 1 -2"], msg, 1)
-  call CheckDefFailure(["var x = 1- 2"], msg, 1)
+  call CheckDefAndScriptFailure(["var x = 1-2"], msg, 1)
+  call CheckDefAndScriptFailure(["var x = 1 -2"], msg, 1)
+  call CheckDefAndScriptFailure(["var x = 1- 2"], msg, 1)
 
   let msg = "White space required before and after '..'"
-  call CheckDefFailure(["var x = '1'..'2'"], msg, 1)
-  call CheckDefFailure(["var x = '1' ..'2'"], msg, 1)
-  call CheckDefFailure(["var x = '1'.. '2'"], msg, 1)
+  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 CheckDefFailure(["var x = 0z1122 + 33"], 'E1051:', 1)
-  call CheckDefFailure(["var x = 0z1122 + [3]"], 'E1051:', 1)
-  call CheckDefFailure(["var x = 0z1122 + 'asd'"], 'E1051:', 1)
-  call CheckDefFailure(["var x = 33 + 0z1122"], 'E1051:', 1)
-  call CheckDefFailure(["var x = [3] + 0z1122"], 'E1051:', 1)
-  call CheckDefFailure(["var x = 'asdf' + 0z1122"], 'E1051:', 1)
-  call CheckDefFailure(["var x = 6 + xxx"], 'E1001:', 1)
+  call CheckDefAndScriptFailure2(["var x = 0z1122 + 33"], 'E1051:', 'E974:', 1)
+  call CheckDefAndScriptFailure2(["var x = 0z1122 + [3]"], 'E1051:', 'E974:', 1)
+  call CheckDefAndScriptFailure2(["var x = 0z1122 + 'asd'"], 'E1051:', 'E974:', 1)
+  call CheckDefAndScriptFailure2(["var x = 33 + 0z1122"], 'E1051:', 'E974:', 1)
+  call CheckDefAndScriptFailure2(["var x = [3] + 0z1122"], 'E1051:', 'E745:', 1)
+  call CheckDefAndScriptFailure2(["var x = 'asdf' + 0z1122"], 'E1051:', 'E1030:', 1)
+  call CheckDefAndScriptFailure2(["var x = 6 + xxx"], 'E1001:', 'E121:', 1)
 
-  call CheckDefFailure(["var x = 'a' .. [1]"], 'E1105:', 1)
-  call CheckDefFailure(["var x = 'a' .. {a: 1}"], 'E1105:', 1)
-  call CheckDefFailure(["var x = 'a' .. test_void()"], 'E1105:', 1)
-  call CheckDefFailure(["var x = 'a' .. 0z32"], 'E1105:', 1)
-  call CheckDefFailure(["var x = 'a' .. function('len')"], 'E1105:', 1)
-  call CheckDefFailure(["var x = 'a' .. function('len', ['a'])"], 'E1105:', 1)
+  call CheckDefAndScriptFailure2(["var x = 'a' .. [1]"], 'E1105:', 'E730:', 1)
+  call CheckDefAndScriptFailure2(["var x = 'a' .. {a: 1}"], 'E1105:', 'E731:', 1)
+  call CheckDefAndScriptFailure2(["var x = 'a' .. test_void()"], 'E1105:', 'E908:', 1)
+  call CheckDefAndScriptFailure2(["var x = 'a' .. 0z32"], 'E1105:', 'E976:', 1)
+  call CheckDefAndScriptFailure2(["var x = 'a' .. function('len')"], 'E1105:', 'E729:', 1)
+  call CheckDefAndScriptFailure2(["var x = 'a' .. function('len', ['a'])"], 'E1105:', 'E729:', 1)
 
-  call CheckScriptFailure(['vim9script', 'var x = 1 + v:none'], 'E611:', 2)
-  call CheckScriptFailure(['vim9script', 'var x = 1 + v:null'], 'E611:', 2)
-  call CheckScriptFailure(['vim9script', 'var x = 1 + v:true'], 'E1138:', 2)
-  call CheckScriptFailure(['vim9script', 'var x = 1 + v:false'], 'E1138:', 2)
-  call CheckScriptFailure(['vim9script', 'var x = 1 + true'], 'E1138:', 2)
-  call CheckScriptFailure(['vim9script', 'var x = 1 + false'], 'E1138:', 2)
+  call CheckDefAndScriptFailure2(['var x = 1 + v:none'], 'E1051:', 'E611:', 1)
+  call CheckDefAndScriptFailure2(['var x = 1 + v:null'], 'E1051:', 'E611:', 1)
+  call CheckDefAndScriptFailure2(['var x = 1 + v:true'], 'E1051:', 'E1138:', 1)
+  call CheckDefAndScriptFailure2(['var x = 1 + v:false'], 'E1051:', 'E1138:', 1)
+  call CheckDefAndScriptFailure2(['var x = 1 + true'], 'E1051:', 'E1138:', 1)
+  call CheckDefAndScriptFailure2(['var x = 1 + false'], 'E1051:', 'E1138:', 1)
 endfunc
 
 func Test_expr5_fails_channel()
   CheckFeature channel
-  call CheckDefFailure(["var x = 'a' .. test_null_job()"], 'E1105:', 1)
-  call CheckDefFailure(["var x = 'a' .. test_null_channel()"], 'E1105:', 1)
+  call CheckDefAndScriptFailure2(["var x = 'a' .. test_null_job()"], 'E1105:', 'E908:', 1)
+  call CheckDefAndScriptFailure2(["var x = 'a' .. test_null_channel()"], 'E1105:', 'E908:', 1)
 endfunc
 
 def Test_expr5_list_add()
-  # concatenating two lists with same member types is OK
-  var d = {}
-  for i in ['a'] + ['b']
-    d = {[i]: 0}
-  endfor
+  var lines =<< trim END
+      # concatenating two lists with same member types is OK
+      var d = {}
+      for i in ['a'] + ['b']
+        d = {[i]: 0}
+      endfor
 
-  # concatenating two lists with different member types results in "any"
-  var dany = {}
-  for i in ['a'] + [12]
-    dany[i] = i
-  endfor
-  assert_equal({a: 'a', 12: 12}, dany)
+      # concatenating two lists with different member types results in "any"
+      var dany = {}
+      for i in ['a'] + [12]
+        dany[i] = i
+      endfor
+      assert_equal({a: 'a', 12: 12}, dany)
 
-  # result of glob() is "any", runtime type check
-  var sl: list<string> = glob('*.txt', false, true) + ['']
+      # result of glob() is "any", runtime type check
+      var sl: list<string> = glob('*.txt', false, true) + ['']
+  END
+  CheckDefAndScriptSuccess(lines)
 enddef
 
 " test multiply, divide, modulo
@@ -1430,8 +1392,9 @@
   END
   CheckDefAndScriptSuccess(lines)
 
-  CheckDefFailure(["var x = 6 * xxx"], 'E1001:', 1)
+  CheckDefAndScriptFailure2(["var x = 6 * xxx"], 'E1001:', 'E121:', 1)
   CheckDefFailure(["var d = 6 * "], 'E1097:', 3)
+  CheckScriptFailure(['vim9script', "var d = 6 * "], 'E15:', 2)
 
   CheckDefExecAndScriptFailure(['echo 1 / 0'], 'E1154', 1)
   CheckDefExecAndScriptFailure(['echo 1 % 0'], 'E1154', 1)
@@ -1440,24 +1403,21 @@
 def Test_expr6_vim9script()
   # check line continuation
   var lines =<< trim END
-      vim9script
       var name = 11
       		* 22
 		/ 3
       assert_equal(80, name)
   END
-  CheckScriptSuccess(lines)
+  CheckDefAndScriptSuccess(lines)
 
   lines =<< trim END
-      vim9script
       var name = 25
       		% 10
       assert_equal(5, name)
   END
-  CheckScriptSuccess(lines)
+  CheckDefAndScriptSuccess(lines)
 
   lines =<< trim END
-      vim9script
       var name = 25
                 # comment
 
@@ -1465,33 +1425,31 @@
       		% 10
       assert_equal(5, name)
   END
-  CheckScriptSuccess(lines)
+  CheckDefAndScriptSuccess(lines)
 
   lines =<< trim END
-      vim9script
       var name = 11 *
       		22 /
 		3
       assert_equal(80, name)
   END
-  CheckScriptSuccess(lines)
+  CheckDefAndScriptSuccess(lines)
 
   # check white space
   lines =<< trim END
-      vim9script
       echo 5*6
   END
-  CheckScriptFailure(lines, 'E1004:', 2)
+  CheckDefAndScriptFailure(lines, 'E1004:', 1)
+
   lines =<< trim END
-      vim9script
       echo 5 *6
   END
-  CheckScriptFailure(lines, 'E1004:', 2)
+  CheckDefAndScriptFailure(lines, 'E1004:', 1)
+
   lines =<< trim END
-      vim9script
       echo 5* 6
   END
-  CheckScriptFailure(lines, 'E1004:', 2)
+  CheckDefAndScriptFailure(lines, 'E1004:', 1)
 enddef
 
 def Test_expr6_float()
@@ -1529,45 +1487,45 @@
 
 func Test_expr6_fails()
   let msg = "White space required before and after '*'"
-  call CheckDefFailure(["var x = 1*2"], msg, 1)
-  call CheckDefFailure(["var x = 1 *2"], msg, 1)
-  call CheckDefFailure(["var x = 1* 2"], msg, 1)
+  call CheckDefAndScriptFailure(["var x = 1*2"], msg, 1)
+  call CheckDefAndScriptFailure(["var x = 1 *2"], msg, 1)
+  call CheckDefAndScriptFailure(["var x = 1* 2"], msg, 1)
 
   let msg = "White space required before and after '/'"
-  call CheckDefFailure(["var x = 1/2"], msg, 1)
-  call CheckDefFailure(["var x = 1 /2"], msg, 1)
-  call CheckDefFailure(["var x = 1/ 2"], msg, 1)
+  call CheckDefAndScriptFailure(["var x = 1/2"], msg, 1)
+  call CheckDefAndScriptFailure(["var x = 1 /2"], msg, 1)
+  call CheckDefAndScriptFailure(["var x = 1/ 2"], msg, 1)
 
   let msg = "White space required before and after '%'"
-  call CheckDefFailure(["var x = 1%2"], msg, 1)
-  call CheckDefFailure(["var x = 1 %2"], msg, 1)
-  call CheckDefFailure(["var x = 1% 2"], msg, 1)
+  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 CheckDefFailure(["var x = '1' * '2'"], 'E1036:', 1)
-  call CheckDefFailure(["var x = '1' / '2'"], 'E1036:', 1)
-  call CheckDefFailure(["var x = '1' % '2'"], 'E1035:', 1)
+  call CheckDefAndScriptFailure2(["var x = '1' * '2'"], 'E1036:', 'E1030:', 1)
+  call CheckDefAndScriptFailure2(["var x = '1' / '2'"], 'E1036:', 'E1030:', 1)
+  call CheckDefAndScriptFailure2(["var x = '1' % '2'"], 'E1035:', 'E1030:', 1)
 
-  call CheckDefFailure(["var x = 0z01 * 0z12"], 'E1036:', 1)
-  call CheckDefFailure(["var x = 0z01 / 0z12"], 'E1036:', 1)
-  call CheckDefFailure(["var x = 0z01 % 0z12"], 'E1035:', 1)
+  call CheckDefAndScriptFailure2(["var x = 0z01 * 0z12"], 'E1036:', 'E974:', 1)
+  call CheckDefAndScriptFailure2(["var x = 0z01 / 0z12"], 'E1036:', 'E974:', 1)
+  call CheckDefAndScriptFailure2(["var x = 0z01 % 0z12"], 'E1035:', 'E974:', 1)
 
-  call CheckDefFailure(["var x = [1] * [2]"], 'E1036:', 1)
-  call CheckDefFailure(["var x = [1] / [2]"], 'E1036:', 1)
-  call CheckDefFailure(["var x = [1] % [2]"], 'E1035:', 1)
+  call CheckDefAndScriptFailure2(["var x = [1] * [2]"], 'E1036:', 'E745:', 1)
+  call CheckDefAndScriptFailure2(["var x = [1] / [2]"], 'E1036:', 'E745:', 1)
+  call CheckDefAndScriptFailure2(["var x = [1] % [2]"], 'E1035:', 'E745:', 1)
 
-  call CheckDefFailure(["var x = {one: 1} * {two: 2}"], 'E1036:', 1)
-  call CheckDefFailure(["var x = {one: 1} / {two: 2}"], 'E1036:', 1)
-  call CheckDefFailure(["var x = {one: 1} % {two: 2}"], 'E1035:', 1)
+  call CheckDefAndScriptFailure2(["var x = {one: 1} * {two: 2}"], 'E1036:', 'E728:', 1)
+  call CheckDefAndScriptFailure2(["var x = {one: 1} / {two: 2}"], 'E1036:', 'E728:', 1)
+  call CheckDefAndScriptFailure2(["var x = {one: 1} % {two: 2}"], 'E1035:', 'E728:', 1)
 
-  call CheckDefFailure(["var x = 0xff[1]"], 'E1107:', 1)
+  call CheckDefAndScriptFailure2(["var x = 0xff[1]"], 'E1107:', 'E1062:', 1)
   if has('float')
-    call CheckDefFailure(["var x = 0.7[1]"], 'E1107:', 1)
+    call CheckDefAndScriptFailure2(["var x = 0.7[1]"], 'E1107:', 'E806:', 1)
   endif
 endfunc
 
 func Test_expr6_float_fails()
   CheckFeature float
-  call CheckDefFailure(["var x = 1.0 % 2"], 'E1035:', 1)
+  call CheckDefAndScriptFailure2(["var x = 1.0 % 2"], 'E1035:', 'E804:', 1)
 endfunc
 
 " define here to use old style parsing
@@ -1605,10 +1563,11 @@
   var nr = <number>234
   assert_equal(234, nr)
 
-  CheckDefFailure(["var x = <nr>123"], 'E1010:', 1)
+  CheckDefAndScriptFailure2(["var x = <nr>123"], 'E1010:', 'E15:', 1)
   CheckDefFailure(["var x = <number>"], 'E1097:', 3)
-  CheckDefFailure(["var x = <number >123"], 'E1068:', 1)
-  CheckDefFailure(["var x = <number 123"], 'E1104:', 1)
+  CheckScriptFailure(['vim9script', "var x = <number>"], 'E15:', 2)
+  CheckDefAndScriptFailure2(["var x = <number >123"], 'E1068:', 'E15:', 1)
+  CheckDefAndScriptFailure2(["var x = <number 123"], 'E1104:', 'E15:', 1)
 enddef
 
 " test low level expression
@@ -1649,7 +1608,7 @@
   END
   CheckDefAndScriptSuccess(lines)
 
-  CheckDefFailure(["var x = 0z123"], 'E973:', 1)
+  CheckDefAndScriptFailure(["var x = 0z123"], 'E973:', 1)
 enddef
 
 def Test_expr7_string()
@@ -1665,8 +1624,8 @@
   END
   CheckDefAndScriptSuccess(lines)
 
-  CheckDefFailure(['var x = "abc'], 'E114:', 1)
-  CheckDefFailure(["var x = 'abc"], 'E115:', 1)
+  CheckDefAndScriptFailure(['var x = "abc'], 'E114:', 1)
+  CheckDefAndScriptFailure(["var x = 'abc"], 'E115:', 1)
 enddef
 
 def Test_expr7_vimvar()
@@ -1674,9 +1633,10 @@
   var compl: dict<any> = v:completed_item
 
   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)
   new
   exec "normal! afoo fo\<C-N>\<Esc>"
-  CheckDefExecFailure(["var old: dict<number> = v:completed_item"], 'E1012: Type mismatch; expected dict<number> but got dict<string>', 1)
+  CheckDefExecAndScriptFailure(["var old: dict<number> = v:completed_item"], 'E1012: Type mismatch; expected dict<number> but got dict<string>', 1)
   bwipe!
 enddef
 
@@ -1710,11 +1670,11 @@
   END
   CheckDefAndScriptSuccess(lines)
 
-  CheckDefFailure(['v:true = true'], 'E46:', 1)
-  CheckDefFailure(['v:true = false'], 'E46:', 1)
-  CheckDefFailure(['v:false = true'], 'E46:', 1)
-  CheckDefFailure(['v:null = 11'], 'E46:', 1)
-  CheckDefFailure(['v:none = 22'], 'E46:', 1)
+  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)
 enddef
 
 def Test_expr7_list()
@@ -1747,36 +1707,37 @@
 
   var rangelist: list<number> = range(3)
   g:rangelist = range(3)
-  CheckDefExecFailure(["var x: list<string> = g:rangelist"], 'E1012: Type mismatch; expected list<string> but got list<number>', 1)
+  CheckDefExecAndScriptFailure(["var x: list<string> = g:rangelist"], 'E1012: Type mismatch; expected list<string> but got list<number>', 1)
 
-  CheckDefFailure(["var x = 1234[3]"], 'E1107:', 1)
-  CheckDefExecFailure(["var x = g:anint[3]"], 'E1062:', 1)
+  CheckDefAndScriptFailure2(["var x = 1234[3]"], 'E1107:', 'E1062:', 1)
+  CheckDefExecAndScriptFailure(["var x = g:anint[3]"], 'E1062:', 1)
 
-  CheckDefFailure(["var x = g:list_mixed[xxx]"], 'E1001:', 1)
+  CheckDefAndScriptFailure2(["var x = g:list_mixed[xxx]"], 'E1001:', 'E121:', 1)
 
-  CheckDefFailure(["var x = [1,2,3]"], 'E1069:', 1)
-  CheckDefFailure(["var x = [1 ,2, 3]"], 'E1068:', 1)
+  CheckDefAndScriptFailure(["var x = [1,2,3]"], 'E1069:', 1)
+  CheckDefAndScriptFailure(["var x = [1 ,2, 3]"], 'E1068:', 1)
 
-  CheckDefExecFailure(["echo 1", "var x = [][0]", "echo 3"], 'E684:', 2)
+  CheckDefExecAndScriptFailure(["echo 1", "var x = [][0]", "echo 3"], 'E684:', 2)
 
-  CheckDefExecFailure(["var x = g:list_mixed['xx']"], 'E1012:', 1)
+  CheckDefExecAndScriptFailure2(["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)
-  CheckDefExecFailure(["var x = g:list_empty[3]"], 'E684:', 1)
-  CheckDefExecFailure(["var l: list<number> = [234, 'x']"], 'E1012:', 1)
-  CheckDefExecFailure(["var l: list<number> = ['x', 234]"], 'E1012:', 1)
-  CheckDefExecFailure(["var l: list<string> = [234, 'x']"], 'E1012:', 1)
-  CheckDefExecFailure(["var l: list<string> = ['x', 123]"], 'E1012:', 1)
+  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)
 
   lines =<< trim END
-      vim9script
       var datalist: list<string>
       def Main()
         datalist += ['x'.
       enddef
       Main()
   END
-  CheckScriptFailure(lines, 'E1127:')
+  CheckDefAndScriptFailure(lines, 'E1127:')
 
   lines =<< trim END
       var numbers = [1, 2, 3, 4]
@@ -1791,7 +1752,6 @@
 
 def Test_expr7_list_vim9script()
   var lines =<< trim END
-      vim9script
       var l = [
 		11,
 		22,
@@ -1808,60 +1768,55 @@
             # comment
 		    4]
   END
-  CheckScriptSuccess(lines)
+  CheckDefAndScriptSuccess(lines)
 
   lines =<< trim END
-      vim9script
       var l = [11,
 		22]
       assert_equal([11, 22], l)
   END
-  CheckScriptSuccess(lines)
+  CheckDefAndScriptSuccess(lines)
 
   lines =<< trim END
-      vim9script
       var l = [11,22]
   END
-  CheckScriptFailure(lines, 'E1069:', 2)
+  CheckDefAndScriptFailure(lines, 'E1069:', 1)
 
   lines =<< trim END
-      vim9script
       var l = [11 , 22]
   END
-  CheckScriptFailure(lines, 'E1068:', 2)
+  CheckDefAndScriptFailure(lines, 'E1068:', 1)
 
   lines =<< trim END
-    vim9script
     var l: list<number> = [234, 'x']
   END
-  CheckScriptFailure(lines, 'E1012:', 2)
-  lines =<< trim END
-    vim9script
-    var l: list<number> = ['x', 234]
-  END
-  CheckScriptFailure(lines, 'E1012:', 2)
-  lines =<< trim END
-    vim9script
-    var l: list<string> = ['x', 234]
-  END
-  CheckScriptFailure(lines, 'E1012:', 2)
-  lines =<< trim END
-    vim9script
-    var l: list<string> = [234, 'x']
-  END
-  CheckScriptFailure(lines, 'E1012:', 2)
+  CheckDefAndScriptFailure(lines, 'E1012:', 1)
 
   lines =<< trim END
-      vim9script
+    var l: list<number> = ['x', 234]
+  END
+  CheckDefAndScriptFailure(lines, 'E1012:', 1)
+
+  lines =<< trim END
+    var l: list<string> = ['x', 234]
+  END
+  CheckDefAndScriptFailure(lines, 'E1012:', 1)
+
+  lines =<< trim END
+    var l: list<string> = [234, 'x']
+  END
+  CheckDefAndScriptFailure(lines, 'E1012:', 1)
+
+  lines =<< trim END
       def Failing()
         job_stop()
       enddef
       var list = [Failing]
   END
   if has('channel')
-    CheckScriptFailure(lines, 'E119:', 1)
+    CheckDefAndScriptFailure(lines, 'E119:', 0)
   else
-    CheckScriptFailure(lines, 'E117:', 1)
+    CheckDefAndScriptFailure(lines, 'E117:', 0)
   endif
 enddef
 
@@ -1930,34 +1885,33 @@
   END
   CheckDefAndScriptSuccess(lines)
 
-  CheckDefFailure(["var Ref = (a)=>a + 1"], 'E1004:')
-  CheckDefFailure(["var Ref = (a)=> a + 1"], 'E1004: White space required before and after ''=>'' at "=> a + 1"')
-  CheckDefFailure(["var Ref = (a) =>a + 1"], 'E1004:')
+  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:')
 
-  CheckDefFailure(["filter([1, 2], (k,v) => 1)"], 'E1069:', 1)
+  CheckDefAndScriptFailure(["filter([1, 2], (k,v) => 1)"], 'E1069:', 1)
   # error is in first line of the lambda
-  CheckDefFailure(["var L = (a) => a + b"], 'E1001:', 0)
+  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:')
-  CheckDefFailure(["echo 'asdf'->((a) => a)(x)"], 'E1001:', 1)
+  CheckDefAndScriptFailure2(["echo 'asdf'->((a) => a)(x)"], 'E1001:', 'E121:', 1)
 
-  CheckDefSuccess(['var Fx = (a) => ({k1: 0,', ' k2: 1})'])
-  CheckDefFailure(['var Fx = (a) => ({k1: 0', ' k2: 1})'], 'E722:', 2)
-  CheckDefFailure(['var Fx = (a) => ({k1: 0,', ' k2 1})'], 'E720:', 2)
+  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)
 
-  CheckDefSuccess(['var Fx = (a) => [0,', ' 1]'])
-  CheckDefFailure(['var Fx = (a) => [0', ' 1]'], 'E696:', 2)
+  CheckDefAndScriptSuccess(['var Fx = (a) => [0,', ' 1]'])
+  CheckDefAndScriptFailure(['var Fx = (a) => [0', ' 1]'], 'E696:', 2)
 
   # no error for existing script variable when checking for lambda
   lines =<< trim END
-    vim9script
     var name = 0
     eval (name + 2) / 3
   END
-  CheckScriptSuccess(lines)
+  CheckDefAndScriptSuccess(lines)
 enddef
 
 def Test_expr7_lambda_block()
@@ -2009,12 +1963,12 @@
   CheckDefAndScriptFailure(lines, 'E1171', 1)  # line nr is function start
 
   lines =<< trim END
-      vim9script
       var Func = (nr: number): int => {
           var ll =<< ENDIT
              nothing
   END
-  CheckScriptFailure(lines, 'E1145: Missing heredoc end marker: ENDIT', 2)
+  CheckDefFailure(lines, 'E1145: Missing heredoc end marker: ENDIT', 0)
+  CheckScriptFailure(['vim9script'] + lines, 'E1145: Missing heredoc end marker: ENDIT', 2)
 enddef
 
 def NewLambdaWithComments(): func
@@ -2099,29 +2053,29 @@
   CheckDefAndScriptFailure(["var Ref = (a) =>a + 1"],
       'E1004: White space required before and after ''=>'' at " =>a + 1"')
 
-  CheckDefFailure(["var Ref: func(number): number = (a: number): string => 'x'"], 'E1012:')
-  CheckDefFailure(["var Ref: func(number): string = (a: number): string => 99"], 'E1012:')
+  CheckDefAndScriptFailure(["var Ref: func(number): number = (a: number): string => 'x'"], 'E1012:')
+  CheckDefAndScriptFailure(["var Ref: func(number): string = (a: number): string => 99"], 'E1012:')
 
-  CheckDefFailure(["filter([1, 2], (k,v) => 1)"], 'E1069:', 1)
+  CheckDefAndScriptFailure(["filter([1, 2], (k,v) => 1)"], 'E1069:', 1)
   # error is in first line of the lambda
-  CheckDefFailure(["var L = (a) -> a + b"], 'E1001:', 1)
+  CheckDefAndScriptFailure2(["var L = (a) -> a + b"], 'E1001:', 'E121:', 1)
 
-# TODO: ->(lambda)() doesn't work yet
-#  assert_equal('xxxyyy', 'xxx'->((a, b) => a .. b)('yyy'))
+  assert_equal('xxxyyy', 'xxx'->((a, b) => a .. b)('yyy'))
 
-#  CheckDefExecFailure(["var s = 'asdf'->{a -> a}('x')"],
-#        'E1106: One argument too many')
-#  CheckDefExecFailure(["var s = 'asdf'->{a -> a}('x', 'y')"],
-#        'E1106: 2 arguments too many')
-#  CheckDefFailure(["echo 'asdf'->{a -> a}(x)"], 'E1001:', 1)
+  CheckDefExecFailure(["var s = 'asdf'->((a) => a)('x')"],
+        'E118: Too many arguments for function:')
+  CheckDefExecFailure(["var s = 'asdf'->((a) => a)('x', 'y')"],
+        'E118: Too many arguments for function:')
+  CheckDefFailure(["echo 'asdf'->((a) => a)(x)"], 'E1001:', 1)
 
-  CheckDefFailure(['var Fx = (a) => ({k1: 0', ' k2: 1})'], 'E722:', 2)
-  CheckDefFailure(['var Fx = (a) => ({k1: 0,', ' k2 1})'], 'E720:', 2)
+  CheckDefAndScriptFailure(['var Fx = (a) => ({k1: 0', ' k2: 1})'], 'E722:', 2)
+  CheckDefAndScriptFailure(['var Fx = (a) => ({k1: 0,', ' k2 1})'], 'E720:', 2)
 
-  CheckDefFailure(['var Fx = (a) => [0', ' 1]'], 'E696:', 2)
+  CheckDefAndScriptFailure(['var Fx = (a) => [0', ' 1]'], 'E696:', 2)
 enddef
 
 def Test_expr7_lambda_vim9script()
+  # TODO: make this work in a :def function
   var lines =<< trim END
       vim9script
       var v = 10->((a) =>
@@ -2134,15 +2088,14 @@
 
   # nested lambda with line breaks
   lines =<< trim END
-      vim9script
       search('"', 'cW', 0, 0, () =>
 	synstack('.', col('.'))
           ->map((_, v) => synIDattr(v, 'name'))->len())
   END
-  CheckScriptSuccess(lines)
+  CheckDefAndScriptSuccess(lines)
 enddef
 
-def Test_epxr7_funcref()
+def Test_expr7_funcref()
   var lines =<< trim END
       def RetNumber(): number
         return 123
@@ -2239,35 +2192,36 @@
   CheckDefAndScriptFailure(["var x = 'a' .. #{a: 1}"], 'E1170:', 1)
   CheckDefAndScriptFailure(["var x = true ? #{a: 1}"], 'E1170:', 1)
 
-  CheckDefFailure(["var x = {a:8}"], 'E1069:', 1)
-  CheckDefFailure(["var x = {a : 8}"], 'E1068:', 1)
-  CheckDefFailure(["var x = {a :8}"], 'E1068:', 1)
-  CheckDefFailure(["var x = {a: 8 , b: 9}"], 'E1068:', 1)
-  CheckDefFailure(["var x = {a: 1,b: 2}"], 'E1069:', 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)
 
-  CheckDefFailure(["var x = {xxx}"], 'E720:', 1)
-  CheckDefFailure(["var x = {xxx: 1", "var y = 2"], 'E722:', 2)
+  CheckDefAndScriptFailure(["var x = {xxx}"], 'E720:', 1)
+  CheckDefAndScriptFailure(["var x = {xxx: 1", "var y = 2"], 'E722:', 2)
   CheckDefFailure(["var x = {xxx: 1,"], 'E723:', 2)
-  CheckDefFailure(["var x = {['a']: xxx}"], 'E1001:', 1)
-  CheckDefFailure(["var x = {a: 1, a: 2}"], 'E721:', 1)
-  CheckDefExecFailure(["var x = g:anint.member"], 'E715:', 1)
-  CheckDefExecFailure(["var x = g:dict_empty.member"], 'E716:', 1)
+  CheckScriptFailure(['vim9script', "var x = {xxx: 1,"], 'E723:', 2)
+  CheckDefAndScriptFailure2(["var x = {['a']: xxx}"], 'E1001:', 'E121:', 1)
+  CheckDefAndScriptFailure(["var x = {a: 1, a: 2}"], 'E721:', 1)
+  CheckDefExecAndScriptFailure2(["var x = g:anint.member"], 'E715:', 'E15:', 1)
+  CheckDefExecAndScriptFailure(["var x = g:dict_empty.member"], 'E716:', 1)
 
-  CheckDefExecFailure(['var x: dict<number> = {a: 234, b: "1"}'], 'E1012:', 1)
-  CheckDefExecFailure(['var x: dict<number> = {a: "x", b: 134}'], 'E1012:', 1)
-  CheckDefExecFailure(['var x: dict<string> = {a: 234, b: "1"}'], 'E1012:', 1)
-  CheckDefExecFailure(['var x: dict<string> = {a: "x", b: 134}'], 'E1012:', 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)
 
   # invalid types for the key
-  CheckDefFailure(["var x = {[[1, 2]]: 0}"], 'E1105:', 1)
+  CheckDefAndScriptFailure2(["var x = {[[1, 2]]: 0}"], 'E1105:', 'E730:', 1)
 
   CheckDefFailure(['var x = ({'], 'E723:', 2)
-  CheckDefExecFailure(['{}[getftype("file")]'], 'E716: Key not present in Dictionary: ""', 1)
+  CheckScriptFailure(['vim9script', 'var x = ({'], 'E723:', 2)
+  CheckDefExecAndScriptFailure(['{}[getftype("file")]'], 'E716: Key not present in Dictionary: ""', 1)
 enddef
 
 def Test_expr7_dict_vim9script()
   var lines =<< trim END
-      vim9script
       var d = {
 		['one']:
 		   1,
@@ -2289,140 +2243,134 @@
       var dd = {k: 123->len()}
       assert_equal(3, dd.k)
   END
-  CheckScriptSuccess(lines)
+  CheckDefAndScriptSuccess(lines)
 
   lines =<< trim END
-      vim9script
       var d = { ["one"]: "one", ["two"]: "two", }
       assert_equal({one: 'one', two: 'two'}, d)
   END
-  CheckScriptSuccess(lines)
+  CheckDefAndScriptSuccess(lines)
 
   lines =<< trim END
-      vim9script
       var d = {one: 1,
 		two: 2,
 	       }
       assert_equal({one: 1, two: 2}, d)
   END
-  CheckScriptSuccess(lines)
+  CheckDefAndScriptSuccess(lines)
 
   lines =<< trim END
-      vim9script
       var d = {one:1, two: 2}
   END
-  CheckScriptFailure(lines, 'E1069:', 2)
+  CheckDefAndScriptFailure(lines, 'E1069:', 1)
 
   lines =<< trim END
-      vim9script
       var d = {one: 1,two: 2}
   END
-  CheckScriptFailure(lines, 'E1069:', 2)
+  CheckDefAndScriptFailure(lines, 'E1069:', 1)
 
   lines =<< trim END
-      vim9script
       var d = {one : 1}
   END
-  CheckScriptFailure(lines, 'E1068:', 2)
+  CheckDefAndScriptFailure(lines, 'E1068:', 1)
 
   lines =<< trim END
-      vim9script
       var d = {one:1}
   END
-  CheckScriptFailure(lines, 'E1069:', 2)
+  CheckDefAndScriptFailure(lines, 'E1069:', 1)
 
   lines =<< trim END
-      vim9script
       var d = {one: 1 , two: 2}
   END
-  CheckScriptFailure(lines, 'E1068:', 2)
+  CheckDefAndScriptFailure(lines, 'E1068:', 1)
 
   lines =<< trim END
-    vim9script
     var l: dict<number> = {a: 234, b: 'x'}
   END
-  CheckScriptFailure(lines, 'E1012:', 2)
-  lines =<< trim END
-    vim9script
-    var l: dict<number> = {a: 'x', b: 234}
-  END
-  CheckScriptFailure(lines, 'E1012:', 2)
-  lines =<< trim END
-    vim9script
-    var l: dict<string> = {a: 'x', b: 234}
-  END
-  CheckScriptFailure(lines, 'E1012:', 2)
-  lines =<< trim END
-    vim9script
-    var l: dict<string> = {a: 234, b: 'x'}
-  END
-  CheckScriptFailure(lines, 'E1012:', 2)
+  CheckDefAndScriptFailure(lines, 'E1012:', 1)
 
   lines =<< trim END
-    vim9script
+    var l: dict<number> = {a: 'x', b: 234}
+  END
+  CheckDefAndScriptFailure(lines, 'E1012:', 1)
+
+  lines =<< trim END
+    var l: dict<string> = {a: 'x', b: 234}
+  END
+  CheckDefAndScriptFailure(lines, 'E1012:', 1)
+
+  lines =<< trim END
+    var l: dict<string> = {a: 234, b: 'x'}
+  END
+  CheckDefAndScriptFailure(lines, 'E1012:', 1)
+
+  lines =<< trim END
     var d = {['a']: 234, ['b': 'x'}
   END
-  CheckScriptFailure(lines, 'E1139:', 2)
+  CheckDefAndScriptFailure(lines, 'E1139:', 1)
+
   lines =<< trim END
-    vim9script
     def Func()
       var d = {['a']: 234, ['b': 'x'}
     enddef
     defcompile
   END
-  CheckScriptFailure(lines, 'E1139:', 1)
+  CheckDefAndScriptFailure(lines, 'E1139:', 0)
+
   lines =<< trim END
-    vim9script
     var d = {'a':
   END
-  CheckScriptFailure(lines, 'E15:', 2)
+  CheckDefFailure(lines, 'E723:', 2)
+  CheckScriptFailure(['vim9script'] + lines, 'E15:', 2)
+
   lines =<< trim END
-    vim9script
     def Func()
       var d = {'a':
     enddef
     defcompile
   END
-  CheckScriptFailure(lines, 'E723:', 1)
+  CheckDefAndScriptFailure(lines, 'E723:', 0)
 
   lines =<< trim END
-      vim9script
       def Failing()
         job_stop()
       enddef
       var dict = {name: Failing}
   END
   if has('channel')
-    CheckScriptFailure(lines, 'E119:', 1)
+    CheckDefAndScriptFailure(lines, 'E119:', 0)
   else
-    CheckScriptFailure(lines, 'E117:', 1)
+    CheckDefAndScriptFailure(lines, 'E117:', 1)
   endif
 enddef
 
 let g:oneString = 'one'
 
 def Test_expr_member()
-  assert_equal(1, g:dict_one.one)
-  var d: dict<number> = g:dict_one
-  assert_equal(1, d['one'])
-  assert_equal(1, d[
-		  'one'
-		  ])
-  assert_equal(1, d
-  	.one)
-  d = {1: 1, _: 2}
-  assert_equal(1, d
-  	.1)
-  assert_equal(2, d
-  	._)
+  var lines =<< trim END
+      assert_equal(1, g:dict_one.one)
+      var d: dict<number> = g:dict_one
+      assert_equal(1, d['one'])
+      assert_equal(1, d[
+                      'one'
+                      ])
+      assert_equal(1, d
+            .one)
+      d = {1: 1, _: 2}
+      assert_equal(1, d
+            .1)
+      assert_equal(2, d
+            ._)
 
-  # getting the one member should clear the dict after getting the item
-  assert_equal('one', {one: 'one'}.one)
-  assert_equal('one', {one: 'one'}[g:oneString])
+      # getting the one member should clear the dict after getting the item
+      assert_equal('one', {one: 'one'}.one)
+      assert_equal('one', {one: 'one'}[g:oneString])
+  END
+  CheckDefAndScriptSuccess(lines)
 
-  CheckDefFailure(["var x = g:dict_one.#$!"], 'E1002:', 1)
-  CheckDefExecFailure(["var d: dict<any>", "echo d['a']"], 'E716:', 2)
-  CheckDefExecFailure(["var d: dict<number>", "d = g:list_empty"], 'E1012: Type mismatch; expected dict<number> but got list<unknown>', 2)
+  CheckDefAndScriptFailure2(["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)
 enddef
 
 def Test_expr7_any_index_slice()
@@ -2518,23 +2466,16 @@
     assert_equal(2, g:testdict['b'])
   END
 
-  CheckDefSuccess(lines)
-  CheckScriptSuccess(['vim9script'] + lines)
+  CheckDefAndScriptSuccess(lines)
 
-  CheckDefExecFailure(['echo g:testblob[2]'], 'E979:', 1)
-  CheckScriptFailure(['vim9script', 'echo g:testblob[2]'], 'E979:', 2)
-  CheckDefExecFailure(['echo g:testblob[-3]'], 'E979:', 1)
-  CheckScriptFailure(['vim9script', 'echo g:testblob[-3]'], 'E979:', 2)
+  CheckDefExecAndScriptFailure(['echo g:testblob[2]'], 'E979:', 1)
+  CheckDefExecAndScriptFailure(['echo g:testblob[-3]'], 'E979:', 1)
 
-  CheckDefExecFailure(['echo g:testlist[4]'], 'E684: list index out of range: 4', 1)
-  CheckScriptFailure(['vim9script', 'echo g:testlist[4]'], 'E684:', 2)
-  CheckDefExecFailure(['echo g:testlist[-5]'], 'E684:', 1)
-  CheckScriptFailure(['vim9script', 'echo g:testlist[-5]'], 'E684: list index out of range: -5', 2)
+  CheckDefExecAndScriptFailure(['echo g:testlist[4]'], 'E684: list index out of range: 4', 1)
+  CheckDefExecAndScriptFailure(['echo g:testlist[-5]'], 'E684:', 1)
 
-  CheckDefExecFailure(['echo g:testdict["a" : "b"]'], 'E719:', 1)
-  CheckScriptFailure(['vim9script', 'echo g:testdict["a" : "b"]'], 'E719:', 2)
-  CheckDefExecFailure(['echo g:testdict[1]'], 'E716:', 1)
-  CheckScriptFailure(['vim9script', 'echo g:testdict[1]'], 'E716:', 2)
+  CheckDefExecAndScriptFailure(['echo g:testdict["a" : "b"]'], 'E719:', 1)
+  CheckDefExecAndScriptFailure(['echo g:testdict[1]'], 'E716:', 1)
 
   unlet g:teststring
   unlet g:testblob
@@ -2543,7 +2484,6 @@
 
 def Test_expr_member_vim9script()
   var lines =<< trim END
-      vim9script
       var d = {one:
       		'one',
 		two: 'two',
@@ -2560,10 +2500,9 @@
 			    'one'
 			    ])
   END
-  CheckScriptSuccess(lines)
+  CheckDefAndScriptSuccess(lines)
 
   lines =<< trim END
-      vim9script
       var l = [1,
 		  2,
 		  3, 4
@@ -2581,7 +2520,7 @@
 				:
 				])
   END
-  CheckScriptSuccess(lines)
+  CheckDefAndScriptSuccess(lines)
 enddef
 
 def SetSomeVar()
@@ -2589,88 +2528,101 @@
 enddef
 
 def Test_expr7_option()
-  # option
-  set ts=11
-  assert_equal(11, &ts)
-  &ts = 9
-  assert_equal(9, &ts)
-  set ts=8
-  set grepprg=some\ text
-  assert_equal('some text', &grepprg)
-  &grepprg = test_null_string()
-  assert_equal('', &grepprg)
-  set grepprg&
+  var lines =<< trim END
+      # option
+      set ts=11
+      assert_equal(11, &ts)
+      &ts = 9
+      assert_equal(9, &ts)
+      set ts=8
+      set grepprg=some\ text
+      assert_equal('some text', &grepprg)
+      &grepprg = test_null_string()
+      assert_equal('', &grepprg)
+      set grepprg&
 
-  # check matching type
-  var bval: bool = &tgc
-  var nval: number = &ts
-  var sval: string = &path
+      # check matching type
+      var bval: bool = &tgc
+      var nval: number = &ts
+      var sval: string = &path
 
-  # check v_lock is cleared (requires using valgrind, doesn't always show)
-  SetSomeVar()
-  b:someVar = 0
-  unlet b:someVar
+      # check v_lock is cleared (requires using valgrind, doesn't always show)
+      SetSomeVar()
+      b:someVar = 0
+      unlet b:someVar
+  END
+  CheckDefAndScriptSuccess(lines)
 enddef
 
 def Test_expr7_environment()
-  # environment variable
-  assert_equal('testvar', $TESTVAR)
-  assert_equal('', $ASDF_ASD_XXX)
+  var lines =<< trim END
+      # environment variable
+      assert_equal('testvar', $TESTVAR)
+      assert_equal('', $ASDF_ASD_XXX)
+  END
+  CheckDefAndScriptSuccess(lines)
 
-  CheckDefFailure(["var x = $$$"], 'E1002:', 1)
+  CheckDefAndScriptFailure2(["var x = $$$"], 'E1002:', 'E15:', 1)
 enddef
 
 def Test_expr7_register()
-  @a = 'register a'
-  assert_equal('register a', @a)
+  var lines =<< trim END
+      @a = 'register a'
+      assert_equal('register a', @a)
 
-  var fname = expand('%')
-  assert_equal(fname, @%)
+      var fname = expand('%')
+      assert_equal(fname, @%)
 
-  feedkeys(":echo 'some'\<CR>", "xt")
-  assert_equal("echo 'some'", @:)
+      feedkeys(":echo 'some'\<CR>", "xt")
+      assert_equal("echo 'some'", @:)
 
-  normal axyz
-  assert_equal("xyz", @.)
-  CheckDefFailure(["@. = 'yes'"], 'E354:', 1)
+      normal axyz
+      assert_equal("xyz", @.)
 
-  @/ = 'slash'
-  assert_equal('slash', @/)
+      @/ = 'slash'
+      assert_equal('slash', @/)
 
-  @= = 'equal'
-  assert_equal('equal', @=)
+      @= = 'equal'
+      assert_equal('equal', @=)
+  END
+  CheckDefAndScriptSuccess(lines)
+
+  CheckDefAndScriptFailure2(["@. = 'yes'"], 'E354:', 'E488:', 1)
 enddef
 
 def Test_expr7_namespace()
-  g:some_var = 'some'
-  assert_equal('some', get(g:, 'some_var'))
-  assert_equal('some', get(g:, 'some_var', 'xxx'))
-  assert_equal('xxx', get(g:, 'no_var', 'xxx'))
-  unlet g:some_var
+  var lines =<< trim END
+      g:some_var = 'some'
+      assert_equal('some', get(g:, 'some_var'))
+      assert_equal('some', get(g:, 'some_var', 'xxx'))
+      assert_equal('xxx', get(g:, 'no_var', 'xxx'))
+      unlet g:some_var
 
-  b:some_var = 'some'
-  assert_equal('some', get(b:, 'some_var'))
-  assert_equal('some', get(b:, 'some_var', 'xxx'))
-  assert_equal('xxx', get(b:, 'no_var', 'xxx'))
-  unlet b:some_var
+      b:some_var = 'some'
+      assert_equal('some', get(b:, 'some_var'))
+      assert_equal('some', get(b:, 'some_var', 'xxx'))
+      assert_equal('xxx', get(b:, 'no_var', 'xxx'))
+      unlet b:some_var
 
-  w:some_var = 'some'
-  assert_equal('some', get(w:, 'some_var'))
-  assert_equal('some', get(w:, 'some_var', 'xxx'))
-  assert_equal('xxx', get(w:, 'no_var', 'xxx'))
-  unlet w:some_var
+      w:some_var = 'some'
+      assert_equal('some', get(w:, 'some_var'))
+      assert_equal('some', get(w:, 'some_var', 'xxx'))
+      assert_equal('xxx', get(w:, 'no_var', 'xxx'))
+      unlet w:some_var
 
-  t:some_var = 'some'
-  assert_equal('some', get(t:, 'some_var'))
-  assert_equal('some', get(t:, 'some_var', 'xxx'))
-  assert_equal('xxx', get(t:, 'no_var', 'xxx'))
-  unlet t:some_var
+      t:some_var = 'some'
+      assert_equal('some', get(t:, 'some_var'))
+      assert_equal('some', get(t:, 'some_var', 'xxx'))
+      assert_equal('xxx', get(t:, 'no_var', 'xxx'))
+      unlet t:some_var
 
-  # check using g: in a for loop more than DO_NOT_FREE_CNT times
-  for i in range(100000)
-    if has_key(g:, 'does-not-exist')
-    endif
-  endfor
+      # check using g: in a for loop more than DO_NOT_FREE_CNT times
+      for i in range(100000)
+        if has_key(g:, 'does-not-exist')
+        endif
+      endfor
+  END
+  CheckDefAndScriptSuccess(lines)
 enddef
 
 def Test_expr7_parens()
@@ -2706,16 +2658,19 @@
 enddef
 
 def Test_expr7_negate_add()
-  assert_equal(-99, -99)
-  assert_equal(-99, - 99)
-  assert_equal(99, +99)
-
-  var nr = 88
-  assert_equal(-88, -nr)
-  assert_equal(-88, - nr)
-  assert_equal(88, + nr)
-
   var lines =<< trim END
+      assert_equal(-99, -99)
+      assert_equal(-99, - 99)
+      assert_equal(99, +99)
+
+      var nr = 88
+      assert_equal(-88, -nr)
+      assert_equal(-88, - nr)
+      assert_equal(88, + nr)
+  END
+  CheckDefAndScriptSuccess(lines)
+
+  lines =<< trim END
     var n = 12
     echo ++n
   END
@@ -2779,12 +2734,11 @@
   assert_equal('yes', 'yes'
                         ->s:Echo4Arg())
 
-  CheckDefFailure(["var x = 'yes'->Echo"], 'E107:', 1)
-  CheckScriptFailure([
-   "vim9script",
-   "var x = substitute ('x', 'x', 'x', 'x')"
-   ], 'E121:', 2)
-  CheckDefFailure(["var Ref = function('len' [1, 2])"], 'E1123:', 1)
+  CheckDefAndScriptFailure(["var x = 'yes'->Echo"], 'E107:', 1)
+  CheckDefAndScriptFailure2([
+       "var x = substitute ('x', 'x', 'x', 'x')"
+       ], 'E1001:', 'E121:', 1)
+  CheckDefAndScriptFailure2(["var Ref = function('len' [1, 2])"], 'E1123:', 'E116:', 1)
 
   var auto_lines =<< trim END
       def g:some#func(): string
@@ -2803,36 +2757,39 @@
 enddef
 
 def Test_expr7_method_call()
-  new
-  setline(1, ['first', 'last'])
-  'second'->append(1)
-  "third"->append(2)
-  assert_equal(['first', 'second', 'third', 'last'], getline(1, '$'))
-  bwipe!
+  var lines =<< trim END
+      new
+      setline(1, ['first', 'last'])
+      'second'->append(1)
+      "third"->append(2)
+      assert_equal(['first', 'second', 'third', 'last'], getline(1, '$'))
+      bwipe!
 
-  var bufnr = bufnr()
-  var loclist = [{bufnr: bufnr, lnum: 42, col: 17, text: 'wrong'}]
-  loclist->setloclist(0)
-  assert_equal([{bufnr: bufnr,
-  		lnum: 42,
-		col: 17,
-		text: 'wrong',
-		pattern: '',
-		valid: 1,
-		vcol: 0,
-		nr: 0,
-		type: '',
-		module: ''}
-		], getloclist(0))
+      var bufnr = bufnr()
+      var loclist = [{bufnr: bufnr, lnum: 42, col: 17, text: 'wrong'}]
+      loclist->setloclist(0)
+      assert_equal([{bufnr: bufnr,
+                    lnum: 42,
+                    col: 17,
+                    text: 'wrong',
+                    pattern: '',
+                    valid: 1,
+                    vcol: 0,
+                    nr: 0,
+                    type: '',
+                    module: ''}
+                    ], getloclist(0))
 
-  var result: bool = get({n: 0}, 'n', 0)
-  assert_equal(false, result)
+      var result: bool = get({n: 0}, 'n', 0)
+      assert_equal(false, result)
 
-  assert_equal('+string+', 'string'->((s) => '+' .. s .. '+')())
-  assert_equal('-text-', 'text'->((s, c) => c .. s .. c)('-'))
+      assert_equal('+string+', 'string'->((s) => '+' .. s .. '+')())
+      assert_equal('-text-', 'text'->((s, c) => c .. s .. c)('-'))
 
-  var Join = (l) => join(l, 'x')
-  assert_equal('axb', ['a', 'b']->(Join)())
+      var Join = (l) => join(l, 'x')
+      assert_equal('axb', ['a', 'b']->(Join)())
+  END
+  CheckDefAndScriptSuccess(lines)
 enddef
 
 
@@ -2888,44 +2845,52 @@
 
 func Test_expr7_fails()
   call CheckDefFailure(["var x = (12"], "E1097:", 3)
+  call CheckScriptFailure(['vim9script', "var x = (12"], 'E110:', 2)
 
-  call CheckDefFailure(["var x = -'xx'"], "E1030:", 1)
-  call CheckDefFailure(["var x = +'xx'"], "E1030:", 1)
-  call CheckDefFailure(["var x = -0z12"], "E974:", 1)
-  call CheckDefExecFailure(["var x = -[8]"], "E39:", 1)
-  call CheckDefExecFailure(["var x = -{a: 1}"], "E39:", 1)
+  call CheckDefAndScriptFailure(["var x = -'xx'"], "E1030:", 1)
+  call CheckDefAndScriptFailure(["var x = +'xx'"], "E1030:", 1)
+  call CheckDefAndScriptFailure(["var x = -0z12"], "E974:", 1)
+  call CheckDefExecAndScriptFailure2(["var x = -[8]"], "E39:", 'E745:', 1)
+  call CheckDefExecAndScriptFailure2(["var x = -{a: 1}"], "E39:", 'E728:', 1)
 
-  call CheckDefFailure(["var x = @"], "E1002:", 1)
-  call CheckDefFailure(["var x = @<"], "E354:", 1)
+  call CheckDefAndScriptFailure(["var x = @"], "E1002:", 1)
+  call CheckDefAndScriptFailure(["var x = @<"], "E354:", 1)
 
   call CheckDefFailure(["var x = [1, 2"], "E697:", 2)
-  call CheckDefFailure(["var x = [notfound]"], "E1001:", 1)
+  call CheckScriptFailure(['vim9script', "var x = [1, 2"], 'E696:', 2)
 
-  call CheckDefFailure(["var X = () => 123)"], "E488:", 1)
-  call CheckDefFailure(["var x = 123->((x) => x + 5)"], "E107:", 1)
+  call CheckDefAndScriptFailure2(["var x = [notfound]"], "E1001:", 'E121:', 1)
 
-  call CheckDefFailure(["var x = &notexist"], 'E113:', 1)
-  call CheckDefFailure(["&grepprg = [343]"], 'E1012:', 1)
+  call CheckDefAndScriptFailure2(["var X = () => 123)"], "E488:", 'E15:', 1)
+  call CheckDefAndScriptFailure(["var x = 123->((x) => x + 5)"], "E107:", 1)
 
-  call CheckDefExecFailure(["echo s:doesnt_exist"], 'E121:', 1)
-  call CheckDefExecFailure(["echo g:doesnt_exist"], 'E121:', 1)
+  call CheckDefAndScriptFailure(["var x = &notexist"], 'E113:', 1)
+  call CheckDefAndScriptFailure2(["&grepprg = [343]"], 'E1012:', 'E730:', 1)
 
-  call CheckDefFailure(["echo a:somevar"], 'E1075:', 1)
-  call CheckDefFailure(["echo l:somevar"], 'E1075:', 1)
-  call CheckDefFailure(["echo x:somevar"], 'E1075:', 1)
+  call CheckDefExecAndScriptFailure(["echo s:doesnt_exist"], 'E121:', 1)
+  call CheckDefExecAndScriptFailure(["echo g:doesnt_exist"], 'E121:', 1)
 
-  call CheckDefExecFailure(["var x = +g:astring"], 'E1030:', 1)
-  call CheckDefExecFailure(["var x = +g:ablob"], 'E974:', 1)
-  call CheckDefExecFailure(["var x = +g:alist"], 'E745:', 1)
-  call CheckDefExecFailure(["var x = +g:adict"], 'E728:', 1)
+  call CheckDefAndScriptFailure2(["echo a:somevar"], 'E1075:', 'E121:', 1)
+  call CheckDefAndScriptFailure2(["echo l:somevar"], 'E1075:', 'E121:', 1)
+  call CheckDefAndScriptFailure2(["echo x:somevar"], 'E1075:', 'E121:', 1)
 
-  call CheckDefFailure(["var x = ''", "var y = x.memb"], 'E715:', 2)
+  call CheckDefExecAndScriptFailure(["var x = +g:astring"], 'E1030:', 1)
+  call CheckDefExecAndScriptFailure(["var x = +g:ablob"], 'E974:', 1)
+  call CheckDefExecAndScriptFailure(["var x = +g:alist"], 'E745:', 1)
+  call CheckDefExecAndScriptFailure(["var x = +g:adict"], 'E728:', 1)
 
-  call CheckDefFailure(["'yes'->", "Echo()"], 'E488: Trailing characters: ->', 1)
+  call CheckDefAndScriptFailure2(["var x = ''", "var y = x.memb"], 'E715:', 'E15:', 2)
+
+  call CheckDefAndScriptFailure2(["'yes'->", "Echo()"], 'E488: Trailing characters: ->', 'E260: Missing name after ->', 1)
 
   call CheckDefExecFailure(["[1, 2->len()"], 'E697:', 2)
-  call CheckDefExecFailure(["{a: 1->len()"], 'E723:', 2)
+  call CheckScriptFailure(['vim9script', "[1, 2->len()"], 'E696:', 2)
+
+  call CheckDefFailure(["{a: 1->len()"], 'E723:', 2)
+  call CheckScriptFailure(['vim9script', "{a: 1->len()"], 'E722:', 2)
+
   call CheckDefExecFailure(["{['a']: 1->len()"], 'E723:', 2)
+  call CheckScriptFailure(['vim9script', "{['a']: 1->len()"], 'E722:', 2)
 endfunc
 
 let g:Funcrefs = [function('add')]
@@ -2939,36 +2904,39 @@
 endfunc
 
 def Test_expr7_trailing()
-  # user function call
-  assert_equal(123, g:CallMe(123))
-  assert_equal(123, g:CallMe(  123))
-  assert_equal(123, g:CallMe(123  ))
-  assert_equal('yesno', g:CallMe2('yes', 'no'))
-  assert_equal('yesno', g:CallMe2( 'yes', 'no' ))
-  assert_equal('nothing', g:CallMe('nothing'))
+  var lines =<< trim END
+      # user function call
+      assert_equal(123, g:CallMe(123))
+      assert_equal(123, g:CallMe(  123))
+      assert_equal(123, g:CallMe(123  ))
+      assert_equal('yesno', g:CallMe2('yes', 'no'))
+      assert_equal('yesno', g:CallMe2( 'yes', 'no' ))
+      assert_equal('nothing', g:CallMe('nothing'))
 
-  # partial call
-  var Part = function('g:CallMe')
-  assert_equal('yes', Part('yes'))
+      # partial call
+      var Part = function('g:CallMe')
+      assert_equal('yes', Part('yes'))
 
-  # funcref call, using list index
-  var l = []
-  g:Funcrefs[0](l, 2)
-  assert_equal([2], l)
+      # funcref call, using list index
+      var l = []
+      g:Funcrefs[0](l, 2)
+      assert_equal([2], l)
 
-  # method call
-  l = [2, 5, 6]
-  l->map((k, v) => k + v)
-  assert_equal([2, 6, 8], l)
+      # method call
+      l = [2, 5, 6]
+      l->map((k, v) => k + v)
+      assert_equal([2, 6, 8], l)
 
-  # lambda method call
-  l = [2, 5]
-  l->((ll) => add(ll, 8))()
-  assert_equal([2, 5, 8], l)
+      # lambda method call
+      l = [2, 5]
+      l->((ll) => add(ll, 8))()
+      assert_equal([2, 5, 8], l)
 
-  # dict member
-  var d = {key: 123}
-  assert_equal(123, d.key)
+      # dict member
+      var d = {key: 123}
+      assert_equal(123, d.key)
+  END
+  CheckDefAndScriptSuccess(lines)
 enddef
 
 def Test_expr7_string_subscript()
@@ -3022,88 +2990,92 @@
     assert_equal('bçdëf', text[1 :])
     assert_equal('ábçdëf', text[:])
   END
-  CheckDefSuccess(lines)
-  CheckScriptSuccess(['vim9script'] + lines)
+  CheckDefAndScriptSuccess(lines)
 
   lines =<< trim END
       var d = 'asdf'[1 :
   END
   CheckDefFailure(lines, 'E1097:', 3)
+  CheckScriptFailure(['vim9script'] + lines, 'E15:', 2)
+
   lines =<< trim END
       var d = 'asdf'[1 : xxx]
   END
-  CheckDefFailure(lines, 'E1001:', 1)
+  CheckDefAndScriptFailure2(lines, 'E1001:', 'E121:', 1)
+
   lines =<< trim END
       var d = 'asdf'[1 : 2
   END
   CheckDefFailure(lines, 'E1097:', 3)
+  CheckScriptFailure(['vim9script'] + lines, 'E111:', 2)
+
   lines =<< trim END
       var d = 'asdf'[1 : 2
       echo d
   END
-  CheckDefFailure(lines, 'E111:', 2)
+  CheckDefAndScriptFailure(lines, 'E111:', 2)
+
   lines =<< trim END
       var d = 'asdf'['1']
       echo d
   END
-  CheckDefFailure(lines, 'E1012: Type mismatch; expected number but got string', 1)
+  CheckDefAndScriptFailure2(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
-  CheckDefFailure(lines, 'E1012: Type mismatch; expected number but got string', 1)
+  CheckDefAndScriptFailure2(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
-  CheckDefFailure(lines, 'E1012: Type mismatch; expected number but got string', 1)
+  CheckDefAndScriptFailure2(lines, 'E1012: Type mismatch; expected number but got string', 'E1030: Using a String as a Number: "2"', 1)
 enddef
 
 def Test_expr7_list_subscript()
   var lines =<< trim END
-    var list = [0, 1, 2, 3, 4]
-    assert_equal(0, list[0])
-    assert_equal(4, list[4])
-    assert_equal(4, list[-1])
-    assert_equal(0, list[-5])
+      var list = [0, 1, 2, 3, 4]
+      assert_equal(0, list[0])
+      assert_equal(4, list[4])
+      assert_equal(4, list[-1])
+      assert_equal(0, list[-5])
 
-    assert_equal([0, 1, 2, 3, 4], list[0 : 4])
-    assert_equal([0, 1, 2, 3, 4], list[:])
-    assert_equal([1, 2, 3, 4], list[1 :])
-    assert_equal([2, 3, 4], list[2 : -1])
-    assert_equal([4], list[4 : -1])
-    assert_equal([], list[5 : -1])
-    assert_equal([], list[999 : -1])
-    assert_equal([1, 2, 3, 4], list[g:theone : g:thefour])
+      assert_equal([0, 1, 2, 3, 4], list[0 : 4])
+      assert_equal([0, 1, 2, 3, 4], list[:])
+      assert_equal([1, 2, 3, 4], list[1 :])
+      assert_equal([2, 3, 4], list[2 : -1])
+      assert_equal([4], list[4 : -1])
+      assert_equal([], list[5 : -1])
+      assert_equal([], list[999 : -1])
+      assert_equal([1, 2, 3, 4], list[g:theone : g:thefour])
 
-    assert_equal([0, 1, 2, 3], list[0 : 3])
-    assert_equal([0], list[0 : 0])
-    assert_equal([0, 1, 2, 3, 4], list[0 : -1])
-    assert_equal([0, 1, 2], list[0 : -3])
-    assert_equal([0], list[0 : -5])
-    assert_equal([], list[0 : -6])
-    assert_equal([], list[0 : -99])
+      assert_equal([0, 1, 2, 3], list[0 : 3])
+      assert_equal([0], list[0 : 0])
+      assert_equal([0, 1, 2, 3, 4], list[0 : -1])
+      assert_equal([0, 1, 2], list[0 : -3])
+      assert_equal([0], list[0 : -5])
+      assert_equal([], list[0 : -6])
+      assert_equal([], list[0 : -99])
   END
   CheckDefAndScriptSuccess(lines)
 
   lines = ['var l = [0, 1, 2]', 'echo l[g:astring : g:theone]']
-  CheckDefExecFailure(lines, 'E1012:')
-  CheckScriptFailure(['vim9script'] + lines, 'E1030:', 3)
+  CheckDefExecAndScriptFailure2(lines, 'E1012:', 'E1030:', 2)
 
   lines =<< trim END
-      vim9script
       var ld = []
       def Func()
         eval ld[0].key
       enddef
       defcompile
   END
-  CheckScriptSuccess(lines)
+  CheckDefAndScriptSuccess(lines)
 enddef
 
 def Test_expr7_dict_subscript()
   var lines =<< trim END
-      vim9script
       var l = [{lnum: 2}, {lnum: 1}]
       var res = l[0].lnum > l[1].lnum
       assert_true(res)
@@ -3117,63 +3089,74 @@
       enddef
       defcompile
   END
-  CheckScriptSuccess(lines)
+  CheckDefAndScriptSuccess(lines)
 enddef
 
 def Test_expr7_subscript_linebreak()
-  var range = range(
-  		3)
-  var l = range
-	->mapnew('string(v:key)')
-  assert_equal(['0', '1', '2'], l)
+  var lines =<< trim END
+      var range = range(
+                    3)
+      var l = range
+            ->mapnew('string(v:key)')
+      assert_equal(['0', '1', '2'], l)
 
-  l = range
-  	->mapnew('string(v:key)')
-  assert_equal(['0', '1', '2'], l)
+      l = range
+            ->mapnew('string(v:key)')
+      assert_equal(['0', '1', '2'], l)
 
-  l = range # comment
-  	->mapnew('string(v:key)')
-  assert_equal(['0', '1', '2'], l)
+      l = range # comment
+            ->mapnew('string(v:key)')
+      assert_equal(['0', '1', '2'], l)
 
-  l = range
+      l = range
 
-  	->mapnew('string(v:key)')
-  assert_equal(['0', '1', '2'], l)
+            ->mapnew('string(v:key)')
+      assert_equal(['0', '1', '2'], l)
 
-  l = range
-	# comment
-  	->mapnew('string(v:key)')
-  assert_equal(['0', '1', '2'], l)
+      l = range
+            # comment
+            ->mapnew('string(v:key)')
+      assert_equal(['0', '1', '2'], l)
 
-  assert_equal('1', l[
-	1])
+      assert_equal('1', l[
+            1])
 
-  var d = {one: 33}
-  assert_equal(33, d.
-	one)
+      var d = {one: 33}
+      assert_equal(33, d
+            .one)
+  END
+  CheckDefAndScriptSuccess(lines)
+
+  lines =<< trim END
+      var d = {one: 33}
+      assert_equal(33, d.
+            one)
+  END
+  CheckDefAndScriptFailure2(lines, 'E1127:', 'E116:', 2)
 enddef
 
 func Test_expr7_trailing_fails()
-  call CheckDefFailure(['var l = [2]', 'l->((ll) => add(ll, 8))'], 'E107:', 2)
-  call CheckDefFailure(['var l = [2]', 'l->((ll) => add(ll, 8)) ()'], 'E274:', 2)
+  call CheckDefAndScriptFailure(['var l = [2]', 'l->((ll) => add(ll, 8))'], 'E107:', 2)
+  call CheckDefAndScriptFailure(['var l = [2]', 'l->((ll) => add(ll, 8)) ()'], 'E274:', 2)
 endfunc
 
 func Test_expr_fails()
-  call CheckDefFailure(["var x = '1'is2"], 'E488:', 1)
-  call CheckDefFailure(["var x = '1'isnot2"], 'E488:', 1)
+  call CheckDefAndScriptFailure2(["var x = '1'is2"], 'E488:', 'E15:', 1)
+  call CheckDefAndScriptFailure2(["var x = '1'isnot2"], 'E488:', 'E15:', 1)
 
-  call CheckDefFailure(["CallMe ('yes')"], 'E476:', 1)
-  call CheckScriptFailure(["CallMe ('yes')"], 'E492:', 1)
+  call CheckDefAndScriptFailure2(["CallMe ('yes')"], 'E476:', 'E492:', 1)
+
   call CheckDefAndScriptFailure(["CallMe2('yes','no')"], 'E1069:', 1)
-  call CheckDefFailure(["CallMe2('yes' , 'no')"], 'E1068:', 1)
 
-  call CheckDefFailure(["v:nosuch += 3"], 'E1001:', 1)
-  call CheckDefFailure(["var v:statusmsg = ''"], 'E1016: Cannot declare a v: variable:', 1)
-  call CheckDefFailure(["var asdf = v:nosuch"], 'E1001:', 1)
+  call CheckDefAndScriptFailure2(["v:nosuch += 3"], 'E1001:', 'E121:', 1)
+  call CheckDefAndScriptFailure(["var v:statusmsg = ''"], 'E1016: Cannot declare a v: variable:', 1)
+  call CheckDefAndScriptFailure2(["var asdf = v:nosuch"], 'E1001:', 'E121:', 1)
 
   call CheckDefFailure(["echo len('asdf'"], 'E110:', 2)
-  call CheckDefFailure(["echo Func0123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789()"], 'E1011:', 1)
-  call CheckDefFailure(["echo doesnotexist()"], 'E117:', 1)
+  call CheckScriptFailure(['vim9script', "echo len('asdf'"], 'E116:', 2)
+
+  call CheckDefAndScriptFailure2(["echo Func0123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789()"], 'E1011:', 'E117:', 1)
+  call CheckDefAndScriptFailure(["echo doesnotexist()"], 'E117:', 1)
 endfunc
 
 " vim: shiftwidth=2 sts=2 expandtab
diff --git a/src/testdir/vim9.vim b/src/testdir/vim9.vim
index cc0510f..f17f141 100644
--- a/src/testdir/vim9.vim
+++ b/src/testdir/vim9.vim
@@ -107,9 +107,29 @@
   CheckScriptFailure(['vim9script'] + lines, error, lnum + 1)
 enddef
 
+" As CheckDefAndScriptFailure() but with two different exepcted errors.
+def CheckDefAndScriptFailure2(
+  	lines: list<string>,
+	errorDef: string,
+	errorScript: string,
+	lnum = -3)
+  CheckDefFailure(lines, errorDef, lnum)
+  CheckScriptFailure(['vim9script'] + lines, errorScript, lnum + 1)
+enddef
+
 " Check that a command fails with the same error  when executed in a :def
 " function and when used in Vim9 script.
 def CheckDefExecAndScriptFailure(lines: list<string>, error: string, lnum = -3)
   CheckDefExecFailure(lines, error, lnum)
   CheckScriptFailure(['vim9script'] + lines, error, lnum + 1)
 enddef
+
+" As CheckDefExecAndScriptFailure() but with two different expected errors.
+def CheckDefExecAndScriptFailure2(
+  	lines: list<string>,
+	errorDef: string,
+	errorScript: string,
+	lnum = -3)
+  CheckDefExecFailure(lines, errorDef, lnum)
+  CheckScriptFailure(['vim9script'] + lines, errorScript, lnum + 1)
+enddef
diff --git a/src/version.c b/src/version.c
index 8a95e67..db31f88 100644
--- a/src/version.c
+++ b/src/version.c
@@ -751,6 +751,8 @@
 static int included_patches[] =
 {   /* Add new patch number below this line */
 /**/
+    2710,
+/**/
     2709,
 /**/
     2708,
diff --git a/src/vim9compile.c b/src/vim9compile.c
index d8c955e..ce033c1 100644
--- a/src/vim9compile.c
+++ b/src/vim9compile.c
@@ -4106,7 +4106,7 @@
 	    ppconst->pp_is_const = FALSE;
 
 	    *arg = p + 1;
-	    if (may_get_next_line(*arg, arg, cctx) == FAIL)
+	    if (IS_WHITE_OR_NUL(**arg))
 	    {
 		emsg(_(e_missing_name_after_dot));
 		return FAIL;
@@ -4785,7 +4785,7 @@
 	    if (!IS_WHITE_OR_NUL(**arg) || !IS_WHITE_OR_NUL(p[2]))
 	    {
 		semsg(_(e_white_space_required_before_and_after_str_at_str),
-								     op, *arg);
+									op, p);
 		return FAIL;
 	    }
 
diff --git a/src/vim9execute.c b/src/vim9execute.c
index 6e011ba..d3e2af7 100644
--- a/src/vim9execute.c
+++ b/src/vim9execute.c
@@ -3962,9 +3962,16 @@
 
 done:
     // function finished, get result from the stack.
-    tv = STACK_TV_BOT(-1);
-    *rettv = *tv;
-    tv->v_type = VAR_UNKNOWN;
+    if (ufunc->uf_ret_type == &t_void)
+    {
+	rettv->v_type = VAR_VOID;
+    }
+    else
+    {
+	tv = STACK_TV_BOT(-1);
+	*rettv = *tv;
+	tv->v_type = VAR_UNKNOWN;
+    }
     ret = OK;
 
 failed:
