diff --git a/src/errors.h b/src/errors.h
index 72c0d12..5ac7b3f 100644
--- a/src/errors.h
+++ b/src/errors.h
@@ -2780,14 +2780,15 @@
 	INIT(= N_("E1074: No white space allowed after dot"));
 EXTERN char e_namespace_not_supported_str[]
 	INIT(= N_("E1075: Namespace not supported: %s"));
-#ifndef FEAT_FLOAT
+# ifndef FEAT_FLOAT
 EXTERN char e_this_vim_is_not_compiled_with_float_support[]
 	INIT(= N_("E1076: This Vim is not compiled with float support"));
-#endif
+# endif
 EXTERN char e_missing_argument_type_for_str[]
 	INIT(= N_("E1077: Missing argument type for %s"));
 // E1078 unused
-// E1079 unused
+EXTERN char e_cannot_declare_variable_on_command_line[]
+	INIT(= N_("E1079: Cannot declare a variable on the command line"));
 EXTERN char e_invalid_assignment[]
 	INIT(= N_("E1080: Invalid assignment"));
 EXTERN char e_cannot_unlet_str[]
diff --git a/src/evalvars.c b/src/evalvars.c
index eb69d3e..260c297 100644
--- a/src/evalvars.c
+++ b/src/evalvars.c
@@ -759,6 +759,11 @@
 	semsg(_(e_str_cannot_be_used_in_legacy_vim_script), ":var");
 	return;
     }
+    if (current_sctx.sc_sid == 0)
+    {
+	emsg(_(e_cannot_declare_variable_on_command_line));
+	return;
+    }
     ex_let(eap);
 }
 
@@ -3440,7 +3445,7 @@
 	if (in_vim9script() && is_export
 		&& SCRIPT_ID_VALID(current_sctx.sc_sid)
 		&& (si = SCRIPT_ITEM(current_sctx.sc_sid))
-						   ->sn_autoload_prefix != NULL)
+						  ->sn_autoload_prefix != NULL)
 	{
 	    // In a vim9 autoload script an exported variable is put in the
 	    // global namespace with the autoload prefix.
diff --git a/src/testdir/dumps/Test_vim9_reject_declaration.dump b/src/testdir/dumps/Test_vim9_reject_declaration.dump
new file mode 100644
index 0000000..e4f5623
--- /dev/null
+++ b/src/testdir/dumps/Test_vim9_reject_declaration.dump
@@ -0,0 +1,6 @@
+|~+0#4040ff13#ffffff0| @73
+|~| @73
+|~| @73
+|~| @73
+|E+0#ffffff16#e000002|1|0|7|9|:| |C|a|n@1|o|t| |d|e|c|l|a|r|e| |a| |v|a|r|i|a|b|l|e| |o|n| |t|h|e| |c|o|m@1|a|n|d| |l|i|n|e| +0#0000000#ffffff0@22
+|P+0#00e0003&|r|e|s@1| |E|N|T|E|R| |o|r| |t|y|p|e| |c|o|m@1|a|n|d| |t|o| |c|o|n|t|i|n|u|e> +0#0000000&@35
diff --git a/src/testdir/test_vim9_assign.vim b/src/testdir/test_vim9_assign.vim
index 565d897..ccf2a01 100644
--- a/src/testdir/test_vim9_assign.vim
+++ b/src/testdir/test_vim9_assign.vim
@@ -2480,23 +2480,6 @@
   delete('Xtestscript')
 enddef
 
-func Test_declare_command_line()
-  CheckRunVimInTerminal
-  call Run_Test_declare_command_line()
-endfunc
-
-def Run_Test_declare_command_line()
-  # On the command line the type is parsed but not used.
-  # To get rid of the script context have to run this in another Vim instance.
-  var buf = g:RunVimInTerminal('', {'rows': 6})
-  term_sendkeys(buf, ":vim9 var abc: list<list<number>> = [ [1, 2, 3], [4, 5, 6] ]\<CR>")
-  g:TermWait(buf)
-  term_sendkeys(buf, ":echo abc\<CR>")
-  g:TermWait(buf)
-  g:WaitForAssert(() => assert_match('\[\[1, 2, 3\], \[4, 5, 6\]\]', term_getline(buf, 6)))
-  g:StopVimInTerminal(buf)
-enddef
-
 def Test_using_s_var_in_function()
   var lines =<< trim END
       vim9script
diff --git a/src/testdir/test_vim9_script.vim b/src/testdir/test_vim9_script.vim
index 68178cf..87acff6 100644
--- a/src/testdir/test_vim9_script.vim
+++ b/src/testdir/test_vim9_script.vim
@@ -3326,34 +3326,50 @@
 func Test_no_redraw_when_restoring_cpo()
   CheckScreendump
   CheckFeature timers
+  call Run_test_no_redraw_when_restoring_cpo()
+endfunc
 
-  let lines =<< trim END
+def Run_test_no_redraw_when_restoring_cpo()
+  var lines =<< trim END
     vim9script
     export def Func()
     enddef
   END
-  call mkdir('Xdir/autoload', 'p')
-  call writefile(lines, 'Xdir/autoload/script.vim')
+  mkdir('Xdir/autoload', 'p')
+  writefile(lines, 'Xdir/autoload/script.vim')
 
-  let lines =<< trim END
+  lines =<< trim END
       vim9script
       set cpo+=M
       exe 'set rtp^=' .. getcwd() .. '/Xdir'
       au CmdlineEnter : ++once timer_start(0, (_) => script#Func())
       setline(1, 'some text')
   END
-  call writefile(lines, 'XTest_redraw_cpo')
-  let buf = g:RunVimInTerminal('-S XTest_redraw_cpo', {'rows': 6})
-  call term_sendkeys(buf, "V:")
-  call VerifyScreenDump(buf, 'Test_vim9_no_redraw', {})
+  writefile(lines, 'XTest_redraw_cpo')
+  var buf = g:RunVimInTerminal('-S XTest_redraw_cpo', {'rows': 6})
+  term_sendkeys(buf, "V:")
+  g:VerifyScreenDump(buf, 'Test_vim9_no_redraw', {})
 
-  " clean up
-  call term_sendkeys(buf, "\<Esc>u")
-  call g:StopVimInTerminal(buf)
-  call delete('XTest_redraw_cpo')
-  call delete('Xdir', 'rf')
+  # clean up
+  term_sendkeys(buf, "\<Esc>u")
+  g:StopVimInTerminal(buf)
+  delete('XTest_redraw_cpo')
+  delete('Xdir', 'rf')
+enddef
+
+func Test_reject_declaration()
+  CheckScreendump
+  call Run_test_reject_declaration()
 endfunc
 
+def Run_test_reject_declaration()
+  var buf = g:RunVimInTerminal('', {'rows': 6})
+  term_sendkeys(buf, ":vim9cmd var x: number\<CR>")
+  g:VerifyScreenDump(buf, 'Test_vim9_reject_declaration', {})
+
+  # clean up
+  g:StopVimInTerminal(buf)
+enddef
 
 def Test_unset_any_variable()
   var lines =<< trim END
diff --git a/src/version.c b/src/version.c
index c6a9f73..ce9e7e5 100644
--- a/src/version.c
+++ b/src/version.c
@@ -755,6 +755,8 @@
 static int included_patches[] =
 {   /* Add new patch number below this line */
 /**/
+    4500,
+/**/
     4499,
 /**/
     4498,
