diff options
author | Bram Moolenaar <Bram@vim.org> | 2020-08-12 19:15:33 +0200 |
---|---|---|
committer | Bram Moolenaar <Bram@vim.org> | 2020-08-12 19:15:33 +0200 |
commit | ba60cc45e786166767ca80f3dea6236d993c7971 (patch) | |
tree | 869b24c6dd04aacfb5a68c0f7cee9d0ec43946e4 | |
parent | 6d91bcb4d23b5c6a0be72c384beaf385e2d9d606 (diff) |
patch 8.2.1433: Vim9: cannot mingle comments in multi-line lambdav8.2.1433
Problem: Vim9: cannot mingle comments in multi-line lambda.
Solution: Skip over NULL lines. (closes #6694)
-rw-r--r-- | src/testdir/test_vim9_expr.vim | 15 | ||||
-rw-r--r-- | src/version.c | 2 | ||||
-rw-r--r-- | src/vim9compile.c | 12 |
3 files changed, 24 insertions, 5 deletions
diff --git a/src/testdir/test_vim9_expr.vim b/src/testdir/test_vim9_expr.vim index c87f2b2213..d6313d363f 100644 --- a/src/testdir/test_vim9_expr.vim +++ b/src/testdir/test_vim9_expr.vim @@ -1433,6 +1433,16 @@ def Test_expr7_list_vim9script() CheckScriptFailure(lines, 'E1068:') enddef +def LambdaWithComments(): func + return {x -> + # some comment + x == 1 + # some comment + || + x == 2 + } +enddef + def Test_expr7_lambda() let La = { -> 'result'} assert_equal('result', La()) @@ -1466,6 +1476,11 @@ def Test_expr7_lambda() assert_equal([{'key': 12}], filter(dl, {_, v -> has_key(v, 'key') ? v['key'] == 12 : 0})) + assert_equal(false, LambdaWithComments()(0)) + assert_equal(true, LambdaWithComments()(1)) + assert_equal(true, LambdaWithComments()(2)) + assert_equal(false, LambdaWithComments()(3)) + call CheckDefFailure(["filter([1, 2], {k,v -> 1})"], 'E1069:') enddef diff --git a/src/version.c b/src/version.c index 5c942d7424..e182ea6aa9 100644 --- a/src/version.c +++ b/src/version.c @@ -755,6 +755,8 @@ static char *(features[]) = static int included_patches[] = { /* Add new patch number below this line */ /**/ + 1433, +/**/ 1432, /**/ 1431, diff --git a/src/vim9compile.c b/src/vim9compile.c index 8b58d96889..87bb0e2c70 100644 --- a/src/vim9compile.c +++ b/src/vim9compile.c @@ -1729,11 +1729,13 @@ peek_next_line_from_context(cctx_T *cctx) char_u *line = ((char_u **)cctx->ctx_ufunc->uf_lines.ga_data)[lnum]; char_u *p; - if (line == NULL) - break; - p = skipwhite(line); - if (*p != NUL && !vim9_comment_start(p)) - return p; + // ignore NULLs inserted for continuation lines + if (line != NULL) + { + p = skipwhite(line); + if (*p != NUL && !vim9_comment_start(p)) + return p; + } } return NULL; } |