patch 8.2.4260: Vim9: can still use a global function without g:
Problem: Vim9: can still use a global function without g: at the script
level.
Solution: Also check for g: at the script level. (issue #9637)
diff --git a/src/testdir/test_vim9_expr.vim b/src/testdir/test_vim9_expr.vim
index d2f69ab..bf5a0d0 100644
--- a/src/testdir/test_vim9_expr.vim
+++ b/src/testdir/test_vim9_expr.vim
@@ -61,12 +61,17 @@
var RetThat: func = g:atrue ? RetOne : RetTwo
assert_equal(function('len'), RetThat)
- var X = FuncOne
- var Y = FuncTwo
- var Z = g:cond ? FuncOne : FuncTwo
+ var X = g:FuncOne
+ var Y = g:FuncTwo
+ var Z = g:cond ? g:FuncOne : g:FuncTwo
assert_equal(123, Z(3))
END
v9.CheckDefAndScriptSuccess(lines)
+
+ lines =<< trim END
+ var Z = g:cond ? FuncOne : FuncTwo
+ END
+ v9.CheckDefAndScriptFailure(lines, ['E1001: Variable not found: FuncOne', 'E121: Undefined variable: FuncTwo'])
enddef
def Test_expr1_trinary_vimscript()
@@ -209,9 +214,9 @@
" missing argument detected even when common type is used
call v9.CheckDefAndScriptFailure([
- \ 'var X = FuncOne',
- \ 'var Y = FuncTwo',
- \ 'var Z = g:cond ? FuncOne : FuncTwo',
+ \ 'var X = g:FuncOne',
+ \ 'var Y = g:FuncTwo',
+ \ 'var Z = g:cond ? g:FuncOne : g:FuncTwo',
\ 'Z()'], 'E119:', 4)
endfunc
@@ -2334,7 +2339,7 @@
def Test()
var Ref = g:GlobalFunc
assert_equal('global', Ref())
- Ref = GlobalFunc
+ Ref = g:GlobalFunc
assert_equal('global', Ref())
Ref = s:ScriptFunc
@@ -3083,12 +3088,12 @@
v9.CheckDefAndScriptFailure(["var Ref = function('len' [1, 2])"], ['E1123:', 'E116:'], 1)
enddef
-def g:ExistingGloba(): string
+def g:ExistingGlobal(): string
return 'existing'
enddef
def Test_expr8_call_global()
- assert_equal('existing', g:ExistingGloba())
+ assert_equal('existing', g:ExistingGlobal())
def g:DefinedLater(): string
return 'later'