patch 8.2.4897: comment inside an expression in lambda ignores the rest

Problem:    Comment inside an expression in lambda ignores the rest of the
            expression.
Solution:   Truncate the line at the comment. (closes #10367)
diff --git a/src/eval.c b/src/eval.c
index 317446c..41094cd 100644
--- a/src/eval.c
+++ b/src/eval.c
@@ -2208,8 +2208,15 @@
     garray_T	*gap = &evalarg->eval_ga;
     char_u	*line;
 
-    if (arg != NULL && *arg == NL)
-	return skipwhite(arg + 1);
+    if (arg != NULL)
+    {
+	if (*arg == NL)
+	    return skipwhite(arg + 1);
+	// Truncate before a trailing comment, so that concatenating the lines
+	// won't turn the rest into a comment.
+	if (*skipwhite(arg) == '#')
+	    *arg = NUL;
+    }
 
     if (evalarg->eval_cookie != NULL)
 	line = evalarg->eval_getline(0, evalarg->eval_cookie, 0,
diff --git a/src/testdir/test_lambda.vim b/src/testdir/test_lambda.vim
index a5dce93..130a081 100644
--- a/src/testdir/test_lambda.vim
+++ b/src/testdir/test_lambda.vim
@@ -70,6 +70,16 @@
   exe 'sleep ' .. [20, 100, 500, 500, 500][g:run_nr] .. 'm'
   call assert_equal('done', g:result)
   unlet g:result
+
+  let lines =<< trim END
+      g:result = [0]->map((_, v) =>
+          1 # inline comment
+          +
+          2
+      )
+      assert_equal([3], g:result)
+  END
+  call v9.CheckDefAndScriptSuccess(lines)
 endfunc
 
 func Test_lambda_with_partial()
diff --git a/src/version.c b/src/version.c
index d20ecf2..be7bb22 100644
--- a/src/version.c
+++ b/src/version.c
@@ -747,6 +747,8 @@
 static int included_patches[] =
 {   /* Add new patch number below this line */
 /**/
+    4897,
+/**/
     4896,
 /**/
     4895,