From 035d6e91bd83574cab5a913c5c3a924d9011696b Mon Sep 17 00:00:00 2001 From: Bram Moolenaar Date: Tue, 11 Aug 2020 22:30:42 +0200 Subject: [PATCH] patch 8.2.1423: Vim9: find global function when looking for script-local Problem: Vim9: find global function when looking for script-local. Solution: Don't strip prefix if name starts with "s:". (closes #6688) --- src/testdir/test_vim9_func.vim | 9 +++++++++ src/userfunc.c | 4 ++-- src/version.c | 2 ++ 3 files changed, 13 insertions(+), 2 deletions(-) diff --git a/src/testdir/test_vim9_func.vim b/src/testdir/test_vim9_func.vim index 4a020c9af..772b52ab9 100644 --- a/src/testdir/test_vim9_func.vim +++ b/src/testdir/test_vim9_func.vim @@ -203,6 +203,15 @@ def Test_global_local_function() assert_equal('local', Func()) END CheckScriptSuccess(lines) + + lines =<< trim END + vim9script + def g:Funcy() + echo 'funcy' + enddef + s:Funcy() + END + CheckScriptFailure(lines, 'E117:') enddef func TakesOneArg(arg) diff --git a/src/userfunc.c b/src/userfunc.c index f38c978f4..9ab5ffe52 100644 --- a/src/userfunc.c +++ b/src/userfunc.c @@ -2132,8 +2132,8 @@ call_func( char_u *p = untrans_function_name(rfname); // If using Vim9 script try not local to the script. - // TODO: should not do this if the name started with "s:". - if (p != NULL) + // Don't do this if the name starts with "s:". + if (p != NULL && (funcname[0] != 's' || funcname[1] != ':')) fp = find_func(p, is_global, NULL); } diff --git a/src/version.c b/src/version.c index 8ebd3e0ad..f6257b58a 100644 --- a/src/version.c +++ b/src/version.c @@ -754,6 +754,8 @@ static char *(features[]) = static int included_patches[] = { /* Add new patch number below this line */ +/**/ + 1423, /**/ 1422, /**/ -- 2.40.0