changeset 24004:90fbe1a3b23c v8.2.2544

patch 8.2.2544: Vim9: error for argument when checking for lambda Commit: https://github.com/vim/vim/commit/bc327ccc3dd408463fc74266f57b879888a13e51 Author: Bram Moolenaar <Bram@vim.org> Date: Tue Feb 23 12:05:46 2021 +0100 patch 8.2.2544: Vim9: error for argument when checking for lambda Problem: Vim9: error for argument when checking for lambda. Solution: Respect the skip flag. (closes https://github.com/vim/vim/issues/7887)
author Bram Moolenaar <Bram@vim.org>
date Tue, 23 Feb 2021 12:15:03 +0100
parents e6254ce853b7
children 5f605f9903dd
files src/testdir/test_vim9_expr.vim src/userfunc.c src/version.c
diffstat 3 files changed, 12 insertions(+), 1 deletions(-) [+]
line wrap: on
line diff
--- 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
--- 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;
--- 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,