]> granicus.if.org Git - vim/commitdiff
patch 9.0.0630: in Vim9 script a numbered function cannot be called v9.0.0630
authorBram Moolenaar <Bram@vim.org>
Fri, 30 Sep 2022 18:19:04 +0000 (19:19 +0100)
committerBram Moolenaar <Bram@vim.org>
Fri, 30 Sep 2022 18:19:04 +0000 (19:19 +0100)
Problem:    In Vim9 script a numbered function cannot be called.
Solution:   Do not require "g:" before a numbered function name.
            (closes #11254)

src/testdir/test_vim9_func.vim
src/userfunc.c
src/version.c

index a0c5e49757d6c6d89912194204b3a1076a44ad3a..38766e3301568cc42a62de65fa6676e18e3d25b5 100644 (file)
@@ -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
index 0f194d57e6b1f8c11bf542be15ccc710d36cdf4b..92b5203c1cb220ae6150ab99869a755cb5a68ae3 100644 (file)
@@ -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]);
 }
 
 /*
index 8475d7e0249d9c205eaa2c3dd70aefac6ff2197f..5bc3ba5da3e087dbdaa4412da2d62728c80003d3 100644 (file)
@@ -699,6 +699,8 @@ static char *(features[]) =
 
 static int included_patches[] =
 {   /* Add new patch number below this line */
+/**/
+    630,
 /**/
     629,
 /**/