Mercurial > vim
changeset 21767:9529a2367d3e v8.2.1433
patch 8.2.1433: Vim9: cannot mingle comments in multi-line lambda
Commit: https://github.com/vim/vim/commit/ba60cc45e786166767ca80f3dea6236d993c7971
Author: Bram Moolenaar <Bram@vim.org>
Date: Wed Aug 12 19:15:33 2020 +0200
patch 8.2.1433: Vim9: cannot mingle comments in multi-line lambda
Problem: Vim9: cannot mingle comments in multi-line lambda.
Solution: Skip over NULL lines. (closes https://github.com/vim/vim/issues/6694)
author | Bram Moolenaar <Bram@vim.org> |
---|---|
date | Wed, 12 Aug 2020 19:30:04 +0200 |
parents | 283490dee44d |
children | c680589182eb |
files | src/testdir/test_vim9_expr.vim src/version.c src/vim9compile.c |
diffstat | 3 files changed, 24 insertions(+), 5 deletions(-) [+] |
line wrap: on
line diff
--- 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
--- 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,
--- 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; }