diff options
author | Bram Moolenaar <Bram@vim.org> | 2022-09-30 19:19:04 +0100 |
---|---|---|
committer | Bram Moolenaar <Bram@vim.org> | 2022-09-30 19:19:04 +0100 |
commit | cfb4d4f312e740c2fbb70c29c47cf74a76f8b605 (patch) | |
tree | 72cdebc2780ff1e053637b5b820798be43a2532f | |
parent | a5d1a67bee5672786c4b172f66ae4391e7b0cc57 (diff) | |
download | vim-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.vim | 19 | ||||
-rw-r--r-- | src/userfunc.c | 3 | ||||
-rw-r--r-- | src/version.c | 2 |
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, |