From e98f60a5912d30db289231aed7d3a1d74beaae20 Mon Sep 17 00:00:00 2001 From: Bram Moolenaar Date: Mon, 22 Mar 2021 18:22:30 +0100 Subject: [PATCH] patch 8.2.2642: Vim9: no clear error for wrong inline function Problem: Vim9: no clear error for wrong inline function. Solution: Check for something following the "{". --- src/testdir/test_vim9_expr.vim | 5 +++++ src/userfunc.c | 7 ++++++- src/version.c | 2 ++ 3 files changed, 13 insertions(+), 1 deletion(-) 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 @@ -750,6 +750,8 @@ static char *(features[]) = static int included_patches[] = { /* Add new patch number below this line */ +/**/ + 2642, /**/ 2641, /**/ -- 2.50.1