Mercurial > vim
changeset 24202:c50c5464e6dc v8.2.2642
patch 8.2.2642: Vim9: no clear error for wrong inline function
Commit: https://github.com/vim/vim/commit/e98f60a5912d30db289231aed7d3a1d74beaae20
Author: Bram Moolenaar <Bram@vim.org>
Date: Mon Mar 22 18:22:30 2021 +0100
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 "{".
author | Bram Moolenaar <Bram@vim.org> |
---|---|
date | Mon, 22 Mar 2021 18:30:03 +0100 |
parents | 1b0ca859705b |
children | b78600b6b609 |
files | src/testdir/test_vim9_expr.vim src/userfunc.c src/version.c |
diffstat | 3 files changed, 13 insertions(+), 1 deletions(-) [+] |
line wrap: on
line diff
--- 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
--- 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)