summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorBram Moolenaar <Bram@vim.org>2021-02-23 12:05:46 +0100
committerBram Moolenaar <Bram@vim.org>2021-02-23 12:05:46 +0100
commitbc327ccc3dd408463fc74266f57b879888a13e51 (patch)
treea8aa33ef7253b63b41431a23472db1508aceacab
parent9cb577a68277d46cc1134ef1723e90ff5f1d1b5c (diff)
downloadvim-git-bc327ccc3dd408463fc74266f57b879888a13e51.tar.gz
patch 8.2.2544: Vim9: error for argument when checking for lambdav8.2.2544
Problem: Vim9: error for argument when checking for lambda. Solution: Respect the skip flag. (closes #7887)
-rw-r--r--src/testdir/test_vim9_expr.vim8
-rw-r--r--src/userfunc.c3
-rw-r--r--src/version.c2
3 files changed, 12 insertions, 1 deletions
diff --git a/src/testdir/test_vim9_expr.vim b/src/testdir/test_vim9_expr.vim
index 348fb934d..3e69a0dd4 100644
--- a/src/testdir/test_vim9_expr.vim
+++ b/src/testdir/test_vim9_expr.vim
@@ -1922,6 +1922,14 @@ def Test_expr7_lambda()
CheckDefSuccess(['var Fx = (a) => [0,', ' 1]'])
CheckDefFailure(['var Fx = (a) => [0', ' 1]'], 'E696:', 2)
+
+ # no error for existing script variable when checking for lambda
+ lines =<< trim END
+ vim9script
+ var name = 0
+ eval (name + 2) / 3
+ END
+ CheckScriptSuccess(lines)
enddef
def NewLambdaWithComments(): func
diff --git a/src/userfunc.c b/src/userfunc.c
index 8579c3b38..b49cef178 100644
--- a/src/userfunc.c
+++ b/src/userfunc.c
@@ -82,7 +82,8 @@ one_function_arg(
}
// Vim9 script: cannot use script var name for argument.
- if (argtypes != NULL && script_var_exists(arg, p - arg, FALSE, NULL) == OK)
+ if (!skip && argtypes != NULL && script_var_exists(arg, p - arg,
+ FALSE, NULL) == OK)
{
semsg(_(e_variable_already_declared_in_script), arg);
return arg;
diff --git a/src/version.c b/src/version.c
index 235e34492..aa6d34380 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 */
/**/
+ 2544,
+/**/
2543,
/**/
2542,