diff options
author | Bram Moolenaar <Bram@vim.org> | 2020-08-11 22:30:42 +0200 |
---|---|---|
committer | Bram Moolenaar <Bram@vim.org> | 2020-08-11 22:30:42 +0200 |
commit | 035d6e91bd83574cab5a913c5c3a924d9011696b (patch) | |
tree | d6acfae2cbc2700a7c184c6dfffce34606e1c185 | |
parent | 097148e849136b49052b1b5123c714fb1d74db9b (diff) |
patch 8.2.1423: Vim9: find global function when looking for script-localv8.2.1423
Problem: Vim9: find global function when looking for script-local.
Solution: Don't strip prefix if name starts with "s:". (closes #6688)
-rw-r--r-- | src/testdir/test_vim9_func.vim | 9 | ||||
-rw-r--r-- | src/userfunc.c | 4 | ||||
-rw-r--r-- | 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 4a020c9afa..772b52ab97 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 f38c978f4e..9ab5ffe525 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 8ebd3e0adb..f6257b58a8 100644 --- a/src/version.c +++ b/src/version.c @@ -755,6 +755,8 @@ static char *(features[]) = static int included_patches[] = { /* Add new patch number below this line */ /**/ + 1423, +/**/ 1422, /**/ 1421, |