Mercurial > vim
diff src/testdir/test_vim9_func.vim @ 19942:b471038ec3ea v8.2.0527
patch 8.2.0527: Vim9: function types insufficiently tested
Commit: https://github.com/vim/vim/commit/ec5929d0fe7e90f953fa5b019486c0c4e5826d92
Author: Bram Moolenaar <Bram@vim.org>
Date: Tue Apr 7 20:53:39 2020 +0200
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.
author | Bram Moolenaar <Bram@vim.org> |
---|---|
date | Tue, 07 Apr 2020 21:00:04 +0200 |
parents | 2c4d9ca33769 |
children | 3055cd26e139 |
line wrap: on
line diff
--- a/src/testdir/test_vim9_func.vim +++ b/src/testdir/test_vim9_func.vim @@ -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): nu 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:')