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