diff --git a/src/eval.c b/src/eval.c
index dc77153..0365adc 100644
--- a/src/eval.c
+++ b/src/eval.c
@@ -3438,7 +3438,15 @@
 		}
 #ifdef FEAT_FLOAT
 		if (rettv->v_type == VAR_FLOAT)
-		    f = !f;
+		{
+		    if (in_vim9script())
+		    {
+			rettv->v_type = VAR_BOOL;
+			val = f == 0.0 ? VVAL_TRUE : VVAL_FALSE;
+		    }
+		    else
+			f = !f;
+		}
 		else
 #endif
 		{
diff --git a/src/list.c b/src/list.c
index b62c141..1a82a34 100644
--- a/src/list.c
+++ b/src/list.c
@@ -1264,7 +1264,7 @@
 	had_comma = **arg == ',';
 	if (had_comma)
 	{
-	    if (vim9script && !IS_WHITE_OR_NUL((*arg)[1]))
+	    if (vim9script && !IS_WHITE_OR_NUL((*arg)[1]) && (*arg)[1] != ']')
 	    {
 		semsg(_(e_white_space_required_after_str), ",");
 		goto failret;
diff --git a/src/scriptfile.c b/src/scriptfile.c
index 68d1023..7e5ea4c 100644
--- a/src/scriptfile.c
+++ b/src/scriptfile.c
@@ -1332,7 +1332,10 @@
 	// set again.
 	ht = &SCRIPT_VARS(sid);
 	if (is_vim9)
+	{
 	    hashtab_free_contents(ht);
+	    hash_init(ht);
+	}
 	else
 	{
 	    int		todo = (int)ht->ht_used;
diff --git a/src/testdir/test_vim9_expr.vim b/src/testdir/test_vim9_expr.vim
index 24d30e2..0752772 100644
--- a/src/testdir/test_vim9_expr.vim
+++ b/src/testdir/test_vim9_expr.vim
@@ -13,52 +13,55 @@
 
 " test cond ? expr : expr
 def Test_expr1_trinary()
-  assert_equal('one', true ? 'one' : 'two')
-  assert_equal('one', 1 ?
-			'one' :
-			'two')
-  if has('float')
-    assert_equal('one', !!0.1 ? 'one' : 'two')
-  endif
-  assert_equal('one', !!'x' ? 'one' : 'two')
-  assert_equal('one', !!'x'
-  			? 'one'
-			: 'two')
-  assert_equal('one', !!0z1234 ? 'one' : 'two')
-  assert_equal('one', !![0] ? 'one' : 'two')
-  assert_equal('one', !!#{x: 0} ? 'one' : 'two')
-  var name = 1
-  assert_equal('one', name ? 'one' : 'two')
+  var lines =<< trim END
+      assert_equal('one', true ? 'one' : 'two')
+      assert_equal('one', 1 ?
+                            'one' :
+                            'two')
+      if has('float')
+        assert_equal('one', !!0.1 ? 'one' : 'two')
+      endif
+      assert_equal('one', !!'x' ? 'one' : 'two')
+      assert_equal('one', !!'x'
+                            ? 'one'
+                            : 'two')
+      assert_equal('one', !!0z1234 ? 'one' : 'two')
+      assert_equal('one', !![0] ? 'one' : 'two')
+      assert_equal('one', !!#{x: 0} ? 'one' : 'two')
+      var name = 1
+      assert_equal('one', name ? 'one' : 'two')
 
-  assert_equal('two', false ? 'one' : 'two')
-  assert_equal('two', 0 ? 'one' : 'two')
-  if has('float')
-    assert_equal('two', !!0.0 ? 'one' : 'two')
-  endif
-  assert_equal('two', !!'' ? 'one' : 'two')
-  assert_equal('two', !!0z ? 'one' : 'two')
-  assert_equal('two', !![] ? 'one' : 'two')
-  assert_equal('two', !!{} ? 'one' : 'two')
-  name = 0
-  assert_equal('two', name ? 'one' : 'two')
+      assert_equal('two', false ? 'one' : 'two')
+      assert_equal('two', 0 ? 'one' : 'two')
+      if has('float')
+        assert_equal('two', !!0.0 ? 'one' : 'two')
+      endif
+      assert_equal('two', !!'' ? 'one' : 'two')
+      assert_equal('two', !!0z ? 'one' : 'two')
+      assert_equal('two', !![] ? 'one' : 'two')
+      assert_equal('two', !!{} ? 'one' : 'two')
+      name = 0
+      assert_equal('two', name ? 'one' : 'two')
 
-  # with constant condition expression is not evaluated 
-  assert_equal('one', 1 ? 'one' : xxx)
+      # with constant condition expression is not evaluated 
+      assert_equal('one', 1 ? 'one' : xxx)
 
-  var Some: func = function('len')
-  var Other: func = function('winnr')
-  var Res: func = g:atrue ? Some : Other
-  assert_equal(function('len'), Res)
+      var Some: func = function('len')
+      var Other: func = function('winnr')
+      var Res: func = g:atrue ? Some : Other
+      assert_equal(function('len'), Res)
 
-  var RetOne: func(string): number = function('len')
-  var RetTwo: func(string): number = function('winnr')
-  var RetThat: func = g:atrue ? RetOne : RetTwo
-  assert_equal(function('len'), RetThat)
+      var RetOne: func(string): number = function('len')
+      var RetTwo: func(string): number = function('winnr')
+      var RetThat: func = g:atrue ? RetOne : RetTwo
+      assert_equal(function('len'), RetThat)
 
-  var X = FuncOne
-  var Y = FuncTwo
-  var Z = g:cond ? FuncOne : FuncTwo
-  assert_equal(123, Z(3))
+      var X = FuncOne
+      var Y = FuncTwo
+      var Z = g:cond ? FuncOne : FuncTwo
+      assert_equal(123, Z(3))
+  END
+  CheckDefAndScriptSuccess(lines)
 enddef
 
 def Test_expr1_trinary_vimscript()
@@ -225,7 +228,6 @@
   call CheckDefFailure(["var x = 1??'one' : 'two'"], msg, 1)
 enddef
 
-" TODO: define inside test function
 def Record(val: any): any
   g:vals->add(val)
   return val
@@ -233,32 +235,52 @@
 
 " test ||
 def Test_expr2()
-  assert_equal(true, 1 || 0)
-  assert_equal(true, 0 ||
-		    0 ||
-		    1)
-  assert_equal(false, 0 || 0)
-  assert_equal(false, 0
-  		    || 0)
-  assert_equal(false, 0 || false)
+  var lines =<< trim END
+      assert_equal(true, 1 || 0)
+      assert_equal(true, 0 ||
+                        0 ||
+                        1)
+      assert_equal(true, 0 ||
+			0 ||
+			!!7)
+      assert_equal(false, 0 || 0)
+      assert_equal(false, 0
+                        || 0)
+      assert_equal(false, 0 || false)
 
-  g:vals = []
-  assert_equal(true, Record(1) || Record(3))
-  assert_equal([1], g:vals)
+      g:vals = []
+      assert_equal(true, Record(1) || Record(3))
+      assert_equal([1], g:vals)
 
-  g:vals = []
-  assert_equal(true, Record(0) || Record(1))
-  assert_equal([0, 1], g:vals)
+      g:vals = []
+      assert_equal(true, Record(0) || Record(1))
+      assert_equal([0, 1], g:vals)
 
-  g:vals = []
-  assert_equal(true, Record(0)
-		      || Record(1)
-		      || Record(0))
-  assert_equal([0, 1], g:vals)
+      g:vals = []
+      assert_equal(true, Record(0) || Record(true))
+      assert_equal([0, true], g:vals)
 
-  g:vals = []
-  assert_equal(false, Record(0) || Record(false) || Record(0))
-  assert_equal([0, false, 0], g:vals)
+      g:vals = []
+      assert_equal(true, Record(0)
+                          || Record(1)
+                          || Record(0))
+      assert_equal([0, 1], g:vals)
+
+      g:vals = []
+      assert_equal(true, Record(0)
+			  || Record(true)
+			  || Record(0))
+      assert_equal([0, true], g:vals)
+
+      g:vals = []
+      assert_equal(true, Record(true) || Record(false))
+      assert_equal([true], g:vals)
+
+      g:vals = []
+      assert_equal(false, Record(0) || Record(false) || Record(0))
+      assert_equal([0, false, 0], g:vals)
+  END
+  CheckDefAndScriptSuccess(lines)
 enddef
 
 def Test_expr2_vimscript()
@@ -316,37 +338,6 @@
       var name = v:true|| v:true
   END
   CheckScriptFailure(lines, 'E1004:', 2)
-
-  # check evaluating to bool
-  lines =<< trim END
-      assert_equal(true, 1 || 0)
-      assert_equal(true, 0 ||
-			0 ||
-			!!7)
-      assert_equal(false, 0 || 0)
-      assert_equal(false, 0
-			|| 0)
-      assert_equal(false, 0 || false)
-
-      g:vals = []
-      assert_equal(true, Record(true) || Record(false))
-      assert_equal([true], g:vals)
-
-      g:vals = []
-      assert_equal(true, Record(0) || Record(true))
-      assert_equal([0, true], g:vals)
-
-      g:vals = []
-      assert_equal(true, Record(0)
-			  || Record(true)
-			  || Record(0))
-      assert_equal([0, true], g:vals)
-
-      g:vals = []
-      assert_equal(false, Record(0) || Record(false) || Record(0))
-      assert_equal([0, false, 0], g:vals)
-  END
-  CheckDefAndScriptSuccess(lines)
 enddef
 
 def Test_expr2_fails()
@@ -367,36 +358,43 @@
 
 " test &&
 def Test_expr3()
-  assert_equal(false, 1 && 0)
-  assert_equal(false, 0 &&
-		0 &&
-		1)
-  assert_equal(true, 1
-  		    && true
-		    && 1)
-  assert_equal(false, 0 && 0)
-  assert_equal(false, 0 && false)
-  assert_equal(true, 1 && true)
+  var lines =<< trim END
+      assert_equal(false, 1 && 0)
+      assert_equal(false, 0 &&
+                    0 &&
+                    1)
+      assert_equal(true, 1
+                        && true
+                        && 1)
+      assert_equal(false, 0 && 0)
+      assert_equal(false, 0 && false)
+      assert_equal(true, 1 && true)
 
-  g:vals = []
-  assert_equal(true, Record(true) && Record(1))
-  assert_equal([true, 1], g:vals)
+      g:vals = []
+      assert_equal(true, Record(true) && Record(1))
+      assert_equal([true, 1], g:vals)
 
-  g:vals = []
-  assert_equal(false, Record(0) && Record(1))
-  assert_equal([0], g:vals)
+      g:vals = []
+      assert_equal(true, Record(1) && Record(true))
+      assert_equal([1, true], g:vals)
 
-  g:vals = []
-  assert_equal(false, Record(0) && Record(4) && Record(0))
-  assert_equal([0], g:vals)
+      g:vals = []
+      assert_equal(false, Record(0) && Record(1))
+      assert_equal([0], g:vals)
 
-  g:vals = []
-  assert_equal(false, Record(1) && Record(true) && Record(0))
-  assert_equal([1, true, 0], g:vals)
+      g:vals = []
+      assert_equal(false, Record(0) && Record(1) && Record(0))
+      assert_equal([0], g:vals)
 
-  g:vals = []
-  assert_equal(false, Record(1) && Record(true) && Record(0))
-  assert_equal([1, true, 0], g:vals)
+      g:vals = []
+      assert_equal(false, Record(0) && Record(4) && Record(0))
+      assert_equal([0], g:vals)
+
+      g:vals = []
+      assert_equal(false, Record(1) && Record(true) && Record(0))
+      assert_equal([1, true, 0], g:vals)
+  END
+  CheckDefAndScriptSuccess(lines)
 enddef
 
 def Test_expr3_vimscript()
@@ -454,38 +452,6 @@
       var name = v:true&& v:true
   END
   CheckScriptFailure(lines, 'E1004:', 2)
-
-  # check keeping the value
-  lines =<< trim END
-      vim9script
-      assert_equal(false, 1 && 0)
-      assert_equal(false, 0 &&
-		    0 &&
-		    1)
-      assert_equal(true, 1
-			&& true
-			&& 1)
-      assert_equal(false, 0 && 0)
-      assert_equal(false, 0 && false)
-      assert_equal(false, 1 && 0)
-
-      g:vals = []
-      assert_equal(true, Record(1) && Record(true))
-      assert_equal([1, true], g:vals)
-
-      g:vals = []
-      assert_equal(false, Record(0) && Record(1))
-      assert_equal([0], g:vals)
-
-      g:vals = []
-      assert_equal(false, Record(0) && Record(1) && Record(0))
-      assert_equal([0], g:vals)
-
-      g:vals = []
-      assert_equal(false, Record(1) && Record(true) && Record(0))
-      assert_equal([1, true, 0], g:vals)
-  END
-  CheckScriptSuccess(lines)
 enddef
 
 func Test_expr3_fails()
@@ -495,6 +461,8 @@
   call CheckDefFailure(["var x = 1&& 2"], msg, 1)
 
   call CheckDefFailure(["if 'yes' && 0", 'echo 0', 'endif'], 'E1012: Type mismatch; expected bool but got string', 1)
+
+  call CheckDefExecFailure(['assert_equal(false, Record(1) && Record(4) && Record(0))'], 'E1023: Using a Number as a Bool: 4', 1)
 endfunc
 
 " global variables to use for tests with the "any" type
@@ -515,307 +483,345 @@
 
 " test == comperator
 def Test_expr4_equal()
-  var trueVar = true
-  var falseVar = false
-  assert_equal(true, true == true)
-  assert_equal(false, true ==
-			false)
-  assert_equal(true, true
-			== trueVar)
-  assert_equal(false, true == falseVar)
-  assert_equal(true, true == g:atrue)
-  assert_equal(false, g:atrue == false)
+  var lines =<< trim END
+      var trueVar = true
+      var falseVar = false
+      assert_equal(true, true == true)
+      assert_equal(false, true ==
+                            false)
+      assert_equal(true, true
+                            == trueVar)
+      assert_equal(false, true == falseVar)
+      assert_equal(true, true == g:atrue)
+      assert_equal(false, g:atrue == false)
 
-  assert_equal(true, v:none == v:none)
-  assert_equal(false, v:none == v:null)
-  assert_equal(true, g:anone == v:none)
-  assert_equal(false, v:none == g:anull)
+      assert_equal(true, v:none == v:none)
+      assert_equal(false, v:none == v:null)
+      assert_equal(true, g:anone == v:none)
+      assert_equal(false, v:none == g:anull)
 
-  var nr0 = 0
-  var nr61 = 61
-  assert_equal(false, 2 == 0)
-  assert_equal(false, 2 == nr0)
-  assert_equal(true, 61 == 61)
-  assert_equal(true, 61 == nr61)
-  assert_equal(true, g:anint == 10)
-  assert_equal(false, 61 == g:anint)
+      var nr0 = 0
+      var nr61 = 61
+      assert_equal(false, 2 == 0)
+      assert_equal(false, 2 == nr0)
+      assert_equal(true, 61 == 61)
+      assert_equal(true, 61 == nr61)
+      assert_equal(true, g:anint == 10)
+      assert_equal(false, 61 == g:anint)
 
-  if has('float')
-    var ff = 0.3
-    assert_equal(true, ff == 0.3)
-    assert_equal(false, 0.4 == ff)
-    assert_equal(true, 0.1 == g:afloat)
-    assert_equal(false, g:afloat == 0.3)
+      if has('float')
+        var ff = 0.3
+        assert_equal(true, ff == 0.3)
+        assert_equal(false, 0.4 == ff)
+        assert_equal(true, 0.1 == g:afloat)
+        assert_equal(false, g:afloat == 0.3)
 
-    ff = 3.0
-    assert_equal(true, ff == 3)
-    assert_equal(true, 3 == ff)
-    ff = 3.1
-    assert_equal(false, ff == 3)
-    assert_equal(false, 3 == ff)
-  endif
+        ff = 3.0
+        assert_equal(true, ff == 3)
+        assert_equal(true, 3 == ff)
+        ff = 3.1
+        assert_equal(false, ff == 3)
+        assert_equal(false, 3 == ff)
+      endif
 
-  assert_equal(true, 'abc' == 'abc')
-  assert_equal(false, 'xyz' == 'abc')
-  assert_equal(true, g:astring == 'asdf')
-  assert_equal(false, 'xyz' == g:astring)
+      assert_equal(true, 'abc' == 'abc')
+      assert_equal(false, 'xyz' == 'abc')
+      assert_equal(true, g:astring == 'asdf')
+      assert_equal(false, 'xyz' == g:astring)
 
-  assert_equal(false, 'abc' == 'aBc')
-  assert_equal(false, 'abc' ==# 'aBc')
-  assert_equal(true, 'abc' ==? 'aBc')
+      assert_equal(false, 'abc' == 'aBc')
+      assert_equal(false, 'abc' ==# 'aBc')
+      assert_equal(true, 'abc' ==? 'aBc')
 
-  assert_equal(false, 'abc' == 'ABC')
-  set ignorecase
-  assert_equal(false, 'abc' == 'ABC')
-  assert_equal(false, 'abc' ==# 'ABC')
-  set noignorecase
+      assert_equal(false, 'abc' == 'ABC')
+      set ignorecase
+      assert_equal(false, 'abc' == 'ABC')
+      assert_equal(false, 'abc' ==# 'ABC')
+      assert_equal(true, 'abc' ==? 'ABC')
+      set noignorecase
+
+      var bb = 0z3f
+      assert_equal(true, 0z3f == bb)
+      assert_equal(false, bb == 0z4f)
+      assert_equal(true, g:ablob == 0z01ab)
+      assert_equal(false, 0z3f == g:ablob)
+
+      assert_equal(true, [1, 2, 3] == [1, 2, 3])
+      assert_equal(false, [1, 2, 3] == [2, 3, 1])
+      assert_equal(true, [2, 3, 4] == g:alist)
+      assert_equal(false, g:alist == [2, 3, 1])
+      assert_equal(false, [1, 2, 3] == [])
+      assert_equal(false, [1, 2, 3] == ['1', '2', '3'])
+
+      assert_equal(true, #{one: 1, two: 2} == #{one: 1, two: 2})
+      assert_equal(false, #{one: 1, two: 2} == #{one: 2, two: 2})
+      assert_equal(false, #{one: 1, two: 2} == #{two: 2})
+      assert_equal(false, #{one: 1, two: 2} == #{})
+      assert_equal(true, g:adict == #{bbb: 8, aaa: 2})
+      assert_equal(false, #{ccc: 9, aaa: 2} == g:adict)
+
+      assert_equal(true, function('g:Test_expr4_equal') == function('g:Test_expr4_equal'))
+      assert_equal(false, function('g:Test_expr4_equal') == function('g:Test_expr4_is'))
+
+      assert_equal(true, function('g:Test_expr4_equal', [123]) == function('g:Test_expr4_equal', [123]))
+      assert_equal(false, function('g:Test_expr4_equal', [123]) == function('g:Test_expr4_is', [123]))
+      assert_equal(false, function('g:Test_expr4_equal', [123]) == function('g:Test_expr4_equal', [999]))
+
+      var OneFunc: func
+      var TwoFunc: func
+      OneFunc = function('len')
+      TwoFunc = function('len')
+      assert_equal(true, OneFunc('abc') == TwoFunc('123'))
+  END
+  CheckDefAndScriptSuccess(lines)
 
   CheckDefFailure(["var x = 'a' == xxx"], 'E1001:', 1)
   CheckDefExecFailure(['var items: any', 'eval 1', 'eval 2', 'if items == []', 'endif'], 'E691:', 4)
-
-  var bb = 0z3f
-  assert_equal(true, 0z3f == bb)
-  assert_equal(false, bb == 0z4f)
-  assert_equal(true, g:ablob == 0z01ab)
-  assert_equal(false, 0z3f == g:ablob)
-
-  assert_equal(true, [1, 2, 3] == [1, 2, 3])
-  assert_equal(false, [1, 2, 3] == [2, 3, 1])
-  assert_equal(true, [2, 3, 4] == g:alist)
-  assert_equal(false, g:alist == [2, 3, 1])
-  assert_equal(false, [1, 2, 3] == [])
-  assert_equal(false, [1, 2, 3] == ['1', '2', '3'])
-
-  assert_equal(true, #{one: 1, two: 2} == #{one: 1, two: 2})
-  assert_equal(false, #{one: 1, two: 2} == #{one: 2, two: 2})
-  assert_equal(false, #{one: 1, two: 2} == #{two: 2})
-  assert_equal(false, #{one: 1, two: 2} == #{})
-  assert_equal(true, g:adict == #{bbb: 8, aaa: 2})
-  assert_equal(false, #{ccc: 9, aaa: 2} == g:adict)
-
-  assert_equal(true, function('g:Test_expr4_equal') == function('g:Test_expr4_equal'))
-  assert_equal(false, function('g:Test_expr4_equal') == function('g:Test_expr4_is'))
-
-  assert_equal(true, function('g:Test_expr4_equal', [123]) == function('g:Test_expr4_equal', [123]))
-  assert_equal(false, function('g:Test_expr4_equal', [123]) == function('g:Test_expr4_is', [123]))
-  assert_equal(false, function('g:Test_expr4_equal', [123]) == function('g:Test_expr4_equal', [999]))
-
-  var OneFunc: func
-  var TwoFunc: func
-  OneFunc = function('len')
-  TwoFunc = function('len')
-  assert_equal(true, OneFunc('abc') == TwoFunc('123'))
 enddef
 
 " test != comperator
 def Test_expr4_notequal()
-  var trueVar = true
-  var falseVar = false
-  assert_equal(false, true != true)
-  assert_equal(true, true !=
-			false)
-  assert_equal(false, true
-  			!= trueVar)
-  assert_equal(true, true != falseVar)
-  assert_equal(false, true != g:atrue)
-  assert_equal(true, g:atrue != false)
+  var lines =<< trim END
+      var trueVar = true
+      var falseVar = false
+      assert_equal(false, true != true)
+      assert_equal(true, true !=
+                            false)
+      assert_equal(false, true
+                            != trueVar)
+      assert_equal(true, true != falseVar)
+      assert_equal(false, true != g:atrue)
+      assert_equal(true, g:atrue != false)
 
-  assert_equal(false, v:none != v:none)
-  assert_equal(true, v:none != v:null)
-  assert_equal(false, g:anone != v:none)
-  assert_equal(true, v:none != g:anull)
+      assert_equal(false, v:none != v:none)
+      assert_equal(true, v:none != v:null)
+      assert_equal(false, g:anone != v:none)
+      assert_equal(true, v:none != g:anull)
 
-  var nr55 = 55
-  var nr0 = 55
-  assert_equal(true, 2 != 0)
-  assert_equal(true, 2 != nr0)
-  assert_equal(false, 55 != 55)
-  assert_equal(false, 55 != nr55)
-  assert_equal(false, g:anint != 10)
-  assert_equal(true, 61 != g:anint)
+      var nr55 = 55
+      var nr0 = 55
+      assert_equal(true, 2 != 0)
+      assert_equal(true, 2 != nr0)
+      assert_equal(false, 55 != 55)
+      assert_equal(false, 55 != nr55)
+      assert_equal(false, g:anint != 10)
+      assert_equal(true, 61 != g:anint)
 
-  if has('float')
-    var ff = 0.3
-    assert_equal(false, 0.3 != ff)
-    assert_equal(true, 0.4 != ff)
-    assert_equal(false, 0.1 != g:afloat)
-    assert_equal(true, g:afloat != 0.3)
+      if has('float')
+        var ff = 0.3
+        assert_equal(false, 0.3 != ff)
+        assert_equal(true, 0.4 != ff)
+        assert_equal(false, 0.1 != g:afloat)
+        assert_equal(true, g:afloat != 0.3)
 
-    ff = 3.0
-    assert_equal(false, ff != 3)
-    assert_equal(false, 3 != ff)
-    ff = 3.1
-    assert_equal(true, ff != 3)
-    assert_equal(true, 3 != ff)
-  endif
+        ff = 3.0
+        assert_equal(false, ff != 3)
+        assert_equal(false, 3 != ff)
+        ff = 3.1
+        assert_equal(true, ff != 3)
+        assert_equal(true, 3 != ff)
+      endif
 
-  assert_equal(false, 'abc' != 'abc')
-  assert_equal(true, 'xyz' != 'abc')
-  assert_equal(false, g:astring != 'asdf')
-  assert_equal(true, 'xyz' != g:astring)
+      assert_equal(false, 'abc' != 'abc')
+      assert_equal(true, 'xyz' != 'abc')
+      assert_equal(false, g:astring != 'asdf')
+      assert_equal(true, 'xyz' != g:astring)
 
-  assert_equal(true, 'abc' != 'ABC')
-  set ignorecase
-  assert_equal(true, 'abc' != 'ABC')
-  set noignorecase
+      assert_equal(true, 'abc' != 'ABC')
+      set ignorecase
+      assert_equal(true, 'abc' != 'ABC')
+      assert_equal(true, 'abc' !=# 'ABC')
+      assert_equal(false, 'abc' !=? 'ABC')
+      set noignorecase
 
-  var bb = 0z3f
-  assert_equal(false, 0z3f != bb)
-  assert_equal(true, bb != 0z4f)
-  assert_equal(false, g:ablob != 0z01ab)
-  assert_equal(true, 0z3f != g:ablob)
+      var bb = 0z3f
+      assert_equal(false, 0z3f != bb)
+      assert_equal(true, bb != 0z4f)
+      assert_equal(false, g:ablob != 0z01ab)
+      assert_equal(true, 0z3f != g:ablob)
 
-  assert_equal(false, [1, 2, 3] != [1, 2, 3])
-  assert_equal(true, [1, 2, 3] != [2, 3, 1])
-  assert_equal(false, [2, 3, 4] != g:alist)
-  assert_equal(true, g:alist != [2, 3, 1])
-  assert_equal(true, [1, 2, 3] != [])
-  assert_equal(true, [1, 2, 3] != ['1', '2', '3'])
+      assert_equal(false, [1, 2, 3] != [1, 2, 3])
+      assert_equal(true, [1, 2, 3] != [2, 3, 1])
+      assert_equal(false, [2, 3, 4] != g:alist)
+      assert_equal(true, g:alist != [2, 3, 1])
+      assert_equal(true, [1, 2, 3] != [])
+      assert_equal(true, [1, 2, 3] != ['1', '2', '3'])
 
-  assert_equal(false, #{one: 1, two: 2} != #{one: 1, two: 2})
-  assert_equal(true, #{one: 1, two: 2} != #{one: 2, two: 2})
-  assert_equal(true, #{one: 1, two: 2} != #{two: 2})
-  assert_equal(true, #{one: 1, two: 2} != #{})
-  assert_equal(false, g:adict != #{bbb: 8, aaa: 2})
-  assert_equal(true, #{ccc: 9, aaa: 2} != g:adict)
+      assert_equal(false, #{one: 1, two: 2} != #{one: 1, two: 2})
+      assert_equal(true, #{one: 1, two: 2} != #{one: 2, two: 2})
+      assert_equal(true, #{one: 1, two: 2} != #{two: 2})
+      assert_equal(true, #{one: 1, two: 2} != #{})
+      assert_equal(false, g:adict != #{bbb: 8, aaa: 2})
+      assert_equal(true, #{ccc: 9, aaa: 2} != g:adict)
 
-  assert_equal(false, function('g:Test_expr4_equal') != function('g:Test_expr4_equal'))
-  assert_equal(true, function('g:Test_expr4_equal') != function('g:Test_expr4_is'))
+      assert_equal(false, function('g:Test_expr4_equal') != function('g:Test_expr4_equal'))
+      assert_equal(true, function('g:Test_expr4_equal') != function('g:Test_expr4_is'))
 
-  assert_equal(false, function('g:Test_expr4_equal', [123]) != function('g:Test_expr4_equal', [123]))
-  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]))
+      assert_equal(false, function('g:Test_expr4_equal', [123]) != function('g:Test_expr4_equal', [123]))
+      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)
 enddef
 
 " test > comperator
 def Test_expr4_greater()
-  assert_true(2 > 0)
-  assert_true(2 >
-		1)
-  assert_false(2 > 2)
-  assert_false(2 > 3)
-  var nr2 = 2
-  assert_true(nr2 > 0)
-  assert_true(nr2 >
-		1)
-  assert_false(nr2 > 2)
-  assert_false(nr2
-  		    > 3)
-  if has('float')
-    var ff = 2.0
-    assert_true(ff > 0.0)
-    assert_true(ff > 1.0)
-    assert_false(ff > 2.0)
-    assert_false(ff > 3.0)
-  endif
+  var lines =<< trim END
+      assert_true(2 > 0)
+      assert_true(2 >
+                    1)
+      assert_false(2 > 2)
+      assert_false(2 > 3)
+      var nr2 = 2
+      assert_true(nr2 > 0)
+      assert_true(nr2 >
+                    1)
+      assert_false(nr2 > 2)
+      assert_false(nr2
+                        > 3)
+      if has('float')
+        var ff = 2.0
+        assert_true(ff > 0.0)
+        assert_true(ff > 1.0)
+        assert_false(ff > 2.0)
+        assert_false(ff > 3.0)
+      endif
+  END
+  CheckDefAndScriptSuccess(lines)
 enddef
 
 " test >= comperator
 def Test_expr4_greaterequal()
-  assert_true(2 >= 0)
-  assert_true(2 >=
-			2)
-  assert_false(2 >= 3)
-  var nr2 = 2
-  assert_true(nr2 >= 0)
-  assert_true(nr2 >= 2)
-  assert_false(nr2 >= 3)
-  if has('float')
-    var ff = 2.0
-    assert_true(ff >= 0.0)
-    assert_true(ff >= 2.0)
-    assert_false(ff >= 3.0)
-  endif
+  var lines =<< trim END
+      assert_true(2 >= 0)
+      assert_true(2 >=
+                            2)
+      assert_false(2 >= 3)
+      var nr2 = 2
+      assert_true(nr2 >= 0)
+      assert_true(nr2 >= 2)
+      assert_false(nr2 >= 3)
+      if has('float')
+        var ff = 2.0
+        assert_true(ff >= 0.0)
+        assert_true(ff >= 2.0)
+        assert_false(ff >= 3.0)
+      endif
+  END
+  CheckDefAndScriptSuccess(lines)
 enddef
 
 " test < comperator
 def Test_expr4_smaller()
-  assert_false(2 < 0)
-  assert_false(2 <
-			2)
-  assert_true(2
-  		< 3)
-  var nr2 = 2
-  assert_false(nr2 < 0)
-  assert_false(nr2 < 2)
-  assert_true(nr2 < 3)
-  if has('float')
-    var ff = 2.0
-    assert_false(ff < 0.0)
-    assert_false(ff < 2.0)
-    assert_true(ff < 3.0)
-  endif
+  var lines =<< trim END
+      assert_false(2 < 0)
+      assert_false(2 <
+                            2)
+      assert_true(2
+                    < 3)
+      var nr2 = 2
+      assert_false(nr2 < 0)
+      assert_false(nr2 < 2)
+      assert_true(nr2 < 3)
+      if has('float')
+        var ff = 2.0
+        assert_false(ff < 0.0)
+        assert_false(ff < 2.0)
+        assert_true(ff < 3.0)
+      endif
+  END
+  CheckDefAndScriptSuccess(lines)
 enddef
 
 " test <= comperator
 def Test_expr4_smallerequal()
-  assert_false(2 <= 0)
-  assert_false(2 <=
-			1)
-  assert_true(2
-  		<= 2)
-  assert_true(2 <= 3)
-  var nr2 = 2
-  assert_false(nr2 <= 0)
-  assert_false(nr2 <= 1)
-  assert_true(nr2 <= 2)
-  assert_true(nr2 <= 3)
-  if has('float')
-    var ff = 2.0
-    assert_false(ff <= 0.0)
-    assert_false(ff <= 1.0)
-    assert_true(ff <= 2.0)
-    assert_true(ff <= 3.0)
-  endif
+  var lines =<< trim END
+      assert_false(2 <= 0)
+      assert_false(2 <=
+                            1)
+      assert_true(2
+                    <= 2)
+      assert_true(2 <= 3)
+      var nr2 = 2
+      assert_false(nr2 <= 0)
+      assert_false(nr2 <= 1)
+      assert_true(nr2 <= 2)
+      assert_true(nr2 <= 3)
+      if has('float')
+        var ff = 2.0
+        assert_false(ff <= 0.0)
+        assert_false(ff <= 1.0)
+        assert_true(ff <= 2.0)
+        assert_true(ff <= 3.0)
+      endif
+  END
+  CheckDefAndScriptSuccess(lines)
 enddef
 
 " test =~ comperator
 def Test_expr4_match()
-  assert_equal(false, '2' =~ '0')
-  assert_equal(false, ''
-  			 =~ '0')
-  assert_equal(true, '2' =~
-			'[0-9]')
+  var lines =<< trim END
+      assert_equal(false, '2' =~ '0')
+      assert_equal(false, ''
+                             =~ '0')
+      assert_equal(true, '2' =~
+                            '[0-9]')
+      set ignorecase
+      assert_equal(false, 'abc' =~ 'ABC')
+      assert_equal(false, 'abc' =~# 'ABC')
+      assert_equal(true, 'abc' =~? 'ABC')
+      set noignorecase
+  END
+  CheckDefAndScriptSuccess(lines)
 enddef
 
 " test !~ comperator
 def Test_expr4_nomatch()
-  assert_equal(true, '2' !~ '0')
-  assert_equal(true, ''
-  			!~ '0')
-  assert_equal(false, '2' !~
-			'[0-9]')
+  var lines =<< trim END
+      assert_equal(true, '2' !~ '0')
+      assert_equal(true, ''
+                            !~ '0')
+      assert_equal(false, '2' !~
+                            '[0-9]')
+  END
+  CheckDefAndScriptSuccess(lines)
 enddef
 
 " test is comperator
 def Test_expr4_is()
-  var mylist = [2]
-  assert_false(mylist is [2])
-  var other = mylist
-  assert_true(mylist is
-		other)
+  var lines =<< trim END
+      var mylist = [2]
+      assert_false(mylist is [2])
+      var other = mylist
+      assert_true(mylist is
+                    other)
 
-  var myblob = 0z1234
-  assert_false(myblob
-  			is 0z1234)
-  var otherblob = myblob
-  assert_true(myblob is otherblob)
+      var myblob = 0z1234
+      assert_false(myblob
+                            is 0z1234)
+      var otherblob = myblob
+      assert_true(myblob is otherblob)
+  END
+  CheckDefAndScriptSuccess(lines)
 enddef
 
 " test isnot comperator
 def Test_expr4_isnot()
-  var mylist = [2]
-  assert_true('2' isnot '0')
-  assert_true(mylist isnot [2])
-  var other = mylist
-  assert_false(mylist isnot
-			other)
+  var lines =<< trim END
+      var mylist = [2]
+      assert_true('2' isnot '0')
+      assert_true(mylist isnot [2])
+      var other = mylist
+      assert_false(mylist isnot
+                            other)
 
-  var myblob = 0z1234
-  assert_true(myblob
-  		isnot 0z1234)
-  var otherblob = myblob
-  assert_false(myblob isnot otherblob)
+      var myblob = 0z1234
+      assert_true(myblob
+                    isnot 0z1234)
+      var otherblob = myblob
+      assert_false(myblob isnot otherblob)
+  END
+  CheckDefAndScriptSuccess(lines)
 enddef
 
 def RetVoid()
@@ -896,25 +902,6 @@
   END
   CheckScriptFailure(lines, 'Cannot use "is" with number', 2)
 
-  # check 'ignorecase' not being used
-  lines =<< trim END
-    vim9script
-    set ignorecase
-    assert_equal(false, 'abc' == 'ABC')
-    assert_equal(false, 'abc' ==# 'ABC')
-    assert_equal(true, 'abc' ==? 'ABC')
-
-    assert_equal(true, 'abc' != 'ABC')
-    assert_equal(true, 'abc' !=# 'ABC')
-    assert_equal(false, 'abc' !=? 'ABC')
-
-    assert_equal(false, 'abc' =~ 'ABC')
-    assert_equal(false, 'abc' =~# 'ABC')
-    assert_equal(true, 'abc' =~? 'ABC')
-    set noignorecase
-  END
-  CheckScriptSuccess(lines)
-
   # check missing white space
   lines =<< trim END
     vim9script
@@ -1032,55 +1019,58 @@
 
 " test addition, subtraction, concatenation
 def Test_expr5()
-  assert_equal(66, 60 + 6)
-  assert_equal(70, 60 +
-			g:anint)
-  assert_equal(9, g:thefour
-  			+ 5)
-  assert_equal(14, g:thefour + g:anint)
-  assert_equal([1, 2, 3, 4], [1] + g:alist)
+  var lines =<< trim END
+      assert_equal(66, 60 + 6)
+      assert_equal(70, 60 +
+                            g:anint)
+      assert_equal(9, g:thefour
+                            + 5)
+      assert_equal(14, g:thefour + g:anint)
+      assert_equal([1, 2, 3, 4], [1] + g:alist)
 
-  assert_equal(54, 60 - 6)
-  assert_equal(50, 60 -
-		    g:anint)
-  assert_equal(-1, g:thefour
-  			- 5)
-  assert_equal(-6, g:thefour - g:anint)
+      assert_equal(54, 60 - 6)
+      assert_equal(50, 60 -
+                        g:anint)
+      assert_equal(-1, g:thefour
+                            - 5)
+      assert_equal(-6, g:thefour - g:anint)
 
-  assert_equal('hello', 'hel' .. 'lo')
-  assert_equal('hello 123', 'hello ' ..
-					123)
-  assert_equal('hello 123', 'hello '
-  				..  123)
-  assert_equal('123 hello', 123 .. ' hello')
-  assert_equal('123456', 123 .. 456)
+      assert_equal('hello', 'hel' .. 'lo')
+      assert_equal('hello 123', 'hello ' ..
+                                            123)
+      assert_equal('hello 123', 'hello '
+                                    ..  123)
+      assert_equal('123 hello', 123 .. ' hello')
+      assert_equal('123456', 123 .. 456)
 
-  assert_equal('av:true', 'a' .. true)
-  assert_equal('av:false', 'a' .. false)
-  assert_equal('av:null', 'a' .. v:null)
-  assert_equal('av:none', 'a' .. v:none)
-  if has('float')
-    assert_equal('a0.123', 'a' .. 0.123)
-  endif
+      assert_equal('av:true', 'a' .. true)
+      assert_equal('av:false', 'a' .. false)
+      assert_equal('av:null', 'a' .. v:null)
+      assert_equal('av:none', 'a' .. v:none)
+      if has('float')
+        assert_equal('a0.123', 'a' .. 0.123)
+      endif
 
-  assert_equal([1, 2, 3, 4], [1, 2] + [3, 4])
-  assert_equal(0z11223344, 0z1122 + 0z3344)
-  assert_equal(0z112201ab, 0z1122
-  				+ g:ablob)
-  assert_equal(0z01ab3344, g:ablob + 0z3344)
-  assert_equal(0z01ab01ab, g:ablob + g:ablob)
+      assert_equal([1, 2, 3, 4], [1, 2] + [3, 4])
+      assert_equal(0z11223344, 0z1122 + 0z3344)
+      assert_equal(0z112201ab, 0z1122
+                                    + g:ablob)
+      assert_equal(0z01ab3344, g:ablob + 0z3344)
+      assert_equal(0z01ab01ab, g:ablob + g:ablob)
 
-  # concatenate non-constant to constant
-  var save_path = &path
-  &path = 'b'
-  assert_equal('ab', 'a' .. &path)
-  &path = save_path
+      # concatenate non-constant to constant
+      var save_path = &path
+      &path = 'b'
+      assert_equal('ab', 'a' .. &path)
+      &path = save_path
 
-  @b = 'b'
-  assert_equal('ab', 'a' .. @b)
+      @b = 'b'
+      assert_equal('ab', 'a' .. @b)
 
-  $ENVVAR = 'env'
-  assert_equal('aenv', 'a' .. $ENVVAR)
+      $ENVVAR = 'env'
+      assert_equal('aenv', 'a' .. $ENVVAR)
+  END
+  CheckDefAndScriptSuccess(lines)
 enddef
 
 def Test_expr5_vim9script()
@@ -1196,19 +1186,6 @@
   END
   CheckScriptFailure(lines, 'E1004:', 2)
 
-  # check valid string concatenation
-  lines =<< trim END
-      vim9script
-      assert_equal('one123', 'one' .. 123)
-      assert_equal('onev:true', 'one' .. true)
-      assert_equal('onev:null', 'one' .. v:null)
-      assert_equal('onev:none', 'one' .. v:none)
-      if has('float')
-        assert_equal('a0.123', 'a' .. 0.123)
-      endif
-  END
-  CheckScriptSuccess(lines)
-
   # check invalid string concatenation
   lines =<< trim END
       vim9script
@@ -1258,24 +1235,27 @@
   if !has('float')
     MissingFeature 'float'
   else
-    assert_equal(66.0, 60.0 + 6.0)
-    assert_equal(66.0, 60.0 + 6)
-    assert_equal(66.0, 60 +
-			 6.0)
-    assert_equal(5.1, g:afloat
-    			+ 5)
-    assert_equal(8.1, 8 + g:afloat)
-    assert_equal(10.1, g:anint + g:afloat)
-    assert_equal(10.1, g:afloat + g:anint)
+    var lines =<< trim END
+        assert_equal(66.0, 60.0 + 6.0)
+        assert_equal(66.0, 60.0 + 6)
+        assert_equal(66.0, 60 +
+                             6.0)
+        assert_equal(5.1, g:afloat
+                            + 5)
+        assert_equal(8.1, 8 + g:afloat)
+        assert_equal(10.1, g:anint + g:afloat)
+        assert_equal(10.1, g:afloat + g:anint)
 
-    assert_equal(54.0, 60.0 - 6.0)
-    assert_equal(54.0, 60.0
-    			    - 6)
-    assert_equal(54.0, 60 - 6.0)
-    assert_equal(-4.9, g:afloat - 5)
-    assert_equal(7.9, 8 - g:afloat)
-    assert_equal(9.9, g:anint - g:afloat)
-    assert_equal(-9.9, g:afloat - g:anint)
+        assert_equal(54.0, 60.0 - 6.0)
+        assert_equal(54.0, 60.0
+                                - 6)
+        assert_equal(54.0, 60 - 6.0)
+        assert_equal(-4.9, g:afloat - 5)
+        assert_equal(7.9, 8 - g:afloat)
+        assert_equal(9.9, g:anint - g:afloat)
+        assert_equal(-9.9, g:afloat - g:anint)
+    END
+    CheckDefAndScriptSuccess(lines)
   endif
 enddef
 
@@ -1319,41 +1299,44 @@
 
 " test multiply, divide, modulo
 def Test_expr6()
-  assert_equal(36, 6 * 6)
-  assert_equal(24, 6 *
-			g:thefour)
-  assert_equal(24, g:thefour
-  			* 6)
-  assert_equal(40, g:anint * g:thefour)
+  var lines =<< trim END
+      assert_equal(36, 6 * 6)
+      assert_equal(24, 6 *
+                            g:thefour)
+      assert_equal(24, g:thefour
+                            * 6)
+      assert_equal(40, g:anint * g:thefour)
 
-  assert_equal(10, 60 / 6)
-  assert_equal(6, 60 /
-			g:anint)
-  assert_equal(1, g:anint / 6)
-  assert_equal(2, g:anint
-  			/ g:thefour)
+      assert_equal(10, 60 / 6)
+      assert_equal(6, 60 /
+                            g:anint)
+      assert_equal(1, g:anint / 6)
+      assert_equal(2, g:anint
+                            / g:thefour)
 
-  assert_equal(5, 11 % 6)
-  assert_equal(4, g:anint % 6)
-  assert_equal(3, 13 %
-			g:anint)
-  assert_equal(2, g:anint
-  			% g:thefour)
+      assert_equal(5, 11 % 6)
+      assert_equal(4, g:anint % 6)
+      assert_equal(3, 13 %
+                            g:anint)
+      assert_equal(2, g:anint
+                            % g:thefour)
 
-  assert_equal(4, 6 * 4 / 6)
+      assert_equal(4, 6 * 4 / 6)
 
-  var x = [2]
-  var y = [3]
-  assert_equal(5, x[0] + y[0])
-  assert_equal(6, x[0] * y[0])
-  if has('float')
-    var xf = [2.0]
-    var yf = [3.0]
-    assert_equal(5.0, xf[0]
-    			+ yf[0])
-    assert_equal(6.0, xf[0]
-    			* yf[0])
-  endif
+      var x = [2]
+      var y = [3]
+      assert_equal(5, x[0] + y[0])
+      assert_equal(6, x[0] * y[0])
+      if has('float')
+        var xf = [2.0]
+        var yf = [3.0]
+        assert_equal(5.0, xf[0]
+                            + yf[0])
+        assert_equal(6.0, xf[0]
+                            * yf[0])
+      endif
+  END
+  CheckDefAndScriptSuccess(lines)
 
   CheckDefFailure(["var x = 6 * xxx"], 'E1001:', 1)
 enddef
@@ -1419,29 +1402,32 @@
   if !has('float')
     MissingFeature 'float'
   else
-    assert_equal(36.0, 6.0 * 6)
-    assert_equal(36.0, 6 *
-			   6.0)
-    assert_equal(36.0, 6.0 * 6.0)
-    assert_equal(1.0, g:afloat * g:anint)
+    var lines =<< trim END
+        assert_equal(36.0, 6.0 * 6)
+        assert_equal(36.0, 6 *
+                               6.0)
+        assert_equal(36.0, 6.0 * 6.0)
+        assert_equal(1.0, g:afloat * g:anint)
 
-    assert_equal(10.0, 60 / 6.0)
-    assert_equal(10.0, 60.0 /
-			6)
-    assert_equal(10.0, 60.0 / 6.0)
-    assert_equal(0.01, g:afloat / g:anint)
+        assert_equal(10.0, 60 / 6.0)
+        assert_equal(10.0, 60.0 /
+                            6)
+        assert_equal(10.0, 60.0 / 6.0)
+        assert_equal(0.01, g:afloat / g:anint)
 
-    assert_equal(4.0, 6.0 * 4 / 6)
-    assert_equal(4.0, 6 *
-			4.0 /
-			6)
-    assert_equal(4.0, 6 * 4 / 6.0)
-    assert_equal(4.0, 6.0 * 4.0 / 6)
-    assert_equal(4.0, 6 * 4.0 / 6.0)
-    assert_equal(4.0, 6.0 * 4 / 6.0)
-    assert_equal(4.0, 6.0 * 4.0 / 6.0)
+        assert_equal(4.0, 6.0 * 4 / 6)
+        assert_equal(4.0, 6 *
+                            4.0 /
+                            6)
+        assert_equal(4.0, 6 * 4 / 6.0)
+        assert_equal(4.0, 6.0 * 4.0 / 6)
+        assert_equal(4.0, 6 * 4.0 / 6.0)
+        assert_equal(4.0, 6.0 * 4 / 6.0)
+        assert_equal(4.0, 6.0 * 4.0 / 6.0)
 
-    assert_equal(4.0, 6.0 * 4.0 / 6.0)
+        assert_equal(4.0, 6.0 * 4.0 / 6.0)
+    END
+    CheckDefAndScriptSuccess(lines)
   endif
 enddef
 
@@ -1531,12 +1517,15 @@
 " test low level expression
 def Test_expr7_number()
   # number constant
-  assert_equal(0, 0)
-  assert_equal(654, 0654)
+  var lines =<< trim END
+      assert_equal(0, 0)
+      assert_equal(654, 0654)
 
-  assert_equal(6, 0x6)
-  assert_equal(15, 0xf)
-  assert_equal(255, 0xff)
+      assert_equal(6, 0x6)
+      assert_equal(15, 0xf)
+      assert_equal(255, 0xff)
+  END
+  CheckDefAndScriptSuccess(lines)
 enddef
 
 def Test_expr7_float()
@@ -1544,31 +1533,40 @@
   if !has('float')
     MissingFeature 'float'
   else
-    assert_equal(g:float_zero, .0)
-    assert_equal(g:float_zero, 0.0)
-    assert_equal(g:float_neg, -9.8)
-    assert_equal(g:float_big, 9.9e99)
+    var lines =<< trim END
+        assert_equal(g:float_zero, .0)
+        assert_equal(g:float_zero, 0.0)
+        assert_equal(g:float_neg, -9.8)
+        assert_equal(g:float_big, 9.9e99)
+    END
+    CheckDefAndScriptSuccess(lines)
   endif
 enddef
 
 def Test_expr7_blob()
   # blob constant
-  assert_equal(g:blob_empty, 0z)
-  assert_equal(g:blob_one, 0z01)
-  assert_equal(g:blob_long, 0z0102.0304)
+  var lines =<< trim END
+      assert_equal(g:blob_empty, 0z)
+      assert_equal(g:blob_one, 0z01)
+      assert_equal(g:blob_long, 0z0102.0304)
+  END
+  CheckDefAndScriptSuccess(lines)
 
   CheckDefFailure(["var x = 0z123"], 'E973:', 1)
 enddef
 
 def Test_expr7_string()
   # string constant
-  assert_equal(g:string_empty, '')
-  assert_equal(g:string_empty, "")
-  assert_equal(g:string_short, 'x')
-  assert_equal(g:string_short, "x")
-  assert_equal(g:string_long, 'abcdefghijklm')
-  assert_equal(g:string_long, "abcdefghijklm")
-  assert_equal(g:string_special, "ab\ncd\ref\ekk")
+  var lines =<< trim END
+      assert_equal(g:string_empty, '')
+      assert_equal(g:string_empty, "")
+      assert_equal(g:string_short, 'x')
+      assert_equal(g:string_short, "x")
+      assert_equal(g:string_long, 'abcdefghijklm')
+      assert_equal(g:string_long, "abcdefghijklm")
+      assert_equal(g:string_special, "ab\ncd\ref\ekk")
+  END
+  CheckDefAndScriptSuccess(lines)
 
   CheckDefFailure(['var x = "abc'], 'E114:', 1)
   CheckDefFailure(["var x = 'abc"], 'E115:', 1)
@@ -1587,39 +1585,14 @@
 
 def Test_expr7_special()
   # special constant
-  assert_equal(g:special_true, true)
-  assert_equal(g:special_false, false)
-  assert_equal(g:special_true, v:true)
-  assert_equal(g:special_false, v:false)
-
-  assert_equal(true, !false)
-  assert_equal(false, !true)
-  assert_equal(true, !0)
-  assert_equal(false, !1)
-  assert_equal(false, !!false)
-  assert_equal(true, !!true)
-  assert_equal(false, !!0)
-  assert_equal(true, !!1)
-
-  assert_equal(g:special_null, v:null)
-  assert_equal(g:special_none, v:none)
-
-  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)
-enddef
-
-def Test_expr7_special_vim9script()
   var lines =<< trim END
-      vim9script
-      var t = true
-      var f = false
+      assert_equal(g:special_true, true)
+      assert_equal(g:special_false, false)
+      assert_equal(g:special_true, v:true)
+      assert_equal(g:special_false, v:false)
       assert_equal(v:true, true)
-      assert_equal(true, t)
       assert_equal(v:false, false)
-      assert_equal(false, f)
+
       assert_equal(true, !false)
       assert_equal(false, !true)
       assert_equal(true, !0)
@@ -1628,34 +1601,51 @@
       assert_equal(true, !!true)
       assert_equal(false, !!0)
       assert_equal(true, !!1)
+
+      var t = true
+      var f = false
+      assert_equal(true, t)
+      assert_equal(false, f)
+
+      assert_equal(g:special_null, v:null)
+      assert_equal(g:special_none, v:none)
   END
-  CheckScriptSuccess(lines)
+  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)
 enddef
 
 def Test_expr7_list()
   # list
-  assert_equal(g:list_empty, [])
-  assert_equal(g:list_empty, [  ])
+  var lines =<< trim END
+      assert_equal(g:list_empty, [])
+      assert_equal(g:list_empty, [  ])
 
-  var numbers: list<number> = [1, 2, 3]
-  numbers = [1]
-  numbers = []
+      var numbers: list<number> = [1, 2, 3]
+      numbers = [1]
+      numbers = []
 
-  var strings: list<string> = ['a', 'b', 'c']
-  strings = ['x']
-  strings = []
+      var strings: list<string> = ['a', 'b', 'c']
+      strings = ['x']
+      strings = []
 
-  var mixed: list<any> = [1, 'b', false,]
-  assert_equal(g:list_mixed, mixed)
-  assert_equal('b', mixed[1])
+      var mixed: list<any> = [1, 'b', false,]
+      assert_equal(g:list_mixed, mixed)
+      assert_equal('b', mixed[1])
 
-  echo [1,
-  	2] [3,
-		4]
+      echo [1,
+            2] [3,
+                    4]
 
-  var llstring: list<list<string>> = [['text'], []]
-  llstring = [[], ['text']]
-  llstring = [[], []]
+      var llstring: list<list<string>> = [['text'], []]
+      llstring = [[], ['text']]
+      llstring = [[], []]
+  END
+  CheckDefAndScriptSuccess(lines)
 
   var rangelist: list<number> = range(3)
   g:rangelist = range(3)
@@ -1680,7 +1670,7 @@
   CheckDefExecFailure(["var l: list<string> = [234, 'x']"], 'E1012:', 1)
   CheckDefExecFailure(["var l: list<string> = ['x', 123]"], 'E1012:', 1)
 
-  var lines =<< trim END
+  lines =<< trim END
       vim9script
       var datalist: list<string>
       def Main()
@@ -1788,45 +1778,48 @@
 enddef
 
 def Test_expr7_lambda()
-  var La = { -> 'result'}
-  assert_equal('result', La())
-  assert_equal([1, 3, 5], [1, 2, 3]->map({key, val -> key + val}))
+  var lines =<< trim END
+      var La = { -> 'result'}
+      assert_equal('result', La())
+      assert_equal([1, 3, 5], [1, 2, 3]->map({key, val -> key + val}))
 
-  # line continuation inside lambda with "cond ? expr : expr" works
-  var ll = range(3)
-  map(ll, {k, v -> v % 2 ? {
-	    '111': 111 } : {}
-	})
-  assert_equal([{}, {'111': 111}, {}], ll)
+      # line continuation inside lambda with "cond ? expr : expr" works
+      var ll = range(3)
+      map(ll, {k, v -> v % 2 ? {
+                '111': 111 } : {}
+            })
+      assert_equal([{}, {'111': 111}, {}], ll)
 
-  ll = range(3)
-  map(ll, {k, v -> v == 8 || v
-		== 9
-		|| v % 2 ? 111 : 222
-	})
-  assert_equal([222, 111, 222], ll)
+      ll = range(3)
+      map(ll, {k, v -> v == 8 || v
+                    == 9
+                    || v % 2 ? 111 : 222
+            })
+      assert_equal([222, 111, 222], ll)
 
-  ll = range(3)
-  map(ll, {k, v -> v != 8 && v
-		!= 9
-		&& v % 2 == 0 ? 111 : 222
-	})
-  assert_equal([111, 222, 111], ll)
+      ll = range(3)
+      map(ll, {k, v -> v != 8 && v
+                    != 9
+                    && v % 2 == 0 ? 111 : 222
+            })
+      assert_equal([111, 222, 111], ll)
 
-  var dl = [{'key': 0}, {'key': 22}]->filter({ _, v -> v['key'] })
-  assert_equal([{'key': 22}], dl)
+      var dl = [{'key': 0}, {'key': 22}]->filter({ _, v -> v['key'] })
+      assert_equal([{'key': 22}], dl)
 
-  dl = [{'key': 12}, {'foo': 34}]
-  assert_equal([{'key': 12}], filter(dl,
-	{_, v -> has_key(v, 'key') ? v['key'] == 12 : 0}))
+      dl = [{'key': 12}, {'foo': 34}]
+      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, LambdaWithComments()(0))
+      assert_equal(true, LambdaWithComments()(1))
+      assert_equal(true, LambdaWithComments()(2))
+      assert_equal(false, LambdaWithComments()(3))
 
-  assert_equal(false, LambdaUsingArg(0)())
-  assert_equal(true, LambdaUsingArg(1)())
+      assert_equal(false, LambdaUsingArg(0)())
+      assert_equal(true, LambdaUsingArg(1)())
+  END
+  CheckDefAndScriptSuccess(lines)
 
   CheckDefFailure(["filter([1, 2], {k,v -> 1})"], 'E1069:', 1)
   # error is in first line of the lambda
@@ -1871,46 +1864,49 @@
 
 def Test_epxr7_funcref()
   var lines =<< trim END
-    def RetNumber(): number
-      return 123
-    enddef
-    var FuncRef = RetNumber
-    assert_equal(123, FuncRef())
+      def RetNumber(): number
+        return 123
+      enddef
+      var FuncRef = RetNumber
+      assert_equal(123, FuncRef())
   END
   CheckDefAndScriptSuccess(lines)
 enddef
 
 def Test_expr7_dict()
   # dictionary
-  assert_equal(g:dict_empty, {})
-  assert_equal(g:dict_empty, {  })
-  assert_equal(g:dict_one, {'one': 1})
-  var key = 'one'
-  var val = 1
-  assert_equal(g:dict_one, {key: val})
+  var lines =<< trim END
+      assert_equal(g:dict_empty, {})
+      assert_equal(g:dict_empty, {  })
+      assert_equal(g:dict_one, {'one': 1})
+      var key = 'one'
+      var val = 1
+      assert_equal(g:dict_one, {key: val})
 
-  var numbers: dict<number> = #{a: 1, b: 2, c: 3}
-  numbers = #{a: 1}
-  numbers = #{}
+      var numbers: dict<number> = #{a: 1, b: 2, c: 3}
+      numbers = #{a: 1}
+      numbers = #{}
 
-  var strings: dict<string> = #{a: 'a', b: 'b', c: 'c'}
-  strings = #{a: 'x'}
-  strings = #{}
+      var strings: dict<string> = #{a: 'a', b: 'b', c: 'c'}
+      strings = #{a: 'x'}
+      strings = #{}
 
-  var mixed: dict<any> = #{a: 'a', b: 42}
-  mixed = #{a: 'x'}
-  mixed = #{a: 234}
-  mixed = #{}
+      var mixed: dict<any> = #{a: 'a', b: 42}
+      mixed = #{a: 'x'}
+      mixed = #{a: 234}
+      mixed = #{}
 
-  var dictlist: dict<list<string>> = #{absent: [], present: ['hi']}
-  dictlist = #{absent: ['hi'], present: []}
-  dictlist = #{absent: [], present: []}
+      var dictlist: dict<list<string>> = #{absent: [], present: ['hi']}
+      dictlist = #{absent: ['hi'], present: []}
+      dictlist = #{absent: [], present: []}
 
-  var dictdict: dict<dict<string>> = #{one: #{a: 'text'}, two: #{}}
-  dictdict = #{one: #{}, two: #{a: 'text'}}
-  dictdict = #{one: #{}, two: #{}}
+      var dictdict: dict<dict<string>> = #{one: #{a: 'text'}, two: #{}}
+      dictdict = #{one: #{}, two: #{a: 'text'}}
+      dictdict = #{one: #{}, two: #{}}
 
-  assert_equal({'': 0}, {matchstr('string', 'wont match'): 0})
+      assert_equal({'': 0}, {matchstr('string', 'wont match'): 0})
+  END
+  CheckDefAndScriptSuccess(lines)
  
   CheckDefFailure(["var x = #{a:8}"], 'E1069:', 1)
   CheckDefFailure(["var x = #{a : 8}"], 'E1068:', 1)
@@ -2311,11 +2307,15 @@
 enddef
 
 def Test_expr7_call()
-  assert_equal('yes', 'yes'->Echo())
+  var lines =<< trim END
+      assert_equal('yes', 'yes'->Echo())
+      assert_equal(true, !range(5)->empty())
+      assert_equal([0, 1, 2], --3->range())
+  END
+  CheckDefAndScriptSuccess(lines)
+
   assert_equal('yes', 'yes'
-  			->s:Echo4Arg())
-  assert_equal(true, !range(5)->empty())
-  assert_equal([0, 1, 2], --3->range())
+                        ->s:Echo4Arg())
 
   CheckDefFailure(["var x = 'yes'->Echo"], 'E107:', 1)
   CheckScriptFailure([
diff --git a/src/version.c b/src/version.c
index bb33bcb..d1e174d 100644
--- a/src/version.c
+++ b/src/version.c
@@ -751,6 +751,8 @@
 static int included_patches[] =
 {   /* Add new patch number below this line */
 /**/
+    1980,
+/**/
     1979,
 /**/
     1978,
