0
0
mirror of https://github.com/vim/vim.git synced 2025-09-26 04:04:07 -04:00

patch 8.2.2002: Vim9: lambda argument shadowed by function name

Problem:    Vim9: lambda argument shadowed by function name.
Solution:   Let function name be shadowed by lambda argument. (closes #7313)
This commit is contained in:
Bram Moolenaar
2020-11-17 18:50:44 +01:00
parent 0ba48e8c27
commit 52bf81c2d5
3 changed files with 23 additions and 6 deletions

View File

@@ -2712,13 +2712,19 @@ compile_call(
goto theend;
}
// If we can find the function by name generate the right call.
// Skip global functions here, a local funcref takes precedence.
ufunc = find_func(name, FALSE, cctx);
if (ufunc != NULL && !func_is_global(ufunc))
// An argument or local variable can be a function reference, this
// overrules a function name.
if (lookup_local(namebuf, varlen, cctx) == NULL
&& arg_exists(namebuf, varlen, NULL, NULL, NULL, cctx) != OK)
{
res = generate_CALL(cctx, ufunc, argcount);
goto theend;
// If we can find the function by name generate the right call.
// Skip global functions here, a local funcref takes precedence.
ufunc = find_func(name, FALSE, cctx);
if (ufunc != NULL && !func_is_global(ufunc))
{
res = generate_CALL(cctx, ufunc, argcount);
goto theend;
}
}
// If the name is a variable, load it and use PCALL.