summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorBram Moolenaar <Bram@vim.org>2021-06-26 19:25:49 +0200
committerBram Moolenaar <Bram@vim.org>2021-06-26 19:25:49 +0200
commit14ded11fcad77ebf41032ec80a95d516ca9acb1c (patch)
tree118966a6ffe086076d68f03244a39286b8a03ee4
parent3a3b10e87a10dd0bc355618dbfc4a0a6c828aad7 (diff)
patch 8.2.3056: Vim9: using default value in lambda gives confusing errorv8.2.3056
Problem: Vim9: using default value in lambda gives confusing error. Solution: Pass "default_args" on the first pass to get the arguments. (closes #8455)
-rw-r--r--src/testdir/test_vim9_func.vim6
-rw-r--r--src/userfunc.c2
-rw-r--r--src/version.c2
3 files changed, 9 insertions, 1 deletions
diff --git a/src/testdir/test_vim9_func.vim b/src/testdir/test_vim9_func.vim
index bffbb1b0ab..ee97e56ea6 100644
--- a/src/testdir/test_vim9_func.vim
+++ b/src/testdir/test_vim9_func.vim
@@ -918,6 +918,12 @@ def Test_call_lambda_args()
CheckScriptFailure(['vim9script'] + lines, 'E1168:')
lines =<< trim END
+ var Ref: func(any, ?any): bool
+ Ref = (_, y = 1) => false
+ END
+ CheckDefAndScriptFailure(lines, 'E1172:')
+
+ lines =<< trim END
def ShadowLocal()
var one = 1
var l = [1, 2, 3]
diff --git a/src/userfunc.c b/src/userfunc.c
index e2e745c338..cedd37b9a0 100644
--- a/src/userfunc.c
+++ b/src/userfunc.c
@@ -1222,7 +1222,7 @@ get_lambda_tv(
s = *arg + 1;
ret = get_function_args(&s, equal_arrow ? ')' : '-', NULL,
types_optional ? &argtypes : NULL, types_optional, evalarg,
- NULL, NULL, TRUE, NULL, NULL);
+ NULL, &default_args, TRUE, NULL, NULL);
if (ret == FAIL || skip_arrow(s, equal_arrow, &ret_type, NULL) == NULL)
{
if (types_optional)
diff --git a/src/version.c b/src/version.c
index 6d907d5c64..085801849b 100644
--- a/src/version.c
+++ b/src/version.c
@@ -756,6 +756,8 @@ static char *(features[]) =
static int included_patches[] =
{ /* Add new patch number below this line */
/**/
+ 3056,
+/**/
3055,
/**/
3054,