Mercurial > vim
comparison src/testdir/test_vim9_func.vim @ 19993:efe864a7ce4f v8.2.0552
patch 8.2.0552: Vim9: some errors not covered by tests
Commit: https://github.com/vim/vim/commit/99aaf0ce7cc23b0e759eab2369e266cdc8d46af8
Author: Bram Moolenaar <Bram@vim.org>
Date: Sun Apr 12 14:39:53 2020 +0200
patch 8.2.0552: Vim9: some errors not covered by tests
Problem: Vim9: some errors not covered by tests.
Solution: Add more tests. Check Funcref argument types.
author | Bram Moolenaar <Bram@vim.org> |
---|---|
date | Sun, 12 Apr 2020 14:45:04 +0200 |
parents | f863aa96cae5 |
children | c001ee73519a |
comparison
equal
deleted
inserted
replaced
19992:6dad0fd5b8e6 | 19993:efe864a7ce4f |
---|---|
94 assert_equal('string', MyDefaultArgs()) | 94 assert_equal('string', MyDefaultArgs()) |
95 assert_equal('one', MyDefaultArgs('one')) | 95 assert_equal('one', MyDefaultArgs('one')) |
96 assert_fails('call MyDefaultArgs("one", "two")', 'E118:') | 96 assert_fails('call MyDefaultArgs("one", "two")', 'E118:') |
97 | 97 |
98 call CheckScriptFailure(['def Func(arg: number = asdf)', 'enddef'], 'E1001:') | 98 call CheckScriptFailure(['def Func(arg: number = asdf)', 'enddef'], 'E1001:') |
99 call CheckScriptFailure(['def Func(arg: number = "text")', 'enddef'], 'E1013: argument 1: type mismatch, expected number but got string') | |
99 enddef | 100 enddef |
100 | 101 |
101 func Test_call_default_args_from_func() | 102 func Test_call_default_args_from_func() |
102 call assert_equal('string', MyDefaultArgs()) | 103 call assert_equal('string', MyDefaultArgs()) |
103 call assert_equal('one', MyDefaultArgs('one')) | 104 call assert_equal('one', MyDefaultArgs('one')) |
192 enddef | 193 enddef |
193 | 194 |
194 def Test_call_func_defined_later() | 195 def Test_call_func_defined_later() |
195 call assert_equal('one', DefinedLater('one')) | 196 call assert_equal('one', DefinedLater('one')) |
196 call assert_fails('call NotDefined("one")', 'E117:') | 197 call assert_fails('call NotDefined("one")', 'E117:') |
198 enddef | |
199 | |
200 def CombineFuncrefTypes() | |
201 " same arguments, different return type | |
202 let Ref1: func(bool): string | |
203 let Ref2: func(bool): number | |
204 let Ref3: func(bool): any | |
205 Ref3 = g:cond ? Ref1 : Ref2 | |
206 | |
207 " different number of arguments | |
208 let Refa1: func(bool): number | |
209 let Refa2: func(bool, number): number | |
210 let Refa3: func: number | |
211 Refa3 = g:cond ? Refa1 : Refa2 | |
212 | |
213 " different argument types | |
214 let Refb1: func(bool, string): number | |
215 let Refb2: func(string, number): number | |
216 let Refb3: func(any, any): number | |
217 Refb3 = g:cond ? Refb1 : Refb2 | |
197 enddef | 218 enddef |
198 | 219 |
199 func DefinedLater(arg) | 220 func DefinedLater(arg) |
200 return a:arg | 221 return a:arg |
201 endfunc | 222 endfunc |