summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorBram Moolenaar <Bram@vim.org>2022-05-06 21:51:50 +0100
committerBram Moolenaar <Bram@vim.org>2022-05-06 21:51:50 +0100
commit39be4981cdd93a185b110536f84d99ce56e2c3cc (patch)
tree099caa31cf7913347f4cc5d0f8c7fde1b1130035
parenta13e7acba9928a9c5e97be28946418d8d4323988 (diff)
downloadvim-git-39be4981cdd93a185b110536f84d99ce56e2c3cc.tar.gz
patch 8.2.4897: comment inside an expression in lambda ignores the restv8.2.4897
Problem: Comment inside an expression in lambda ignores the rest of the expression. Solution: Truncate the line at the comment. (closes #10367)
-rw-r--r--src/eval.c11
-rw-r--r--src/testdir/test_lambda.vim10
-rw-r--r--src/version.c2
3 files changed, 21 insertions, 2 deletions
diff --git a/src/eval.c b/src/eval.c
index 317446c76..41094cd69 100644
--- a/src/eval.c
+++ b/src/eval.c
@@ -2208,8 +2208,15 @@ eval_next_line(char_u *arg, evalarg_T *evalarg)
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 a5dce93e4..130a08108 100644
--- a/src/testdir/test_lambda.vim
+++ b/src/testdir/test_lambda.vim
@@ -70,6 +70,16 @@ func Test_lambda_vim9cmd_linebreak()
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 d20ecf216..be7bb22f8 100644
--- a/src/version.c
+++ b/src/version.c
@@ -747,6 +747,8 @@ static char *(features[]) =
static int included_patches[] =
{ /* Add new patch number below this line */
/**/
+ 4897,
+/**/
4896,
/**/
4895,