Mercurial > vim
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') |