patch 8.2.1261: Vim9: common type of function not tested
Problem: Vim9: common type of function not tested.
Solution: Add a test. Fix uncovered problems.
diff --git a/src/testdir/test_vim9_expr.vim b/src/testdir/test_vim9_expr.vim
index b68eb3e..4c9db5c 100644
--- a/src/testdir/test_vim9_expr.vim
+++ b/src/testdir/test_vim9_expr.vim
@@ -3,6 +3,15 @@
source check.vim
source vim9.vim
+
+let g:cond = v:false
+def FuncOne(arg: number): string
+ return 'yes'
+enddef
+def FuncTwo(arg: number): number
+ return 123
+enddef
+
" test cond ? expr : expr
def Test_expr1()
assert_equal('one', true ? 'one' : 'two')
@@ -43,6 +52,11 @@
let RetTwo: func(string): number = function('winnr')
let RetThat: func = g:atrue ? RetOne : RetTwo
assert_equal(function('len'), RetThat)
+
+ let x = FuncOne
+ let y = FuncTwo
+ let Z = g:cond ? FuncOne : FuncTwo
+ assert_equal(123, Z(3))
enddef
def Test_expr1_vimscript()
@@ -88,6 +102,13 @@
call CheckDefFailure(["let x = 1 ? 'one': 'two'"], msg)
call CheckDefFailure(["let x = 1 ? 'one' :'two'"], msg)
call CheckDefFailure(["let x = 1 ? 'one':'two'"], msg)
+
+ " missing argument detected even when common type is used
+ call CheckDefFailure([
+ \ 'let x = FuncOne',
+ \ 'let y = FuncTwo',
+ \ 'let Z = g:cond ? FuncOne : FuncTwo',
+ \ 'Z()'], 'E119:')
endfunc
" TODO: define inside test function