0
0
mirror of https://github.com/vim/vim.git synced 2025-09-24 03:44:06 -04:00

patch 8.2.3794: Vim9: cannot find script-local func using "s:"

Problem:    Vim9: cannot find script-local func using "s:". (Yegappan
            Lakshmanan)
Solution:   Skip the "s:".
This commit is contained in:
Bram Moolenaar
2021-12-13 11:31:04 +00:00
parent ef082e12df
commit 33b968dc60
3 changed files with 18 additions and 3 deletions

View File

@@ -1243,6 +1243,18 @@ def Test_set_opfunc_to_global_function()
&operatorfunc = ''
enddef
def Test_use_script_func_name_with_prefix()
var lines =<< trim END
vim9script
func s:Getit()
return 'it'
endfunc
var Fn = s:Getit
assert_equal('it', Fn())
END
CheckScriptSuccess(lines)
enddef
def Test_lambda_type_allocated()
# Check that unreferencing a partial using a lambda can use the variable type
# after the lambda has been freed and does not leak memory.

View File

@@ -1885,13 +1885,14 @@ find_func_even_dead(char_u *name, int is_global, cctx_T *cctx)
{
char_u *after_script = NULL;
long sid = 0;
int find_script_local = in_vim9script()
&& eval_isnamec1(*name) && name[1] != ':';
int find_script_local = in_vim9script() && eval_isnamec1(*name)
&& (name[1] != ':' || *name == 's');
if (find_script_local)
{
// Find script-local function before global one.
func = find_func_with_sid(name, current_sctx.sc_sid);
func = find_func_with_sid(name[0] == 's' && name[1] == ':'
? name + 2 : name, current_sctx.sc_sid);
if (func != NULL)
return func;
}

View File

@@ -753,6 +753,8 @@ static char *(features[]) =
static int included_patches[] =
{ /* Add new patch number below this line */
/**/
3794,
/**/
3793,
/**/