Mercurial > vim
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;