summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorBram Moolenaar <Bram@vim.org>2022-09-30 19:19:04 +0100
committerBram Moolenaar <Bram@vim.org>2022-09-30 19:19:04 +0100
commitcfb4d4f312e740c2fbb70c29c47cf74a76f8b605 (patch)
tree72cdebc2780ff1e053637b5b820798be43a2532f
parenta5d1a67bee5672786c4b172f66ae4391e7b0cc57 (diff)
downloadvim-git-cfb4d4f312e740c2fbb70c29c47cf74a76f8b605.tar.gz
patch 9.0.0630: in Vim9 script a numbered function cannot be calledv9.0.0630
Problem: In Vim9 script a numbered function cannot be called. Solution: Do not require "g:" before a numbered function name. (closes #11254)
-rw-r--r--src/testdir/test_vim9_func.vim19
-rw-r--r--src/userfunc.c3
-rw-r--r--src/version.c2
3 files changed, 23 insertions, 1 deletions
diff --git a/src/testdir/test_vim9_func.vim b/src/testdir/test_vim9_func.vim
index a0c5e4975..38766e330 100644
--- a/src/testdir/test_vim9_func.vim
+++ b/src/testdir/test_vim9_func.vim
@@ -4210,6 +4210,25 @@ def Test_numbered_function_reference()
unlet g:mydict
enddef
+def Test_numbered_function_call()
+ var lines =<< trim END
+ let s:legacyscript = {}
+ func s:legacyscript.Helper() abort
+ return "Success"
+ endfunc
+ let g:legacyscript = deepcopy(s:legacyscript)
+
+ let g:legacy_result = eval("g:legacyscript.Helper()")
+ vim9cmd g:vim9_result = eval("g:legacyscript.Helper()")
+ END
+ v9.CheckScriptSuccess(lines)
+ assert_equal('Success', g:legacy_result)
+ assert_equal('Success', g:vim9_result)
+
+ unlet g:legacy_result
+ unlet g:vim9_result
+enddef
+
def Test_go_beyond_end_of_cmd()
# this was reading the byte after the end of the line
var lines =<< trim END
diff --git a/src/userfunc.c b/src/userfunc.c
index 0f194d57e..92b5203c1 100644
--- a/src/userfunc.c
+++ b/src/userfunc.c
@@ -2095,7 +2095,8 @@ func_requires_g_prefix(ufunc_T *ufunc)
{
return ufunc->uf_name[0] != K_SPECIAL
&& (ufunc->uf_flags & FC_LAMBDA) == 0
- && vim_strchr(ufunc->uf_name, AUTOLOAD_CHAR) == NULL;
+ && vim_strchr(ufunc->uf_name, AUTOLOAD_CHAR) == NULL
+ && !isdigit(ufunc->uf_name[0]);
}
/*
diff --git a/src/version.c b/src/version.c
index 8475d7e02..5bc3ba5da 100644
--- a/src/version.c
+++ b/src/version.c
@@ -700,6 +700,8 @@ static char *(features[]) =
static int included_patches[] =
{ /* Add new patch number below this line */
/**/
+ 630,
+/**/
629,
/**/
628,