summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--src/testdir/test_vim9_func.vim9
-rw-r--r--src/userfunc.c4
-rw-r--r--src/version.c2
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
@@ -755,6 +755,8 @@ static char *(features[]) =
static int included_patches[] =
{ /* Add new patch number below this line */
/**/
+ 1423,
+/**/
1422,
/**/
1421,