summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorBram Moolenaar <Bram@vim.org>2021-03-22 18:22:30 +0100
committerBram Moolenaar <Bram@vim.org>2021-03-22 18:22:30 +0100
commite98f60a5912d30db289231aed7d3a1d74beaae20 (patch)
treebfc76ac680fdc73625d2f43f4fd592e55e79dacc
parent2cec027af461095f96dec3bfd036c267f790b0f4 (diff)
downloadvim-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.vim5
-rw-r--r--src/userfunc.c7
-rw-r--r--src/version.c2
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,