0
0
mirror of https://github.com/vim/vim.git synced 2025-11-09 10:37:17 -05:00

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.
This commit is contained in:
Bram Moolenaar
2020-04-07 20:53:39 +02:00
parent 86b9a3e8cd
commit ec5929d0fe
6 changed files with 101 additions and 36 deletions

View File

@@ -373,6 +373,11 @@ def FuncNoArgRetNumber(): number
return 1234
enddef
def FuncNoArgRetString(): string
funcResult = 45
return 'text'
enddef
def FuncOneArgNoRet(arg: number)
funcResult = arg
enddef
@@ -382,6 +387,10 @@ def FuncOneArgRetNumber(arg: number): number
return arg
enddef
def FuncOneArgRetString(arg: string): string
return arg
enddef
def FuncOneArgRetAny(arg: any): any
return arg
enddef
@@ -415,6 +424,32 @@ def Test_func_type()
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:')