neovim

Neovim text editor
git clone https://git.dasho.dev/neovim.git
Log | Files | Refs | README

commit a4114f16bf0867bc93ef2c1cc47f01383c9820ee
parent fdeb20ddde627ea99521a2c4c1525a91ffcd763c
Author: zeertzjq <zeertzjq@outlook.com>
Date:   Fri, 18 Nov 2022 22:19:14 +0800

vim-patch:8.2.0469: Vim9: no error for missing ] after list

Problem:    Vim9: no error for missing ] after list.
Solution:   Add error message. Add more tests.

https://github.com/vim/vim/commit/ee619e5bc0992e818f2d9540b093b769b9c27651

Co-authored-by: Bram Moolenaar <Bram@vim.org>

Diffstat:
Msrc/nvim/eval.c | 3++-
Msrc/nvim/eval/userfunc.c | 1+
Msrc/nvim/testdir/test_lambda.vim | 2+-
3 files changed, 4 insertions(+), 2 deletions(-)

diff --git a/src/nvim/eval.c b/src/nvim/eval.c @@ -90,6 +90,7 @@ #define DICT_MAXNEST 100 // maximum nesting of lists and dicts static char *e_missbrac = N_("E111: Missing ']'"); +static char *e_list_end = N_("E697: Missing end of List ']': %s"); static char *e_dictrange = N_("E719: Cannot use [:] with a Dictionary"); static char *e_nowhitespace = N_("E274: No white space allowed before parenthesis"); @@ -4035,7 +4036,7 @@ static int get_list_tv(char **arg, typval_T *rettv, int evaluate) } if (**arg != ']') { - semsg(_("E697: Missing end of List ']': %s"), *arg); + semsg(_(e_list_end), *arg); failret: if (evaluate) { tv_list_free(l); diff --git a/src/nvim/eval/userfunc.c b/src/nvim/eval/userfunc.c @@ -297,6 +297,7 @@ int get_lambda_tv(char **arg, typval_T *rettv, bool evaluate) e = (char_u *)(*arg); *arg = skipwhite(*arg); if (**arg != '}') { + semsg(_("E451: Expected }: %s"), *arg); goto errret; } (*arg)++; diff --git a/src/nvim/testdir/test_lambda.vim b/src/nvim/testdir/test_lambda.vim @@ -62,7 +62,7 @@ endfunc function Test_lambda_fails() call assert_equal(3, {a, b -> a + b}(1, 2)) call assert_fails('echo {a, a -> a + a}(1, 2)', 'E853:') - call assert_fails('echo {a, b -> a + b)}(1, 2)', 'E15:') + call assert_fails('echo {a, b -> a + b)}(1, 2)', 'E451:') echo assert_fails('echo 10->{a -> a + 2}', 'E107:') endfunc