]> granicus.if.org Git - vim/commitdiff
patch 8.2.3056: Vim9: using default value in lambda gives confusing error v8.2.3056
authorBram Moolenaar <Bram@vim.org>
Sat, 26 Jun 2021 17:25:49 +0000 (19:25 +0200)
committerBram Moolenaar <Bram@vim.org>
Sat, 26 Jun 2021 17:25:49 +0000 (19:25 +0200)
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
src/userfunc.c
src/version.c

index bffbb1b0ab5707acd34adb92020cf4a1c4382002..ee97e56ea682183215d5f00046b45fa5a9011210 100644 (file)
@@ -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
index e2e745c338fa05a7803b05167cd0a07b17c53934..cedd37b9a0faaa51ec5deb023e755fd32fa1c741 100644 (file)
@@ -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)
index 6d907d5c64e265f8efc6bc79107a06d528a22520..085801849b8b613bd97346e161e323be3ccc5bc8 100644 (file)
@@ -755,6 +755,8 @@ static char *(features[]) =
 
 static int included_patches[] =
 {   /* Add new patch number below this line */
+/**/
+    3056,
 /**/
     3055,
 /**/