patch 8.2.3866: Vim9: type checking global variables is inconsistent
Problem: Vim9: type checking global variables is inconsistent.
Solution: Use the "unknown" type in more places.
diff --git a/src/testdir/test_vim9_func.vim b/src/testdir/test_vim9_func.vim
index d17d010..81fa7e4 100644
--- a/src/testdir/test_vim9_func.vim
+++ b/src/testdir/test_vim9_func.vim
@@ -547,6 +547,39 @@
defcompile
END
CheckScriptFailure(lines, 'E1001: Variable not found: b')
+
+ # using script variable requires matching type or type cast
+ lines =<< trim END
+ vim9script
+ var a: any
+ def Func(arg: string = a)
+ echo arg
+ enddef
+ defcompile
+ END
+ CheckScriptFailure(lines, 'E1013: Argument 1: type mismatch, expected string but got any')
+
+ lines =<< trim END
+ vim9script
+ var a: any
+ def Func(arg: string = <string>a)
+ echo arg
+ enddef
+ a = 'works'
+ Func()
+ END
+ CheckScriptSuccess(lines)
+
+ # using global variable does not require type cast
+ lines =<< trim END
+ vim9script
+ def Func(arg: string = g:str)
+ echo arg
+ enddef
+ g:str = 'works'
+ Func()
+ END
+ CheckScriptSuccess(lines)
enddef
def FuncWithComment( # comment