summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorBram Moolenaar <Bram@vim.org>2020-07-11 15:20:48 +0200
committerBram Moolenaar <Bram@vim.org>2020-07-11 15:20:48 +0200
commit914e7eaa67f8d816e15fb4a1180e6bece88d9742 (patch)
tree0d5e3deec46b656eca8bcbb3c77b5d94490c032b
parent21e5bdd271fa4d0ff4511cf74b160315e1d17cff (diff)
patch 8.2.1182: Vim9: no check for whitespace after comma in lambdav8.2.1182
Problem: Vim9: no check for whitespace after comma in lambda. Solution: Give error if white space is missing.
-rw-r--r--src/testdir/test_vim9_expr.vim3
-rw-r--r--src/testdir/test_vim9_func.vim2
-rw-r--r--src/userfunc.c12
-rw-r--r--src/version.c2
4 files changed, 16 insertions, 3 deletions
diff --git a/src/testdir/test_vim9_expr.vim b/src/testdir/test_vim9_expr.vim
index ef56a67111..edc655aeac 100644
--- a/src/testdir/test_vim9_expr.vim
+++ b/src/testdir/test_vim9_expr.vim
@@ -1067,10 +1067,11 @@ def Test_expr7_list_vim9script()
enddef
def Test_expr7_lambda()
- " lambda
let La = { -> 'result'}
assert_equal('result', La())
assert_equal([1, 3, 5], [1, 2, 3]->map({key, val -> key + val}))
+
+ call CheckDefFailure(["filter([1, 2], {k,v -> 1})"], 'E1069:')
enddef
def Test_expr7_lambda_vim9script()
diff --git a/src/testdir/test_vim9_func.vim b/src/testdir/test_vim9_func.vim
index f09ecc9b3b..77ada94809 100644
--- a/src/testdir/test_vim9_func.vim
+++ b/src/testdir/test_vim9_func.vim
@@ -967,7 +967,7 @@ enddef
def Line_continuation_in_lambda(): list<number>
let x = range(97, 100)
- ->map({_,v -> nr2char(v)
+ ->map({_, v -> nr2char(v)
->toupper()})
->reverse()
return x
diff --git a/src/userfunc.c b/src/userfunc.c
index 2f253c95fd..b5b57ec880 100644
--- a/src/userfunc.c
+++ b/src/userfunc.c
@@ -266,10 +266,20 @@ get_function_args(
else if (any_default)
{
emsg(_("E989: Non-default argument follows default argument"));
- mustend = TRUE;
+ goto err_ret;
}
if (*p == ',')
+ {
++p;
+ // Don't give this error when skipping, it makes the "->" not
+ // found in "{k,v -> x}" and give a confusing error.
+ if (!skip && in_vim9script()
+ && !IS_WHITE_OR_NUL(*p) && *p != endchar)
+ {
+ semsg(_(e_white_after), ",");
+ goto err_ret;
+ }
+ }
else
mustend = TRUE;
}
diff --git a/src/version.c b/src/version.c
index bbb2c28f8b..c15cc04610 100644
--- a/src/version.c
+++ b/src/version.c
@@ -755,6 +755,8 @@ static char *(features[]) =
static int included_patches[] =
{ /* Add new patch number below this line */
/**/
+ 1182,
+/**/
1181,
/**/
1180,