From 14ded11fcad77ebf41032ec80a95d516ca9acb1c Mon Sep 17 00:00:00 2001 From: Bram Moolenaar Date: Sat, 26 Jun 2021 19:25:49 +0200 Subject: [PATCH] patch 8.2.3056: Vim9: using default value in lambda gives confusing error Problem: Vim9: using default value in lambda gives confusing error. Solution: Pass "default_args" on the first pass to get the arguments. (closes #8455) --- src/testdir/test_vim9_func.vim | 6 ++++++ src/userfunc.c | 2 +- src/version.c | 2 ++ 3 files changed, 9 insertions(+), 1 deletion(-) diff --git a/src/testdir/test_vim9_func.vim b/src/testdir/test_vim9_func.vim index bffbb1b0a..ee97e56ea 100644 --- a/src/testdir/test_vim9_func.vim +++ b/src/testdir/test_vim9_func.vim @@ -917,6 +917,12 @@ def Test_call_lambda_args() CheckDefFailure(lines, 'E1167:') 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 diff --git a/src/userfunc.c b/src/userfunc.c index e2e745c33..cedd37b9a 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 6d907d5c6..085801849 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 */ +/**/ + 3056, /**/ 3055, /**/ -- 2.50.1