patch 8.2.0527: Vim9: function types insufficiently tested
Problem: Vim9: function types insufficiently tested.
Solution: Add more tests. Fix white space check. Add "test_vim9" target.
diff --git a/src/testdir/test_vim9_func.vim b/src/testdir/test_vim9_func.vim
index 5554b2d..fb2180f 100644
--- a/src/testdir/test_vim9_func.vim
+++ b/src/testdir/test_vim9_func.vim
@@ -373,6 +373,11 @@
return 1234
enddef
+def FuncNoArgRetString(): string
+ funcResult = 45
+ return 'text'
+enddef
+
def FuncOneArgNoRet(arg: number)
funcResult = arg
enddef
@@ -382,6 +387,10 @@
return arg
enddef
+def FuncOneArgRetString(arg: string): string
+ return arg
+enddef
+
def FuncOneArgRetAny(arg: any): any
return arg
enddef
@@ -415,6 +424,32 @@
assert_equal(13, funcResult)
enddef
+def Test_func_type_part()
+ let RefVoid: func: void
+ RefVoid = FuncNoArgNoRet
+ RefVoid = FuncOneArgNoRet
+ CheckDefFailure(['let RefVoid: func: void', 'RefVoid = FuncNoArgRetNumber'], 'E1013: type mismatch, expected func() but got func(): number')
+ CheckDefFailure(['let RefVoid: func: void', 'RefVoid = FuncNoArgRetString'], 'E1013: type mismatch, expected func() but got func(): string')
+
+ let RefAny: func(): any
+ RefAny = FuncNoArgRetNumber
+ RefAny = FuncNoArgRetString
+ CheckDefFailure(['let RefAny: func(): any', 'RefAny = FuncNoArgNoRet'], 'E1013: type mismatch, expected func(): any but got func()')
+ CheckDefFailure(['let RefAny: func(): any', 'RefAny = FuncOneArgNoRet'], 'E1013: type mismatch, expected func(): any but got func(number)')
+
+ let RefNr: func: number
+ RefNr = FuncNoArgRetNumber
+ RefNr = FuncOneArgRetNumber
+ CheckDefFailure(['let RefNr: func: number', 'RefNr = FuncNoArgNoRet'], 'E1013: type mismatch, expected func(): number but got func()')
+ CheckDefFailure(['let RefNr: func: number', 'RefNr = FuncNoArgRetString'], 'E1013: type mismatch, expected func(): number but got func(): string')
+
+ let RefStr: func: string
+ RefStr = FuncNoArgRetString
+ RefStr = FuncOneArgRetString
+ CheckDefFailure(['let RefStr: func: string', 'RefStr = FuncNoArgNoRet'], 'E1013: type mismatch, expected func(): string but got func()')
+ CheckDefFailure(['let RefStr: func: string', 'RefStr = FuncNoArgRetNumber'], 'E1013: type mismatch, expected func(): string but got func(): number')
+enddef
+
def Test_func_type_fails()
CheckDefFailure(['let ref1: func()'], 'E704:')