diff options
author | Bram Moolenaar <Bram@vim.org> | 2021-03-22 18:22:30 +0100 |
---|---|---|
committer | Bram Moolenaar <Bram@vim.org> | 2021-03-22 18:22:30 +0100 |
commit | e98f60a5912d30db289231aed7d3a1d74beaae20 (patch) | |
tree | bfc76ac680fdc73625d2f43f4fd592e55e79dacc | |
parent | 2cec027af461095f96dec3bfd036c267f790b0f4 (diff) | |
download | vim-git-e98f60a5912d30db289231aed7d3a1d74beaae20.tar.gz |
patch 8.2.2642: Vim9: no clear error for wrong inline functionv8.2.2642
Problem: Vim9: no clear error for wrong inline function.
Solution: Check for something following the "{".
-rw-r--r-- | src/testdir/test_vim9_expr.vim | 5 | ||||
-rw-r--r-- | src/userfunc.c | 7 | ||||
-rw-r--r-- | src/version.c | 2 |
3 files changed, 13 insertions, 1 deletions
diff --git a/src/testdir/test_vim9_expr.vim b/src/testdir/test_vim9_expr.vim index 6b9b54a58..c181b203f 100644 --- a/src/testdir/test_vim9_expr.vim +++ b/src/testdir/test_vim9_expr.vim @@ -1963,6 +1963,11 @@ def Test_expr7_lambda_block() assert_equal(['no', 'yes', 'no'], dll) END CheckDefAndScriptSuccess(lines) + + lines =<< trim END + map([1, 2], (k, v) => { redrawt }) + END + CheckDefAndScriptFailure(lines, 'E488') enddef def NewLambdaWithComments(): func diff --git a/src/userfunc.c b/src/userfunc.c index a53c4769c..c9c7bc791 100644 --- a/src/userfunc.c +++ b/src/userfunc.c @@ -954,10 +954,15 @@ lambda_function_body( int lnum_save = -1; linenr_T sourcing_lnum_top = SOURCING_LNUM; + if (!ends_excmd2(*arg, skipwhite(*arg + 1))) + { + semsg(_(e_trailing_arg), *arg + 1); + return FAIL; + } + CLEAR_FIELD(eap); eap.cmdidx = CMD_block; eap.forceit = FALSE; - eap.arg = *arg + 1; eap.cmdlinep = &cmdline; eap.skip = !evaluate; if (evalarg->eval_cctx != NULL) diff --git a/src/version.c b/src/version.c index 3a5365a86..fbe38b806 100644 --- a/src/version.c +++ b/src/version.c @@ -751,6 +751,8 @@ static char *(features[]) = static int included_patches[] = { /* Add new patch number below this line */ /**/ + 2642, +/**/ 2641, /**/ 2640, |