]> granicus.if.org Git - vim/commitdiff
patch 8.2.2544: Vim9: error for argument when checking for lambda v8.2.2544
authorBram Moolenaar <Bram@vim.org>
Tue, 23 Feb 2021 11:05:46 +0000 (12:05 +0100)
committerBram Moolenaar <Bram@vim.org>
Tue, 23 Feb 2021 11:05:46 +0000 (12:05 +0100)
Problem:    Vim9: error for argument when checking for lambda.
Solution:   Respect the skip flag. (closes #7887)

src/testdir/test_vim9_expr.vim
src/userfunc.c
src/version.c

index 348fb934df06a8af5f3f4bb63cd82d2b9d7bb6f3..3e69a0dd460a60eade2cdf953d43f1e8e10ac456 100644 (file)
@@ -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
index 8579c3b3864a4fd454b180704573ecf156cf5ef4..b49cef17846a90f15db4527c0a73462ac9baca38 100644 (file)
@@ -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;
index 235e344926665771525ebff22b5b90cfb38bbd14..aa6d34380a70dbd46f35840e2974d6f9f0dc0169 100644 (file)
@@ -750,6 +750,8 @@ static char *(features[]) =
 
 static int included_patches[] =
 {   /* Add new patch number below this line */
+/**/
+    2544,
 /**/
     2543,
 /**/