diff --git a/src/evalvars.c b/src/evalvars.c
index 0ffff56..35d038d 100644
--- a/src/evalvars.c
+++ b/src/evalvars.c
@@ -930,7 +930,7 @@
 	    {
 		if (*semicolon == 1)
 		{
-		    emsg(_("Double ; in list of variables"));
+		    emsg(_("E452: Double ; in list of variables"));
 		    return NULL;
 		}
 		*semicolon = 1;
diff --git a/src/testdir/test_vim9_expr.vim b/src/testdir/test_vim9_expr.vim
index b1efbf5..06c200d 100644
--- a/src/testdir/test_vim9_expr.vim
+++ b/src/testdir/test_vim9_expr.vim
@@ -58,6 +58,7 @@
 
 func Test_expr1_fails()
   call CheckDefFailure("let x = 1 ? 'one'", "Missing ':' after '?'")
+  call CheckDefFailure("let x = 1 ? 'one' : xxx", "E1001:")
 
   let msg = "white space required before and after '?'"
   call CheckDefFailure("let x = 1? 'one' : 'two'", msg)
@@ -192,11 +193,18 @@
   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')
   set ignorecase
   assert_equal(false, 'abc' == 'ABC')
+  assert_equal(false, 'abc' ==# 'ABC')
   set noignorecase
 
+  call CheckDefFailure("let x = 'a' == xxx", 'E1001:')
+
   assert_equal(true, 0z3f == 0z3f)
   assert_equal(false, 0z3f == 0z4f)
   assert_equal(true, g:ablob == 0z01ab)
diff --git a/src/testdir/test_vim9_script.vim b/src/testdir/test_vim9_script.vim
index 5eeb198..f6cb15f 100644
--- a/src/testdir/test_vim9_script.vim
+++ b/src/testdir/test_vim9_script.vim
@@ -53,6 +53,9 @@
   let dict4: dict<any> = #{one: 1, two: '2'}
   let dict5: dict<blob> = #{one: 0z01, tw: 0z02}
 
+  let a: number = 6
+  assert_equal(6, a)
+
   if has('channel')
     let chan1: channel
     let job1: job
@@ -101,6 +104,21 @@
   call CheckDefFailure(['let true = 1'], 'E1034:')
   call CheckDefFailure(['let false = 1'], 'E1034:')
 
+  call CheckDefFailure(['let [a; b; c] = g:list'], 'E452:')
+
+  call CheckDefFailure(['let &option'], 'E1052:')
+  call CheckDefFailure(['&g:option = 5'], 'E113:')
+
+  call CheckDefFailure(['let $VAR = 5'], 'E1065:')
+
+  call CheckDefFailure(['let @~ = 5'], 'E354:')
+  call CheckDefFailure(['let @a = 5'], 'E1066:')
+
+  call CheckDefFailure(['let g:var = 5'], 'E1016:')
+
+  call CheckDefFailure(['let anr = 4', 'anr ..= "text"'], 'E1019:')
+  call CheckDefFailure(['let xnr += 4'], 'E1020:')
+
   call CheckScriptFailure(['vim9script', 'def Func()', 'let dummy = s:notfound', 'enddef'], 'E1050:')
 
   call CheckDefFailure(['let var: list<string> = [123]'], 'expected list<string> but got list<number>')
@@ -142,6 +160,7 @@
   call CheckDefFailure(['const var = 234', 'var = 99'], 'E1018:')
   call CheckDefFailure(['const one = 234', 'let one = 99'], 'E1017:')
   call CheckDefFailure(['const two'], 'E1021:')
+  call CheckDefFailure(['const &option'], 'E996:')
 endfunc
 
 def Test_block()
@@ -172,12 +191,26 @@
   return g:notNumber
 enddef
 
-def Test_return_string()
+def Test_return_something()
   assert_equal('string', ReturnString())
   assert_equal(123, ReturnNumber())
   assert_fails('call ReturnGlobal()', 'E1029: Expected number but got string')
 enddef
 
+let s:nothing = 0
+def ReturnNothing()
+  s:nothing = 1
+  if true
+    return
+  endif
+  s:nothing = 2
+enddef
+
+def Test_return_nothing()
+  ReturnNothing()
+  assert_equal(1, s:nothing)
+enddef
+
 func Increment()
   let g:counter += 1
 endfunc
@@ -282,6 +315,8 @@
   CheckScriptFailure(['def Func(): void', 'return "a"', 'enddef'], 'expected void but got string')
   CheckScriptFailure(['def Func()', 'return "a"', 'enddef'], 'expected void but got string')
 
+  CheckScriptFailure(['def Func(): number', 'return', 'enddef'], 'E1003:')
+
   CheckScriptFailure(['def Func(): list', 'return []', 'enddef'], 'E1008:')
   CheckScriptFailure(['def Func(): dict', 'return {}', 'enddef'], 'E1008:')
 enddef
diff --git a/src/version.c b/src/version.c
index c5f1a85..17ef596 100644
--- a/src/version.c
+++ b/src/version.c
@@ -739,6 +739,8 @@
 static int included_patches[] =
 {   /* Add new patch number below this line */
 /**/
+    486,
+/**/
     485,
 /**/
     484,
diff --git a/src/vim9compile.c b/src/vim9compile.c
index 18fb549..9fdfdb3 100644
--- a/src/vim9compile.c
+++ b/src/vim9compile.c
@@ -3353,9 +3353,9 @@
     }
     else
     {
-	if (set_return_type)
-	    cctx->ctx_ufunc->uf_ret_type = &t_void;
-	else if (cctx->ctx_ufunc->uf_ret_type->tt_type != VAR_VOID)
+	// "set_return_type" cannot be TRUE, only used for a lambda which
+	// always has an argument.
+	if (cctx->ctx_ufunc->uf_ret_type->tt_type != VAR_VOID)
 	{
 	    emsg(_("E1003: Missing return value"));
 	    return NULL;
@@ -3416,7 +3416,10 @@
     cctx_T  *cctx = (cctx_T *)cookie;
 
     if (cctx->ctx_lnum == cctx->ctx_ufunc->uf_lines.ga_len)
-	NULL;
+    {
+	iemsg("Heredoc got to end");
+	return NULL;
+    }
     ++cctx->ctx_lnum;
     return vim_strsave(((char_u **)cctx->ctx_ufunc->uf_lines.ga_data)
 							     [cctx->ctx_lnum]);
@@ -3472,6 +3475,10 @@
 	return NULL;
     }
 
+    // "a: type" is declaring variable "a" with a type, not "a:".
+    if (is_decl && p == arg + 2 && p[-1] == ':')
+	--p;
+
     varlen = p - arg;
     name = vim_strnsave(arg, (int)varlen);
     if (name == NULL)
@@ -3499,6 +3506,7 @@
 	    p = find_option_end(&p, &opt_flags);
 	    if (p == NULL)
 	    {
+		// cannot happen?
 		emsg(_(e_letunexp));
 		return NULL;
 	    }
@@ -3508,7 +3516,7 @@
 	    *p = cc;
 	    if (opt_type == -3)
 	    {
-		semsg(_(e_unknown_option), *arg);
+		semsg(_(e_unknown_option), arg);
 		return NULL;
 	    }
 	    if (opt_type == -2 || opt_type == 0)
