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:
@@ -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:')
|
||||
|
||||
|
||||
Reference in New Issue
Block a user