diff --git a/src/testdir/test_vim9_expr.vim b/src/testdir/test_vim9_expr.vim
index a0593ea..ed6c285 100644
--- a/src/testdir/test_vim9_expr.vim
+++ b/src/testdir/test_vim9_expr.vim
@@ -188,6 +188,12 @@
   call CheckDefExecFailure(["var x = [] ? 'one' : 'two'"], 'E745:', 1)
   call CheckDefExecFailure(["var x = {} ? 'one' : 'two'"], 'E728:', 1)
 
+  call CheckDefExecFailure(["var x = false ? "], 'E1097:', 2)
+  call CheckDefExecFailure(["var x = false ? 'one' : "], 'E1097:', 2)
+
+  call CheckDefExecFailure(["var x = true ? xxx : 'foo'"], 'E1001:', 1)
+  call CheckDefExecFailure(["var x = false ? 'foo' : xxx"], 'E1001:', 1)
+
   if has('float')
     call CheckDefFailure(["var x = 0.1 ? 'one' : 'two'"], 'E805:', 1)
   endif
@@ -346,6 +352,8 @@
   call CheckDefFailure(["var x = 1 ||2"], msg, 1)
   call CheckDefFailure(["var x = 1|| 2"], msg, 1)
 
+  call CheckDefFailure(["var x = false || "], 'E1097:', 2)
+
   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)
@@ -579,6 +587,8 @@
   CheckDefAndScriptSuccess(lines)
 
   CheckDefFailure(["var x = 'a' == xxx"], 'E1001:', 1)
+  CheckDefFailure(["var x = 'a' == "], 'E1097:', 2)
+
   CheckDefExecFailure(['var items: any', 'eval 1', 'eval 2', 'if items == []', 'endif'], 'E691:', 4)
 enddef
 
@@ -1349,6 +1359,7 @@
   CheckDefAndScriptSuccess(lines)
 
   CheckDefFailure(["var x = 6 * xxx"], 'E1001:', 1)
+  CheckDefFailure(["var d = 6 * "], 'E1097:', 2)
 enddef
 
 def Test_expr6_vim9script()
@@ -1520,6 +1531,7 @@
   assert_equal(234, nr)
 
   CheckDefFailure(["var x = <nr>123"], 'E1010:', 1)
+  CheckDefFailure(["var x = <number>"], 'E1097:', 2)
   CheckDefFailure(["var x = <number >123"], 'E1068:', 1)
   CheckDefFailure(["var x = <number 123"], 'E1104:', 1)
 enddef
@@ -2053,6 +2065,33 @@
   CheckScriptFailure(lines, 'E1012:', 2)
 
   lines =<< trim END
+    vim9script
+    var d = {['a']: 234, ['b': 'x'}
+  END
+  CheckScriptFailure(lines, 'E1139:', 2)
+  lines =<< trim END
+    vim9script
+    def Func()
+      var d = {['a']: 234, ['b': 'x'}
+    enddef
+    defcompile
+  END
+  CheckScriptFailure(lines, 'E1139:', 1)
+  lines =<< trim END
+    vim9script
+    var d = {'a':
+  END
+  CheckScriptFailure(lines, 'E15:', 2)
+  lines =<< trim END
+    vim9script
+    def Func()
+      var d = {'a':
+    enddef
+    defcompile
+  END
+  CheckScriptFailure(lines, 'E723:', 1)
+
+  lines =<< trim END
       vim9script
       def Failing()
         job_stop()
@@ -2566,6 +2605,39 @@
   END
   CheckDefSuccess(lines)
   CheckScriptSuccess(['vim9script'] + lines)
+
+  lines =<< trim END
+      var d = 'asdf'[1:
+  END
+  CheckDefFailure(lines, 'E1097:', 2)
+  lines =<< trim END
+      var d = 'asdf'[1:xxx]
+  END
+  CheckDefFailure(lines, 'E1001:', 1)
+  lines =<< trim END
+      var d = 'asdf'[1:2
+  END
+  CheckDefFailure(lines, 'E1097:', 2)
+  lines =<< trim END
+      var d = 'asdf'[1:2
+      echo d
+  END
+  CheckDefFailure(lines, 'E111:', 2)
+  lines =<< trim END
+      var d = 'asdf'['1']
+      echo d
+  END
+  CheckDefFailure(lines, 'E1012: Type mismatch; expected number but got string', 1)
+  lines =<< trim END
+      var d = 'asdf'['1':2]
+      echo d
+  END
+  CheckDefFailure(lines, 'E1012: Type mismatch; expected number but got string', 1)
+  lines =<< trim END
+      var d = 'asdf'[1:'2']
+      echo d
+  END
+  CheckDefFailure(lines, 'E1012: Type mismatch; expected number but got string', 1)
 enddef
 
 def Test_expr7_list_subscript()
diff --git a/src/testdir/test_vim9_script.vim b/src/testdir/test_vim9_script.vim
index 532ad83..7012f9e 100644
--- a/src/testdir/test_vim9_script.vim
+++ b/src/testdir/test_vim9_script.vim
@@ -962,6 +962,18 @@
   writefile(import_already_defined, 'Ximport.vim')
   assert_fails('source Ximport.vim', 'E1073:', '', 3, 'Ximport.vim')
 
+  # try changing an imported const
+  var import_assign_to_const =<< trim END
+    vim9script
+    import CONST from './Xexport.vim'
+    def Assign()
+      CONST = 987
+    enddef
+    defcompile
+  END
+  writefile(import_assign_to_const, 'Ximport.vim')
+  assert_fails('source Ximport.vim', 'E46:', '', 1, '_Assign')
+
   # import a very long name, requires making a copy
   var import_long_name_lines =<< trim END
     vim9script
diff --git a/src/version.c b/src/version.c
index a24a261..9903918 100644
--- a/src/version.c
+++ b/src/version.c
@@ -751,6 +751,8 @@
 static int included_patches[] =
 {   /* Add new patch number below this line */
 /**/
+    2099,
+/**/
     2098,
 /**/
     2097,
diff --git a/src/vim9compile.c b/src/vim9compile.c
index ee3d89e..f02ea60 100644
--- a/src/vim9compile.c
+++ b/src/vim9compile.c
@@ -2503,7 +2503,8 @@
 		case 'w': isn_type = ISN_LOADW; break;
 		case 't': isn_type = ISN_LOADT; break;
 		case 'b': isn_type = ISN_LOADB; break;
-		default:  semsg(_(e_namespace_not_supported_str), *arg);
+		default:  // cannot happen, just in case
+			  semsg(_(e_namespace_not_supported_str), *arg);
 			  goto theend;
 	    }
 	    if (isn_type != ISN_DROP)
@@ -3581,7 +3582,7 @@
 		else
 		{
 		    if (compile_expr0(arg, cctx) == FAIL)
-		    return FAIL;
+			return FAIL;
 		    if (may_get_next_line_error(p, arg, cctx) == FAIL)
 			return FAIL;
 		    *arg = skipwhite(*arg);
@@ -4084,7 +4085,7 @@
 	    return FAIL;
 	}
 	*arg = skipwhite(op + 1);
-	if (may_get_next_line(op + 1, arg, cctx) == FAIL)
+	if (may_get_next_line_error(op + 1, arg, cctx) == FAIL)
 	    return FAIL;
 
 	// get the second expression
@@ -4291,7 +4292,7 @@
 
 	// get the second variable
 	*arg = skipwhite(p + len);
-	if (may_get_next_line(p + len, arg, cctx) == FAIL)
+	if (may_get_next_line_error(p + len, arg, cctx) == FAIL)
 	    return FAIL;
 
 	if (compile_expr5(arg, cctx, ppconst) == FAIL)
@@ -4390,7 +4391,7 @@
 
 	    // eval the next expression
 	    *arg = skipwhite(p + 2);
-	    if (may_get_next_line(p + 2, arg, cctx) == FAIL)
+	    if (may_get_next_line_error(p + 2, arg, cctx) == FAIL)
 		return FAIL;
 
 	    if ((opchar == '|' ? compile_expr3(arg, cctx, ppconst)
@@ -4584,7 +4585,7 @@
 
 	// evaluate the second expression; any type is accepted
 	*arg = skipwhite(p + 1 + op_falsy);
-	if (may_get_next_line(p + 1 + op_falsy, arg, cctx) == FAIL)
+	if (may_get_next_line_error(p + 1 + op_falsy, arg, cctx) == FAIL)
 	    return FAIL;
 	if (compile_expr1(arg, cctx, ppconst) == FAIL)
 	    return FAIL;
@@ -4634,7 +4635,7 @@
 		cctx->ctx_skip = save_skip == SKIP_YES || const_value
 							 ? SKIP_YES : SKIP_NOT;
 	    *arg = skipwhite(p + 1);
-	    if (may_get_next_line(p + 1, arg, cctx) == FAIL)
+	    if (may_get_next_line_error(p + 1, arg, cctx) == FAIL)
 		return FAIL;
 	    if (compile_expr1(arg, cctx, ppconst) == FAIL)
 		return FAIL;
