diff --git a/src/eval.c b/src/eval.c
index 98d16c8..58d98e5 100644
--- a/src/eval.c
+++ b/src/eval.c
@@ -1968,6 +1968,29 @@
 }
 
 /*
+ * Get the next line source line without advancing.  But do skip over comment
+ * lines.
+ */
+    static char_u *
+getline_peek_skip_comments(evalarg_T *evalarg)
+{
+    for (;;)
+    {
+	char_u *next = getline_peek(evalarg->eval_getline,
+							 evalarg->eval_cookie);
+	char_u *p;
+
+	if (next == NULL)
+	    break;
+	p = skipwhite(next);
+	if (*p != NUL && !vim9_comment_start(p))
+	    return next;
+	(void)eval_next_line(evalarg);
+    }
+    return NULL;
+}
+
+/*
  * If inside Vim9 script, "arg" points to the end of a line (ignoring a #
  * comment) and there is a next line, return the next line (skipping blanks)
  * and set "getnext".
@@ -1988,7 +2011,7 @@
 	char_u *next;
 
 	if (evalarg->eval_cookie != NULL)
-	    next = getline_peek(evalarg->eval_getline, evalarg->eval_cookie);
+	    next = getline_peek_skip_comments(evalarg);
 	else
 	    next = peek_next_line_from_context(evalarg->eval_cctx);
 
diff --git a/src/testdir/test_vim9_expr.vim b/src/testdir/test_vim9_expr.vim
index 9292a77..b279df2 100644
--- a/src/testdir/test_vim9_expr.vim
+++ b/src/testdir/test_vim9_expr.vim
@@ -90,6 +90,16 @@
   END
   CheckScriptSuccess(lines)
 
+  lines =<< trim END
+      vim9script
+      var name = v:false ?  # comment
+      		'yes' :
+                # comment
+		'no' # comment
+      assert_equal('no', name)
+  END
+  CheckScriptSuccess(lines)
+
   # check white space
   lines =<< trim END
       vim9script
@@ -279,6 +289,17 @@
   END
   CheckScriptSuccess(lines)
 
+  lines =<< trim END
+      vim9script
+      var name = v:false || # comment
+                # comment
+      		v:true ||
+                # comment
+		v:false # comment
+      assert_equal(v:true, name)
+  END
+  CheckScriptSuccess(lines)
+
   # check white space
   lines =<< trim END
       vim9script
@@ -405,6 +426,17 @@
   END
   CheckScriptSuccess(lines)
 
+  lines =<< trim END
+      vim9script
+      var name = v:true &&  # comment
+                # comment
+      		v:true &&
+                # comment
+      		v:true
+      assert_equal(v:true, name)
+  END
+  CheckScriptSuccess(lines)
+
   # check white space
   lines =<< trim END
       vim9script
@@ -800,6 +832,7 @@
   lines =<< trim END
       vim9script
       var name = 123
+                # comment
       		!= 123
       assert_equal(false, name)
   END
@@ -824,6 +857,16 @@
 
   lines =<< trim END
       vim9script
+      var list = [1, 2, 3]
+      var name = list # comment
+                 # comment
+      		is list
+      assert_equal(true, name)
+  END
+  CheckScriptSuccess(lines)
+
+  lines =<< trim END
+      vim9script
       var myblob = 0z1234
       var name = myblob
       		isnot 0z11
@@ -1059,6 +1102,16 @@
 
   lines =<< trim END
       vim9script
+      var name = 11 +  # comment
+		  77 -
+                  # comment
+		  22
+      assert_equal(66, name)
+  END
+  CheckScriptSuccess(lines)
+
+  lines =<< trim END
+      vim9script
       var name = 'one'
       		.. 'two'
       assert_equal('onetwo', name)
@@ -1305,6 +1358,17 @@
 
   lines =<< trim END
       vim9script
+      var name = 25
+                # comment
+
+                # comment
+      		% 10
+      assert_equal(5, name)
+  END
+  CheckScriptSuccess(lines)
+
+  lines =<< trim END
+      vim9script
       var name = 11 *
       		22 /
 		3
@@ -1618,6 +1682,12 @@
       echo [1,
 	    2] [3,
 		    4]
+
+      echo [1, # comment
+            # comment
+	    2] [3,
+            # comment
+		    4]
   END
   CheckScriptSuccess(lines)
 
@@ -1832,6 +1902,17 @@
 		'two': 2,
 		   }
       assert_equal({'one': 1, 'two': 2}, d)
+
+      d = {  # comment
+		'one':
+                # comment
+
+		   1,
+                # comment
+                # comment
+		'two': 2,
+		   }
+      assert_equal({'one': 1, 'two': 2}, d)
   END
   CheckScriptSuccess(lines)
 
diff --git a/src/version.c b/src/version.c
index 035ab27..8f85e6b 100644
--- a/src/version.c
+++ b/src/version.c
@@ -751,6 +751,8 @@
 static int included_patches[] =
 {   /* Add new patch number below this line */
 /**/
+    1838,
+/**/
     1837,
 /**/
     1836,
