diff --git a/src/errors.h b/src/errors.h
index 30f0dc5..b8cb32f 100644
--- a/src/errors.h
+++ b/src/errors.h
@@ -61,7 +61,7 @@
 	INIT(= N_("E1013: Argument %d: type mismatch, expected %s but got %s"));
 EXTERN char e_invalid_key_str[]
 	INIT(= N_("E1014: Invalid key: %s"));
-EXTERN char e_name_expected[]
+EXTERN char e_name_expected_str[]
 	INIT(= N_("E1015: Name expected: %s"));
 EXTERN char e_cannot_declare_a_scope_variable[]
 	INIT(= N_("E1016: Cannot declare a %s variable: %s"));
@@ -315,3 +315,5 @@
 	INIT(= N_("E1141: Indexable type required"));
 EXTERN char e_non_empty_string_required[]
 	INIT(= N_("E1142: Non-empty string required"));
+EXTERN char e_empty_expression_str[]
+	INIT(= N_("E1143: empty expression: \"%s\""));
diff --git a/src/testdir/test_vim9_disassemble.vim b/src/testdir/test_vim9_disassemble.vim
index fabb8d2..7ea1491 100644
--- a/src/testdir/test_vim9_disassemble.vim
+++ b/src/testdir/test_vim9_disassemble.vim
@@ -15,6 +15,7 @@
 def s:ScriptFuncLoad(arg: string)
   var local = 1
   buffers
+  echo
   echo arg
   echo local
   echo &lines
@@ -43,14 +44,27 @@
 
   var res = execute('disass s:ScriptFuncLoad')
   assert_match('<SNR>\d*_ScriptFuncLoad.*' ..
-        'buffers.*' ..
-        ' EXEC \+buffers.*' ..
-        ' LOAD arg\[-1\].*' ..
-        ' LOAD $0.*' ..
-        ' LOADOPT &lines.*' ..
-        ' LOADV v:version.*' ..
-        ' LOADS s:scriptvar from .*test_vim9_disassemble.vim.*' ..
-        ' LOADG g:globalvar.*' ..
+        'buffers\_s*' ..
+        '\d\+ EXEC \+buffers\_s*' ..
+        'echo\_s*' ..
+        'echo arg\_s*' ..
+        '\d\+ LOAD arg\[-1\]\_s*' ..
+        '\d\+ ECHO 1\_s*' ..
+        'echo local\_s*' ..
+        '\d\+ LOAD $0\_s*' ..
+        '\d\+ ECHO 1\_s*' ..
+        'echo &lines\_s*' ..
+        '\d\+ LOADOPT &lines\_s*' ..
+        '\d\+ ECHO 1\_s*' ..
+        'echo v:version\_s*' ..
+        '\d\+ LOADV v:version\_s*' ..
+        '\d\+ ECHO 1\_s*' ..
+        'echo s:scriptvar\_s*' ..
+        '\d\+ LOADS s:scriptvar from .*test_vim9_disassemble.vim\_s*' ..
+        '\d\+ ECHO 1\_s*' ..
+        'echo g:globalvar\_s*' ..
+        '\d\+ LOADG g:globalvar\_s*' ..
+        '\d\+ ECHO 1\_s*' ..
         'echo get(g:, "global")\_s*' ..
         '\d\+ LOAD g:\_s*' ..
         '\d\+ PUSHS "global"\_s*' ..
diff --git a/src/testdir/test_vim9_script.vim b/src/testdir/test_vim9_script.vim
index 45103fc..13e824a 100644
--- a/src/testdir/test_vim9_script.vim
+++ b/src/testdir/test_vim9_script.vim
@@ -620,7 +620,7 @@
   CheckDefFailure(['if 1', 'endtry'], 'E171:')
   CheckDefFailure(['try', 'echo 1', 'endtry'], 'E1032:')
 
-  CheckDefFailure(['throw'], 'E1015:')
+  CheckDefFailure(['throw'], 'E1143:')
   CheckDefFailure(['throw xxx'], 'E1001:')
 enddef
 
@@ -1719,6 +1719,10 @@
 enddef
 
 def Test_execute_cmd()
+  # missing argument is ignored
+  execute
+  execute # comment
+
   new
   setline(1, 'default')
   execute 'setline(1, "execute-string")'
@@ -2137,9 +2141,6 @@
       'vim9script',
       'exe "echo"# something',
       ], 'E121:')
-  CheckDefFailure([
-      'exe # comment',
-      ], 'E1015:')
   CheckScriptFailure([
       'vim9script',
       'exe# something',
@@ -2164,7 +2165,7 @@
       '  throw#comment',
       'catch',
       'endtry',
-      ], 'E1015:')
+      ], 'E1143:')
   CheckDefFailure([
       'try',
       '  throw "yes"#comment',
diff --git a/src/version.c b/src/version.c
index 0cb1d92..64391b4 100644
--- a/src/version.c
+++ b/src/version.c
@@ -751,6 +751,8 @@
 static int included_patches[] =
 {   /* Add new patch number below this line */
 /**/
+    2137,
+/**/
     2136,
 /**/
     2135,
diff --git a/src/vim9compile.c b/src/vim9compile.c
index 55abecf..6cbf784 100644
--- a/src/vim9compile.c
+++ b/src/vim9compile.c
@@ -3975,7 +3975,10 @@
 
 	if (!eval_isnamec1(**arg))
 	{
-	    semsg(_(e_name_expected), *arg);
+	    if (ends_excmd(*skipwhite(*arg)))
+		semsg(_(e_empty_expression_str), *arg);
+	    else
+		semsg(_(e_name_expected_str), *arg);
 	    return FAIL;
 	}
 
@@ -7101,28 +7104,31 @@
 compile_mult_expr(char_u *arg, int cmdidx, cctx_T *cctx)
 {
     char_u	*p = arg;
-    char_u	*prev;
+    char_u	*prev = arg;
     int		count = 0;
 
     for (;;)
     {
+	if (ends_excmd2(prev, p))
+	    break;
 	if (compile_expr0(&p, cctx) == FAIL)
 	    return NULL;
 	++count;
 	prev = p;
 	p = skipwhite(p);
-	if (ends_excmd2(prev, p))
-	    break;
     }
 
-    if (cmdidx == CMD_echo || cmdidx == CMD_echon)
-	generate_ECHO(cctx, cmdidx == CMD_echo, count);
-    else if (cmdidx == CMD_execute)
-	generate_MULT_EXPR(cctx, ISN_EXECUTE, count);
-    else if (cmdidx == CMD_echomsg)
-	generate_MULT_EXPR(cctx, ISN_ECHOMSG, count);
-    else
-	generate_MULT_EXPR(cctx, ISN_ECHOERR, count);
+    if (count > 0)
+    {
+	if (cmdidx == CMD_echo || cmdidx == CMD_echon)
+	    generate_ECHO(cctx, cmdidx == CMD_echo, count);
+	else if (cmdidx == CMD_execute)
+	    generate_MULT_EXPR(cctx, ISN_EXECUTE, count);
+	else if (cmdidx == CMD_echomsg)
+	    generate_MULT_EXPR(cctx, ISN_ECHOMSG, count);
+	else
+	    generate_MULT_EXPR(cctx, ISN_ECHOERR, count);
+    }
     return p;
 }
 
