diff --git a/src/eval.c b/src/eval.c
index bb402de..6bc2b29 100644
--- a/src/eval.c
+++ b/src/eval.c
@@ -368,12 +368,12 @@
  * Return FAIL for an error, OK otherwise.
  */
     int
-skip_expr(char_u **pp)
+skip_expr(char_u **pp, evalarg_T *evalarg)
 {
     typval_T	rettv;
 
     *pp = skipwhite(*pp);
-    return eval1(pp, &rettv, NULL);
+    return eval1(pp, &rettv, evalarg);
 }
 
 /*
diff --git a/src/ex_docmd.c b/src/ex_docmd.c
index 1ccd38e..5c46411 100644
--- a/src/ex_docmd.c
+++ b/src/ex_docmd.c
@@ -640,7 +640,7 @@
     struct dbg_stuff debug_saved;	// saved things for debug mode
     int		initial_trylevel;
     msglist_T	**saved_msg_list = NULL;
-    msglist_T	*private_msg_list;
+    msglist_T	*private_msg_list = NULL;
 
     // "fgetline" and "cookie" passed to do_one_cmd()
     char_u	*(*cmd_getline)(int, void *, int, getline_opt_T);
@@ -664,7 +664,6 @@
     // BufWritePost autocommands are executed after a write error.
     saved_msg_list = msg_list;
     msg_list = &private_msg_list;
-    private_msg_list = NULL;
 #endif
 
     // It's possible to create an endless loop with ":execute", catch that
@@ -3256,7 +3255,7 @@
 
 		// When followed by "=" or "+=" then it is an assignment.
 		++emsg_silent;
-		if (skip_expr(&after) == OK
+		if (skip_expr(&after, NULL) == OK
 				  && (*after == '='
 				      || (*after != NUL && after[1] == '=')))
 		    eap->cmdidx = CMD_var;
@@ -4391,7 +4390,7 @@
 	if (p[0] == '`' && p[1] == '=')
 	{
 	    p += 2;
-	    (void)skip_expr(&p);
+	    (void)skip_expr(&p, NULL);
 	    if (*p == '`')
 		++p;
 	    continue;
@@ -4666,7 +4665,7 @@
 	else if (p[0] == '`' && p[1] == '=' && (eap->argt & EX_XFILE))
 	{
 	    p += 2;
-	    (void)skip_expr(&p);
+	    (void)skip_expr(&p, NULL);
 	}
 #endif
 
diff --git a/src/misc1.c b/src/misc1.c
index bab9e68..058e860 100644
--- a/src/misc1.c
+++ b/src/misc1.c
@@ -1329,7 +1329,7 @@
 
 	    var = src;
 	    src += 2;
-	    (void)skip_expr(&src);
+	    (void)skip_expr(&src, NULL);
 	    if (*src == '`')
 		++src;
 	    len = src - var;
diff --git a/src/proto/eval.pro b/src/proto/eval.pro
index c32403f..58ec79c 100644
--- a/src/proto/eval.pro
+++ b/src/proto/eval.pro
@@ -9,7 +9,7 @@
 int eval_expr_typval(typval_T *expr, typval_T *argv, int argc, typval_T *rettv);
 int eval_expr_to_bool(typval_T *expr, int *error);
 char_u *eval_to_string_skip(char_u *arg, exarg_T *eap, int skip);
-int skip_expr(char_u **pp);
+int skip_expr(char_u **pp, evalarg_T *evalarg);
 int skip_expr_concatenate(char_u **arg, char_u **start, char_u **end, evalarg_T *evalarg);
 char_u *eval_to_string(char_u *arg, int convert);
 char_u *eval_to_string_safe(char_u *arg, int use_sandbox);
diff --git a/src/testdir/test_vim9_cmd.vim b/src/testdir/test_vim9_cmd.vim
index ad3454d..296aa55 100644
--- a/src/testdir/test_vim9_cmd.vim
+++ b/src/testdir/test_vim9_cmd.vim
@@ -242,6 +242,13 @@
   CheckScriptSuccess(lines)
 enddef
 
+def Test_skipped_expr_linebreak()
+  if 0
+    var x = []
+               ->map({ -> 0})
+  endif
+enddef
+
 def Test_dict_member()
    var test: dict<list<number>> = {'data': [3, 1, 2]}
    test.data->sort()
diff --git a/src/version.c b/src/version.c
index 2340ab8..4b27b16 100644
--- a/src/version.c
+++ b/src/version.c
@@ -751,6 +751,8 @@
 static int included_patches[] =
 {   /* Add new patch number below this line */
 /**/
+    1891,
+/**/
     1890,
 /**/
     1889,
diff --git a/src/vim9compile.c b/src/vim9compile.c
index 58f4db9..45c35b2 100644
--- a/src/vim9compile.c
+++ b/src/vim9compile.c
@@ -4385,7 +4385,11 @@
     // Ignore all kinds of errors when not producing code.
     if (cctx->ctx_skip == SKIP_YES)
     {
-	skip_expr(arg);
+	evalarg_T	evalarg;
+
+	CLEAR_FIELD(evalarg);
+	evalarg.eval_cctx = cctx;
+	skip_expr(arg, &evalarg);
 	return OK;
     }
 
