comparison src/testdir/test_vim9_script.vim @ 19328:e99e6d794597 v8.2.0222

patch 8.2.0222: Vim9: optional function arguments don't work yet Commit: https://github.com/vim/vim/commit/170fcfcf250954d76fca86e3fed088ddfdb49383 Author: Bram Moolenaar <Bram@vim.org> Date: Thu Feb 6 17:51:35 2020 +0100 patch 8.2.0222: Vim9: optional function arguments don't work yet Problem: Vim9: optional function arguments don't work yet. Solution: Implement optional function arguments.
author Bram Moolenaar <Bram@vim.org>
date Thu, 06 Feb 2020 18:00:04 +0100
parents d1810b726592
children 9c8b803fe598
comparison
equal deleted inserted replaced
19327:6bbb4ad91d21 19328:e99e6d794597
137 assert_equal('one', MyVarargs('one')) 137 assert_equal('one', MyVarargs('one'))
138 assert_equal('one,two', MyVarargs('one', 'two')) 138 assert_equal('one,two', MyVarargs('one', 'two'))
139 assert_equal('one,two,three', MyVarargs('one', 'two', 'three')) 139 assert_equal('one,two,three', MyVarargs('one', 'two', 'three'))
140 enddef 140 enddef
141 141
142 def MyDefaultArgs(name = 'string'): string
143 return name
144 enddef
145
146 def Test_call_default_args()
147 assert_equal('string', MyDefaultArgs())
148 assert_equal('one', MyDefaultArgs('one'))
149 assert_fails('call MyDefaultArgs("one", "two")', 'E118:')
150 enddef
151
152 func Test_call_default_args_from_func()
153 call assert_equal('string', MyDefaultArgs())
154 call assert_equal('one', MyDefaultArgs('one'))
155 call assert_fails('call MyDefaultArgs("one", "two")', 'E118:')
156 endfunc
157
158 " Default arg and varargs
159 def MyDefVarargs(one: string, two = 'foo', ...rest: list<string>): string
160 let res = one .. ',' .. two
161 for s in rest
162 res ..= ',' .. s
163 endfor
164 return res
165 enddef
166
167 def Test_call_def_varargs()
168 call assert_fails('call MyDefVarargs()', 'E119:')
169 assert_equal('one,foo', MyDefVarargs('one'))
170 assert_equal('one,two', MyDefVarargs('one', 'two'))
171 assert_equal('one,two,three', MyDefVarargs('one', 'two', 'three'))
172 enddef
173
174
142 "def Test_call_func_defined_later() 175 "def Test_call_func_defined_later()
143 " call assert_equal('one', DefineLater('one')) 176 " call assert_equal('one', DefineLater('one'))
144 " call assert_fails('call NotDefined("one")', 'E99:') 177 " call assert_fails('call NotDefined("one")', 'E99:')
145 "enddef 178 "enddef
146 179
147 func DefineLater(arg) 180 func DefineLater(arg)
148 return a:arg 181 return a:arg
149 endfunc 182 endfunc
150
151 def MyDefaultArgs(name = 'string'): string
152 return name
153 enddef
154
155 func Test_call_default_args_from_func()
156 " TODO: implement using default value for optional argument
157 "call assert_equal('string', MyDefaultArgs())
158 call assert_fails('call MyDefaultArgs()', 'optional arguments not implemented yet')
159 call assert_equal('one', MyDefaultArgs('one'))
160 call assert_fails('call MyDefaultArgs("one", "two")', 'E118:')
161 endfunc
162
163 def Test_call_default_args()
164 " TODO: implement using default value for optional argument
165 "assert_equal('string', MyDefaultArgs())
166 assert_equal('one', MyDefaultArgs('one'))
167 assert_fails('call MyDefaultArgs("one", "two")', 'E118:')
168 enddef
169 183
170 def Test_return_type_wrong() 184 def Test_return_type_wrong()
171 CheckScriptFailure(['def Func(): number', 'return "a"', 'enddef'], 'expected number but got string') 185 CheckScriptFailure(['def Func(): number', 'return "a"', 'enddef'], 'expected number but got string')
172 CheckScriptFailure(['def Func(): string', 'return 1', 'enddef'], 'expected string but got number') 186 CheckScriptFailure(['def Func(): string', 'return 1', 'enddef'], 'expected string but got number')
173 CheckScriptFailure(['def Func(): void', 'return "a"', 'enddef'], 'expected void but got string') 187 CheckScriptFailure(['def Func(): void', 'return "a"', 'enddef'], 'expected void but got string')