comparison src/testdir/test_vim9_builtin.vim @ 27457:4c16acb2525f v8.2.4257

patch 8.2.4257: Vim9: finding global function without g: prefix inconsistent Commit: https://github.com/vim/vim/commit/62aec93bfdb9e1b40d03a6d2e8e9511f8b1bdb2d Author: Bram Moolenaar <Bram@vim.org> Date: Sat Jan 29 21:45:34 2022 +0000 patch 8.2.4257: Vim9: finding global function without g: prefix inconsistent Problem: Vim9: finding global function without g: prefix but not finding global variable is inconsistent. Solution: Require using g: for a global function. Change the vim9.vim script into a Vim9 script with exports. Fix that import in legacy script does not work.
author Bram Moolenaar <Bram@vim.org>
date Sat, 29 Jan 2022 23:00:05 +0100
parents 4c1bdee75bed
children b43f6c879d52
comparison
equal deleted inserted replaced
27456:a8e2d91995ce 27457:4c16acb2525f
1 " Test using builtin functions in the Vim9 script language. 1 " Test using builtin functions in the Vim9 script language.
2 2
3 source check.vim 3 source check.vim
4 source vim9.vim 4 import './vim9.vim' as v9
5 5
6 " Test for passing too many or too few arguments to builtin functions 6 " Test for passing too many or too few arguments to builtin functions
7 func Test_internalfunc_arg_error() 7 func Test_internalfunc_arg_error()
8 let l =<< trim END 8 let l =<< trim END
9 def! FArgErr(): float 9 def! FArgErr(): float
65 65
66 def Test_abs() 66 def Test_abs()
67 assert_equal(0, abs(0)) 67 assert_equal(0, abs(0))
68 assert_equal(2, abs(-2)) 68 assert_equal(2, abs(-2))
69 assert_equal(3, abs(3)) 69 assert_equal(3, abs(3))
70 CheckDefAndScriptFailure(['abs("text")'], ['E1013: Argument 1: type mismatch, expected number but got string', 'E1219: Float or Number required for argument 1']) 70 v9.CheckDefAndScriptFailure(['abs("text")'], ['E1013: Argument 1: type mismatch, expected number but got string', 'E1219: Float or Number required for argument 1'])
71 if has('float') 71 if has('float')
72 assert_equal(0, abs(0)) 72 assert_equal(0, abs(0))
73 assert_equal(2.0, abs(-2.0)) 73 assert_equal(2.0, abs(-2.0))
74 assert_equal(3.0, abs(3.0)) 74 assert_equal(3.0, abs(3.0))
75 endif 75 endif
76 enddef 76 enddef
77 77
78 def Test_add() 78 def Test_add()
79 CheckDefAndScriptFailure(['add({}, 1)'], ['E1013: Argument 1: type mismatch, expected list<any> but got dict<unknown>', 'E1226: List or Blob required for argument 1']) 79 v9.CheckDefAndScriptFailure(['add({}, 1)'], ['E1013: Argument 1: type mismatch, expected list<any> but got dict<unknown>', 'E1226: List or Blob required for argument 1'])
80 CheckDefFailure(['add([1], "a")'], 'E1012: Type mismatch; expected number but got string') 80 v9.CheckDefFailure(['add([1], "a")'], 'E1012: Type mismatch; expected number but got string')
81 81
82 var lines =<< trim END 82 var lines =<< trim END
83 vim9script 83 vim9script
84 g:thelist = [1] 84 g:thelist = [1]
85 lockvar g:thelist 85 lockvar g:thelist
86 def TryChange() 86 def TryChange()
87 g:thelist->add(2) 87 g:thelist->add(2)
88 enddef 88 enddef
89 TryChange() 89 TryChange()
90 END 90 END
91 CheckScriptFailure(lines, 'E741:') 91 v9.CheckScriptFailure(lines, 'E741:')
92 enddef 92 enddef
93 93
94 def Test_add_blob() 94 def Test_add_blob()
95 var b1: blob = 0z12 95 var b1: blob = 0z12
96 add(b1, 0x34) 96 add(b1, 0x34)
102 102
103 var lines =<< trim END 103 var lines =<< trim END
104 var b: blob 104 var b: blob
105 add(b, "x") 105 add(b, "x")
106 END 106 END
107 CheckDefFailure(lines, 'E1012:', 2) 107 v9.CheckDefFailure(lines, 'E1012:', 2)
108 108
109 lines =<< trim END 109 lines =<< trim END
110 add(test_null_blob(), 123) 110 add(test_null_blob(), 123)
111 END 111 END
112 CheckDefExecAndScriptFailure(lines, 'E1131:', 1) 112 v9.CheckDefExecAndScriptFailure(lines, 'E1131:', 1)
113 113
114 lines =<< trim END 114 lines =<< trim END
115 var b: blob = test_null_blob() 115 var b: blob = test_null_blob()
116 add(b, 123) 116 add(b, 123)
117 END 117 END
118 CheckDefExecFailure(lines, 'E1131:', 2) 118 v9.CheckDefExecFailure(lines, 'E1131:', 2)
119 119
120 # Getting variable with NULL blob allocates a new blob at script level 120 # Getting variable with NULL blob allocates a new blob at script level
121 lines =<< trim END 121 lines =<< trim END
122 vim9script 122 vim9script
123 var b: blob = test_null_blob() 123 var b: blob = test_null_blob()
124 add(b, 123) 124 add(b, 123)
125 END 125 END
126 CheckScriptSuccess(lines) 126 v9.CheckScriptSuccess(lines)
127 enddef 127 enddef
128 128
129 def Test_add_list() 129 def Test_add_list()
130 var l: list<number> # defaults to empty list 130 var l: list<number> # defaults to empty list
131 add(l, 9) 131 add(l, 9)
133 133
134 var lines =<< trim END 134 var lines =<< trim END
135 var l: list<number> 135 var l: list<number>
136 add(l, "x") 136 add(l, "x")
137 END 137 END
138 CheckDefFailure(lines, 'E1012:', 2) 138 v9.CheckDefFailure(lines, 'E1012:', 2)
139 139
140 lines =<< trim END 140 lines =<< trim END
141 add(test_null_list(), 123) 141 add(test_null_list(), 123)
142 END 142 END
143 CheckDefExecAndScriptFailure(lines, 'E1130:', 1) 143 v9.CheckDefExecAndScriptFailure(lines, 'E1130:', 1)
144 144
145 lines =<< trim END 145 lines =<< trim END
146 var l: list<number> = test_null_list() 146 var l: list<number> = test_null_list()
147 add(l, 123) 147 add(l, 123)
148 END 148 END
149 CheckDefExecFailure(lines, 'E1130:', 2) 149 v9.CheckDefExecFailure(lines, 'E1130:', 2)
150 150
151 # Getting variable with NULL list allocates a new list at script level 151 # Getting variable with NULL list allocates a new list at script level
152 lines =<< trim END 152 lines =<< trim END
153 vim9script 153 vim9script
154 var l: list<number> = test_null_list() 154 var l: list<number> = test_null_list()
155 add(l, 123) 155 add(l, 123)
156 END 156 END
157 CheckScriptSuccess(lines) 157 v9.CheckScriptSuccess(lines)
158 158
159 lines =<< trim END 159 lines =<< trim END
160 vim9script 160 vim9script
161 var l: list<string> = ['a'] 161 var l: list<string> = ['a']
162 l->add(123) 162 l->add(123)
163 END 163 END
164 CheckScriptFailure(lines, 'E1012: Type mismatch; expected string but got number', 3) 164 v9.CheckScriptFailure(lines, 'E1012: Type mismatch; expected string but got number', 3)
165 165
166 lines =<< trim END 166 lines =<< trim END
167 vim9script 167 vim9script
168 var l: list<string> 168 var l: list<string>
169 l->add(123) 169 l->add(123)
170 END 170 END
171 CheckScriptFailure(lines, 'E1012: Type mismatch; expected string but got number', 3) 171 v9.CheckScriptFailure(lines, 'E1012: Type mismatch; expected string but got number', 3)
172 enddef 172 enddef
173 173
174 def Test_and() 174 def Test_and()
175 CheckDefAndScriptFailure(['and("x", 0x2)'], ['E1013: Argument 1: type mismatch, expected number but got string', 'E1210: Number required for argument 1']) 175 v9.CheckDefAndScriptFailure(['and("x", 0x2)'], ['E1013: Argument 1: type mismatch, expected number but got string', 'E1210: Number required for argument 1'])
176 CheckDefAndScriptFailure(['and(0x1, "x")'], ['E1013: Argument 2: type mismatch, expected number but got string', 'E1210: Number required for argument 2']) 176 v9.CheckDefAndScriptFailure(['and(0x1, "x")'], ['E1013: Argument 2: type mismatch, expected number but got string', 'E1210: Number required for argument 2'])
177 enddef 177 enddef
178 178
179 def Test_append() 179 def Test_append()
180 new 180 new
181 setline(1, range(3)) 181 setline(1, range(3))
189 assert_equal('zero', getline(1)) 189 assert_equal('zero', getline(1))
190 append(0, {a: 10}) 190 append(0, {a: 10})
191 assert_equal("{'a': 10}", getline(1)) 191 assert_equal("{'a': 10}", getline(1))
192 append(0, function('min')) 192 append(0, function('min'))
193 assert_equal("function('min')", getline(1)) 193 assert_equal("function('min')", getline(1))
194 CheckDefAndScriptFailure(['append([1], "x")'], ['E1013: Argument 1: type mismatch, expected string but got list<number>', 'E1220: String or Number required for argument 1']) 194 v9.CheckDefAndScriptFailure(['append([1], "x")'], ['E1013: Argument 1: type mismatch, expected string but got list<number>', 'E1220: String or Number required for argument 1'])
195 CheckDefExecAndScriptFailure(['append("", "x")'], 'E1209: Invalid value for a line number') 195 v9.CheckDefExecAndScriptFailure(['append("", "x")'], 'E1209: Invalid value for a line number')
196 CheckDefExecAndScriptFailure(['append(".a", "x")'], 'E1209: Invalid value for a line number') 196 v9.CheckDefExecAndScriptFailure(['append(".a", "x")'], 'E1209: Invalid value for a line number')
197 # only get one error 197 # only get one error
198 assert_fails('append("''aa", "x")', ['E1209: Invalid value for a line number: "''aa"', 'E1209:']) 198 assert_fails('append("''aa", "x")', ['E1209: Invalid value for a line number: "''aa"', 'E1209:'])
199 CheckDefExecAndScriptFailure(['append(-1, "x")'], 'E966: Invalid line number: -1') 199 v9.CheckDefExecAndScriptFailure(['append(-1, "x")'], 'E966: Invalid line number: -1')
200 bwipe! 200 bwipe!
201 enddef 201 enddef
202 202
203 def Test_appendbufline() 203 def Test_appendbufline()
204 new 204 new
210 var res2: bool = appendbufline(bnum, 3, 'two') 210 var res2: bool = appendbufline(bnum, 3, 'two')
211 assert_equal(false, res2) 211 assert_equal(false, res2)
212 assert_equal(['0', 'one', '1', 'two', '2', ''], getbufline(bnum, 1, '$')) 212 assert_equal(['0', 'one', '1', 'two', '2', ''], getbufline(bnum, 1, '$'))
213 appendbufline(bnum, 0, 'zero') 213 appendbufline(bnum, 0, 'zero')
214 assert_equal(['zero'], getbufline(bnum, 1)) 214 assert_equal(['zero'], getbufline(bnum, 1))
215 CheckDefAndScriptFailure(['appendbufline([1], 1, "x")'], ['E1013: Argument 1: type mismatch, expected string but got list<number>', 'E1220: String or Number required for argument 1']) 215 v9.CheckDefAndScriptFailure(['appendbufline([1], 1, "x")'], ['E1013: Argument 1: type mismatch, expected string but got list<number>', 'E1220: String or Number required for argument 1'])
216 CheckDefAndScriptFailure(['appendbufline(1, [1], "x")'], ['E1013: Argument 2: type mismatch, expected string but got list<number>', 'E1220: String or Number required for argument 2']) 216 v9.CheckDefAndScriptFailure(['appendbufline(1, [1], "x")'], ['E1013: Argument 2: type mismatch, expected string but got list<number>', 'E1220: String or Number required for argument 2'])
217 CheckDefExecAndScriptFailure(['appendbufline(' .. bnum .. ', -1, "x")'], 'E966: Invalid line number: -1') 217 v9.CheckDefExecAndScriptFailure(['appendbufline(' .. bnum .. ', -1, "x")'], 'E966: Invalid line number: -1')
218 CheckDefExecAndScriptFailure(['appendbufline(' .. bnum .. ', "$a", "x")'], 'E1030: Using a String as a Number: "$a"') 218 v9.CheckDefExecAndScriptFailure(['appendbufline(' .. bnum .. ', "$a", "x")'], 'E1030: Using a String as a Number: "$a"')
219 assert_fails('appendbufline(' .. bnum .. ', "$a", "x")', ['E1030: Using a String as a Number: "$a"', 'E1030:']) 219 assert_fails('appendbufline(' .. bnum .. ', "$a", "x")', ['E1030: Using a String as a Number: "$a"', 'E1030:'])
220 CheckDefAndScriptFailure(['appendbufline(1, 1, {"a": 10})'], ['E1013: Argument 3: type mismatch, expected string but got dict<number>', 'E1224: String, Number or List required for argument 3']) 220 v9.CheckDefAndScriptFailure(['appendbufline(1, 1, {"a": 10})'], ['E1013: Argument 3: type mismatch, expected string but got dict<number>', 'E1224: String, Number or List required for argument 3'])
221 bnum->bufwinid()->win_gotoid() 221 bnum->bufwinid()->win_gotoid()
222 appendbufline('', 0, 'numbers') 222 appendbufline('', 0, 'numbers')
223 getline(1)->assert_equal('numbers') 223 getline(1)->assert_equal('numbers')
224 bwipe! 224 bwipe!
225 enddef 225 enddef
226 226
227 def Test_argc() 227 def Test_argc()
228 CheckDefAndScriptFailure(['argc("x")'], ['E1013: Argument 1: type mismatch, expected number but got string', 'E1210: Number required for argument 1']) 228 v9.CheckDefAndScriptFailure(['argc("x")'], ['E1013: Argument 1: type mismatch, expected number but got string', 'E1210: Number required for argument 1'])
229 enddef 229 enddef
230 230
231 def Test_arglistid() 231 def Test_arglistid()
232 CheckDefAndScriptFailure(['arglistid("x")'], ['E1013: Argument 1: type mismatch, expected number but got string', 'E1210: Number required for argument 1']) 232 v9.CheckDefAndScriptFailure(['arglistid("x")'], ['E1013: Argument 1: type mismatch, expected number but got string', 'E1210: Number required for argument 1'])
233 CheckDefAndScriptFailure(['arglistid(1, "y")'], ['E1013: Argument 2: type mismatch, expected number but got string', 'E1210: Number required for argument 2']) 233 v9.CheckDefAndScriptFailure(['arglistid(1, "y")'], ['E1013: Argument 2: type mismatch, expected number but got string', 'E1210: Number required for argument 2'])
234 CheckDefAndScriptFailure(['arglistid("x", "y")'], ['E1013: Argument 1: type mismatch, expected number but got string', 'E1210: Number required for argument 1']) 234 v9.CheckDefAndScriptFailure(['arglistid("x", "y")'], ['E1013: Argument 1: type mismatch, expected number but got string', 'E1210: Number required for argument 1'])
235 enddef 235 enddef
236 236
237 def Test_argv() 237 def Test_argv()
238 CheckDefAndScriptFailure(['argv("x")'], ['E1013: Argument 1: type mismatch, expected number but got string', 'E1210: Number required for argument 1']) 238 v9.CheckDefAndScriptFailure(['argv("x")'], ['E1013: Argument 1: type mismatch, expected number but got string', 'E1210: Number required for argument 1'])
239 CheckDefAndScriptFailure(['argv(1, "x")'], ['E1013: Argument 2: type mismatch, expected number but got string', 'E1210: Number required for argument 2']) 239 v9.CheckDefAndScriptFailure(['argv(1, "x")'], ['E1013: Argument 2: type mismatch, expected number but got string', 'E1210: Number required for argument 2'])
240 CheckDefAndScriptFailure(['argv("x", "y")'], ['E1013: Argument 1: type mismatch, expected number but got string', 'E1210: Number required for argument 1']) 240 v9.CheckDefAndScriptFailure(['argv("x", "y")'], ['E1013: Argument 1: type mismatch, expected number but got string', 'E1210: Number required for argument 1'])
241 enddef 241 enddef
242 242
243 def Test_assert_beeps() 243 def Test_assert_beeps()
244 CheckDefAndScriptFailure(['assert_beeps(1)'], ['E1013: Argument 1: type mismatch, expected string but got number', 'E1174: String required for argument 1']) 244 v9.CheckDefAndScriptFailure(['assert_beeps(1)'], ['E1013: Argument 1: type mismatch, expected string but got number', 'E1174: String required for argument 1'])
245 enddef 245 enddef
246 246
247 def Test_assert_equalfile() 247 def Test_assert_equalfile()
248 CheckDefAndScriptFailure(['assert_equalfile(1, "f2")'], ['E1013: Argument 1: type mismatch, expected string but got number', 'E1174: String required for argument 1']) 248 v9.CheckDefAndScriptFailure(['assert_equalfile(1, "f2")'], ['E1013: Argument 1: type mismatch, expected string but got number', 'E1174: String required for argument 1'])
249 CheckDefAndScriptFailure(['assert_equalfile("f1", true)'], ['E1013: Argument 2: type mismatch, expected string but got bool', 'E1174: String required for argument 2']) 249 v9.CheckDefAndScriptFailure(['assert_equalfile("f1", true)'], ['E1013: Argument 2: type mismatch, expected string but got bool', 'E1174: String required for argument 2'])
250 CheckDefAndScriptFailure(['assert_equalfile("f1", "f2", ["a"])'], ['E1013: Argument 3: type mismatch, expected string but got list<string>', 'E1174: String required for argument 3']) 250 v9.CheckDefAndScriptFailure(['assert_equalfile("f1", "f2", ["a"])'], ['E1013: Argument 3: type mismatch, expected string but got list<string>', 'E1174: String required for argument 3'])
251 enddef 251 enddef
252 252
253 def Test_assert_exception() 253 def Test_assert_exception()
254 CheckDefAndScriptFailure(['assert_exception({})'], ['E1013: Argument 1: type mismatch, expected string but got dict<unknown>', 'E1174: String required for argument 1']) 254 v9.CheckDefAndScriptFailure(['assert_exception({})'], ['E1013: Argument 1: type mismatch, expected string but got dict<unknown>', 'E1174: String required for argument 1'])
255 CheckDefAndScriptFailure(['assert_exception("E1:", v:null)'], ['E1013: Argument 2: type mismatch, expected string but got special', 'E1174: String required for argument 2']) 255 v9.CheckDefAndScriptFailure(['assert_exception("E1:", v:null)'], ['E1013: Argument 2: type mismatch, expected string but got special', 'E1174: String required for argument 2'])
256 enddef 256 enddef
257 257
258 def Test_assert_fails() 258 def Test_assert_fails()
259 CheckDefAndScriptFailure(['assert_fails([])'], ['E1013: Argument 1: type mismatch, expected string but got list<unknown>', 'E1220: String or Number required for argument 1']) 259 v9.CheckDefAndScriptFailure(['assert_fails([])'], ['E1013: Argument 1: type mismatch, expected string but got list<unknown>', 'E1220: String or Number required for argument 1'])
260 CheckDefAndScriptFailure(['assert_fails("a", true)'], ['E1013: Argument 2: type mismatch, expected string but got bool', 'E1222: String or List required for argument 2']) 260 v9.CheckDefAndScriptFailure(['assert_fails("a", true)'], ['E1013: Argument 2: type mismatch, expected string but got bool', 'E1222: String or List required for argument 2'])
261 CheckDefAndScriptFailure(['assert_fails("a", "b", "c", "d")'], ['E1013: Argument 4: type mismatch, expected number but got string', 'E1210: Number required for argument 4']) 261 v9.CheckDefAndScriptFailure(['assert_fails("a", "b", "c", "d")'], ['E1013: Argument 4: type mismatch, expected number but got string', 'E1210: Number required for argument 4'])
262 CheckDefAndScriptFailure(['assert_fails("a", "b", "c", 4, 5)'], ['E1013: Argument 5: type mismatch, expected string but got number', 'E1174: String required for argument 5']) 262 v9.CheckDefAndScriptFailure(['assert_fails("a", "b", "c", 4, 5)'], ['E1013: Argument 5: type mismatch, expected string but got number', 'E1174: String required for argument 5'])
263 enddef 263 enddef
264 264
265 def Test_assert_inrange() 265 def Test_assert_inrange()
266 CheckDefAndScriptFailure(['assert_inrange("a", 2, 3)'], ['E1013: Argument 1: type mismatch, expected number but got string', 'E1219: Float or Number required for argument 1']) 266 v9.CheckDefAndScriptFailure(['assert_inrange("a", 2, 3)'], ['E1013: Argument 1: type mismatch, expected number but got string', 'E1219: Float or Number required for argument 1'])
267 CheckDefAndScriptFailure(['assert_inrange(1, "b", 3)'], ['E1013: Argument 2: type mismatch, expected number but got string', 'E1219: Float or Number required for argument 2']) 267 v9.CheckDefAndScriptFailure(['assert_inrange(1, "b", 3)'], ['E1013: Argument 2: type mismatch, expected number but got string', 'E1219: Float or Number required for argument 2'])
268 CheckDefAndScriptFailure(['assert_inrange(1, 2, "c")'], ['E1013: Argument 3: type mismatch, expected number but got string', 'E1219: Float or Number required for argument 3']) 268 v9.CheckDefAndScriptFailure(['assert_inrange(1, 2, "c")'], ['E1013: Argument 3: type mismatch, expected number but got string', 'E1219: Float or Number required for argument 3'])
269 CheckDefAndScriptFailure(['assert_inrange(1, 2, 3, 4)'], ['E1013: Argument 4: type mismatch, expected string but got number', 'E1174: String required for argument 4']) 269 v9.CheckDefAndScriptFailure(['assert_inrange(1, 2, 3, 4)'], ['E1013: Argument 4: type mismatch, expected string but got number', 'E1174: String required for argument 4'])
270 enddef 270 enddef
271 271
272 def Test_assert_match() 272 def Test_assert_match()
273 CheckDefAndScriptFailure(['assert_match({}, "b")'], ['E1013: Argument 1: type mismatch, expected string but got dict<unknown>', '']) 273 v9.CheckDefAndScriptFailure(['assert_match({}, "b")'], ['E1013: Argument 1: type mismatch, expected string but got dict<unknown>', ''])
274 CheckDefAndScriptFailure(['assert_match("a", 1)'], ['E1013: Argument 2: type mismatch, expected string but got number', '']) 274 v9.CheckDefAndScriptFailure(['assert_match("a", 1)'], ['E1013: Argument 2: type mismatch, expected string but got number', ''])
275 CheckDefAndScriptFailure(['assert_match("a", "b", null)'], ['E1013: Argument 3: type mismatch, expected string but got special', '']) 275 v9.CheckDefAndScriptFailure(['assert_match("a", "b", null)'], ['E1013: Argument 3: type mismatch, expected string but got special', ''])
276 enddef 276 enddef
277 277
278 def Test_assert_nobeep() 278 def Test_assert_nobeep()
279 CheckDefAndScriptFailure(['assert_nobeep(1)'], ['E1013: Argument 1: type mismatch, expected string but got number', 'E1174: String required for argument 1']) 279 v9.CheckDefAndScriptFailure(['assert_nobeep(1)'], ['E1013: Argument 1: type mismatch, expected string but got number', 'E1174: String required for argument 1'])
280 enddef 280 enddef
281 281
282 def Test_assert_notmatch() 282 def Test_assert_notmatch()
283 CheckDefAndScriptFailure(['assert_notmatch({}, "b")'], ['E1013: Argument 1: type mismatch, expected string but got dict<unknown>', '']) 283 v9.CheckDefAndScriptFailure(['assert_notmatch({}, "b")'], ['E1013: Argument 1: type mismatch, expected string but got dict<unknown>', ''])
284 CheckDefAndScriptFailure(['assert_notmatch("a", 1)'], ['E1013: Argument 2: type mismatch, expected string but got number', '']) 284 v9.CheckDefAndScriptFailure(['assert_notmatch("a", 1)'], ['E1013: Argument 2: type mismatch, expected string but got number', ''])
285 CheckDefAndScriptFailure(['assert_notmatch("a", "b", null)'], ['E1013: Argument 3: type mismatch, expected string but got special', '']) 285 v9.CheckDefAndScriptFailure(['assert_notmatch("a", "b", null)'], ['E1013: Argument 3: type mismatch, expected string but got special', ''])
286 enddef 286 enddef
287 287
288 def Test_assert_report() 288 def Test_assert_report()
289 CheckDefAndScriptFailure(['assert_report([1, 2])'], ['E1013: Argument 1: type mismatch, expected string but got list<number>', 'E1174: String required for argument 1']) 289 v9.CheckDefAndScriptFailure(['assert_report([1, 2])'], ['E1013: Argument 1: type mismatch, expected string but got list<number>', 'E1174: String required for argument 1'])
290 enddef 290 enddef
291 291
292 def Test_balloon_show() 292 def Test_balloon_show()
293 CheckGui 293 CheckGui
294 CheckFeature balloon_eval 294 CheckFeature balloon_eval
295 295
296 assert_fails('balloon_show(10)', 'E1222:') 296 assert_fails('balloon_show(10)', 'E1222:')
297 assert_fails('balloon_show(true)', 'E1222:') 297 assert_fails('balloon_show(true)', 'E1222:')
298 298
299 CheckDefAndScriptFailure(['balloon_show(1.2)'], ['E1013: Argument 1: type mismatch, expected string but got float', 'E1222: String or List required for argument 1']) 299 v9.CheckDefAndScriptFailure(['balloon_show(1.2)'], ['E1013: Argument 1: type mismatch, expected string but got float', 'E1222: String or List required for argument 1'])
300 CheckDefAndScriptFailure(['balloon_show({"a": 10})'], ['E1013: Argument 1: type mismatch, expected string but got dict<number>', 'E1222: String or List required for argument 1']) 300 v9.CheckDefAndScriptFailure(['balloon_show({"a": 10})'], ['E1013: Argument 1: type mismatch, expected string but got dict<number>', 'E1222: String or List required for argument 1'])
301 enddef 301 enddef
302 302
303 def Test_balloon_split() 303 def Test_balloon_split()
304 CheckFeature balloon_eval_term 304 CheckFeature balloon_eval_term
305 305
306 assert_fails('balloon_split([])', 'E1174:') 306 assert_fails('balloon_split([])', 'E1174:')
307 assert_fails('balloon_split(true)', 'E1174:') 307 assert_fails('balloon_split(true)', 'E1174:')
308 enddef 308 enddef
309 309
310 def Test_blob2list() 310 def Test_blob2list()
311 CheckDefAndScriptFailure(['blob2list(10)'], ['E1013: Argument 1: type mismatch, expected blob but got number', 'E1238: Blob required for argument 1']) 311 v9.CheckDefAndScriptFailure(['blob2list(10)'], ['E1013: Argument 1: type mismatch, expected blob but got number', 'E1238: Blob required for argument 1'])
312 enddef 312 enddef
313 313
314 def Test_browse() 314 def Test_browse()
315 CheckFeature browse 315 CheckFeature browse
316 316
317 CheckDefAndScriptFailure(['browse(2, "title", "dir", "file")'], ['E1013: Argument 1: type mismatch, expected bool but got number', 'E1212: Bool required for argument 1']) 317 v9.CheckDefAndScriptFailure(['browse(2, "title", "dir", "file")'], ['E1013: Argument 1: type mismatch, expected bool but got number', 'E1212: Bool required for argument 1'])
318 CheckDefAndScriptFailure(['browse(true, 2, "dir", "file")'], ['E1013: Argument 2: type mismatch, expected string but got number', 'E1174: String required for argument 2']) 318 v9.CheckDefAndScriptFailure(['browse(true, 2, "dir", "file")'], ['E1013: Argument 2: type mismatch, expected string but got number', 'E1174: String required for argument 2'])
319 CheckDefAndScriptFailure(['browse(true, "title", 3, "file")'], ['E1013: Argument 3: type mismatch, expected string but got number', 'E1174: String required for argument 3']) 319 v9.CheckDefAndScriptFailure(['browse(true, "title", 3, "file")'], ['E1013: Argument 3: type mismatch, expected string but got number', 'E1174: String required for argument 3'])
320 CheckDefAndScriptFailure(['browse(true, "title", "dir", 4)'], ['E1013: Argument 4: type mismatch, expected string but got number', 'E1174: String required for argument 4']) 320 v9.CheckDefAndScriptFailure(['browse(true, "title", "dir", 4)'], ['E1013: Argument 4: type mismatch, expected string but got number', 'E1174: String required for argument 4'])
321 enddef 321 enddef
322 322
323 def Test_browsedir() 323 def Test_browsedir()
324 if has('browse') 324 if has('browse')
325 CheckDefAndScriptFailure(['browsedir({}, "b")'], ['E1013: Argument 1: type mismatch, expected string but got dict<unknown>', 'E1174: String required for argument 1']) 325 v9.CheckDefAndScriptFailure(['browsedir({}, "b")'], ['E1013: Argument 1: type mismatch, expected string but got dict<unknown>', 'E1174: String required for argument 1'])
326 CheckDefAndScriptFailure(['browsedir("a", [])'], ['E1013: Argument 2: type mismatch, expected string but got list<unknown>', 'E1174: String required for argument 2']) 326 v9.CheckDefAndScriptFailure(['browsedir("a", [])'], ['E1013: Argument 2: type mismatch, expected string but got list<unknown>', 'E1174: String required for argument 2'])
327 endif 327 endif
328 enddef 328 enddef
329 329
330 def Test_bufadd() 330 def Test_bufadd()
331 assert_fails('bufadd([])', 'E1174:') 331 assert_fails('bufadd([])', 'E1174:')
370 bufnr('%')->assert_equal(buf) 370 bufnr('%')->assert_equal(buf)
371 371
372 buf = bufnr('Xdummy', true) 372 buf = bufnr('Xdummy', true)
373 buf->assert_notequal(-1) 373 buf->assert_notequal(-1)
374 exe 'bwipe! ' .. buf 374 exe 'bwipe! ' .. buf
375 CheckDefAndScriptFailure(['bufnr([1])'], ['E1013: Argument 1: type mismatch, expected string but got list<number>', 'E1220: String or Number required for argument 1']) 375 v9.CheckDefAndScriptFailure(['bufnr([1])'], ['E1013: Argument 1: type mismatch, expected string but got list<number>', 'E1220: String or Number required for argument 1'])
376 CheckDefAndScriptFailure(['bufnr(1, 2)'], ['E1013: Argument 2: type mismatch, expected bool but got number', 'E1212: Bool required for argument 2']) 376 v9.CheckDefAndScriptFailure(['bufnr(1, 2)'], ['E1013: Argument 2: type mismatch, expected bool but got number', 'E1212: Bool required for argument 2'])
377 enddef 377 enddef
378 378
379 def Test_bufwinid() 379 def Test_bufwinid()
380 var origwin = win_getid() 380 var origwin = win_getid()
381 below split SomeFile 381 below split SomeFile
397 assert_fails('bufwinnr(true)', 'E1220:') 397 assert_fails('bufwinnr(true)', 'E1220:')
398 assert_fails('bufwinnr([])', 'E1220:') 398 assert_fails('bufwinnr([])', 'E1220:')
399 enddef 399 enddef
400 400
401 def Test_byte2line() 401 def Test_byte2line()
402 CheckDefAndScriptFailure(['byte2line("1")'], ['E1013: Argument 1: type mismatch, expected number but got string', 'E1210: Number required for argument 1']) 402 v9.CheckDefAndScriptFailure(['byte2line("1")'], ['E1013: Argument 1: type mismatch, expected number but got string', 'E1210: Number required for argument 1'])
403 CheckDefAndScriptFailure(['byte2line([])'], ['E1013: Argument 1: type mismatch, expected number but got list<unknown>', 'E1210: Number required for argument 1']) 403 v9.CheckDefAndScriptFailure(['byte2line([])'], ['E1013: Argument 1: type mismatch, expected number but got list<unknown>', 'E1210: Number required for argument 1'])
404 byte2line(0)->assert_equal(-1) 404 byte2line(0)->assert_equal(-1)
405 enddef 405 enddef
406 406
407 def Test_byteidx() 407 def Test_byteidx()
408 CheckDefAndScriptFailure(['byteidx(1, 2)'], ['E1013: Argument 1: type mismatch, expected string but got number', 'E1174: String required for argument 1']) 408 v9.CheckDefAndScriptFailure(['byteidx(1, 2)'], ['E1013: Argument 1: type mismatch, expected string but got number', 'E1174: String required for argument 1'])
409 CheckDefAndScriptFailure(['byteidx("a", "b")'], ['E1013: Argument 2: type mismatch, expected number but got string', 'E1210: Number required for argument 2']) 409 v9.CheckDefAndScriptFailure(['byteidx("a", "b")'], ['E1013: Argument 2: type mismatch, expected number but got string', 'E1210: Number required for argument 2'])
410 byteidx('', 0)->assert_equal(0) 410 byteidx('', 0)->assert_equal(0)
411 byteidx('', 1)->assert_equal(-1) 411 byteidx('', 1)->assert_equal(-1)
412 enddef 412 enddef
413 413
414 def Test_byteidxcomp() 414 def Test_byteidxcomp()
415 CheckDefAndScriptFailure(['byteidxcomp(1, 2)'], ['E1013: Argument 1: type mismatch, expected string but got number', 'E1174: String required for argument 1']) 415 v9.CheckDefAndScriptFailure(['byteidxcomp(1, 2)'], ['E1013: Argument 1: type mismatch, expected string but got number', 'E1174: String required for argument 1'])
416 CheckDefAndScriptFailure(['byteidxcomp("a", "b")'], ['E1013: Argument 2: type mismatch, expected number but got string', 'E1210: Number required for argument 2']) 416 v9.CheckDefAndScriptFailure(['byteidxcomp("a", "b")'], ['E1013: Argument 2: type mismatch, expected number but got string', 'E1210: Number required for argument 2'])
417 enddef 417 enddef
418 418
419 def Test_call_call() 419 def Test_call_call()
420 var l = [3, 2, 1] 420 var l = [3, 2, 1]
421 call('reverse', [l]) 421 call('reverse', [l])
422 l->assert_equal([1, 2, 3]) 422 l->assert_equal([1, 2, 3])
423 423
424 CheckDefExecAndScriptFailure(['call(123, [2])'], 'E1256: String or function required for argument 1') 424 v9.CheckDefExecAndScriptFailure(['call(123, [2])'], 'E1256: String or function required for argument 1')
425 CheckDefExecAndScriptFailure(['call(true, [2])'], 'E1256: String or function required for argument 1') 425 v9.CheckDefExecAndScriptFailure(['call(true, [2])'], 'E1256: String or function required for argument 1')
426 CheckDefAndScriptFailure(['call("reverse", 2)'], ['E1013: Argument 2: type mismatch, expected list<any> but got number', 'E1211: List required for argument 2']) 426 v9.CheckDefAndScriptFailure(['call("reverse", 2)'], ['E1013: Argument 2: type mismatch, expected list<any> but got number', 'E1211: List required for argument 2'])
427 CheckDefAndScriptFailure(['call("reverse", [2], [1])'], ['E1013: Argument 3: type mismatch, expected dict<any> but got list<number>', 'E1206: Dictionary required for argument 3']) 427 v9.CheckDefAndScriptFailure(['call("reverse", [2], [1])'], ['E1013: Argument 3: type mismatch, expected dict<any> but got list<number>', 'E1206: Dictionary required for argument 3'])
428 enddef 428 enddef
429 429
430 def Test_ch_canread() 430 def Test_ch_canread()
431 if !has('channel') 431 if !has('channel')
432 CheckFeature channel 432 CheckFeature channel
433 else 433 else
434 CheckDefAndScriptFailure(['ch_canread(10)'], ['E1013: Argument 1: type mismatch, expected channel but got number', 'E1217: Channel or Job required for argument 1']) 434 v9.CheckDefAndScriptFailure(['ch_canread(10)'], ['E1013: Argument 1: type mismatch, expected channel but got number', 'E1217: Channel or Job required for argument 1'])
435 endif 435 endif
436 enddef 436 enddef
437 437
438 def Test_ch_close() 438 def Test_ch_close()
439 if !has('channel') 439 if !has('channel')
440 CheckFeature channel 440 CheckFeature channel
441 else 441 else
442 CheckDefAndScriptFailure(['ch_close("c")'], ['E1013: Argument 1: type mismatch, expected channel but got string', 'E1217: Channel or Job required for argument 1']) 442 v9.CheckDefAndScriptFailure(['ch_close("c")'], ['E1013: Argument 1: type mismatch, expected channel but got string', 'E1217: Channel or Job required for argument 1'])
443 endif 443 endif
444 enddef 444 enddef
445 445
446 def Test_ch_close_in() 446 def Test_ch_close_in()
447 if !has('channel') 447 if !has('channel')
448 CheckFeature channel 448 CheckFeature channel
449 else 449 else
450 CheckDefAndScriptFailure(['ch_close_in(true)'], ['E1013: Argument 1: type mismatch, expected channel but got bool', 'E1217: Channel or Job required for argument 1']) 450 v9.CheckDefAndScriptFailure(['ch_close_in(true)'], ['E1013: Argument 1: type mismatch, expected channel but got bool', 'E1217: Channel or Job required for argument 1'])
451 endif 451 endif
452 enddef 452 enddef
453 453
454 def Test_ch_evalexpr() 454 def Test_ch_evalexpr()
455 if !has('channel') 455 if !has('channel')
456 CheckFeature channel 456 CheckFeature channel
457 else 457 else
458 CheckDefAndScriptFailure(['ch_evalexpr(1, "a")'], ['E1013: Argument 1: type mismatch, expected channel but got number', 'E1217: Channel or Job required for argument 1']) 458 v9.CheckDefAndScriptFailure(['ch_evalexpr(1, "a")'], ['E1013: Argument 1: type mismatch, expected channel but got number', 'E1217: Channel or Job required for argument 1'])
459 CheckDefAndScriptFailure(['ch_evalexpr(test_null_channel(), 1, [])'], ['E1013: Argument 3: type mismatch, expected dict<any> but got list<unknown>', 'E1206: Dictionary required for argument 3']) 459 v9.CheckDefAndScriptFailure(['ch_evalexpr(test_null_channel(), 1, [])'], ['E1013: Argument 3: type mismatch, expected dict<any> but got list<unknown>', 'E1206: Dictionary required for argument 3'])
460 endif 460 endif
461 enddef 461 enddef
462 462
463 def Test_ch_evalraw() 463 def Test_ch_evalraw()
464 if !has('channel') 464 if !has('channel')
465 CheckFeature channel 465 CheckFeature channel
466 else 466 else
467 CheckDefAndScriptFailure(['ch_evalraw(1, "")'], ['E1013: Argument 1: type mismatch, expected channel but got number', 'E1217: Channel or Job required for argument 1']) 467 v9.CheckDefAndScriptFailure(['ch_evalraw(1, "")'], ['E1013: Argument 1: type mismatch, expected channel but got number', 'E1217: Channel or Job required for argument 1'])
468 CheckDefAndScriptFailure(['ch_evalraw(test_null_channel(), 1)'], ['E1013: Argument 2: type mismatch, expected string but got number', 'E1221: String or Blob required for argument 2']) 468 v9.CheckDefAndScriptFailure(['ch_evalraw(test_null_channel(), 1)'], ['E1013: Argument 2: type mismatch, expected string but got number', 'E1221: String or Blob required for argument 2'])
469 CheckDefAndScriptFailure(['ch_evalraw(test_null_channel(), "", [])'], ['E1013: Argument 3: type mismatch, expected dict<any> but got list<unknown>', 'E1206: Dictionary required for argument 3']) 469 v9.CheckDefAndScriptFailure(['ch_evalraw(test_null_channel(), "", [])'], ['E1013: Argument 3: type mismatch, expected dict<any> but got list<unknown>', 'E1206: Dictionary required for argument 3'])
470 endif 470 endif
471 enddef 471 enddef
472 472
473 def Test_ch_getbufnr() 473 def Test_ch_getbufnr()
474 if !has('channel') 474 if !has('channel')
475 CheckFeature channel 475 CheckFeature channel
476 else 476 else
477 CheckDefAndScriptFailure(['ch_getbufnr(1, "a")'], ['E1013: Argument 1: type mismatch, expected channel but got number', 'E1217: Channel or Job required for argument 1']) 477 v9.CheckDefAndScriptFailure(['ch_getbufnr(1, "a")'], ['E1013: Argument 1: type mismatch, expected channel but got number', 'E1217: Channel or Job required for argument 1'])
478 CheckDefAndScriptFailure(['ch_getbufnr(test_null_channel(), 1)'], ['E1013: Argument 2: type mismatch, expected string but got number', 'E1174: String required for argument 2']) 478 v9.CheckDefAndScriptFailure(['ch_getbufnr(test_null_channel(), 1)'], ['E1013: Argument 2: type mismatch, expected string but got number', 'E1174: String required for argument 2'])
479 # test empty string argument for ch_getbufnr() 479 # test empty string argument for ch_getbufnr()
480 var job: job = job_start(&shell) 480 var job: job = job_start(&shell)
481 job->ch_getbufnr('')->assert_equal(-1) 481 job->ch_getbufnr('')->assert_equal(-1)
482 job_stop(job) 482 job_stop(job)
483 endif 483 endif
485 485
486 def Test_ch_getjob() 486 def Test_ch_getjob()
487 if !has('channel') 487 if !has('channel')
488 CheckFeature channel 488 CheckFeature channel
489 else 489 else
490 CheckDefAndScriptFailure(['ch_getjob(1)'], ['E1013: Argument 1: type mismatch, expected channel but got number', 'E1217: Channel or Job required for argument 1']) 490 v9.CheckDefAndScriptFailure(['ch_getjob(1)'], ['E1013: Argument 1: type mismatch, expected channel but got number', 'E1217: Channel or Job required for argument 1'])
491 CheckDefAndScriptFailure(['ch_getjob({"a": 10})'], ['E1013: Argument 1: type mismatch, expected channel but got dict<number>', 'E1217: Channel or Job required for argument 1']) 491 v9.CheckDefAndScriptFailure(['ch_getjob({"a": 10})'], ['E1013: Argument 1: type mismatch, expected channel but got dict<number>', 'E1217: Channel or Job required for argument 1'])
492 assert_equal(0, ch_getjob(test_null_channel())) 492 assert_equal(0, ch_getjob(test_null_channel()))
493 endif 493 endif
494 enddef 494 enddef
495 495
496 def Test_ch_info() 496 def Test_ch_info()
497 if !has('channel') 497 if !has('channel')
498 CheckFeature channel 498 CheckFeature channel
499 else 499 else
500 CheckDefAndScriptFailure(['ch_info([1])'], ['E1013: Argument 1: type mismatch, expected channel but got list<number>', 'E1217: Channel or Job required for argument 1']) 500 v9.CheckDefAndScriptFailure(['ch_info([1])'], ['E1013: Argument 1: type mismatch, expected channel but got list<number>', 'E1217: Channel or Job required for argument 1'])
501 endif 501 endif
502 enddef 502 enddef
503 503
504 def Test_ch_log() 504 def Test_ch_log()
505 if !has('channel') 505 if !has('channel')
506 CheckFeature channel 506 CheckFeature channel
507 else 507 else
508 CheckDefAndScriptFailure(['ch_log(true)'], ['E1013: Argument 1: type mismatch, expected string but got bool', 'E1174: String required for argument 1']) 508 v9.CheckDefAndScriptFailure(['ch_log(true)'], ['E1013: Argument 1: type mismatch, expected string but got bool', 'E1174: String required for argument 1'])
509 CheckDefAndScriptFailure(['ch_log("a", 1)'], ['E1013: Argument 2: type mismatch, expected channel but got number', 'E1217: Channel or Job required for argument 2']) 509 v9.CheckDefAndScriptFailure(['ch_log("a", 1)'], ['E1013: Argument 2: type mismatch, expected channel but got number', 'E1217: Channel or Job required for argument 2'])
510 endif 510 endif
511 enddef 511 enddef
512 512
513 def Test_ch_logfile() 513 def Test_ch_logfile()
514 if !has('channel') 514 if !has('channel')
516 else 516 else
517 assert_fails('ch_logfile(true)', 'E1174:') 517 assert_fails('ch_logfile(true)', 'E1174:')
518 assert_fails('ch_logfile("foo", true)', 'E1174:') 518 assert_fails('ch_logfile("foo", true)', 'E1174:')
519 ch_logfile('', '')->assert_equal(0) 519 ch_logfile('', '')->assert_equal(0)
520 520
521 CheckDefAndScriptFailure(['ch_logfile(1)'], ['E1013: Argument 1: type mismatch, expected string but got number', 'E1174: String required for argument 1']) 521 v9.CheckDefAndScriptFailure(['ch_logfile(1)'], ['E1013: Argument 1: type mismatch, expected string but got number', 'E1174: String required for argument 1'])
522 CheckDefAndScriptFailure(['ch_logfile("a", true)'], ['E1013: Argument 2: type mismatch, expected string but got bool', 'E1174: String required for argument 2']) 522 v9.CheckDefAndScriptFailure(['ch_logfile("a", true)'], ['E1013: Argument 2: type mismatch, expected string but got bool', 'E1174: String required for argument 2'])
523 endif 523 endif
524 enddef 524 enddef
525 525
526 def Test_ch_open() 526 def Test_ch_open()
527 if !has('channel') 527 if !has('channel')
528 CheckFeature channel 528 CheckFeature channel
529 else 529 else
530 CheckDefAndScriptFailure(['ch_open({"a": 10}, "a")'], ['E1013: Argument 1: type mismatch, expected string but got dict<number>', 'E1174: String required for argument 1']) 530 v9.CheckDefAndScriptFailure(['ch_open({"a": 10}, "a")'], ['E1013: Argument 1: type mismatch, expected string but got dict<number>', 'E1174: String required for argument 1'])
531 CheckDefAndScriptFailure(['ch_open("a", [1])'], ['E1013: Argument 2: type mismatch, expected dict<any> but got list<number>', 'E1206: Dictionary required for argument 2']) 531 v9.CheckDefAndScriptFailure(['ch_open("a", [1])'], ['E1013: Argument 2: type mismatch, expected dict<any> but got list<number>', 'E1206: Dictionary required for argument 2'])
532 CheckDefExecAndScriptFailure(['ch_open("")'], 'E475: Invalid argument') 532 v9.CheckDefExecAndScriptFailure(['ch_open("")'], 'E475: Invalid argument')
533 endif 533 endif
534 enddef 534 enddef
535 535
536 def Test_ch_read() 536 def Test_ch_read()
537 if !has('channel') 537 if !has('channel')
538 CheckFeature channel 538 CheckFeature channel
539 else 539 else
540 CheckDefAndScriptFailure(['ch_read(1)'], ['E1013: Argument 1: type mismatch, expected channel but got number', 'E1217: Channel or Job required for argument 1']) 540 v9.CheckDefAndScriptFailure(['ch_read(1)'], ['E1013: Argument 1: type mismatch, expected channel but got number', 'E1217: Channel or Job required for argument 1'])
541 CheckDefAndScriptFailure(['ch_read(test_null_channel(), [])'], ['E1013: Argument 2: type mismatch, expected dict<any> but got list<unknown>', 'E1206: Dictionary required for argument 2']) 541 v9.CheckDefAndScriptFailure(['ch_read(test_null_channel(), [])'], ['E1013: Argument 2: type mismatch, expected dict<any> but got list<unknown>', 'E1206: Dictionary required for argument 2'])
542 endif 542 endif
543 enddef 543 enddef
544 544
545 def Test_ch_readblob() 545 def Test_ch_readblob()
546 if !has('channel') 546 if !has('channel')
547 CheckFeature channel 547 CheckFeature channel
548 else 548 else
549 CheckDefAndScriptFailure(['ch_readblob(1)'], ['E1013: Argument 1: type mismatch, expected channel but got number', 'E1217: Channel or Job required for argument 1']) 549 v9.CheckDefAndScriptFailure(['ch_readblob(1)'], ['E1013: Argument 1: type mismatch, expected channel but got number', 'E1217: Channel or Job required for argument 1'])
550 CheckDefAndScriptFailure(['ch_readblob(test_null_channel(), [])'], ['E1013: Argument 2: type mismatch, expected dict<any> but got list<unknown>', 'E1206: Dictionary required for argument 2']) 550 v9.CheckDefAndScriptFailure(['ch_readblob(test_null_channel(), [])'], ['E1013: Argument 2: type mismatch, expected dict<any> but got list<unknown>', 'E1206: Dictionary required for argument 2'])
551 endif 551 endif
552 enddef 552 enddef
553 553
554 def Test_ch_readraw() 554 def Test_ch_readraw()
555 if !has('channel') 555 if !has('channel')
556 CheckFeature channel 556 CheckFeature channel
557 else 557 else
558 CheckDefAndScriptFailure(['ch_readraw(1)'], ['E1013: Argument 1: type mismatch, expected channel but got number', 'E1217: Channel or Job required for argument 1']) 558 v9.CheckDefAndScriptFailure(['ch_readraw(1)'], ['E1013: Argument 1: type mismatch, expected channel but got number', 'E1217: Channel or Job required for argument 1'])
559 CheckDefAndScriptFailure(['ch_readraw(test_null_channel(), [])'], ['E1013: Argument 2: type mismatch, expected dict<any> but got list<unknown>', 'E1206: Dictionary required for argument 2']) 559 v9.CheckDefAndScriptFailure(['ch_readraw(test_null_channel(), [])'], ['E1013: Argument 2: type mismatch, expected dict<any> but got list<unknown>', 'E1206: Dictionary required for argument 2'])
560 endif 560 endif
561 enddef 561 enddef
562 562
563 def Test_ch_sendexpr() 563 def Test_ch_sendexpr()
564 if !has('channel') 564 if !has('channel')
565 CheckFeature channel 565 CheckFeature channel
566 else 566 else
567 CheckDefAndScriptFailure(['ch_sendexpr(1, "a")'], ['E1013: Argument 1: type mismatch, expected channel but got number', 'E1217: Channel or Job required for argument 1']) 567 v9.CheckDefAndScriptFailure(['ch_sendexpr(1, "a")'], ['E1013: Argument 1: type mismatch, expected channel but got number', 'E1217: Channel or Job required for argument 1'])
568 CheckDefAndScriptFailure(['ch_sendexpr(test_null_channel(), 1, [])'], ['E1013: Argument 3: type mismatch, expected dict<any> but got list<unknown>', 'E1206: Dictionary required for argument 3']) 568 v9.CheckDefAndScriptFailure(['ch_sendexpr(test_null_channel(), 1, [])'], ['E1013: Argument 3: type mismatch, expected dict<any> but got list<unknown>', 'E1206: Dictionary required for argument 3'])
569 endif 569 endif
570 enddef 570 enddef
571 571
572 def Test_ch_sendraw() 572 def Test_ch_sendraw()
573 if !has('channel') 573 if !has('channel')
574 CheckFeature channel 574 CheckFeature channel
575 else 575 else
576 CheckDefAndScriptFailure(['ch_sendraw(1, "")'], ['E1013: Argument 1: type mismatch, expected channel but got number', 'E1217: Channel or Job required for argument 1']) 576 v9.CheckDefAndScriptFailure(['ch_sendraw(1, "")'], ['E1013: Argument 1: type mismatch, expected channel but got number', 'E1217: Channel or Job required for argument 1'])
577 CheckDefAndScriptFailure(['ch_sendraw(test_null_channel(), 1)'], ['E1013: Argument 2: type mismatch, expected string but got number', 'E1221: String or Blob required for argument 2']) 577 v9.CheckDefAndScriptFailure(['ch_sendraw(test_null_channel(), 1)'], ['E1013: Argument 2: type mismatch, expected string but got number', 'E1221: String or Blob required for argument 2'])
578 CheckDefAndScriptFailure(['ch_sendraw(test_null_channel(), "", [])'], ['E1013: Argument 3: type mismatch, expected dict<any> but got list<unknown>', 'E1206: Dictionary required for argument 3']) 578 v9.CheckDefAndScriptFailure(['ch_sendraw(test_null_channel(), "", [])'], ['E1013: Argument 3: type mismatch, expected dict<any> but got list<unknown>', 'E1206: Dictionary required for argument 3'])
579 endif 579 endif
580 enddef 580 enddef
581 581
582 def Test_ch_setoptions() 582 def Test_ch_setoptions()
583 if !has('channel') 583 if !has('channel')
584 CheckFeature channel 584 CheckFeature channel
585 else 585 else
586 CheckDefAndScriptFailure(['ch_setoptions(1, {})'], ['E1013: Argument 1: type mismatch, expected channel but got number', 'E1217: Channel or Job required for argument 1']) 586 v9.CheckDefAndScriptFailure(['ch_setoptions(1, {})'], ['E1013: Argument 1: type mismatch, expected channel but got number', 'E1217: Channel or Job required for argument 1'])
587 CheckDefAndScriptFailure(['ch_setoptions(test_null_channel(), [])'], ['E1013: Argument 2: type mismatch, expected dict<any> but got list<unknown>', 'E1206: Dictionary required for argument 2']) 587 v9.CheckDefAndScriptFailure(['ch_setoptions(test_null_channel(), [])'], ['E1013: Argument 2: type mismatch, expected dict<any> but got list<unknown>', 'E1206: Dictionary required for argument 2'])
588 endif 588 endif
589 enddef 589 enddef
590 590
591 def Test_ch_status() 591 def Test_ch_status()
592 if !has('channel') 592 if !has('channel')
593 CheckFeature channel 593 CheckFeature channel
594 else 594 else
595 CheckDefAndScriptFailure(['ch_status(1)'], ['E1013: Argument 1: type mismatch, expected channel but got number', 'E1217: Channel or Job required for argument 1']) 595 v9.CheckDefAndScriptFailure(['ch_status(1)'], ['E1013: Argument 1: type mismatch, expected channel but got number', 'E1217: Channel or Job required for argument 1'])
596 CheckDefAndScriptFailure(['ch_status(test_null_channel(), [])'], ['E1013: Argument 2: type mismatch, expected dict<any> but got list<unknown>', 'E1206: Dictionary required for argument 2']) 596 v9.CheckDefAndScriptFailure(['ch_status(test_null_channel(), [])'], ['E1013: Argument 2: type mismatch, expected dict<any> but got list<unknown>', 'E1206: Dictionary required for argument 2'])
597 endif 597 endif
598 enddef 598 enddef
599 599
600 def Test_char2nr() 600 def Test_char2nr()
601 char2nr('あ', true)->assert_equal(12354) 601 char2nr('あ', true)->assert_equal(12354)
602 602
603 assert_fails('char2nr(true)', 'E1174:') 603 assert_fails('char2nr(true)', 'E1174:')
604 CheckDefAndScriptFailure(['char2nr(10)'], ['E1013: Argument 1: type mismatch, expected string but got number', 'E1174: String required for argument 1']) 604 v9.CheckDefAndScriptFailure(['char2nr(10)'], ['E1013: Argument 1: type mismatch, expected string but got number', 'E1174: String required for argument 1'])
605 CheckDefAndScriptFailure(['char2nr("a", 2)'], ['E1013: Argument 2: type mismatch, expected bool but got number', 'E1212: Bool required for argument 2']) 605 v9.CheckDefAndScriptFailure(['char2nr("a", 2)'], ['E1013: Argument 2: type mismatch, expected bool but got number', 'E1212: Bool required for argument 2'])
606 assert_equal(97, char2nr('a', 1)) 606 assert_equal(97, char2nr('a', 1))
607 assert_equal(97, char2nr('a', 0)) 607 assert_equal(97, char2nr('a', 0))
608 assert_equal(97, char2nr('a', true)) 608 assert_equal(97, char2nr('a', true))
609 assert_equal(97, char2nr('a', false)) 609 assert_equal(97, char2nr('a', false))
610 char2nr('')->assert_equal(0) 610 char2nr('')->assert_equal(0)
614 assert_fails('charclass(true)', 'E1174:') 614 assert_fails('charclass(true)', 'E1174:')
615 charclass('')->assert_equal(0) 615 charclass('')->assert_equal(0)
616 enddef 616 enddef
617 617
618 def Test_charcol() 618 def Test_charcol()
619 CheckDefAndScriptFailure(['charcol(10)'], ['E1013: Argument 1: type mismatch, expected string but got number', 'E1222: String or List required for argument 1']) 619 v9.CheckDefAndScriptFailure(['charcol(10)'], ['E1013: Argument 1: type mismatch, expected string but got number', 'E1222: String or List required for argument 1'])
620 CheckDefAndScriptFailure(['charcol({a: 10})'], ['E1013: Argument 1: type mismatch, expected string but got dict<number>', 'E1222: String or List required for argument 1']) 620 v9.CheckDefAndScriptFailure(['charcol({a: 10})'], ['E1013: Argument 1: type mismatch, expected string but got dict<number>', 'E1222: String or List required for argument 1'])
621 CheckDefExecAndScriptFailure(['charcol("")'], 'E1209: Invalid value for a line number') 621 v9.CheckDefExecAndScriptFailure(['charcol("")'], 'E1209: Invalid value for a line number')
622 new 622 new
623 setline(1, ['abcdefgh']) 623 setline(1, ['abcdefgh'])
624 cursor(1, 4) 624 cursor(1, 4)
625 assert_equal(4, charcol('.')) 625 assert_equal(4, charcol('.'))
626 assert_equal(9, charcol([1, '$'])) 626 assert_equal(9, charcol([1, '$']))
627 assert_equal(0, charcol([10, '$'])) 627 assert_equal(0, charcol([10, '$']))
628 bw! 628 bw!
629 enddef 629 enddef
630 630
631 def Test_charidx() 631 def Test_charidx()
632 CheckDefAndScriptFailure(['charidx(0z10, 1)'], ['E1013: Argument 1: type mismatch, expected string but got blob', 'E1174: String required for argument 1']) 632 v9.CheckDefAndScriptFailure(['charidx(0z10, 1)'], ['E1013: Argument 1: type mismatch, expected string but got blob', 'E1174: String required for argument 1'])
633 CheckDefAndScriptFailure(['charidx("a", "b")'], ['E1013: Argument 2: type mismatch, expected number but got string', 'E1210: Number required for argument 2']) 633 v9.CheckDefAndScriptFailure(['charidx("a", "b")'], ['E1013: Argument 2: type mismatch, expected number but got string', 'E1210: Number required for argument 2'])
634 CheckDefAndScriptFailure(['charidx("a", 1, "")'], ['E1013: Argument 3: type mismatch, expected bool but got string', 'E1212: Bool required for argument 3']) 634 v9.CheckDefAndScriptFailure(['charidx("a", 1, "")'], ['E1013: Argument 3: type mismatch, expected bool but got string', 'E1212: Bool required for argument 3'])
635 charidx('', 0)->assert_equal(-1) 635 charidx('', 0)->assert_equal(-1)
636 charidx('', 1)->assert_equal(-1) 636 charidx('', 1)->assert_equal(-1)
637 enddef 637 enddef
638 638
639 def Test_chdir() 639 def Test_chdir()
640 assert_fails('chdir(true)', 'E1174:') 640 assert_fails('chdir(true)', 'E1174:')
641 enddef 641 enddef
642 642
643 def Test_cindent() 643 def Test_cindent()
644 CheckDefAndScriptFailure(['cindent([])'], ['E1013: Argument 1: type mismatch, expected string but got list<unknown>', 'E1220: String or Number required for argument 1']) 644 v9.CheckDefAndScriptFailure(['cindent([])'], ['E1013: Argument 1: type mismatch, expected string but got list<unknown>', 'E1220: String or Number required for argument 1'])
645 CheckDefAndScriptFailure(['cindent(null)'], ['E1013: Argument 1: type mismatch, expected string but got special', 'E1220: String or Number required for argument 1']) 645 v9.CheckDefAndScriptFailure(['cindent(null)'], ['E1013: Argument 1: type mismatch, expected string but got special', 'E1220: String or Number required for argument 1'])
646 CheckDefExecAndScriptFailure(['cindent("")'], 'E1209: Invalid value for a line number') 646 v9.CheckDefExecAndScriptFailure(['cindent("")'], 'E1209: Invalid value for a line number')
647 assert_equal(-1, cindent(0)) 647 assert_equal(-1, cindent(0))
648 assert_equal(0, cindent('.')) 648 assert_equal(0, cindent('.'))
649 enddef 649 enddef
650 650
651 def Test_clearmatches() 651 def Test_clearmatches()
652 CheckDefAndScriptFailure(['clearmatches("x")'], ['E1013: Argument 1: type mismatch, expected number but got string', 'E1210: Number required for argument 1']) 652 v9.CheckDefAndScriptFailure(['clearmatches("x")'], ['E1013: Argument 1: type mismatch, expected number but got string', 'E1210: Number required for argument 1'])
653 enddef 653 enddef
654 654
655 def Test_col() 655 def Test_col()
656 new 656 new
657 setline(1, 'abcdefgh') 657 setline(1, 'abcdefgh')
660 col([1, '$'])->assert_equal(9) 660 col([1, '$'])->assert_equal(9)
661 assert_equal(0, col([10, '$'])) 661 assert_equal(0, col([10, '$']))
662 662
663 assert_fails('col(true)', 'E1222:') 663 assert_fails('col(true)', 'E1222:')
664 664
665 CheckDefAndScriptFailure(['col(10)'], ['E1013: Argument 1: type mismatch, expected string but got number', 'E1222: String or List required for argument 1']) 665 v9.CheckDefAndScriptFailure(['col(10)'], ['E1013: Argument 1: type mismatch, expected string but got number', 'E1222: String or List required for argument 1'])
666 CheckDefAndScriptFailure(['col({a: 10})'], ['E1013: Argument 1: type mismatch, expected string but got dict<number>', 'E1222: String or List required for argument 1']) 666 v9.CheckDefAndScriptFailure(['col({a: 10})'], ['E1013: Argument 1: type mismatch, expected string but got dict<number>', 'E1222: String or List required for argument 1'])
667 CheckDefAndScriptFailure(['col(true)'], ['E1013: Argument 1: type mismatch, expected string but got bool', 'E1222: String or List required for argument 1']) 667 v9.CheckDefAndScriptFailure(['col(true)'], ['E1013: Argument 1: type mismatch, expected string but got bool', 'E1222: String or List required for argument 1'])
668 CheckDefExecAndScriptFailure(['col("")'], 'E1209: Invalid value for a line number') 668 v9.CheckDefExecAndScriptFailure(['col("")'], 'E1209: Invalid value for a line number')
669 bw! 669 bw!
670 enddef 670 enddef
671 671
672 def Test_complete() 672 def Test_complete()
673 CheckDefAndScriptFailure(['complete("1", [])'], ['E1013: Argument 1: type mismatch, expected number but got string', 'E1210: Number required for argument 1']) 673 v9.CheckDefAndScriptFailure(['complete("1", [])'], ['E1013: Argument 1: type mismatch, expected number but got string', 'E1210: Number required for argument 1'])
674 CheckDefAndScriptFailure(['complete(1, {})'], ['E1013: Argument 2: type mismatch, expected list<any> but got dict<unknown>', 'E1211: List required for argument 2']) 674 v9.CheckDefAndScriptFailure(['complete(1, {})'], ['E1013: Argument 2: type mismatch, expected list<any> but got dict<unknown>', 'E1211: List required for argument 2'])
675 enddef 675 enddef
676 676
677 def Test_complete_add() 677 def Test_complete_add()
678 CheckDefAndScriptFailure(['complete_add([])'], ['E1013: Argument 1: type mismatch, expected string but got list<unknown>', 'E1223: String or Dictionary required for argument 1']) 678 v9.CheckDefAndScriptFailure(['complete_add([])'], ['E1013: Argument 1: type mismatch, expected string but got list<unknown>', 'E1223: String or Dictionary required for argument 1'])
679 enddef 679 enddef
680 680
681 def Test_complete_info() 681 def Test_complete_info()
682 CheckDefAndScriptFailure(['complete_info("")'], ['E1013: Argument 1: type mismatch, expected list<string> but got string', 'E1211: List required for argument 1']) 682 v9.CheckDefAndScriptFailure(['complete_info("")'], ['E1013: Argument 1: type mismatch, expected list<string> but got string', 'E1211: List required for argument 1'])
683 CheckDefAndScriptFailure(['complete_info({})'], ['E1013: Argument 1: type mismatch, expected list<string> but got dict<unknown>', 'E1211: List required for argument 1']) 683 v9.CheckDefAndScriptFailure(['complete_info({})'], ['E1013: Argument 1: type mismatch, expected list<string> but got dict<unknown>', 'E1211: List required for argument 1'])
684 assert_equal({'pum_visible': 0, 'mode': '', 'selected': -1, 'items': []}, complete_info()) 684 assert_equal({'pum_visible': 0, 'mode': '', 'selected': -1, 'items': []}, complete_info())
685 assert_equal({'mode': '', 'items': []}, complete_info(['mode', 'items'])) 685 assert_equal({'mode': '', 'items': []}, complete_info(['mode', 'items']))
686 enddef 686 enddef
687 687
688 def Test_confirm() 688 def Test_confirm()
691 endif 691 endif
692 692
693 assert_fails('confirm(true)', 'E1174:') 693 assert_fails('confirm(true)', 'E1174:')
694 assert_fails('confirm("yes", true)', 'E1174:') 694 assert_fails('confirm("yes", true)', 'E1174:')
695 assert_fails('confirm("yes", "maybe", 2, true)', 'E1174:') 695 assert_fails('confirm("yes", "maybe", 2, true)', 'E1174:')
696 CheckDefAndScriptFailure(['confirm(1)'], ['E1013: Argument 1: type mismatch, expected string but got number', 'E1174: String required for argument 1']) 696 v9.CheckDefAndScriptFailure(['confirm(1)'], ['E1013: Argument 1: type mismatch, expected string but got number', 'E1174: String required for argument 1'])
697 CheckDefAndScriptFailure(['confirm("a", 2)'], ['E1013: Argument 2: type mismatch, expected string but got number', 'E1174: String required for argument 2']) 697 v9.CheckDefAndScriptFailure(['confirm("a", 2)'], ['E1013: Argument 2: type mismatch, expected string but got number', 'E1174: String required for argument 2'])
698 CheckDefAndScriptFailure(['confirm("a", "b", "c")'], ['E1013: Argument 3: type mismatch, expected number but got string', 'E1210: Number required for argument 3']) 698 v9.CheckDefAndScriptFailure(['confirm("a", "b", "c")'], ['E1013: Argument 3: type mismatch, expected number but got string', 'E1210: Number required for argument 3'])
699 CheckDefAndScriptFailure(['confirm("a", "b", 3, 4)'], ['E1013: Argument 4: type mismatch, expected string but got number', 'E1174: String required for argument 4']) 699 v9.CheckDefAndScriptFailure(['confirm("a", "b", 3, 4)'], ['E1013: Argument 4: type mismatch, expected string but got number', 'E1174: String required for argument 4'])
700 enddef 700 enddef
701 701
702 def Test_copy_return_type() 702 def Test_copy_return_type()
703 var l = copy([1, 2, 3]) 703 var l = copy([1, 2, 3])
704 var res = 0 704 var res = 0
718 enddef 718 enddef
719 719
720 def Test_count() 720 def Test_count()
721 count('ABC ABC ABC', 'b', true)->assert_equal(3) 721 count('ABC ABC ABC', 'b', true)->assert_equal(3)
722 count('ABC ABC ABC', 'b', false)->assert_equal(0) 722 count('ABC ABC ABC', 'b', false)->assert_equal(0)
723 CheckDefAndScriptFailure(['count(10, 1)'], ['E1013: Argument 1: type mismatch, expected string but got number', 'E1225: String, List or Dictionary required for argument 1']) 723 v9.CheckDefAndScriptFailure(['count(10, 1)'], ['E1013: Argument 1: type mismatch, expected string but got number', 'E1225: String, List or Dictionary required for argument 1'])
724 CheckDefAndScriptFailure(['count("a", [1], 2)'], ['E1013: Argument 3: type mismatch, expected bool but got number', 'E1212: Bool required for argument 3']) 724 v9.CheckDefAndScriptFailure(['count("a", [1], 2)'], ['E1013: Argument 3: type mismatch, expected bool but got number', 'E1212: Bool required for argument 3'])
725 CheckDefAndScriptFailure(['count("a", [1], 0, "b")'], ['E1013: Argument 4: type mismatch, expected number but got string', 'E1210: Number required for argument 4']) 725 v9.CheckDefAndScriptFailure(['count("a", [1], 0, "b")'], ['E1013: Argument 4: type mismatch, expected number but got string', 'E1210: Number required for argument 4'])
726 count([1, 2, 2, 3], 2)->assert_equal(2) 726 count([1, 2, 2, 3], 2)->assert_equal(2)
727 count([1, 2, 2, 3], 2, false, 2)->assert_equal(1) 727 count([1, 2, 2, 3], 2, false, 2)->assert_equal(1)
728 count({a: 1.1, b: 2.2, c: 1.1}, 1.1)->assert_equal(2) 728 count({a: 1.1, b: 2.2, c: 1.1}, 1.1)->assert_equal(2)
729 enddef 729 enddef
730 730
731 def Test_cscope_connection() 731 def Test_cscope_connection()
732 CheckFeature cscope 732 CheckFeature cscope
733 assert_equal(0, cscope_connection()) 733 assert_equal(0, cscope_connection())
734 CheckDefAndScriptFailure(['cscope_connection("a")'], ['E1013: Argument 1: type mismatch, expected number but got string', 'E1210: Number required for argument 1']) 734 v9.CheckDefAndScriptFailure(['cscope_connection("a")'], ['E1013: Argument 1: type mismatch, expected number but got string', 'E1210: Number required for argument 1'])
735 CheckDefAndScriptFailure(['cscope_connection(1, 2)'], ['E1013: Argument 2: type mismatch, expected string but got number', 'E1174: String required for argument 2']) 735 v9.CheckDefAndScriptFailure(['cscope_connection(1, 2)'], ['E1013: Argument 2: type mismatch, expected string but got number', 'E1174: String required for argument 2'])
736 CheckDefAndScriptFailure(['cscope_connection(1, "b", 3)'], ['E1013: Argument 3: type mismatch, expected string but got number', 'E1174: String required for argument 3']) 736 v9.CheckDefAndScriptFailure(['cscope_connection(1, "b", 3)'], ['E1013: Argument 3: type mismatch, expected string but got number', 'E1174: String required for argument 3'])
737 enddef 737 enddef
738 738
739 def Test_cursor() 739 def Test_cursor()
740 new 740 new
741 setline(1, range(4)) 741 setline(1, range(4))
747 assert_equal(2, getcurpos()[1]) 747 assert_equal(2, getcurpos()[1])
748 748
749 var lines =<< trim END 749 var lines =<< trim END
750 cursor('2', 1) 750 cursor('2', 1)
751 END 751 END
752 CheckDefExecAndScriptFailure(lines, 'E1209:') 752 v9.CheckDefExecAndScriptFailure(lines, 'E1209:')
753 CheckDefAndScriptFailure(['cursor(0z10, 1)'], ['E1013: Argument 1: type mismatch, expected number but got blob', 'E1224: String, Number or List required for argument 1']) 753 v9.CheckDefAndScriptFailure(['cursor(0z10, 1)'], ['E1013: Argument 1: type mismatch, expected number but got blob', 'E1224: String, Number or List required for argument 1'])
754 CheckDefAndScriptFailure(['cursor(1, "2")'], ['E1013: Argument 2: type mismatch, expected number but got string', 'E1210: Number required for argument 2']) 754 v9.CheckDefAndScriptFailure(['cursor(1, "2")'], ['E1013: Argument 2: type mismatch, expected number but got string', 'E1210: Number required for argument 2'])
755 CheckDefAndScriptFailure(['cursor(1, 2, "3")'], ['E1013: Argument 3: type mismatch, expected number but got string', 'E1210: Number required for argument 3']) 755 v9.CheckDefAndScriptFailure(['cursor(1, 2, "3")'], ['E1013: Argument 3: type mismatch, expected number but got string', 'E1210: Number required for argument 3'])
756 CheckDefExecAndScriptFailure(['cursor("", 2)'], 'E1209: Invalid value for a line number') 756 v9.CheckDefExecAndScriptFailure(['cursor("", 2)'], 'E1209: Invalid value for a line number')
757 enddef 757 enddef
758 758
759 def Test_debugbreak() 759 def Test_debugbreak()
760 CheckMSWindows 760 CheckMSWindows
761 CheckDefAndScriptFailure(['debugbreak("x")'], ['E1013: Argument 1: type mismatch, expected number but got string', 'E1210: Number required for argument 1']) 761 v9.CheckDefAndScriptFailure(['debugbreak("x")'], ['E1013: Argument 1: type mismatch, expected number but got string', 'E1210: Number required for argument 1'])
762 enddef 762 enddef
763 763
764 def Test_deepcopy() 764 def Test_deepcopy()
765 CheckDefAndScriptFailure(['deepcopy({}, 2)'], ['E1013: Argument 2: type mismatch, expected bool but got number', 'E1212: Bool required for argument 2']) 765 v9.CheckDefAndScriptFailure(['deepcopy({}, 2)'], ['E1013: Argument 2: type mismatch, expected bool but got number', 'E1212: Bool required for argument 2'])
766 enddef 766 enddef
767 767
768 def Test_delete() 768 def Test_delete()
769 var res: bool = delete('doesnotexist') 769 var res: bool = delete('doesnotexist')
770 assert_equal(true, res) 770 assert_equal(true, res)
771 771
772 CheckDefAndScriptFailure(['delete(10)'], ['E1013: Argument 1: type mismatch, expected string but got number', 'E1174: String required for argument 1']) 772 v9.CheckDefAndScriptFailure(['delete(10)'], ['E1013: Argument 1: type mismatch, expected string but got number', 'E1174: String required for argument 1'])
773 CheckDefAndScriptFailure(['delete("a", 10)'], ['E1013: Argument 2: type mismatch, expected string but got number', 'E1174: String required for argument 2']) 773 v9.CheckDefAndScriptFailure(['delete("a", 10)'], ['E1013: Argument 2: type mismatch, expected string but got number', 'E1174: String required for argument 2'])
774 CheckDefExecAndScriptFailure(['delete("")'], 'E474: Invalid argument') 774 v9.CheckDefExecAndScriptFailure(['delete("")'], 'E474: Invalid argument')
775 enddef 775 enddef
776 776
777 def Test_deletebufline() 777 def Test_deletebufline()
778 CheckDefAndScriptFailure(['deletebufline([], 2)'], ['E1013: Argument 1: type mismatch, expected string but got list<unknown>', 'E1220: String or Number required for argument 1']) 778 v9.CheckDefAndScriptFailure(['deletebufline([], 2)'], ['E1013: Argument 1: type mismatch, expected string but got list<unknown>', 'E1220: String or Number required for argument 1'])
779 CheckDefAndScriptFailure(['deletebufline("a", [])'], ['E1013: Argument 2: type mismatch, expected string but got list<unknown>', 'E1220: String or Number required for argument 2']) 779 v9.CheckDefAndScriptFailure(['deletebufline("a", [])'], ['E1013: Argument 2: type mismatch, expected string but got list<unknown>', 'E1220: String or Number required for argument 2'])
780 CheckDefAndScriptFailure(['deletebufline("a", 2, 0z10)'], ['E1013: Argument 3: type mismatch, expected string but got blob', 'E1220: String or Number required for argument 3']) 780 v9.CheckDefAndScriptFailure(['deletebufline("a", 2, 0z10)'], ['E1013: Argument 3: type mismatch, expected string but got blob', 'E1220: String or Number required for argument 3'])
781 new 781 new
782 setline(1, ['one', 'two']) 782 setline(1, ['one', 'two'])
783 deletebufline('', 1) 783 deletebufline('', 1)
784 getline(1, '$')->assert_equal(['two']) 784 getline(1, '$')->assert_equal(['two'])
785 785
788 788
789 bwipe! 789 bwipe!
790 enddef 790 enddef
791 791
792 def Test_diff_filler() 792 def Test_diff_filler()
793 CheckDefAndScriptFailure(['diff_filler([])'], ['E1013: Argument 1: type mismatch, expected string but got list<unknown>', 'E1220: String or Number required for argument 1']) 793 v9.CheckDefAndScriptFailure(['diff_filler([])'], ['E1013: Argument 1: type mismatch, expected string but got list<unknown>', 'E1220: String or Number required for argument 1'])
794 CheckDefAndScriptFailure(['diff_filler(true)'], ['E1013: Argument 1: type mismatch, expected string but got bool', 'E1220: String or Number required for argument 1']) 794 v9.CheckDefAndScriptFailure(['diff_filler(true)'], ['E1013: Argument 1: type mismatch, expected string but got bool', 'E1220: String or Number required for argument 1'])
795 CheckDefExecAndScriptFailure(['diff_filler("")'], 'E1209: Invalid value for a line number') 795 v9.CheckDefExecAndScriptFailure(['diff_filler("")'], 'E1209: Invalid value for a line number')
796 assert_equal(0, diff_filler(1)) 796 assert_equal(0, diff_filler(1))
797 assert_equal(0, diff_filler('.')) 797 assert_equal(0, diff_filler('.'))
798 enddef 798 enddef
799 799
800 def Test_diff_hlID() 800 def Test_diff_hlID()
801 CheckDefAndScriptFailure(['diff_hlID(0z10, 1)'], ['E1013: Argument 1: type mismatch, expected string but got blob', 'E1220: String or Number required for argument 1']) 801 v9.CheckDefAndScriptFailure(['diff_hlID(0z10, 1)'], ['E1013: Argument 1: type mismatch, expected string but got blob', 'E1220: String or Number required for argument 1'])
802 CheckDefAndScriptFailure(['diff_hlID(1, "a")'], ['E1013: Argument 2: type mismatch, expected number but got string', 'E1210: Number required for argument 2']) 802 v9.CheckDefAndScriptFailure(['diff_hlID(1, "a")'], ['E1013: Argument 2: type mismatch, expected number but got string', 'E1210: Number required for argument 2'])
803 CheckDefExecAndScriptFailure(['diff_hlID("", 10)'], 'E1209: Invalid value for a line number') 803 v9.CheckDefExecAndScriptFailure(['diff_hlID("", 10)'], 'E1209: Invalid value for a line number')
804 enddef 804 enddef
805 805
806 def Test_digraph_get() 806 def Test_digraph_get()
807 CheckDefAndScriptFailure(['digraph_get(10)'], ['E1013: Argument 1: type mismatch, expected string but got number', 'E1174: String required for argument 1']) 807 v9.CheckDefAndScriptFailure(['digraph_get(10)'], ['E1013: Argument 1: type mismatch, expected string but got number', 'E1174: String required for argument 1'])
808 CheckDefExecAndScriptFailure(['digraph_get("")'], 'E1214: Digraph must be just two characters') 808 v9.CheckDefExecAndScriptFailure(['digraph_get("")'], 'E1214: Digraph must be just two characters')
809 enddef 809 enddef
810 810
811 def Test_digraph_getlist() 811 def Test_digraph_getlist()
812 CheckDefAndScriptFailure(['digraph_getlist(10)'], ['E1013: Argument 1: type mismatch, expected bool but got number', 'E1212: Bool required for argument 1']) 812 v9.CheckDefAndScriptFailure(['digraph_getlist(10)'], ['E1013: Argument 1: type mismatch, expected bool but got number', 'E1212: Bool required for argument 1'])
813 CheckDefAndScriptFailure(['digraph_getlist("")'], ['E1013: Argument 1: type mismatch, expected bool but got string', 'E1212: Bool required for argument 1']) 813 v9.CheckDefAndScriptFailure(['digraph_getlist("")'], ['E1013: Argument 1: type mismatch, expected bool but got string', 'E1212: Bool required for argument 1'])
814 enddef 814 enddef
815 815
816 def Test_digraph_set() 816 def Test_digraph_set()
817 CheckDefAndScriptFailure(['digraph_set(10, "a")'], ['E1013: Argument 1: type mismatch, expected string but got number', 'E1174: String required for argument 1']) 817 v9.CheckDefAndScriptFailure(['digraph_set(10, "a")'], ['E1013: Argument 1: type mismatch, expected string but got number', 'E1174: String required for argument 1'])
818 CheckDefAndScriptFailure(['digraph_set("ab", 0z10)'], ['E1013: Argument 2: type mismatch, expected string but got blob', 'E1174: String required for argument 2']) 818 v9.CheckDefAndScriptFailure(['digraph_set("ab", 0z10)'], ['E1013: Argument 2: type mismatch, expected string but got blob', 'E1174: String required for argument 2'])
819 CheckDefExecAndScriptFailure(['digraph_set("", "a")'], 'E1214: Digraph must be just two characters') 819 v9.CheckDefExecAndScriptFailure(['digraph_set("", "a")'], 'E1214: Digraph must be just two characters')
820 enddef 820 enddef
821 821
822 def Test_digraph_setlist() 822 def Test_digraph_setlist()
823 CheckDefAndScriptFailure(['digraph_setlist("a")'], ['E1013: Argument 1: type mismatch, expected list<string> but got string', 'E1216: digraph_setlist() argument must be a list of lists with two items']) 823 v9.CheckDefAndScriptFailure(['digraph_setlist("a")'], ['E1013: Argument 1: type mismatch, expected list<string> but got string', 'E1216: digraph_setlist() argument must be a list of lists with two items'])
824 CheckDefAndScriptFailure(['digraph_setlist({})'], ['E1013: Argument 1: type mismatch, expected list<string> but got dict<unknown>', 'E1216: digraph_setlist() argument must be a list of lists with two items']) 824 v9.CheckDefAndScriptFailure(['digraph_setlist({})'], ['E1013: Argument 1: type mismatch, expected list<string> but got dict<unknown>', 'E1216: digraph_setlist() argument must be a list of lists with two items'])
825 enddef 825 enddef
826 826
827 def Test_echoraw() 827 def Test_echoraw()
828 CheckDefAndScriptFailure(['echoraw(1)'], ['E1013: Argument 1: type mismatch, expected string but got number', 'E1174: String required for argument 1']) 828 v9.CheckDefAndScriptFailure(['echoraw(1)'], ['E1013: Argument 1: type mismatch, expected string but got number', 'E1174: String required for argument 1'])
829 CheckDefAndScriptFailure(['echoraw(["x"])'], ['E1013: Argument 1: type mismatch, expected string but got list<string>', 'E1174: String required for argument 1']) 829 v9.CheckDefAndScriptFailure(['echoraw(["x"])'], ['E1013: Argument 1: type mismatch, expected string but got list<string>', 'E1174: String required for argument 1'])
830 enddef 830 enddef
831 831
832 def Test_escape() 832 def Test_escape()
833 CheckDefAndScriptFailure(['escape(10, " ")'], ['E1013: Argument 1: type mismatch, expected string but got number', 'E1174: String required for argument 1']) 833 v9.CheckDefAndScriptFailure(['escape(10, " ")'], ['E1013: Argument 1: type mismatch, expected string but got number', 'E1174: String required for argument 1'])
834 CheckDefAndScriptFailure(['escape(true, false)'], ['E1013: Argument 1: type mismatch, expected string but got bool', 'E1174: String required for argument 1']) 834 v9.CheckDefAndScriptFailure(['escape(true, false)'], ['E1013: Argument 1: type mismatch, expected string but got bool', 'E1174: String required for argument 1'])
835 CheckDefAndScriptFailure(['escape("a", 10)'], ['E1013: Argument 2: type mismatch, expected string but got number', 'E1174: String required for argument 2']) 835 v9.CheckDefAndScriptFailure(['escape("a", 10)'], ['E1013: Argument 2: type mismatch, expected string but got number', 'E1174: String required for argument 2'])
836 assert_equal('a\:b', escape("a:b", ":")) 836 assert_equal('a\:b', escape("a:b", ":"))
837 escape('abc', '')->assert_equal('abc') 837 escape('abc', '')->assert_equal('abc')
838 escape('', ':')->assert_equal('') 838 escape('', ':')->assert_equal('')
839 enddef 839 enddef
840 840
841 def Test_eval() 841 def Test_eval()
842 CheckDefAndScriptFailure(['eval(10)'], ['E1013: Argument 1: type mismatch, expected string but got number', 'E1174: String required for argument 1']) 842 v9.CheckDefAndScriptFailure(['eval(10)'], ['E1013: Argument 1: type mismatch, expected string but got number', 'E1174: String required for argument 1'])
843 CheckDefAndScriptFailure(['eval(null)'], ['E1013: Argument 1: type mismatch, expected string but got special', 'E1174: String required for argument 1']) 843 v9.CheckDefAndScriptFailure(['eval(null)'], ['E1013: Argument 1: type mismatch, expected string but got special', 'E1174: String required for argument 1'])
844 CheckDefExecAndScriptFailure(['eval("")'], 'E15: Invalid expression') 844 v9.CheckDefExecAndScriptFailure(['eval("")'], 'E15: Invalid expression')
845 assert_equal(2, eval('1 + 1')) 845 assert_equal(2, eval('1 + 1'))
846 enddef 846 enddef
847 847
848 def Test_executable() 848 def Test_executable()
849 assert_false(executable("")) 849 assert_false(executable(""))
850 assert_false(executable(test_null_string())) 850 assert_false(executable(test_null_string()))
851 851
852 CheckDefExecFailure(['echo executable(123)'], 'E1013:') 852 v9.CheckDefExecFailure(['echo executable(123)'], 'E1013:')
853 CheckDefExecFailure(['echo executable(true)'], 'E1013:') 853 v9.CheckDefExecFailure(['echo executable(true)'], 'E1013:')
854 enddef 854 enddef
855 855
856 def Test_execute() 856 def Test_execute()
857 var res = execute("echo 'hello'") 857 var res = execute("echo 'hello'")
858 assert_equal("\nhello", res) 858 assert_equal("\nhello", res)
859 res = execute(["echo 'here'", "echo 'there'"]) 859 res = execute(["echo 'here'", "echo 'there'"])
860 assert_equal("\nhere\nthere", res) 860 assert_equal("\nhere\nthere", res)
861 861
862 CheckDefAndScriptFailure(['execute(123)'], ['E1013: Argument 1: type mismatch, expected string but got number', 'E1222: String or List required for argument 1']) 862 v9.CheckDefAndScriptFailure(['execute(123)'], ['E1013: Argument 1: type mismatch, expected string but got number', 'E1222: String or List required for argument 1'])
863 CheckDefFailure(['execute([123])'], 'E1013: Argument 1: type mismatch, expected list<string> but got list<number>') 863 v9.CheckDefFailure(['execute([123])'], 'E1013: Argument 1: type mismatch, expected list<string> but got list<number>')
864 CheckDefExecFailure(['echo execute(["xx", 123])'], 'E492') 864 v9.CheckDefExecFailure(['echo execute(["xx", 123])'], 'E492')
865 CheckDefAndScriptFailure(['execute("xx", 123)'], ['E1013: Argument 2: type mismatch, expected string but got number', 'E1174: String required for argument 2']) 865 v9.CheckDefAndScriptFailure(['execute("xx", 123)'], ['E1013: Argument 2: type mismatch, expected string but got number', 'E1174: String required for argument 2'])
866 enddef 866 enddef
867 867
868 def Test_exepath() 868 def Test_exepath()
869 CheckDefExecFailure(['echo exepath(true)'], 'E1013:') 869 v9.CheckDefExecFailure(['echo exepath(true)'], 'E1013:')
870 CheckDefExecFailure(['echo exepath(v:null)'], 'E1013:') 870 v9.CheckDefExecFailure(['echo exepath(v:null)'], 'E1013:')
871 CheckDefExecFailure(['echo exepath("")'], 'E1175:') 871 v9.CheckDefExecFailure(['echo exepath("")'], 'E1175:')
872 enddef 872 enddef
873 873
874 command DoSomeCommand let g:didSomeCommand = 4 874 command DoSomeCommand let g:didSomeCommand = 4
875 875
876 def Test_exists() 876 def Test_exists()
877 CheckDefAndScriptFailure(['exists(10)'], ['E1013: Argument 1: type mismatch, expected string but got number', 'E1174: String required for argument 1']) 877 v9.CheckDefAndScriptFailure(['exists(10)'], ['E1013: Argument 1: type mismatch, expected string but got number', 'E1174: String required for argument 1'])
878 call assert_equal(1, exists('&tabstop')) 878 call assert_equal(1, exists('&tabstop'))
879 879
880 var lines =<< trim END 880 var lines =<< trim END
881 if exists('+newoption') 881 if exists('+newoption')
882 if &newoption == 'ok' 882 if &newoption == 'ok'
883 endif 883 endif
884 endif 884 endif
885 END 885 END
886 CheckDefFailure(lines, 'E113:') 886 v9.CheckDefFailure(lines, 'E113:')
887 CheckScriptSuccess(lines) 887 v9.CheckScriptSuccess(lines)
888 enddef 888 enddef
889 889
890 def Test_exists_compiled() 890 def Test_exists_compiled()
891 call assert_equal(1, exists_compiled('&tabstop')) 891 call assert_equal(1, exists_compiled('&tabstop'))
892 CheckDefAndScriptFailure(['exists_compiled(10)'], ['E1232:', 'E1233:']) 892 v9.CheckDefAndScriptFailure(['exists_compiled(10)'], ['E1232:', 'E1233:'])
893 CheckDefAndScriptFailure(['exists_compiled(v:progname)'], ['E1232:', 'E1233:']) 893 v9.CheckDefAndScriptFailure(['exists_compiled(v:progname)'], ['E1232:', 'E1233:'])
894 894
895 if exists_compiled('+newoption') 895 if exists_compiled('+newoption')
896 if &newoption == 'ok' 896 if &newoption == 'ok'
897 endif 897 endif
898 endif 898 endif
918 if exists_compiled(':NoSuchCommand') >= 2 918 if exists_compiled(':NoSuchCommand') >= 2
919 NoSuchCommand 919 NoSuchCommand
920 endif 920 endif
921 921
922 var found = false 922 var found = false
923 if exists_compiled('*CheckScriptSuccess') 923 if exists_compiled('*CheckFeature')
924 found = true 924 found = true
925 endif 925 endif
926 assert_false(found)
927 found = false
928 if exists_compiled('*g:CheckFeature')
929 found = true
930 endif
926 assert_true(found) 931 assert_true(found)
932
927 if exists_compiled('*NoSuchFunction') 933 if exists_compiled('*NoSuchFunction')
928 NoSuchFunction() 934 NoSuchFunction()
929 endif 935 endif
930 if exists_compiled('*no_such_function') 936 if exists_compiled('*no_such_function')
931 no_such_function() 937 no_such_function()
934 940
935 def Test_expand() 941 def Test_expand()
936 split SomeFile 942 split SomeFile
937 expand('%', true, true)->assert_equal(['SomeFile']) 943 expand('%', true, true)->assert_equal(['SomeFile'])
938 close 944 close
939 CheckDefAndScriptFailure(['expand(1)'], ['E1013: Argument 1: type mismatch, expected string but got number', 'E1174: String required for argument 1']) 945 v9.CheckDefAndScriptFailure(['expand(1)'], ['E1013: Argument 1: type mismatch, expected string but got number', 'E1174: String required for argument 1'])
940 CheckDefAndScriptFailure(['expand("a", 2)'], ['E1013: Argument 2: type mismatch, expected bool but got number', 'E1212: Bool required for argument 2']) 946 v9.CheckDefAndScriptFailure(['expand("a", 2)'], ['E1013: Argument 2: type mismatch, expected bool but got number', 'E1212: Bool required for argument 2'])
941 CheckDefAndScriptFailure(['expand("a", true, 2)'], ['E1013: Argument 3: type mismatch, expected bool but got number', 'E1212: Bool required for argument 3']) 947 v9.CheckDefAndScriptFailure(['expand("a", true, 2)'], ['E1013: Argument 3: type mismatch, expected bool but got number', 'E1212: Bool required for argument 3'])
942 expand('')->assert_equal('') 948 expand('')->assert_equal('')
943 949
944 var caught = false 950 var caught = false
945 try 951 try
946 echo expand("<sfile>") 952 echo expand("<sfile>")
955 assert_equal("blue sky", expandcmd("`=$FOO .. ' sky'`")) 961 assert_equal("blue sky", expandcmd("`=$FOO .. ' sky'`"))
956 962
957 assert_equal("yes", expandcmd("`={a: 'yes'}['a']`")) 963 assert_equal("yes", expandcmd("`={a: 'yes'}['a']`"))
958 expandcmd('')->assert_equal('') 964 expandcmd('')->assert_equal('')
959 965
960 CheckDefAndScriptFailure(['expandcmd([1])'], ['E1013: Argument 1: type mismatch, expected string but got list<number>', 'E1174: String required for argument 1']) 966 v9.CheckDefAndScriptFailure(['expandcmd([1])'], ['E1013: Argument 1: type mismatch, expected string but got list<number>', 'E1174: String required for argument 1'])
961 enddef 967 enddef
962 968
963 def Test_extend_arg_types() 969 def Test_extend_arg_types()
964 g:number_one = 1 970 g:number_one = 1
965 g:string_keep = 'keep' 971 g:string_keep = 'keep'
982 988
983 var dany: dict<any> = {a: 0} 989 var dany: dict<any> = {a: 0}
984 dany->extend({b: 'x'}) 990 dany->extend({b: 'x'})
985 assert_equal({a: 0, b: 'x'}, dany) 991 assert_equal({a: 0, b: 'x'}, dany)
986 END 992 END
987 CheckDefAndScriptSuccess(lines) 993 v9.CheckDefAndScriptSuccess(lines)
988 994
989 lines =<< trim END 995 lines =<< trim END
990 assert_equal([1, 2, "x"], extend([1, 2], ["x"])) 996 assert_equal([1, 2, "x"], extend([1, 2], ["x"]))
991 assert_equal([1, "b", 1], extend([1], ["b", 1])) 997 assert_equal([1, "b", 1], extend([1], ["b", 1]))
992 998
993 assert_equal({a: 1, b: "x"}, extend({a: 1}, {b: "x"})) 999 assert_equal({a: 1, b: "x"}, extend({a: 1}, {b: "x"}))
994 END 1000 END
995 CheckDefAndScriptSuccess(lines) 1001 v9.CheckDefAndScriptSuccess(lines)
996 1002
997 CheckDefAndScriptFailure(['extend("a", 1)'], ['E1013: Argument 1: type mismatch, expected list<any> but got string', 'E712: Argument of extend() must be a List or Dictionary']) 1003 v9.CheckDefAndScriptFailure(['extend("a", 1)'], ['E1013: Argument 1: type mismatch, expected list<any> but got string', 'E712: Argument of extend() must be a List or Dictionary'])
998 CheckDefAndScriptFailure(['extend([1, 2], 3)'], ['E1013: Argument 2: type mismatch, expected list<any> but got number', 'E712: Argument of extend() must be a List or Dictionary']) 1004 v9.CheckDefAndScriptFailure(['extend([1, 2], 3)'], ['E1013: Argument 2: type mismatch, expected list<any> but got number', 'E712: Argument of extend() must be a List or Dictionary'])
999 CheckDefAndScriptFailure(['var ll = [1, 2]', 'extend(ll, ["x"])'], ['E1013: Argument 2: type mismatch, expected list<number> but got list<string>', 'E1013: Argument 2: type mismatch, expected list<number> but got list<string>']) 1005 v9.CheckDefAndScriptFailure(['var ll = [1, 2]', 'extend(ll, ["x"])'], ['E1013: Argument 2: type mismatch, expected list<number> but got list<string>', 'E1013: Argument 2: type mismatch, expected list<number> but got list<string>'])
1000 CheckDefFailure(['extend([1, 2], [3], "x")'], 'E1013: Argument 3: type mismatch, expected number but got string') 1006 v9.CheckDefFailure(['extend([1, 2], [3], "x")'], 'E1013: Argument 3: type mismatch, expected number but got string')
1001 1007
1002 CheckDefFailure(['extend({a: 1}, 42)'], 'E1013: Argument 2: type mismatch, expected dict<any> but got number') 1008 v9.CheckDefFailure(['extend({a: 1}, 42)'], 'E1013: Argument 2: type mismatch, expected dict<any> but got number')
1003 CheckDefFailure(['extend({a: 1}, {b: 2}, 1)'], 'E1013: Argument 3: type mismatch, expected string but got number') 1009 v9.CheckDefFailure(['extend({a: 1}, {b: 2}, 1)'], 'E1013: Argument 3: type mismatch, expected string but got number')
1004 1010
1005 CheckScriptFailure(['vim9script', 'var l = [1]', 'extend(l, ["b", 1])'], 'E1013: Argument 2: type mismatch, expected list<number> but got list<any> in extend()') 1011 v9.CheckScriptFailure(['vim9script', 'var l = [1]', 'extend(l, ["b", 1])'], 'E1013: Argument 2: type mismatch, expected list<number> but got list<any> in extend()')
1006 enddef 1012 enddef
1007 1013
1008 func g:ExtendDict(d) 1014 func g:ExtendDict(d)
1009 call extend(a:d, #{xx: 'x'}) 1015 call extend(a:d, #{xx: 'x'})
1010 endfunc 1016 endfunc
1012 def Test_extend_dict_item_type() 1018 def Test_extend_dict_item_type()
1013 var lines =<< trim END 1019 var lines =<< trim END
1014 var d: dict<number> = {a: 1} 1020 var d: dict<number> = {a: 1}
1015 extend(d, {b: 2}) 1021 extend(d, {b: 2})
1016 END 1022 END
1017 CheckDefAndScriptSuccess(lines) 1023 v9.CheckDefAndScriptSuccess(lines)
1018 1024
1019 lines =<< trim END 1025 lines =<< trim END
1020 var d: dict<number> = {a: 1} 1026 var d: dict<number> = {a: 1}
1021 extend(d, {b: 'x'}) 1027 extend(d, {b: 'x'})
1022 END 1028 END
1023 CheckDefAndScriptFailure(lines, 'E1013: Argument 2: type mismatch, expected dict<number> but got dict<string>', 2) 1029 v9.CheckDefAndScriptFailure(lines, 'E1013: Argument 2: type mismatch, expected dict<number> but got dict<string>', 2)
1024 1030
1025 lines =<< trim END 1031 lines =<< trim END
1026 var d: dict<number> = {a: 1} 1032 var d: dict<number> = {a: 1}
1027 g:ExtendDict(d) 1033 g:ExtendDict(d)
1028 END 1034 END
1029 CheckDefExecFailure(lines, 'E1012: Type mismatch; expected number but got string', 0) 1035 v9.CheckDefExecFailure(lines, 'E1012: Type mismatch; expected number but got string', 0)
1030 CheckScriptFailure(['vim9script'] + lines, 'E1012:', 1) 1036 v9.CheckScriptFailure(['vim9script'] + lines, 'E1012:', 1)
1031 1037
1032 lines =<< trim END 1038 lines =<< trim END
1033 var d: dict<bool> 1039 var d: dict<bool>
1034 extend(d, {b: 0}) 1040 extend(d, {b: 0})
1035 END 1041 END
1036 CheckDefAndScriptFailure(lines, 'E1013: Argument 2: type mismatch, expected dict<bool> but got dict<number>', 2) 1042 v9.CheckDefAndScriptFailure(lines, 'E1013: Argument 2: type mismatch, expected dict<bool> but got dict<number>', 2)
1037 enddef 1043 enddef
1038 1044
1039 func g:ExtendList(l) 1045 func g:ExtendList(l)
1040 call extend(a:l, ['x']) 1046 call extend(a:l, ['x'])
1041 endfunc 1047 endfunc
1043 def Test_extend_list_item_type() 1049 def Test_extend_list_item_type()
1044 var lines =<< trim END 1050 var lines =<< trim END
1045 var l: list<number> = [1] 1051 var l: list<number> = [1]
1046 extend(l, [2]) 1052 extend(l, [2])
1047 END 1053 END
1048 CheckDefAndScriptSuccess(lines) 1054 v9.CheckDefAndScriptSuccess(lines)
1049 1055
1050 lines =<< trim END 1056 lines =<< trim END
1051 var l: list<number> = [1] 1057 var l: list<number> = [1]
1052 extend(l, ['x']) 1058 extend(l, ['x'])
1053 END 1059 END
1054 CheckDefAndScriptFailure(lines, 'E1013: Argument 2: type mismatch, expected list<number> but got list<string>', 2) 1060 v9.CheckDefAndScriptFailure(lines, 'E1013: Argument 2: type mismatch, expected list<number> but got list<string>', 2)
1055 1061
1056 lines =<< trim END 1062 lines =<< trim END
1057 var l: list<number> = [1] 1063 var l: list<number> = [1]
1058 g:ExtendList(l) 1064 g:ExtendList(l)
1059 END 1065 END
1060 CheckDefExecFailure(lines, 'E1012: Type mismatch; expected number but got string', 0) 1066 v9.CheckDefExecFailure(lines, 'E1012: Type mismatch; expected number but got string', 0)
1061 CheckScriptFailure(['vim9script'] + lines, 'E1012:', 1) 1067 v9.CheckScriptFailure(['vim9script'] + lines, 'E1012:', 1)
1062 1068
1063 lines =<< trim END 1069 lines =<< trim END
1064 var l: list<bool> 1070 var l: list<bool>
1065 extend(l, [0]) 1071 extend(l, [0])
1066 END 1072 END
1067 CheckDefAndScriptFailure(lines, 'E1013: Argument 2: type mismatch, expected list<bool> but got list<number>', 2) 1073 v9.CheckDefAndScriptFailure(lines, 'E1013: Argument 2: type mismatch, expected list<bool> but got list<number>', 2)
1068 enddef 1074 enddef
1069 1075
1070 def Test_extend_return_type() 1076 def Test_extend_return_type()
1071 var l = extend([1, 2], [3]) 1077 var l = extend([1, 2], [3])
1072 var res = 0 1078 var res = 0
1091 d->extend({A: 10, Func: function('F', [])}) 1097 d->extend({A: 10, Func: function('F', [])})
1092 enddef 1098 enddef
1093 1099
1094 Test() 1100 Test()
1095 END 1101 END
1096 CheckScriptFailure(lines, 'E1001: Variable not found: m') 1102 v9.CheckScriptFailure(lines, 'E1001: Variable not found: m')
1097 enddef 1103 enddef
1098 1104
1099 def Test_extendnew() 1105 def Test_extendnew()
1100 assert_equal([1, 2, 'a'], extendnew([1, 2], ['a'])) 1106 assert_equal([1, 2, 'a'], extendnew([1, 2], ['a']))
1101 assert_equal({one: 1, two: 'a'}, extendnew({one: 1}, {two: 'a'})) 1107 assert_equal({one: 1, two: 'a'}, extendnew({one: 1}, {two: 'a'}))
1102 1108
1103 CheckDefAndScriptFailure(['extendnew({a: 1}, 42)'], ['E1013: Argument 2: type mismatch, expected dict<number> but got number', 'E712: Argument of extendnew() must be a List or Dictionary']) 1109 v9.CheckDefAndScriptFailure(['extendnew({a: 1}, 42)'], ['E1013: Argument 2: type mismatch, expected dict<number> but got number', 'E712: Argument of extendnew() must be a List or Dictionary'])
1104 CheckDefAndScriptFailure(['extendnew({a: 1}, [42])'], ['E1013: Argument 2: type mismatch, expected dict<number> but got list<number>', 'E712: Argument of extendnew() must be a List or Dictionary']) 1110 v9.CheckDefAndScriptFailure(['extendnew({a: 1}, [42])'], ['E1013: Argument 2: type mismatch, expected dict<number> but got list<number>', 'E712: Argument of extendnew() must be a List or Dictionary'])
1105 CheckDefAndScriptFailure(['extendnew([1, 2], "x")'], ['E1013: Argument 2: type mismatch, expected list<number> but got string', 'E712: Argument of extendnew() must be a List or Dictionary']) 1111 v9.CheckDefAndScriptFailure(['extendnew([1, 2], "x")'], ['E1013: Argument 2: type mismatch, expected list<number> but got string', 'E712: Argument of extendnew() must be a List or Dictionary'])
1106 CheckDefAndScriptFailure(['extendnew([1, 2], {x: 1})'], ['E1013: Argument 2: type mismatch, expected list<number> but got dict<number>', 'E712: Argument of extendnew() must be a List or Dictionary']) 1112 v9.CheckDefAndScriptFailure(['extendnew([1, 2], {x: 1})'], ['E1013: Argument 2: type mismatch, expected list<number> but got dict<number>', 'E712: Argument of extendnew() must be a List or Dictionary'])
1107 enddef 1113 enddef
1108 1114
1109 def Test_feedkeys() 1115 def Test_feedkeys()
1110 CheckDefAndScriptFailure(['feedkeys(10)'], ['E1013: Argument 1: type mismatch, expected string but got number', 'E1174: String required for argument 1']) 1116 v9.CheckDefAndScriptFailure(['feedkeys(10)'], ['E1013: Argument 1: type mismatch, expected string but got number', 'E1174: String required for argument 1'])
1111 CheckDefAndScriptFailure(['feedkeys("x", 10)'], ['E1013: Argument 2: type mismatch, expected string but got number', 'E1174: String required for argument 2']) 1117 v9.CheckDefAndScriptFailure(['feedkeys("x", 10)'], ['E1013: Argument 2: type mismatch, expected string but got number', 'E1174: String required for argument 2'])
1112 CheckDefAndScriptFailure(['feedkeys([], {})'], ['E1013: Argument 1: type mismatch, expected string but got list<unknown>', 'E1174: String required for argument 1']) 1118 v9.CheckDefAndScriptFailure(['feedkeys([], {})'], ['E1013: Argument 1: type mismatch, expected string but got list<unknown>', 'E1174: String required for argument 1'])
1113 g:TestVar = 1 1119 g:TestVar = 1
1114 feedkeys(":g:TestVar = 789\n", 'xt') 1120 feedkeys(":g:TestVar = 789\n", 'xt')
1115 assert_equal(789, g:TestVar) 1121 assert_equal(789, g:TestVar)
1116 unlet g:TestVar 1122 unlet g:TestVar
1117 enddef 1123 enddef
1118 1124
1119 def Test_filereadable() 1125 def Test_filereadable()
1120 assert_false(filereadable("")) 1126 assert_false(filereadable(""))
1121 assert_false(filereadable(test_null_string())) 1127 assert_false(filereadable(test_null_string()))
1122 1128
1123 CheckDefExecFailure(['echo filereadable(123)'], 'E1013:') 1129 v9.CheckDefExecFailure(['echo filereadable(123)'], 'E1013:')
1124 CheckDefExecFailure(['echo filereadable(true)'], 'E1013:') 1130 v9.CheckDefExecFailure(['echo filereadable(true)'], 'E1013:')
1125 enddef 1131 enddef
1126 1132
1127 def Test_filewritable() 1133 def Test_filewritable()
1128 assert_false(filewritable("")) 1134 assert_false(filewritable(""))
1129 assert_false(filewritable(test_null_string())) 1135 assert_false(filewritable(test_null_string()))
1130 1136
1131 CheckDefExecFailure(['echo filewritable(123)'], 'E1013:') 1137 v9.CheckDefExecFailure(['echo filewritable(123)'], 'E1013:')
1132 CheckDefExecFailure(['echo filewritable(true)'], 'E1013:') 1138 v9.CheckDefExecFailure(['echo filewritable(true)'], 'E1013:')
1133 enddef 1139 enddef
1134 1140
1135 def Test_finddir() 1141 def Test_finddir()
1136 mkdir('Xtestdir') 1142 mkdir('Xtestdir')
1137 finddir('Xtestdir', '**', -1)->assert_equal(['Xtestdir']) 1143 finddir('Xtestdir', '**', -1)->assert_equal(['Xtestdir'])
1138 var lines =<< trim END 1144 var lines =<< trim END
1139 var l: list<string> = finddir('nothing', '*;', -1) 1145 var l: list<string> = finddir('nothing', '*;', -1)
1140 END 1146 END
1141 CheckDefAndScriptSuccess(lines) 1147 v9.CheckDefAndScriptSuccess(lines)
1142 delete('Xtestdir', 'rf') 1148 delete('Xtestdir', 'rf')
1143 1149
1144 CheckDefAndScriptFailure(['finddir(true)'], ['E1013: Argument 1: type mismatch, expected string but got bool', 'E1174: String required for argument 1']) 1150 v9.CheckDefAndScriptFailure(['finddir(true)'], ['E1013: Argument 1: type mismatch, expected string but got bool', 'E1174: String required for argument 1'])
1145 CheckDefAndScriptFailure(['finddir(v:null)'], ['E1013: Argument 1: type mismatch, expected string but got special', 'E1174: String required for argument 1']) 1151 v9.CheckDefAndScriptFailure(['finddir(v:null)'], ['E1013: Argument 1: type mismatch, expected string but got special', 'E1174: String required for argument 1'])
1146 CheckDefExecFailure(['echo finddir("")'], 'E1175:') 1152 v9.CheckDefExecFailure(['echo finddir("")'], 'E1175:')
1147 CheckDefAndScriptFailure(['finddir("a", [])'], ['E1013: Argument 2: type mismatch, expected string but got list<unknown>', 'E1174: String required for argument 2']) 1153 v9.CheckDefAndScriptFailure(['finddir("a", [])'], ['E1013: Argument 2: type mismatch, expected string but got list<unknown>', 'E1174: String required for argument 2'])
1148 CheckDefAndScriptFailure(['finddir("a", "b", "c")'], ['E1013: Argument 3: type mismatch, expected number but got string', 'E1210: Number required for argument 3']) 1154 v9.CheckDefAndScriptFailure(['finddir("a", "b", "c")'], ['E1013: Argument 3: type mismatch, expected number but got string', 'E1210: Number required for argument 3'])
1149 finddir('abc', '')->assert_equal('') 1155 finddir('abc', '')->assert_equal('')
1150 1156
1151 CheckDefFailure(['var s: list<string> = finddir("foo")'], 'E1012: Type mismatch; expected list<string> but got string') 1157 v9.CheckDefFailure(['var s: list<string> = finddir("foo")'], 'E1012: Type mismatch; expected list<string> but got string')
1152 CheckDefFailure(['var s: list<string> = finddir("foo", "path")'], 'E1012: Type mismatch; expected list<string> but got string') 1158 v9.CheckDefFailure(['var s: list<string> = finddir("foo", "path")'], 'E1012: Type mismatch; expected list<string> but got string')
1153 # with third argument only runtime type checking 1159 # with third argument only runtime type checking
1154 CheckDefCompileSuccess(['var s: list<string> = finddir("foo", "path", 1)']) 1160 v9.CheckDefCompileSuccess(['var s: list<string> = finddir("foo", "path", 1)'])
1155 enddef 1161 enddef
1156 1162
1157 def Test_findfile() 1163 def Test_findfile()
1158 findfile('runtest.vim', '**', -1)->assert_equal(['runtest.vim']) 1164 findfile('runtest.vim', '**', -1)->assert_equal(['runtest.vim'])
1159 var lines =<< trim END 1165 var lines =<< trim END
1160 var l: list<string> = findfile('nothing', '*;', -1) 1166 var l: list<string> = findfile('nothing', '*;', -1)
1161 END 1167 END
1162 CheckDefAndScriptSuccess(lines) 1168 v9.CheckDefAndScriptSuccess(lines)
1163 1169
1164 CheckDefExecFailure(['findfile(true)'], 'E1013: Argument 1: type mismatch, expected string but got bool') 1170 v9.CheckDefExecFailure(['findfile(true)'], 'E1013: Argument 1: type mismatch, expected string but got bool')
1165 CheckDefExecFailure(['findfile(v:null)'], 'E1013: Argument 1: type mismatch, expected string but got special') 1171 v9.CheckDefExecFailure(['findfile(v:null)'], 'E1013: Argument 1: type mismatch, expected string but got special')
1166 CheckDefExecFailure(['findfile("")'], 'E1175:') 1172 v9.CheckDefExecFailure(['findfile("")'], 'E1175:')
1167 CheckDefAndScriptFailure(['findfile("a", [])'], ['E1013: Argument 2: type mismatch, expected string but got list<unknown>', 'E1174: String required for argument 2']) 1173 v9.CheckDefAndScriptFailure(['findfile("a", [])'], ['E1013: Argument 2: type mismatch, expected string but got list<unknown>', 'E1174: String required for argument 2'])
1168 CheckDefAndScriptFailure(['findfile("a", "b", "c")'], ['E1013: Argument 3: type mismatch, expected number but got string', 'E1210: Number required for argument 3']) 1174 v9.CheckDefAndScriptFailure(['findfile("a", "b", "c")'], ['E1013: Argument 3: type mismatch, expected number but got string', 'E1210: Number required for argument 3'])
1169 findfile('abc', '')->assert_equal('') 1175 findfile('abc', '')->assert_equal('')
1170 enddef 1176 enddef
1171 1177
1172 def Test_flatten() 1178 def Test_flatten()
1173 var lines =<< trim END 1179 var lines =<< trim END
1174 echo flatten([1, 2, 3]) 1180 echo flatten([1, 2, 3])
1175 END 1181 END
1176 CheckDefAndScriptFailure(lines, 'E1158:') 1182 v9.CheckDefAndScriptFailure(lines, 'E1158:')
1177 enddef 1183 enddef
1178 1184
1179 def Test_flattennew() 1185 def Test_flattennew()
1180 var lines =<< trim END 1186 var lines =<< trim END
1181 var l = [1, [2, [3, 4]], 5] 1187 var l = [1, [2, [3, 4]], 5]
1186 call assert_equal([1, [2, [3, 4]], 5], l) 1192 call assert_equal([1, [2, [3, 4]], 5], l)
1187 1193
1188 var ll: list<list<string>> = [['a', 'b', 'c']] 1194 var ll: list<list<string>> = [['a', 'b', 'c']]
1189 assert_equal(['a', 'b', 'c'], ll->flattennew()) 1195 assert_equal(['a', 'b', 'c'], ll->flattennew())
1190 END 1196 END
1191 CheckDefAndScriptSuccess(lines) 1197 v9.CheckDefAndScriptSuccess(lines)
1192 1198
1193 CheckDefAndScriptFailure(['flattennew({})'], ['E1013: Argument 1: type mismatch, expected list<any> but got dict<unknown>', 'E1211: List required for argument 1']) 1199 v9.CheckDefAndScriptFailure(['flattennew({})'], ['E1013: Argument 1: type mismatch, expected list<any> but got dict<unknown>', 'E1211: List required for argument 1'])
1194 CheckDefAndScriptFailure(['flattennew([], "1")'], ['E1013: Argument 2: type mismatch, expected number but got string', 'E1210: Number required for argument 2']) 1200 v9.CheckDefAndScriptFailure(['flattennew([], "1")'], ['E1013: Argument 2: type mismatch, expected number but got string', 'E1210: Number required for argument 2'])
1195 enddef 1201 enddef
1196 1202
1197 " Test for float functions argument type 1203 " Test for float functions argument type
1198 def Test_float_funcs_args() 1204 def Test_float_funcs_args()
1199 CheckFeature float 1205 CheckFeature float
1200 1206
1201 # acos() 1207 # acos()
1202 CheckDefAndScriptFailure(['acos("a")'], ['E1013: Argument 1: type mismatch, expected number but got string', 'E1219: Float or Number required for argument 1']) 1208 v9.CheckDefAndScriptFailure(['acos("a")'], ['E1013: Argument 1: type mismatch, expected number but got string', 'E1219: Float or Number required for argument 1'])
1203 # asin() 1209 # asin()
1204 CheckDefAndScriptFailure(['asin("a")'], ['E1013: Argument 1: type mismatch, expected number but got string', 'E1219: Float or Number required for argument 1']) 1210 v9.CheckDefAndScriptFailure(['asin("a")'], ['E1013: Argument 1: type mismatch, expected number but got string', 'E1219: Float or Number required for argument 1'])
1205 # atan() 1211 # atan()
1206 CheckDefAndScriptFailure(['atan("a")'], ['E1013: Argument 1: type mismatch, expected number but got string', 'E1219: Float or Number required for argument 1']) 1212 v9.CheckDefAndScriptFailure(['atan("a")'], ['E1013: Argument 1: type mismatch, expected number but got string', 'E1219: Float or Number required for argument 1'])
1207 # atan2() 1213 # atan2()
1208 CheckDefAndScriptFailure(['atan2("a", 1.1)'], ['E1013: Argument 1: type mismatch, expected number but got string', 'E1219: Float or Number required for argument 1']) 1214 v9.CheckDefAndScriptFailure(['atan2("a", 1.1)'], ['E1013: Argument 1: type mismatch, expected number but got string', 'E1219: Float or Number required for argument 1'])
1209 CheckDefAndScriptFailure(['atan2(1.2, "a")'], ['E1013: Argument 2: type mismatch, expected number but got string', 'E1219: Float or Number required for argument 2']) 1215 v9.CheckDefAndScriptFailure(['atan2(1.2, "a")'], ['E1013: Argument 2: type mismatch, expected number but got string', 'E1219: Float or Number required for argument 2'])
1210 CheckDefAndScriptFailure(['atan2(1.2)'], ['E119:', 'E119:']) 1216 v9.CheckDefAndScriptFailure(['atan2(1.2)'], ['E119:', 'E119:'])
1211 # ceil() 1217 # ceil()
1212 CheckDefAndScriptFailure(['ceil("a")'], ['E1013: Argument 1: type mismatch, expected number but got string', 'E1219: Float or Number required for argument 1']) 1218 v9.CheckDefAndScriptFailure(['ceil("a")'], ['E1013: Argument 1: type mismatch, expected number but got string', 'E1219: Float or Number required for argument 1'])
1213 # cos() 1219 # cos()
1214 CheckDefAndScriptFailure(['cos("a")'], ['E1013: Argument 1: type mismatch, expected number but got string', 'E1219: Float or Number required for argument 1']) 1220 v9.CheckDefAndScriptFailure(['cos("a")'], ['E1013: Argument 1: type mismatch, expected number but got string', 'E1219: Float or Number required for argument 1'])
1215 # cosh() 1221 # cosh()
1216 CheckDefAndScriptFailure(['cosh("a")'], ['E1013: Argument 1: type mismatch, expected number but got string', 'E1219: Float or Number required for argument 1']) 1222 v9.CheckDefAndScriptFailure(['cosh("a")'], ['E1013: Argument 1: type mismatch, expected number but got string', 'E1219: Float or Number required for argument 1'])
1217 # exp() 1223 # exp()
1218 CheckDefAndScriptFailure(['exp("a")'], ['E1013: Argument 1: type mismatch, expected number but got string', 'E1219: Float or Number required for argument 1']) 1224 v9.CheckDefAndScriptFailure(['exp("a")'], ['E1013: Argument 1: type mismatch, expected number but got string', 'E1219: Float or Number required for argument 1'])
1219 # float2nr() 1225 # float2nr()
1220 CheckDefAndScriptFailure(['float2nr("a")'], ['E1013: Argument 1: type mismatch, expected number but got string', 'E1219: Float or Number required for argument 1']) 1226 v9.CheckDefAndScriptFailure(['float2nr("a")'], ['E1013: Argument 1: type mismatch, expected number but got string', 'E1219: Float or Number required for argument 1'])
1221 # floor() 1227 # floor()
1222 CheckDefAndScriptFailure(['floor("a")'], ['E1013: Argument 1: type mismatch, expected number but got string', 'E1219: Float or Number required for argument 1']) 1228 v9.CheckDefAndScriptFailure(['floor("a")'], ['E1013: Argument 1: type mismatch, expected number but got string', 'E1219: Float or Number required for argument 1'])
1223 # fmod() 1229 # fmod()
1224 CheckDefAndScriptFailure(['fmod(1.1, "a")'], ['E1013: Argument 2: type mismatch, expected number but got string', 'E1219: Float or Number required for argument 2']) 1230 v9.CheckDefAndScriptFailure(['fmod(1.1, "a")'], ['E1013: Argument 2: type mismatch, expected number but got string', 'E1219: Float or Number required for argument 2'])
1225 CheckDefAndScriptFailure(['fmod("a", 1.1)'], ['E1013: Argument 1: type mismatch, expected number but got string', 'E1219: Float or Number required for argument 1']) 1231 v9.CheckDefAndScriptFailure(['fmod("a", 1.1)'], ['E1013: Argument 1: type mismatch, expected number but got string', 'E1219: Float or Number required for argument 1'])
1226 CheckDefAndScriptFailure(['fmod(1.1)'], ['E119:', 'E119:']) 1232 v9.CheckDefAndScriptFailure(['fmod(1.1)'], ['E119:', 'E119:'])
1227 # isinf() 1233 # isinf()
1228 CheckDefAndScriptFailure(['isinf("a")'], ['E1013: Argument 1: type mismatch, expected number but got string', 'E1219: Float or Number required for argument 1']) 1234 v9.CheckDefAndScriptFailure(['isinf("a")'], ['E1013: Argument 1: type mismatch, expected number but got string', 'E1219: Float or Number required for argument 1'])
1229 # isnan() 1235 # isnan()
1230 CheckDefAndScriptFailure(['isnan("a")'], ['E1013: Argument 1: type mismatch, expected number but got string', 'E1219: Float or Number required for argument 1']) 1236 v9.CheckDefAndScriptFailure(['isnan("a")'], ['E1013: Argument 1: type mismatch, expected number but got string', 'E1219: Float or Number required for argument 1'])
1231 # log() 1237 # log()
1232 CheckDefAndScriptFailure(['log("a")'], ['E1013: Argument 1: type mismatch, expected number but got string', 'E1219: Float or Number required for argument 1']) 1238 v9.CheckDefAndScriptFailure(['log("a")'], ['E1013: Argument 1: type mismatch, expected number but got string', 'E1219: Float or Number required for argument 1'])
1233 # log10() 1239 # log10()
1234 CheckDefAndScriptFailure(['log10("a")'], ['E1013: Argument 1: type mismatch, expected number but got string', 'E1219: Float or Number required for argument 1']) 1240 v9.CheckDefAndScriptFailure(['log10("a")'], ['E1013: Argument 1: type mismatch, expected number but got string', 'E1219: Float or Number required for argument 1'])
1235 # pow() 1241 # pow()
1236 CheckDefAndScriptFailure(['pow("a", 1.1)'], ['E1013: Argument 1: type mismatch, expected number but got string', 'E1219: Float or Number required for argument 1']) 1242 v9.CheckDefAndScriptFailure(['pow("a", 1.1)'], ['E1013: Argument 1: type mismatch, expected number but got string', 'E1219: Float or Number required for argument 1'])
1237 CheckDefAndScriptFailure(['pow(1.1, "a")'], ['E1013: Argument 2: type mismatch, expected number but got string', 'E1219: Float or Number required for argument 2']) 1243 v9.CheckDefAndScriptFailure(['pow(1.1, "a")'], ['E1013: Argument 2: type mismatch, expected number but got string', 'E1219: Float or Number required for argument 2'])
1238 CheckDefAndScriptFailure(['pow(1.1)'], ['E119:', 'E119:']) 1244 v9.CheckDefAndScriptFailure(['pow(1.1)'], ['E119:', 'E119:'])
1239 # round() 1245 # round()
1240 CheckDefAndScriptFailure(['round("a")'], ['E1013: Argument 1: type mismatch, expected number but got string', 'E1219: Float or Number required for argument 1']) 1246 v9.CheckDefAndScriptFailure(['round("a")'], ['E1013: Argument 1: type mismatch, expected number but got string', 'E1219: Float or Number required for argument 1'])
1241 # sin() 1247 # sin()
1242 CheckDefAndScriptFailure(['sin("a")'], ['E1013: Argument 1: type mismatch, expected number but got string', 'E1219: Float or Number required for argument 1']) 1248 v9.CheckDefAndScriptFailure(['sin("a")'], ['E1013: Argument 1: type mismatch, expected number but got string', 'E1219: Float or Number required for argument 1'])
1243 # sinh() 1249 # sinh()
1244 CheckDefAndScriptFailure(['sinh("a")'], ['E1013: Argument 1: type mismatch, expected number but got string', 'E1219: Float or Number required for argument 1']) 1250 v9.CheckDefAndScriptFailure(['sinh("a")'], ['E1013: Argument 1: type mismatch, expected number but got string', 'E1219: Float or Number required for argument 1'])
1245 # sqrt() 1251 # sqrt()
1246 CheckDefAndScriptFailure(['sqrt("a")'], ['E1013: Argument 1: type mismatch, expected number but got string', 'E1219: Float or Number required for argument 1']) 1252 v9.CheckDefAndScriptFailure(['sqrt("a")'], ['E1013: Argument 1: type mismatch, expected number but got string', 'E1219: Float or Number required for argument 1'])
1247 # tan() 1253 # tan()
1248 CheckDefAndScriptFailure(['tan("a")'], ['E1013: Argument 1: type mismatch, expected number but got string', 'E1219: Float or Number required for argument 1']) 1254 v9.CheckDefAndScriptFailure(['tan("a")'], ['E1013: Argument 1: type mismatch, expected number but got string', 'E1219: Float or Number required for argument 1'])
1249 # tanh() 1255 # tanh()
1250 CheckDefAndScriptFailure(['tanh("a")'], ['E1013: Argument 1: type mismatch, expected number but got string', 'E1219: Float or Number required for argument 1']) 1256 v9.CheckDefAndScriptFailure(['tanh("a")'], ['E1013: Argument 1: type mismatch, expected number but got string', 'E1219: Float or Number required for argument 1'])
1251 # trunc() 1257 # trunc()
1252 CheckDefAndScriptFailure(['trunc("a")'], ['E1013: Argument 1: type mismatch, expected number but got string', 'E1219: Float or Number required for argument 1']) 1258 v9.CheckDefAndScriptFailure(['trunc("a")'], ['E1013: Argument 1: type mismatch, expected number but got string', 'E1219: Float or Number required for argument 1'])
1253 enddef 1259 enddef
1254 1260
1255 def Test_fnameescape() 1261 def Test_fnameescape()
1256 CheckDefAndScriptFailure(['fnameescape(10)'], ['E1013: Argument 1: type mismatch, expected string but got number', 'E1174: String required for argument 1']) 1262 v9.CheckDefAndScriptFailure(['fnameescape(10)'], ['E1013: Argument 1: type mismatch, expected string but got number', 'E1174: String required for argument 1'])
1257 assert_equal('\+a\%b\|', fnameescape('+a%b|')) 1263 assert_equal('\+a\%b\|', fnameescape('+a%b|'))
1258 fnameescape('')->assert_equal('') 1264 fnameescape('')->assert_equal('')
1259 enddef 1265 enddef
1260 1266
1261 def Test_fnamemodify() 1267 def Test_fnamemodify()
1262 CheckDefSuccess(['echo fnamemodify(test_null_string(), ":p")']) 1268 v9.CheckDefSuccess(['echo fnamemodify(test_null_string(), ":p")'])
1263 CheckDefSuccess(['echo fnamemodify("", ":p")']) 1269 v9.CheckDefSuccess(['echo fnamemodify("", ":p")'])
1264 CheckDefSuccess(['echo fnamemodify("file", test_null_string())']) 1270 v9.CheckDefSuccess(['echo fnamemodify("file", test_null_string())'])
1265 CheckDefSuccess(['echo fnamemodify("file", "")']) 1271 v9.CheckDefSuccess(['echo fnamemodify("file", "")'])
1266 1272
1267 CheckDefExecFailure(['echo fnamemodify(true, ":p")'], 'E1013: Argument 1: type mismatch, expected string but got bool') 1273 v9.CheckDefExecFailure(['echo fnamemodify(true, ":p")'], 'E1013: Argument 1: type mismatch, expected string but got bool')
1268 CheckDefExecFailure(['echo fnamemodify(v:null, ":p")'], 'E1013: Argument 1: type mismatch, expected string but got special') 1274 v9.CheckDefExecFailure(['echo fnamemodify(v:null, ":p")'], 'E1013: Argument 1: type mismatch, expected string but got special')
1269 CheckDefExecFailure(['echo fnamemodify("file", true)'], 'E1013: Argument 2: type mismatch, expected string but got bool') 1275 v9.CheckDefExecFailure(['echo fnamemodify("file", true)'], 'E1013: Argument 2: type mismatch, expected string but got bool')
1270 enddef 1276 enddef
1271 1277
1272 def Wrong_dict_key_type(items: list<number>): list<number> 1278 def Wrong_dict_key_type(items: list<number>): list<number>
1273 return filter(items, (_, val) => get({[val]: 1}, 'x')) 1279 return filter(items, (_, val) => get({[val]: 1}, 'x'))
1274 enddef 1280 enddef
1275 1281
1276 def Test_filter() 1282 def Test_filter()
1277 CheckDefAndScriptFailure(['filter(1.1, "1")'], ['E1013: Argument 1: type mismatch, expected list<any> but got float', 'E1251: List, Dictionary, Blob or String required for argument 1']) 1283 v9.CheckDefAndScriptFailure(['filter(1.1, "1")'], ['E1013: Argument 1: type mismatch, expected list<any> but got float', 'E1251: List, Dictionary, Blob or String required for argument 1'])
1278 CheckDefAndScriptFailure(['filter([1, 2], 4)'], ['E1256: String or function required for argument 2', 'E1024: Using a Number as a String']) 1284 v9.CheckDefAndScriptFailure(['filter([1, 2], 4)'], ['E1256: String or function required for argument 2', 'E1024: Using a Number as a String'])
1279 1285
1280 var lines =<< trim END 1286 var lines =<< trim END
1281 def F(i: number, v: any): string 1287 def F(i: number, v: any): string
1282 return 'bad' 1288 return 'bad'
1283 enddef 1289 enddef
1284 echo filter([1, 2, 3], F) 1290 echo filter([1, 2, 3], F)
1285 END 1291 END
1286 CheckDefAndScriptFailure(lines, ['E1013: Argument 2: type mismatch, expected func(...): bool', 'E1135: Using a String as a Bool:']) 1292 v9.CheckDefAndScriptFailure(lines, ['E1013: Argument 2: type mismatch, expected func(...): bool', 'E1135: Using a String as a Bool:'])
1287 1293
1288 assert_equal([], filter([1, 2, 3], '0')) 1294 assert_equal([], filter([1, 2, 3], '0'))
1289 assert_equal([1, 2, 3], filter([1, 2, 3], '1')) 1295 assert_equal([1, 2, 3], filter([1, 2, 3], '1'))
1290 assert_equal({b: 20}, filter({a: 10, b: 20}, 'v:val == 20')) 1296 assert_equal({b: 20}, filter({a: 10, b: 20}, 'v:val == 20'))
1291 1297
1314 var res = dict->filter((k, _) => k =~ 'a' && k !~ 'b') 1320 var res = dict->filter((k, _) => k =~ 'a' && k !~ 'b')
1315 res->assert_equal({aa: [1], ac: [3]}) 1321 res->assert_equal({aa: [1], ac: [3]})
1316 enddef 1322 enddef
1317 1323
1318 def Test_foldclosed() 1324 def Test_foldclosed()
1319 CheckDefAndScriptFailure(['foldclosed(function("min"))'], ['E1013: Argument 1: type mismatch, expected string but got func(...): unknown', 'E1220: String or Number required for argument 1']) 1325 v9.CheckDefAndScriptFailure(['foldclosed(function("min"))'], ['E1013: Argument 1: type mismatch, expected string but got func(...): unknown', 'E1220: String or Number required for argument 1'])
1320 CheckDefExecAndScriptFailure(['foldclosed("")'], 'E1209: Invalid value for a line number') 1326 v9.CheckDefExecAndScriptFailure(['foldclosed("")'], 'E1209: Invalid value for a line number')
1321 assert_equal(-1, foldclosed(1)) 1327 assert_equal(-1, foldclosed(1))
1322 assert_equal(-1, foldclosed('$')) 1328 assert_equal(-1, foldclosed('$'))
1323 enddef 1329 enddef
1324 1330
1325 def Test_foldclosedend() 1331 def Test_foldclosedend()
1326 CheckDefAndScriptFailure(['foldclosedend(true)'], ['E1013: Argument 1: type mismatch, expected string but got bool', 'E1220: String or Number required for argument 1']) 1332 v9.CheckDefAndScriptFailure(['foldclosedend(true)'], ['E1013: Argument 1: type mismatch, expected string but got bool', 'E1220: String or Number required for argument 1'])
1327 CheckDefExecAndScriptFailure(['foldclosedend("")'], 'E1209: Invalid value for a line number') 1333 v9.CheckDefExecAndScriptFailure(['foldclosedend("")'], 'E1209: Invalid value for a line number')
1328 assert_equal(-1, foldclosedend(1)) 1334 assert_equal(-1, foldclosedend(1))
1329 assert_equal(-1, foldclosedend('w0')) 1335 assert_equal(-1, foldclosedend('w0'))
1330 enddef 1336 enddef
1331 1337
1332 def Test_foldlevel() 1338 def Test_foldlevel()
1333 CheckDefAndScriptFailure(['foldlevel(0z10)'], ['E1013: Argument 1: type mismatch, expected string but got blob', 'E1220: String or Number required for argument 1']) 1339 v9.CheckDefAndScriptFailure(['foldlevel(0z10)'], ['E1013: Argument 1: type mismatch, expected string but got blob', 'E1220: String or Number required for argument 1'])
1334 CheckDefExecAndScriptFailure(['foldlevel("")'], 'E1209: Invalid value for a line number') 1340 v9.CheckDefExecAndScriptFailure(['foldlevel("")'], 'E1209: Invalid value for a line number')
1335 assert_equal(0, foldlevel(1)) 1341 assert_equal(0, foldlevel(1))
1336 assert_equal(0, foldlevel('.')) 1342 assert_equal(0, foldlevel('.'))
1337 enddef 1343 enddef
1338 1344
1339 def Test_foldtextresult() 1345 def Test_foldtextresult()
1340 CheckDefAndScriptFailure(['foldtextresult(1.1)'], ['E1013: Argument 1: type mismatch, expected string but got float', 'E1220: String or Number required for argument 1']) 1346 v9.CheckDefAndScriptFailure(['foldtextresult(1.1)'], ['E1013: Argument 1: type mismatch, expected string but got float', 'E1220: String or Number required for argument 1'])
1341 CheckDefExecAndScriptFailure(['foldtextresult("")'], 'E1209: Invalid value for a line number') 1347 v9.CheckDefExecAndScriptFailure(['foldtextresult("")'], 'E1209: Invalid value for a line number')
1342 assert_equal('', foldtextresult(1)) 1348 assert_equal('', foldtextresult(1))
1343 assert_equal('', foldtextresult('.')) 1349 assert_equal('', foldtextresult('.'))
1344 enddef 1350 enddef
1345 1351
1346 def Test_fullcommand() 1352 def Test_fullcommand()
1366 assert_equal('', fullcommand('scg')) 1372 assert_equal('', fullcommand('scg'))
1367 fullcommand('')->assert_equal('') 1373 fullcommand('')->assert_equal('')
1368 enddef 1374 enddef
1369 1375
1370 def Test_funcref() 1376 def Test_funcref()
1371 CheckDefAndScriptFailure(['funcref("reverse", 2)'], ['E1013: Argument 2: type mismatch, expected list<any> but got number', 'E1211: List required for argument 2']) 1377 v9.CheckDefAndScriptFailure(['funcref("reverse", 2)'], ['E1013: Argument 2: type mismatch, expected list<any> but got number', 'E1211: List required for argument 2'])
1372 CheckDefAndScriptFailure(['funcref("reverse", [2], [1])'], ['E1013: Argument 3: type mismatch, expected dict<any> but got list<number>', 'E1206: Dictionary required for argument 3']) 1378 v9.CheckDefAndScriptFailure(['funcref("reverse", [2], [1])'], ['E1013: Argument 3: type mismatch, expected dict<any> but got list<number>', 'E1206: Dictionary required for argument 3'])
1373 1379
1374 var lines =<< trim END 1380 var lines =<< trim END
1375 vim9script 1381 vim9script
1376 def UseBool(b: bool) 1382 def UseBool(b: bool)
1377 enddef 1383 enddef
1384 var Ref1: func(number) = funcref(UseBool) 1390 var Ref1: func(number) = funcref(UseBool)
1385 enddef 1391 enddef
1386 defcompile 1392 defcompile
1387 GetRefOk() 1393 GetRefOk()
1388 END 1394 END
1389 CheckScriptSuccess(lines) 1395 v9.CheckScriptSuccess(lines)
1390 1396
1391 lines =<< trim END 1397 lines =<< trim END
1392 vim9script 1398 vim9script
1393 def UseBool(b: bool) 1399 def UseBool(b: bool)
1394 enddef 1400 enddef
1396 # only fails at runtime 1402 # only fails at runtime
1397 var Ref1: func(number) = funcref(UseBool) 1403 var Ref1: func(number) = funcref(UseBool)
1398 enddef 1404 enddef
1399 GetRefBad() 1405 GetRefBad()
1400 END 1406 END
1401 CheckScriptFailure(lines, 'E1012: Type mismatch; expected func(number) but got func(bool)') 1407 v9.CheckScriptFailure(lines, 'E1012: Type mismatch; expected func(number) but got func(bool)')
1402 enddef 1408 enddef
1403 1409
1404 def Test_function() 1410 def Test_function()
1405 CheckDefExecAndScriptFailure(['function(123)'], 'E1256: String or function required for argument 1') 1411 v9.CheckDefExecAndScriptFailure(['function(123)'], 'E1256: String or function required for argument 1')
1406 1412
1407 CheckDefAndScriptFailure(['function("reverse", 2)'], ['E1013: Argument 2: type mismatch, expected list<any> but got number', 'E1211: List required for argument 2']) 1413 v9.CheckDefAndScriptFailure(['function("reverse", 2)'], ['E1013: Argument 2: type mismatch, expected list<any> but got number', 'E1211: List required for argument 2'])
1408 CheckDefAndScriptFailure(['function("reverse", [2], [1])'], ['E1013: Argument 3: type mismatch, expected dict<any> but got list<number>', 'E1206: Dictionary required for argument 3']) 1414 v9.CheckDefAndScriptFailure(['function("reverse", [2], [1])'], ['E1013: Argument 3: type mismatch, expected dict<any> but got list<number>', 'E1206: Dictionary required for argument 3'])
1409 1415
1410 var lines =<< trim END 1416 var lines =<< trim END
1411 vim9script 1417 vim9script
1412 def UseBool(b: bool) 1418 def UseBool(b: bool)
1413 enddef 1419 enddef
1420 var Ref1: func(number) = function(UseBool) 1426 var Ref1: func(number) = function(UseBool)
1421 enddef 1427 enddef
1422 defcompile 1428 defcompile
1423 GetRefOk() 1429 GetRefOk()
1424 END 1430 END
1425 CheckScriptSuccess(lines) 1431 v9.CheckScriptSuccess(lines)
1426 1432
1427 lines =<< trim END 1433 lines =<< trim END
1428 vim9script 1434 vim9script
1429 def UseBool(b: bool) 1435 def UseBool(b: bool)
1430 enddef 1436 enddef
1432 # only fails at runtime 1438 # only fails at runtime
1433 var Ref1: func(number) = function(UseBool) 1439 var Ref1: func(number) = function(UseBool)
1434 enddef 1440 enddef
1435 GetRefBad() 1441 GetRefBad()
1436 END 1442 END
1437 CheckScriptFailure(lines, 'E1012: Type mismatch; expected func(number) but got func(bool)') 1443 v9.CheckScriptFailure(lines, 'E1012: Type mismatch; expected func(number) but got func(bool)')
1438 enddef 1444 enddef
1439 1445
1440 def Test_garbagecollect() 1446 def Test_garbagecollect()
1441 garbagecollect(true) 1447 garbagecollect(true)
1442 CheckDefAndScriptFailure(['garbagecollect("1")'], ['E1013: Argument 1: type mismatch, expected bool but got string', 'E1212: Bool required for argument 1']) 1448 v9.CheckDefAndScriptFailure(['garbagecollect("1")'], ['E1013: Argument 1: type mismatch, expected bool but got string', 'E1212: Bool required for argument 1'])
1443 CheckDefAndScriptFailure(['garbagecollect(20)'], ['E1013: Argument 1: type mismatch, expected bool but got number', 'E1212: Bool required for argument 1']) 1449 v9.CheckDefAndScriptFailure(['garbagecollect(20)'], ['E1013: Argument 1: type mismatch, expected bool but got number', 'E1212: Bool required for argument 1'])
1444 enddef 1450 enddef
1445 1451
1446 def Test_get() 1452 def Test_get()
1447 CheckDefAndScriptFailure(['get("a", 1)'], ['E1013: Argument 1: type mismatch, expected list<any> but got string', 'E896: Argument of get() must be a List, Dictionary or Blob']) 1453 v9.CheckDefAndScriptFailure(['get("a", 1)'], ['E1013: Argument 1: type mismatch, expected list<any> but got string', 'E896: Argument of get() must be a List, Dictionary or Blob'])
1448 [3, 5, 2]->get(1)->assert_equal(5) 1454 [3, 5, 2]->get(1)->assert_equal(5)
1449 [3, 5, 2]->get(3)->assert_equal(0) 1455 [3, 5, 2]->get(3)->assert_equal(0)
1450 [3, 5, 2]->get(3, 9)->assert_equal(9) 1456 [3, 5, 2]->get(3, 9)->assert_equal(9)
1451 assert_equal(get(0z102030, 2), 0x30) 1457 assert_equal(get(0z102030, 2), 0x30)
1452 {a: 7, b: 11, c: 13}->get('c')->assert_equal(13) 1458 {a: 7, b: 11, c: 13}->get('c')->assert_equal(13)
1462 var Getqflist: func = function('getqflist', [{id: 42}]) 1468 var Getqflist: func = function('getqflist', [{id: 42}])
1463 return Getqflist()->get('id', 77) 1469 return Getqflist()->get('id', 77)
1464 enddef 1470 enddef
1465 assert_equal(0, DoThat()) 1471 assert_equal(0, DoThat())
1466 END 1472 END
1467 CheckScriptSuccess(lines) 1473 v9.CheckScriptSuccess(lines)
1468 enddef 1474 enddef
1469 1475
1470 def Test_getbufinfo() 1476 def Test_getbufinfo()
1471 var bufinfo = getbufinfo(bufnr()) 1477 var bufinfo = getbufinfo(bufnr())
1472 getbufinfo('%')->assert_equal(bufinfo) 1478 getbufinfo('%')->assert_equal(bufinfo)
1475 hide edit Xtestfile2 1481 hide edit Xtestfile2
1476 hide enew 1482 hide enew
1477 getbufinfo({bufloaded: true, buflisted: true, bufmodified: false}) 1483 getbufinfo({bufloaded: true, buflisted: true, bufmodified: false})
1478 ->len()->assert_equal(3) 1484 ->len()->assert_equal(3)
1479 bwipe Xtestfile1 Xtestfile2 1485 bwipe Xtestfile1 Xtestfile2
1480 CheckDefAndScriptFailure(['getbufinfo(true)'], ['E1013: Argument 1: type mismatch, expected string but got bool', 'E1174: String required for argument 1']) 1486 v9.CheckDefAndScriptFailure(['getbufinfo(true)'], ['E1013: Argument 1: type mismatch, expected string but got bool', 'E1174: String required for argument 1'])
1481 enddef 1487 enddef
1482 1488
1483 def Test_getbufline() 1489 def Test_getbufline()
1484 e SomeFile 1490 e SomeFile
1485 var buf = bufnr() 1491 var buf = bufnr()
1492 1498
1493 assert_fails('getbufline("", "$a", "$b")', ['E1030: Using a String as a Number: "$a"', 'E1030: Using a String as a Number: "$a"']) 1499 assert_fails('getbufline("", "$a", "$b")', ['E1030: Using a String as a Number: "$a"', 'E1030: Using a String as a Number: "$a"'])
1494 assert_fails('getbufline("", "$", "$b")', ['E1030: Using a String as a Number: "$b"', 'E1030: Using a String as a Number: "$b"']) 1500 assert_fails('getbufline("", "$", "$b")', ['E1030: Using a String as a Number: "$b"', 'E1030: Using a String as a Number: "$b"'])
1495 bwipe! 1501 bwipe!
1496 1502
1497 CheckDefAndScriptFailure(['getbufline([], 2)'], ['E1013: Argument 1: type mismatch, expected string but got list<unknown>', 'E1220: String or Number required for argument 1']) 1503 v9.CheckDefAndScriptFailure(['getbufline([], 2)'], ['E1013: Argument 1: type mismatch, expected string but got list<unknown>', 'E1220: String or Number required for argument 1'])
1498 CheckDefAndScriptFailure(['getbufline("a", [])'], ['E1013: Argument 2: type mismatch, expected string but got list<unknown>', 'E1220: String or Number required for argument 2']) 1504 v9.CheckDefAndScriptFailure(['getbufline("a", [])'], ['E1013: Argument 2: type mismatch, expected string but got list<unknown>', 'E1220: String or Number required for argument 2'])
1499 CheckDefAndScriptFailure(['getbufline("a", 2, 0z10)'], ['E1013: Argument 3: type mismatch, expected string but got blob', 'E1220: String or Number required for argument 3']) 1505 v9.CheckDefAndScriptFailure(['getbufline("a", 2, 0z10)'], ['E1013: Argument 3: type mismatch, expected string but got blob', 'E1220: String or Number required for argument 3'])
1500 enddef 1506 enddef
1501 1507
1502 def Test_getbufvar() 1508 def Test_getbufvar()
1503 CheckDefAndScriptFailure(['getbufvar(true, "v")'], ['E1013: Argument 1: type mismatch, expected string but got bool', 'E1220: String or Number required for argument 1']) 1509 v9.CheckDefAndScriptFailure(['getbufvar(true, "v")'], ['E1013: Argument 1: type mismatch, expected string but got bool', 'E1220: String or Number required for argument 1'])
1504 CheckDefAndScriptFailure(['getbufvar(1, 2, 3)'], ['E1013: Argument 2: type mismatch, expected string but got number', 'E1174: String required for argument 2']) 1510 v9.CheckDefAndScriptFailure(['getbufvar(1, 2, 3)'], ['E1013: Argument 2: type mismatch, expected string but got number', 'E1174: String required for argument 2'])
1505 enddef 1511 enddef
1506 1512
1507 def Test_getchangelist() 1513 def Test_getchangelist()
1508 new 1514 new
1509 setline(1, 'some text') 1515 setline(1, 'some text')
1515 def Test_getchar() 1521 def Test_getchar()
1516 while getchar(0) 1522 while getchar(0)
1517 endwhile 1523 endwhile
1518 getchar(true)->assert_equal(0) 1524 getchar(true)->assert_equal(0)
1519 getchar(1)->assert_equal(0) 1525 getchar(1)->assert_equal(0)
1520 CheckDefAndScriptFailure(['getchar(2)'], ['E1013: Argument 1: type mismatch, expected bool but got number', 'E1212: Bool required for argument 1']) 1526 v9.CheckDefAndScriptFailure(['getchar(2)'], ['E1013: Argument 1: type mismatch, expected bool but got number', 'E1212: Bool required for argument 1'])
1521 CheckDefAndScriptFailure(['getchar("1")'], ['E1013: Argument 1: type mismatch, expected bool but got string', 'E1212: Bool required for argument 1']) 1527 v9.CheckDefAndScriptFailure(['getchar("1")'], ['E1013: Argument 1: type mismatch, expected bool but got string', 'E1212: Bool required for argument 1'])
1522 enddef 1528 enddef
1523 1529
1524 def Test_getcharpos() 1530 def Test_getcharpos()
1525 CheckDefAndScriptFailure(['getcharpos(true)'], ['E1013: Argument 1: type mismatch, expected string but got bool', 'E1174: String required for argument 1']) 1531 v9.CheckDefAndScriptFailure(['getcharpos(true)'], ['E1013: Argument 1: type mismatch, expected string but got bool', 'E1174: String required for argument 1'])
1526 CheckDefAndScriptFailure(['getcharpos(1)'], ['E1013: Argument 1: type mismatch, expected string but got number', 'E1174: String required for argument 1']) 1532 v9.CheckDefAndScriptFailure(['getcharpos(1)'], ['E1013: Argument 1: type mismatch, expected string but got number', 'E1174: String required for argument 1'])
1527 CheckDefExecAndScriptFailure(['getcharpos("")'], 'E1209: Invalid value for a line number') 1533 v9.CheckDefExecAndScriptFailure(['getcharpos("")'], 'E1209: Invalid value for a line number')
1528 enddef 1534 enddef
1529 1535
1530 def Test_getcharstr() 1536 def Test_getcharstr()
1531 CheckDefAndScriptFailure(['getcharstr(2)'], ['E1013: Argument 1: type mismatch, expected bool but got number', 'E1212: Bool required for argument 1']) 1537 v9.CheckDefAndScriptFailure(['getcharstr(2)'], ['E1013: Argument 1: type mismatch, expected bool but got number', 'E1212: Bool required for argument 1'])
1532 CheckDefAndScriptFailure(['getcharstr("1")'], ['E1013: Argument 1: type mismatch, expected bool but got string', 'E1212: Bool required for argument 1']) 1538 v9.CheckDefAndScriptFailure(['getcharstr("1")'], ['E1013: Argument 1: type mismatch, expected bool but got string', 'E1212: Bool required for argument 1'])
1533 enddef 1539 enddef
1534 1540
1535 def Test_getcompletion() 1541 def Test_getcompletion()
1536 set wildignore=*.vim,*~ 1542 set wildignore=*.vim,*~
1537 var l = getcompletion('run', 'file', true) 1543 var l = getcompletion('run', 'file', true)
1538 l->assert_equal([]) 1544 l->assert_equal([])
1539 set wildignore& 1545 set wildignore&
1540 CheckDefAndScriptFailure(['getcompletion(1, "b")'], ['E1013: Argument 1: type mismatch, expected string but got number', 'E1174: String required for argument 1']) 1546 v9.CheckDefAndScriptFailure(['getcompletion(1, "b")'], ['E1013: Argument 1: type mismatch, expected string but got number', 'E1174: String required for argument 1'])
1541 CheckDefAndScriptFailure(['getcompletion("a", 2)'], ['E1013: Argument 2: type mismatch, expected string but got number', 'E1174: String required for argument 2']) 1547 v9.CheckDefAndScriptFailure(['getcompletion("a", 2)'], ['E1013: Argument 2: type mismatch, expected string but got number', 'E1174: String required for argument 2'])
1542 CheckDefAndScriptFailure(['getcompletion("a", "b", 2)'], ['E1013: Argument 3: type mismatch, expected bool but got number', 'E1212: Bool required for argument 3']) 1548 v9.CheckDefAndScriptFailure(['getcompletion("a", "b", 2)'], ['E1013: Argument 3: type mismatch, expected bool but got number', 'E1212: Bool required for argument 3'])
1543 CheckDefExecAndScriptFailure(['getcompletion("a", "")'], 'E475: Invalid argument') 1549 v9.CheckDefExecAndScriptFailure(['getcompletion("a", "")'], 'E475: Invalid argument')
1544 getcompletion('', 'messages')->assert_equal(['clear']) 1550 getcompletion('', 'messages')->assert_equal(['clear'])
1545 enddef 1551 enddef
1546 1552
1547 def Test_getcurpos() 1553 def Test_getcurpos()
1548 CheckDefAndScriptFailure(['getcurpos("x")'], ['E1013: Argument 1: type mismatch, expected number but got string', 'E1210: Number required for argument 1']) 1554 v9.CheckDefAndScriptFailure(['getcurpos("x")'], ['E1013: Argument 1: type mismatch, expected number but got string', 'E1210: Number required for argument 1'])
1549 enddef 1555 enddef
1550 1556
1551 def Test_getcursorcharpos() 1557 def Test_getcursorcharpos()
1552 CheckDefAndScriptFailure(['getcursorcharpos("x")'], ['E1013: Argument 1: type mismatch, expected number but got string', 'E1210: Number required for argument 1']) 1558 v9.CheckDefAndScriptFailure(['getcursorcharpos("x")'], ['E1013: Argument 1: type mismatch, expected number but got string', 'E1210: Number required for argument 1'])
1553 enddef 1559 enddef
1554 1560
1555 def Test_getcwd() 1561 def Test_getcwd()
1556 CheckDefAndScriptFailure(['getcwd("x")'], ['E1013: Argument 1: type mismatch, expected number but got string', 'E1210: Number required for argument 1']) 1562 v9.CheckDefAndScriptFailure(['getcwd("x")'], ['E1013: Argument 1: type mismatch, expected number but got string', 'E1210: Number required for argument 1'])
1557 CheckDefAndScriptFailure(['getcwd("x", 1)'], ['E1013: Argument 1: type mismatch, expected number but got string', 'E1210: Number required for argument 1']) 1563 v9.CheckDefAndScriptFailure(['getcwd("x", 1)'], ['E1013: Argument 1: type mismatch, expected number but got string', 'E1210: Number required for argument 1'])
1558 CheckDefAndScriptFailure(['getcwd(1, "x")'], ['E1013: Argument 2: type mismatch, expected number but got string', 'E1210: Number required for argument 2']) 1564 v9.CheckDefAndScriptFailure(['getcwd(1, "x")'], ['E1013: Argument 2: type mismatch, expected number but got string', 'E1210: Number required for argument 2'])
1559 enddef 1565 enddef
1560 1566
1561 def Test_getenv() 1567 def Test_getenv()
1562 if getenv('does-not_exist') == '' 1568 if getenv('does-not_exist') == ''
1563 assert_report('getenv() should return null') 1569 assert_report('getenv() should return null')
1571 unlet $SOMEENVVAR 1577 unlet $SOMEENVVAR
1572 getenv('')->assert_equal(v:null) 1578 getenv('')->assert_equal(v:null)
1573 enddef 1579 enddef
1574 1580
1575 def Test_getfontname() 1581 def Test_getfontname()
1576 CheckDefAndScriptFailure(['getfontname(10)'], ['E1013: Argument 1: type mismatch, expected string but got number', 'E1174: String required for argument 1']) 1582 v9.CheckDefAndScriptFailure(['getfontname(10)'], ['E1013: Argument 1: type mismatch, expected string but got number', 'E1174: String required for argument 1'])
1577 #getfontname('')->assert_equal('') 1583 #getfontname('')->assert_equal('')
1578 enddef 1584 enddef
1579 1585
1580 def Test_getfperm() 1586 def Test_getfperm()
1581 assert_equal('', getfperm("")) 1587 assert_equal('', getfperm(""))
1582 assert_equal('', getfperm(test_null_string())) 1588 assert_equal('', getfperm(test_null_string()))
1583 1589
1584 CheckDefExecFailure(['echo getfperm(true)'], 'E1013:') 1590 v9.CheckDefExecFailure(['echo getfperm(true)'], 'E1013:')
1585 CheckDefExecFailure(['echo getfperm(v:null)'], 'E1013:') 1591 v9.CheckDefExecFailure(['echo getfperm(v:null)'], 'E1013:')
1586 enddef 1592 enddef
1587 1593
1588 def Test_getfsize() 1594 def Test_getfsize()
1589 assert_equal(-1, getfsize("")) 1595 assert_equal(-1, getfsize(""))
1590 assert_equal(-1, getfsize(test_null_string())) 1596 assert_equal(-1, getfsize(test_null_string()))
1591 1597
1592 CheckDefExecFailure(['echo getfsize(true)'], 'E1013:') 1598 v9.CheckDefExecFailure(['echo getfsize(true)'], 'E1013:')
1593 CheckDefExecFailure(['echo getfsize(v:null)'], 'E1013:') 1599 v9.CheckDefExecFailure(['echo getfsize(v:null)'], 'E1013:')
1594 enddef 1600 enddef
1595 1601
1596 def Test_getftime() 1602 def Test_getftime()
1597 assert_equal(-1, getftime("")) 1603 assert_equal(-1, getftime(""))
1598 assert_equal(-1, getftime(test_null_string())) 1604 assert_equal(-1, getftime(test_null_string()))
1599 1605
1600 CheckDefExecFailure(['echo getftime(true)'], 'E1013:') 1606 v9.CheckDefExecFailure(['echo getftime(true)'], 'E1013:')
1601 CheckDefExecFailure(['echo getftime(v:null)'], 'E1013:') 1607 v9.CheckDefExecFailure(['echo getftime(v:null)'], 'E1013:')
1602 enddef 1608 enddef
1603 1609
1604 def Test_getftype() 1610 def Test_getftype()
1605 assert_equal('', getftype("")) 1611 assert_equal('', getftype(""))
1606 assert_equal('', getftype(test_null_string())) 1612 assert_equal('', getftype(test_null_string()))
1607 1613
1608 CheckDefExecFailure(['echo getftype(true)'], 'E1013:') 1614 v9.CheckDefExecFailure(['echo getftype(true)'], 'E1013:')
1609 CheckDefExecFailure(['echo getftype(v:null)'], 'E1013:') 1615 v9.CheckDefExecFailure(['echo getftype(v:null)'], 'E1013:')
1610 enddef 1616 enddef
1611 1617
1612 def Test_getjumplist() 1618 def Test_getjumplist()
1613 CheckDefAndScriptFailure(['getjumplist("x")'], ['E1013: Argument 1: type mismatch, expected number but got string', 'E1210: Number required for argument 1']) 1619 v9.CheckDefAndScriptFailure(['getjumplist("x")'], ['E1013: Argument 1: type mismatch, expected number but got string', 'E1210: Number required for argument 1'])
1614 CheckDefAndScriptFailure(['getjumplist("x", 1)'], ['E1013: Argument 1: type mismatch, expected number but got string', 'E1210: Number required for argument 1']) 1620 v9.CheckDefAndScriptFailure(['getjumplist("x", 1)'], ['E1013: Argument 1: type mismatch, expected number but got string', 'E1210: Number required for argument 1'])
1615 CheckDefAndScriptFailure(['getjumplist(1, "x")'], ['E1013: Argument 2: type mismatch, expected number but got string', 'E1210: Number required for argument 2']) 1621 v9.CheckDefAndScriptFailure(['getjumplist(1, "x")'], ['E1013: Argument 2: type mismatch, expected number but got string', 'E1210: Number required for argument 2'])
1616 enddef 1622 enddef
1617 1623
1618 def Test_getline() 1624 def Test_getline()
1619 var lines =<< trim END 1625 var lines =<< trim END
1620 new 1626 new
1624 1630
1625 normal 2Gvjv 1631 normal 2Gvjv
1626 assert_equal('there', getline("'<")) 1632 assert_equal('there', getline("'<"))
1627 assert_equal('again', getline("'>")) 1633 assert_equal('again', getline("'>"))
1628 END 1634 END
1629 CheckDefAndScriptSuccess(lines) 1635 v9.CheckDefAndScriptSuccess(lines)
1630 1636
1631 lines =<< trim END 1637 lines =<< trim END
1632 echo getline('1') 1638 echo getline('1')
1633 END 1639 END
1634 CheckDefExecAndScriptFailure(lines, 'E1209:') 1640 v9.CheckDefExecAndScriptFailure(lines, 'E1209:')
1635 CheckDefAndScriptFailure(['getline(true)'], ['E1013: Argument 1: type mismatch, expected string but got bool', 'E1220: String or Number required for argument 1']) 1641 v9.CheckDefAndScriptFailure(['getline(true)'], ['E1013: Argument 1: type mismatch, expected string but got bool', 'E1220: String or Number required for argument 1'])
1636 CheckDefAndScriptFailure(['getline(1, true)'], ['E1013: Argument 2: type mismatch, expected string but got bool', 'E1220: String or Number required for argument 2']) 1642 v9.CheckDefAndScriptFailure(['getline(1, true)'], ['E1013: Argument 2: type mismatch, expected string but got bool', 'E1220: String or Number required for argument 2'])
1637 CheckDefExecAndScriptFailure(['getline("")'], 'E1209: Invalid value for a line number') 1643 v9.CheckDefExecAndScriptFailure(['getline("")'], 'E1209: Invalid value for a line number')
1638 enddef 1644 enddef
1639 1645
1640 def Test_getloclist() 1646 def Test_getloclist()
1641 CheckDefAndScriptFailure(['getloclist("x")'], ['E1013: Argument 1: type mismatch, expected number but got string', 'E1210: Number required for argument 1']) 1647 v9.CheckDefAndScriptFailure(['getloclist("x")'], ['E1013: Argument 1: type mismatch, expected number but got string', 'E1210: Number required for argument 1'])
1642 CheckDefAndScriptFailure(['getloclist(1, [])'], ['E1013: Argument 2: type mismatch, expected dict<any> but got list<unknown>', 'E1206: Dictionary required for argument 2']) 1648 v9.CheckDefAndScriptFailure(['getloclist(1, [])'], ['E1013: Argument 2: type mismatch, expected dict<any> but got list<unknown>', 'E1206: Dictionary required for argument 2'])
1643 enddef 1649 enddef
1644 1650
1645 def Test_getloclist_return_type() 1651 def Test_getloclist_return_type()
1646 var l = getloclist(1) 1652 var l = getloclist(1)
1647 l->assert_equal([]) 1653 l->assert_equal([])
1649 var d = getloclist(1, {items: 0}) 1655 var d = getloclist(1, {items: 0})
1650 d->assert_equal({items: []}) 1656 d->assert_equal({items: []})
1651 enddef 1657 enddef
1652 1658
1653 def Test_getmarklist() 1659 def Test_getmarklist()
1654 CheckDefAndScriptFailure(['getmarklist([])'], ['E1013: Argument 1: type mismatch, expected string but got list<unknown>', 'E1220: String or Number required for argument 1']) 1660 v9.CheckDefAndScriptFailure(['getmarklist([])'], ['E1013: Argument 1: type mismatch, expected string but got list<unknown>', 'E1220: String or Number required for argument 1'])
1655 assert_equal([], getmarklist(10000)) 1661 assert_equal([], getmarklist(10000))
1656 assert_fails('getmarklist("a%b@#")', 'E94:') 1662 assert_fails('getmarklist("a%b@#")', 'E94:')
1657 enddef 1663 enddef
1658 1664
1659 def Test_getmatches() 1665 def Test_getmatches()
1660 CheckDefAndScriptFailure(['getmatches("x")'], ['E1013: Argument 1: type mismatch, expected number but got string', 'E1210: Number required for argument 1']) 1666 v9.CheckDefAndScriptFailure(['getmatches("x")'], ['E1013: Argument 1: type mismatch, expected number but got string', 'E1210: Number required for argument 1'])
1661 enddef 1667 enddef
1662 1668
1663 def Test_getpos() 1669 def Test_getpos()
1664 CheckDefAndScriptFailure(['getpos(10)'], ['E1013: Argument 1: type mismatch, expected string but got number', 'E1174: String required for argument 1']) 1670 v9.CheckDefAndScriptFailure(['getpos(10)'], ['E1013: Argument 1: type mismatch, expected string but got number', 'E1174: String required for argument 1'])
1665 assert_equal([0, 1, 1, 0], getpos('.')) 1671 assert_equal([0, 1, 1, 0], getpos('.'))
1666 CheckDefExecFailure(['getpos("a")'], 'E1209:') 1672 v9.CheckDefExecFailure(['getpos("a")'], 'E1209:')
1667 CheckDefExecAndScriptFailure(['getpos("")'], 'E1209: Invalid value for a line number') 1673 v9.CheckDefExecAndScriptFailure(['getpos("")'], 'E1209: Invalid value for a line number')
1668 enddef 1674 enddef
1669 1675
1670 def Test_getqflist() 1676 def Test_getqflist()
1671 CheckDefAndScriptFailure(['getqflist([])'], ['E1013: Argument 1: type mismatch, expected dict<any> but got list<unknown>', 'E1206: Dictionary required for argument 1']) 1677 v9.CheckDefAndScriptFailure(['getqflist([])'], ['E1013: Argument 1: type mismatch, expected dict<any> but got list<unknown>', 'E1206: Dictionary required for argument 1'])
1672 call assert_equal({}, getqflist({})) 1678 call assert_equal({}, getqflist({}))
1673 enddef 1679 enddef
1674 1680
1675 def Test_getqflist_return_type() 1681 def Test_getqflist_return_type()
1676 var l = getqflist() 1682 var l = getqflist()
1683 def Test_getreg() 1689 def Test_getreg()
1684 var lines = ['aaa', 'bbb', 'ccc'] 1690 var lines = ['aaa', 'bbb', 'ccc']
1685 setreg('a', lines) 1691 setreg('a', lines)
1686 getreg('a', true, true)->assert_equal(lines) 1692 getreg('a', true, true)->assert_equal(lines)
1687 assert_fails('getreg("ab")', 'E1162:') 1693 assert_fails('getreg("ab")', 'E1162:')
1688 CheckDefAndScriptFailure(['getreg(1)'], ['E1013: Argument 1: type mismatch, expected string but got number', 'E1174: String required for argument 1']) 1694 v9.CheckDefAndScriptFailure(['getreg(1)'], ['E1013: Argument 1: type mismatch, expected string but got number', 'E1174: String required for argument 1'])
1689 CheckDefAndScriptFailure(['getreg(".", 2)'], ['E1013: Argument 2: type mismatch, expected bool but got number', 'E1212: Bool required for argument 2']) 1695 v9.CheckDefAndScriptFailure(['getreg(".", 2)'], ['E1013: Argument 2: type mismatch, expected bool but got number', 'E1212: Bool required for argument 2'])
1690 CheckDefAndScriptFailure(['getreg(".", 1, "b")'], ['E1013: Argument 3: type mismatch, expected bool but got string', 'E1212: Bool required for argument 3']) 1696 v9.CheckDefAndScriptFailure(['getreg(".", 1, "b")'], ['E1013: Argument 3: type mismatch, expected bool but got string', 'E1212: Bool required for argument 3'])
1691 @" = 'A1B2C3' 1697 @" = 'A1B2C3'
1692 getreg('')->assert_equal('A1B2C3') 1698 getreg('')->assert_equal('A1B2C3')
1693 enddef 1699 enddef
1694 1700
1695 def Test_getreg_return_type() 1701 def Test_getreg_return_type()
1715 setreg('"', 'ABCD', 'b') 1721 setreg('"', 'ABCD', 'b')
1716 getregtype('')->assert_equal("\<C-V>4") 1722 getregtype('')->assert_equal("\<C-V>4")
1717 enddef 1723 enddef
1718 1724
1719 def Test_gettabinfo() 1725 def Test_gettabinfo()
1720 CheckDefAndScriptFailure(['gettabinfo("x")'], ['E1013: Argument 1: type mismatch, expected number but got string', 'E1210: Number required for argument 1']) 1726 v9.CheckDefAndScriptFailure(['gettabinfo("x")'], ['E1013: Argument 1: type mismatch, expected number but got string', 'E1210: Number required for argument 1'])
1721 enddef 1727 enddef
1722 1728
1723 def Test_gettabvar() 1729 def Test_gettabvar()
1724 CheckDefAndScriptFailure(['gettabvar("a", "b")'], ['E1013: Argument 1: type mismatch, expected number but got string', 'E1210: Number required for argument 1']) 1730 v9.CheckDefAndScriptFailure(['gettabvar("a", "b")'], ['E1013: Argument 1: type mismatch, expected number but got string', 'E1210: Number required for argument 1'])
1725 CheckDefAndScriptFailure(['gettabvar(1, 2)'], ['E1013: Argument 2: type mismatch, expected string but got number', 'E1174: String required for argument 2']) 1731 v9.CheckDefAndScriptFailure(['gettabvar(1, 2)'], ['E1013: Argument 2: type mismatch, expected string but got number', 'E1174: String required for argument 2'])
1726 enddef 1732 enddef
1727 1733
1728 def Test_gettabwinvar() 1734 def Test_gettabwinvar()
1729 CheckDefAndScriptFailure(['gettabwinvar("a", 2, "c")'], ['E1013: Argument 1: type mismatch, expected number but got string', 'E1210: Number required for argument 1']) 1735 v9.CheckDefAndScriptFailure(['gettabwinvar("a", 2, "c")'], ['E1013: Argument 1: type mismatch, expected number but got string', 'E1210: Number required for argument 1'])
1730 CheckDefAndScriptFailure(['gettabwinvar(1, "b", "c", [])'], ['E1013: Argument 2: type mismatch, expected number but got string', 'E1210: Number required for argument 2']) 1736 v9.CheckDefAndScriptFailure(['gettabwinvar(1, "b", "c", [])'], ['E1013: Argument 2: type mismatch, expected number but got string', 'E1210: Number required for argument 2'])
1731 CheckDefAndScriptFailure(['gettabwinvar(1, 1, 3, {})'], ['E1013: Argument 3: type mismatch, expected string but got number', 'E1174: String required for argument 3']) 1737 v9.CheckDefAndScriptFailure(['gettabwinvar(1, 1, 3, {})'], ['E1013: Argument 3: type mismatch, expected string but got number', 'E1174: String required for argument 3'])
1732 enddef 1738 enddef
1733 1739
1734 def Test_gettagstack() 1740 def Test_gettagstack()
1735 CheckDefAndScriptFailure(['gettagstack("x")'], ['E1013: Argument 1: type mismatch, expected number but got string', 'E1210: Number required for argument 1']) 1741 v9.CheckDefAndScriptFailure(['gettagstack("x")'], ['E1013: Argument 1: type mismatch, expected number but got string', 'E1210: Number required for argument 1'])
1736 enddef 1742 enddef
1737 1743
1738 def Test_gettext() 1744 def Test_gettext()
1739 CheckDefAndScriptFailure(['gettext(10)'], ['E1013: Argument 1: type mismatch, expected string but got number', 'E1174: String required for argument 1']) 1745 v9.CheckDefAndScriptFailure(['gettext(10)'], ['E1013: Argument 1: type mismatch, expected string but got number', 'E1174: String required for argument 1'])
1740 CheckDefExecAndScriptFailure(['gettext("")'], 'E475: Invalid argument') 1746 v9.CheckDefExecAndScriptFailure(['gettext("")'], 'E475: Invalid argument')
1741 assert_equal('abc', gettext("abc")) 1747 assert_equal('abc', gettext("abc"))
1742 assert_fails('gettext("")', 'E475:') 1748 assert_fails('gettext("")', 'E475:')
1743 enddef 1749 enddef
1744 1750
1745 def Test_getwininfo() 1751 def Test_getwininfo()
1746 CheckDefAndScriptFailure(['getwininfo("x")'], ['E1013: Argument 1: type mismatch, expected number but got string', 'E1210: Number required for argument 1']) 1752 v9.CheckDefAndScriptFailure(['getwininfo("x")'], ['E1013: Argument 1: type mismatch, expected number but got string', 'E1210: Number required for argument 1'])
1747 enddef 1753 enddef
1748 1754
1749 def Test_getwinpos() 1755 def Test_getwinpos()
1750 CheckDefAndScriptFailure(['getwinpos("x")'], ['E1013: Argument 1: type mismatch, expected number but got string', 'E1210: Number required for argument 1']) 1756 v9.CheckDefAndScriptFailure(['getwinpos("x")'], ['E1013: Argument 1: type mismatch, expected number but got string', 'E1210: Number required for argument 1'])
1751 enddef 1757 enddef
1752 1758
1753 def Test_getwinvar() 1759 def Test_getwinvar()
1754 CheckDefAndScriptFailure(['getwinvar("a", "b")'], ['E1013: Argument 1: type mismatch, expected number but got string', 'E1210: Number required for argument 1']) 1760 v9.CheckDefAndScriptFailure(['getwinvar("a", "b")'], ['E1013: Argument 1: type mismatch, expected number but got string', 'E1210: Number required for argument 1'])
1755 CheckDefAndScriptFailure(['getwinvar(1, 2)'], ['E1013: Argument 2: type mismatch, expected string but got number', 'E1174: String required for argument 2']) 1761 v9.CheckDefAndScriptFailure(['getwinvar(1, 2)'], ['E1013: Argument 2: type mismatch, expected string but got number', 'E1174: String required for argument 2'])
1756 enddef 1762 enddef
1757 1763
1758 def Test_glob() 1764 def Test_glob()
1759 glob('runtest.vim', true, true, true)->assert_equal(['runtest.vim']) 1765 glob('runtest.vim', true, true, true)->assert_equal(['runtest.vim'])
1760 CheckDefAndScriptFailure(['glob(1)'], ['E1013: Argument 1: type mismatch, expected string but got number', 'E1174: String required for argument 1']) 1766 v9.CheckDefAndScriptFailure(['glob(1)'], ['E1013: Argument 1: type mismatch, expected string but got number', 'E1174: String required for argument 1'])
1761 CheckDefAndScriptFailure(['glob("a", 2)'], ['E1013: Argument 2: type mismatch, expected bool but got number', 'E1212: Bool required for argument 2']) 1767 v9.CheckDefAndScriptFailure(['glob("a", 2)'], ['E1013: Argument 2: type mismatch, expected bool but got number', 'E1212: Bool required for argument 2'])
1762 CheckDefAndScriptFailure(['glob("a", 1, "b")'], ['E1013: Argument 3: type mismatch, expected bool but got string', 'E1212: Bool required for argument 3']) 1768 v9.CheckDefAndScriptFailure(['glob("a", 1, "b")'], ['E1013: Argument 3: type mismatch, expected bool but got string', 'E1212: Bool required for argument 3'])
1763 CheckDefAndScriptFailure(['glob("a", 1, true, 2)'], ['E1013: Argument 4: type mismatch, expected bool but got number', 'E1212: Bool required for argument 4']) 1769 v9.CheckDefAndScriptFailure(['glob("a", 1, true, 2)'], ['E1013: Argument 4: type mismatch, expected bool but got number', 'E1212: Bool required for argument 4'])
1764 glob('')->assert_equal('') 1770 glob('')->assert_equal('')
1765 enddef 1771 enddef
1766 1772
1767 def Test_glob2regpat() 1773 def Test_glob2regpat()
1768 CheckDefAndScriptFailure(['glob2regpat(null)'], ['E1013: Argument 1: type mismatch, expected string but got special', 'E1174: String required for argument 1']) 1774 v9.CheckDefAndScriptFailure(['glob2regpat(null)'], ['E1013: Argument 1: type mismatch, expected string but got special', 'E1174: String required for argument 1'])
1769 glob2regpat('')->assert_equal('^$') 1775 glob2regpat('')->assert_equal('^$')
1770 enddef 1776 enddef
1771 1777
1772 def Test_globpath() 1778 def Test_globpath()
1773 globpath('.', 'runtest.vim', true, true, true)->assert_equal(['./runtest.vim']) 1779 globpath('.', 'runtest.vim', true, true, true)->assert_equal(['./runtest.vim'])
1774 CheckDefAndScriptFailure(['globpath(1, "b")'], ['E1013: Argument 1: type mismatch, expected string but got number', 'E1174: String required for argument 1']) 1780 v9.CheckDefAndScriptFailure(['globpath(1, "b")'], ['E1013: Argument 1: type mismatch, expected string but got number', 'E1174: String required for argument 1'])
1775 CheckDefAndScriptFailure(['globpath("a", 2)'], ['E1013: Argument 2: type mismatch, expected string but got number', 'E1174: String required for argument 2']) 1781 v9.CheckDefAndScriptFailure(['globpath("a", 2)'], ['E1013: Argument 2: type mismatch, expected string but got number', 'E1174: String required for argument 2'])
1776 CheckDefAndScriptFailure(['globpath("a", "b", "c")'], ['E1013: Argument 3: type mismatch, expected bool but got string', 'E1212: Bool required for argument 3']) 1782 v9.CheckDefAndScriptFailure(['globpath("a", "b", "c")'], ['E1013: Argument 3: type mismatch, expected bool but got string', 'E1212: Bool required for argument 3'])
1777 CheckDefAndScriptFailure(['globpath("a", "b", true, "d")'], ['E1013: Argument 4: type mismatch, expected bool but got string', 'E1212: Bool required for argument 4']) 1783 v9.CheckDefAndScriptFailure(['globpath("a", "b", true, "d")'], ['E1013: Argument 4: type mismatch, expected bool but got string', 'E1212: Bool required for argument 4'])
1778 CheckDefAndScriptFailure(['globpath("a", "b", true, false, "e")'], ['E1013: Argument 5: type mismatch, expected bool but got string', 'E1212: Bool required for argument 5']) 1784 v9.CheckDefAndScriptFailure(['globpath("a", "b", true, false, "e")'], ['E1013: Argument 5: type mismatch, expected bool but got string', 'E1212: Bool required for argument 5'])
1779 globpath('', '')->assert_equal('') 1785 globpath('', '')->assert_equal('')
1780 enddef 1786 enddef
1781 1787
1782 def Test_has() 1788 def Test_has()
1783 has('eval', true)->assert_equal(1) 1789 has('eval', true)->assert_equal(1)
1784 CheckDefAndScriptFailure(['has(["a"])'], ['E1013: Argument 1: type mismatch, expected string but got list<string>', 'E1174: String required for argument 1']) 1790 v9.CheckDefAndScriptFailure(['has(["a"])'], ['E1013: Argument 1: type mismatch, expected string but got list<string>', 'E1174: String required for argument 1'])
1785 CheckDefAndScriptFailure(['has("a", "b")'], ['E1013: Argument 2: type mismatch, expected bool but got string', 'E1212: Bool required for argument 2']) 1791 v9.CheckDefAndScriptFailure(['has("a", "b")'], ['E1013: Argument 2: type mismatch, expected bool but got string', 'E1212: Bool required for argument 2'])
1786 has('')->assert_equal(0) 1792 has('')->assert_equal(0)
1787 enddef 1793 enddef
1788 1794
1789 def Test_has_key() 1795 def Test_has_key()
1790 var d = {123: 'xx'} 1796 var d = {123: 'xx'}
1791 assert_true(has_key(d, '123')) 1797 assert_true(has_key(d, '123'))
1792 assert_true(has_key(d, 123)) 1798 assert_true(has_key(d, 123))
1793 assert_false(has_key(d, 'x')) 1799 assert_false(has_key(d, 'x'))
1794 assert_false(has_key(d, 99)) 1800 assert_false(has_key(d, 99))
1795 1801
1796 CheckDefAndScriptFailure(['has_key([1, 2], "k")'], ['E1013: Argument 1: type mismatch, expected dict<any> but got list<number>', 'E1206: Dictionary required for argument 1']) 1802 v9.CheckDefAndScriptFailure(['has_key([1, 2], "k")'], ['E1013: Argument 1: type mismatch, expected dict<any> but got list<number>', 'E1206: Dictionary required for argument 1'])
1797 CheckDefAndScriptFailure(['has_key({"a": 10}, ["a"])'], ['E1013: Argument 2: type mismatch, expected string but got list<string>', 'E1220: String or Number required for argument 2']) 1803 v9.CheckDefAndScriptFailure(['has_key({"a": 10}, ["a"])'], ['E1013: Argument 2: type mismatch, expected string but got list<string>', 'E1220: String or Number required for argument 2'])
1798 enddef 1804 enddef
1799 1805
1800 def Test_haslocaldir() 1806 def Test_haslocaldir()
1801 CheckDefAndScriptFailure(['haslocaldir("x")'], ['E1013: Argument 1: type mismatch, expected number but got string', 'E1210: Number required for argument 1']) 1807 v9.CheckDefAndScriptFailure(['haslocaldir("x")'], ['E1013: Argument 1: type mismatch, expected number but got string', 'E1210: Number required for argument 1'])
1802 CheckDefAndScriptFailure(['haslocaldir("x", 1)'], ['E1013: Argument 1: type mismatch, expected number but got string', 'E1210: Number required for argument 1']) 1808 v9.CheckDefAndScriptFailure(['haslocaldir("x", 1)'], ['E1013: Argument 1: type mismatch, expected number but got string', 'E1210: Number required for argument 1'])
1803 CheckDefAndScriptFailure(['haslocaldir(1, "x")'], ['E1013: Argument 2: type mismatch, expected number but got string', 'E1210: Number required for argument 2']) 1809 v9.CheckDefAndScriptFailure(['haslocaldir(1, "x")'], ['E1013: Argument 2: type mismatch, expected number but got string', 'E1210: Number required for argument 2'])
1804 enddef 1810 enddef
1805 1811
1806 def Test_hasmapto() 1812 def Test_hasmapto()
1807 hasmapto('foobar', 'i', true)->assert_equal(0) 1813 hasmapto('foobar', 'i', true)->assert_equal(0)
1808 iabbrev foo foobar 1814 iabbrev foo foobar
1809 hasmapto('foobar', 'i', true)->assert_equal(1) 1815 hasmapto('foobar', 'i', true)->assert_equal(1)
1810 iunabbrev foo 1816 iunabbrev foo
1811 CheckDefAndScriptFailure(['hasmapto(1, "b")'], ['E1013: Argument 1: type mismatch, expected string but got number', 'E1174: String required for argument 1']) 1817 v9.CheckDefAndScriptFailure(['hasmapto(1, "b")'], ['E1013: Argument 1: type mismatch, expected string but got number', 'E1174: String required for argument 1'])
1812 CheckDefAndScriptFailure(['hasmapto("a", 2)'], ['E1013: Argument 2: type mismatch, expected string but got number', 'E1174: String required for argument 2']) 1818 v9.CheckDefAndScriptFailure(['hasmapto("a", 2)'], ['E1013: Argument 2: type mismatch, expected string but got number', 'E1174: String required for argument 2'])
1813 CheckDefAndScriptFailure(['hasmapto("a", "b", 2)'], ['E1013: Argument 3: type mismatch, expected bool but got number', 'E1212: Bool required for argument 3']) 1819 v9.CheckDefAndScriptFailure(['hasmapto("a", "b", 2)'], ['E1013: Argument 3: type mismatch, expected bool but got number', 'E1212: Bool required for argument 3'])
1814 hasmapto('', '')->assert_equal(0) 1820 hasmapto('', '')->assert_equal(0)
1815 enddef 1821 enddef
1816 1822
1817 def Test_histadd() 1823 def Test_histadd()
1818 CheckDefAndScriptFailure(['histadd(1, "x")'], ['E1013: Argument 1: type mismatch, expected string but got number', 'E1174: String required for argument 1']) 1824 v9.CheckDefAndScriptFailure(['histadd(1, "x")'], ['E1013: Argument 1: type mismatch, expected string but got number', 'E1174: String required for argument 1'])
1819 CheckDefAndScriptFailure(['histadd(":", 10)'], ['E1013: Argument 2: type mismatch, expected string but got number', 'E1174: String required for argument 2']) 1825 v9.CheckDefAndScriptFailure(['histadd(":", 10)'], ['E1013: Argument 2: type mismatch, expected string but got number', 'E1174: String required for argument 2'])
1820 histadd("search", 'skyblue') 1826 histadd("search", 'skyblue')
1821 assert_equal('skyblue', histget('/', -1)) 1827 assert_equal('skyblue', histget('/', -1))
1822 histadd("search", '')->assert_equal(0) 1828 histadd("search", '')->assert_equal(0)
1823 enddef 1829 enddef
1824 1830
1825 def Test_histdel() 1831 def Test_histdel()
1826 CheckDefAndScriptFailure(['histdel(1, "x")'], ['E1013: Argument 1: type mismatch, expected string but got number', 'E1174: String required for argument 1']) 1832 v9.CheckDefAndScriptFailure(['histdel(1, "x")'], ['E1013: Argument 1: type mismatch, expected string but got number', 'E1174: String required for argument 1'])
1827 CheckDefAndScriptFailure(['histdel(":", true)'], ['E1013: Argument 2: type mismatch, expected string but got bool', 'E1220: String or Number required for argument 2']) 1833 v9.CheckDefAndScriptFailure(['histdel(":", true)'], ['E1013: Argument 2: type mismatch, expected string but got bool', 'E1220: String or Number required for argument 2'])
1828 histdel('search', '')->assert_equal(0) 1834 histdel('search', '')->assert_equal(0)
1829 enddef 1835 enddef
1830 1836
1831 def Test_histget() 1837 def Test_histget()
1832 CheckDefAndScriptFailure(['histget(1)'], ['E1013: Argument 1: type mismatch, expected string but got number', 'E1174: String required for argument 1']) 1838 v9.CheckDefAndScriptFailure(['histget(1)'], ['E1013: Argument 1: type mismatch, expected string but got number', 'E1174: String required for argument 1'])
1833 CheckDefAndScriptFailure(['histget("a", "b")'], ['E1013: Argument 2: type mismatch, expected number but got string', 'E1210: Number required for argument 2']) 1839 v9.CheckDefAndScriptFailure(['histget("a", "b")'], ['E1013: Argument 2: type mismatch, expected number but got string', 'E1210: Number required for argument 2'])
1834 enddef 1840 enddef
1835 1841
1836 def Test_histnr() 1842 def Test_histnr()
1837 CheckDefAndScriptFailure(['histnr(10)'], ['E1013: Argument 1: type mismatch, expected string but got number', 'E1174: String required for argument 1']) 1843 v9.CheckDefAndScriptFailure(['histnr(10)'], ['E1013: Argument 1: type mismatch, expected string but got number', 'E1174: String required for argument 1'])
1838 assert_equal(-1, histnr('abc')) 1844 assert_equal(-1, histnr('abc'))
1839 enddef 1845 enddef
1840 1846
1841 def Test_hlID() 1847 def Test_hlID()
1842 CheckDefAndScriptFailure(['hlID(10)'], ['E1013: Argument 1: type mismatch, expected string but got number', 'E1174: String required for argument 1']) 1848 v9.CheckDefAndScriptFailure(['hlID(10)'], ['E1013: Argument 1: type mismatch, expected string but got number', 'E1174: String required for argument 1'])
1843 assert_equal(0, hlID('NonExistingHighlight')) 1849 assert_equal(0, hlID('NonExistingHighlight'))
1844 hlID('')->assert_equal(0) 1850 hlID('')->assert_equal(0)
1845 enddef 1851 enddef
1846 1852
1847 def Test_hlexists() 1853 def Test_hlexists()
1848 CheckDefAndScriptFailure(['hlexists([])'], ['E1013: Argument 1: type mismatch, expected string but got list<unknown>', 'E1174: String required for argument 1']) 1854 v9.CheckDefAndScriptFailure(['hlexists([])'], ['E1013: Argument 1: type mismatch, expected string but got list<unknown>', 'E1174: String required for argument 1'])
1849 assert_equal(0, hlexists('NonExistingHighlight')) 1855 assert_equal(0, hlexists('NonExistingHighlight'))
1850 hlexists('')->assert_equal(0) 1856 hlexists('')->assert_equal(0)
1851 enddef 1857 enddef
1852 1858
1853 def Test_hlget() 1859 def Test_hlget()
1854 CheckDefAndScriptFailure(['hlget([])'], ['E1013: Argument 1: type mismatch, expected string but got list<unknown>', 'E1174: String required for argument 1']) 1860 v9.CheckDefAndScriptFailure(['hlget([])'], ['E1013: Argument 1: type mismatch, expected string but got list<unknown>', 'E1174: String required for argument 1'])
1855 hlget('')->assert_equal([]) 1861 hlget('')->assert_equal([])
1856 enddef 1862 enddef
1857 1863
1858 def Test_hlset() 1864 def Test_hlset()
1859 CheckDefAndScriptFailure(['hlset("id")'], ['E1013: Argument 1: type mismatch, expected list<any> but got string', 'E1211: List required for argument 1']) 1865 v9.CheckDefAndScriptFailure(['hlset("id")'], ['E1013: Argument 1: type mismatch, expected list<any> but got string', 'E1211: List required for argument 1'])
1860 hlset([])->assert_equal(0) 1866 hlset([])->assert_equal(0)
1861 enddef 1867 enddef
1862 1868
1863 def Test_iconv() 1869 def Test_iconv()
1864 CheckDefAndScriptFailure(['iconv(1, "from", "to")'], ['E1013: Argument 1: type mismatch, expected string but got number', 'E1174: String required for argument 1']) 1870 v9.CheckDefAndScriptFailure(['iconv(1, "from", "to")'], ['E1013: Argument 1: type mismatch, expected string but got number', 'E1174: String required for argument 1'])
1865 CheckDefAndScriptFailure(['iconv("abc", 10, "to")'], ['E1013: Argument 2: type mismatch, expected string but got number', 'E1174: String required for argument 2']) 1871 v9.CheckDefAndScriptFailure(['iconv("abc", 10, "to")'], ['E1013: Argument 2: type mismatch, expected string but got number', 'E1174: String required for argument 2'])
1866 CheckDefAndScriptFailure(['iconv("abc", "from", 20)'], ['E1013: Argument 3: type mismatch, expected string but got number', 'E1174: String required for argument 3']) 1872 v9.CheckDefAndScriptFailure(['iconv("abc", "from", 20)'], ['E1013: Argument 3: type mismatch, expected string but got number', 'E1174: String required for argument 3'])
1867 assert_equal('abc', iconv('abc', 'fromenc', 'toenc')) 1873 assert_equal('abc', iconv('abc', 'fromenc', 'toenc'))
1868 iconv('', '', '')->assert_equal('') 1874 iconv('', '', '')->assert_equal('')
1869 enddef 1875 enddef
1870 1876
1871 def Test_indent() 1877 def Test_indent()
1872 CheckDefAndScriptFailure(['indent([1])'], ['E1013: Argument 1: type mismatch, expected string but got list<number>', 'E1220: String or Number required for argument 1']) 1878 v9.CheckDefAndScriptFailure(['indent([1])'], ['E1013: Argument 1: type mismatch, expected string but got list<number>', 'E1220: String or Number required for argument 1'])
1873 CheckDefAndScriptFailure(['indent(true)'], ['E1013: Argument 1: type mismatch, expected string but got bool', 'E1220: String or Number required for argument 1']) 1879 v9.CheckDefAndScriptFailure(['indent(true)'], ['E1013: Argument 1: type mismatch, expected string but got bool', 'E1220: String or Number required for argument 1'])
1874 CheckDefExecAndScriptFailure(['indent("")'], 'E1209: Invalid value for a line number') 1880 v9.CheckDefExecAndScriptFailure(['indent("")'], 'E1209: Invalid value for a line number')
1875 CheckDefExecAndScriptFailure(['indent(-1)'], 'E966: Invalid line number: -1') 1881 v9.CheckDefExecAndScriptFailure(['indent(-1)'], 'E966: Invalid line number: -1')
1876 assert_equal(0, indent(1)) 1882 assert_equal(0, indent(1))
1877 enddef 1883 enddef
1878 1884
1879 def Test_index() 1885 def Test_index()
1880 index(['a', 'b', 'a', 'B'], 'b', 2, true)->assert_equal(3) 1886 index(['a', 'b', 'a', 'B'], 'b', 2, true)->assert_equal(3)
1881 CheckDefAndScriptFailure(['index("a", "a")'], ['E1013: Argument 1: type mismatch, expected list<any> but got string', 'E1226: List or Blob required for argument 1']) 1887 v9.CheckDefAndScriptFailure(['index("a", "a")'], ['E1013: Argument 1: type mismatch, expected list<any> but got string', 'E1226: List or Blob required for argument 1'])
1882 CheckDefFailure(['index(["1"], 1)'], 'E1013: Argument 2: type mismatch, expected string but got number') 1888 v9.CheckDefFailure(['index(["1"], 1)'], 'E1013: Argument 2: type mismatch, expected string but got number')
1883 CheckDefAndScriptFailure(['index(0z10, "b")'], ['E1013: Argument 2: type mismatch, expected number but got string', 'E1210: Number required for argument 2']) 1889 v9.CheckDefAndScriptFailure(['index(0z10, "b")'], ['E1013: Argument 2: type mismatch, expected number but got string', 'E1210: Number required for argument 2'])
1884 CheckDefAndScriptFailure(['index([1], 1, "c")'], ['E1013: Argument 3: type mismatch, expected number but got string', 'E1210: Number required for argument 3']) 1890 v9.CheckDefAndScriptFailure(['index([1], 1, "c")'], ['E1013: Argument 3: type mismatch, expected number but got string', 'E1210: Number required for argument 3'])
1885 CheckDefAndScriptFailure(['index(0z1020, 10, 1, 2)'], ['E1013: Argument 4: type mismatch, expected bool but got number', 'E1212: Bool required for argument 4']) 1891 v9.CheckDefAndScriptFailure(['index(0z1020, 10, 1, 2)'], ['E1013: Argument 4: type mismatch, expected bool but got number', 'E1212: Bool required for argument 4'])
1886 enddef 1892 enddef
1887 1893
1888 def Test_input() 1894 def Test_input()
1889 CheckDefAndScriptFailure(['input(5)'], ['E1013: Argument 1: type mismatch, expected string but got number', 'E1174: String required for argument 1']) 1895 v9.CheckDefAndScriptFailure(['input(5)'], ['E1013: Argument 1: type mismatch, expected string but got number', 'E1174: String required for argument 1'])
1890 CheckDefAndScriptFailure(['input(["a"])'], ['E1013: Argument 1: type mismatch, expected string but got list<string>', 'E1174: String required for argument 1']) 1896 v9.CheckDefAndScriptFailure(['input(["a"])'], ['E1013: Argument 1: type mismatch, expected string but got list<string>', 'E1174: String required for argument 1'])
1891 CheckDefAndScriptFailure(['input("p", 10)'], ['E1013: Argument 2: type mismatch, expected string but got number', 'E1174: String required for argument 2']) 1897 v9.CheckDefAndScriptFailure(['input("p", 10)'], ['E1013: Argument 2: type mismatch, expected string but got number', 'E1174: String required for argument 2'])
1892 CheckDefAndScriptFailure(['input("p", "q", 20)'], ['E1013: Argument 3: type mismatch, expected string but got number', 'E1174: String required for argument 3']) 1898 v9.CheckDefAndScriptFailure(['input("p", "q", 20)'], ['E1013: Argument 3: type mismatch, expected string but got number', 'E1174: String required for argument 3'])
1893 enddef 1899 enddef
1894 1900
1895 def Test_inputdialog() 1901 def Test_inputdialog()
1896 CheckDefAndScriptFailure(['inputdialog(5)'], ['E1013: Argument 1: type mismatch, expected string but got number', 'E1174: String required for argument 1']) 1902 v9.CheckDefAndScriptFailure(['inputdialog(5)'], ['E1013: Argument 1: type mismatch, expected string but got number', 'E1174: String required for argument 1'])
1897 CheckDefAndScriptFailure(['inputdialog(["a"])'], ['E1013: Argument 1: type mismatch, expected string but got list<string>', 'E1174: String required for argument 1']) 1903 v9.CheckDefAndScriptFailure(['inputdialog(["a"])'], ['E1013: Argument 1: type mismatch, expected string but got list<string>', 'E1174: String required for argument 1'])
1898 CheckDefAndScriptFailure(['inputdialog("p", 10)'], ['E1013: Argument 2: type mismatch, expected string but got number', 'E1174: String required for argument 2']) 1904 v9.CheckDefAndScriptFailure(['inputdialog("p", 10)'], ['E1013: Argument 2: type mismatch, expected string but got number', 'E1174: String required for argument 2'])
1899 CheckDefAndScriptFailure(['inputdialog("p", "q", 20)'], ['E1013: Argument 3: type mismatch, expected string but got number', 'E1174: String required for argument 3']) 1905 v9.CheckDefAndScriptFailure(['inputdialog("p", "q", 20)'], ['E1013: Argument 3: type mismatch, expected string but got number', 'E1174: String required for argument 3'])
1900 enddef 1906 enddef
1901 1907
1902 def Test_inputlist() 1908 def Test_inputlist()
1903 CheckDefAndScriptFailure(['inputlist(10)'], ['E1013: Argument 1: type mismatch, expected list<string> but got number', 'E1211: List required for argument 1']) 1909 v9.CheckDefAndScriptFailure(['inputlist(10)'], ['E1013: Argument 1: type mismatch, expected list<string> but got number', 'E1211: List required for argument 1'])
1904 CheckDefAndScriptFailure(['inputlist("abc")'], ['E1013: Argument 1: type mismatch, expected list<string> but got string', 'E1211: List required for argument 1']) 1910 v9.CheckDefAndScriptFailure(['inputlist("abc")'], ['E1013: Argument 1: type mismatch, expected list<string> but got string', 'E1211: List required for argument 1'])
1905 CheckDefFailure(['inputlist([1, 2, 3])'], 'E1013: Argument 1: type mismatch, expected list<string> but got list<number>') 1911 v9.CheckDefFailure(['inputlist([1, 2, 3])'], 'E1013: Argument 1: type mismatch, expected list<string> but got list<number>')
1906 feedkeys("2\<CR>", 't') 1912 feedkeys("2\<CR>", 't')
1907 var r: number = inputlist(['a', 'b', 'c']) 1913 var r: number = inputlist(['a', 'b', 'c'])
1908 assert_equal(2, r) 1914 assert_equal(2, r)
1909 enddef 1915 enddef
1910 1916
1911 def Test_inputsecret() 1917 def Test_inputsecret()
1912 CheckDefAndScriptFailure(['inputsecret(10)'], ['E1013: Argument 1: type mismatch, expected string but got number', 'E1174: String required for argument 1']) 1918 v9.CheckDefAndScriptFailure(['inputsecret(10)'], ['E1013: Argument 1: type mismatch, expected string but got number', 'E1174: String required for argument 1'])
1913 CheckDefAndScriptFailure(['inputsecret("Pass:", 20)'], ['E1013: Argument 2: type mismatch, expected string but got number', 'E1174: String required for argument 2']) 1919 v9.CheckDefAndScriptFailure(['inputsecret("Pass:", 20)'], ['E1013: Argument 2: type mismatch, expected string but got number', 'E1174: String required for argument 2'])
1914 feedkeys("\<CR>", 't') 1920 feedkeys("\<CR>", 't')
1915 var ans: string = inputsecret('Pass:', '123') 1921 var ans: string = inputsecret('Pass:', '123')
1916 assert_equal('123', ans) 1922 assert_equal('123', ans)
1917 enddef 1923 enddef
1918 1924
1935 call assert_equal([6, 4], m) 1941 call assert_equal([6, 4], m)
1936 1942
1937 var lines =<< trim END 1943 var lines =<< trim END
1938 insert(test_null_list(), 123) 1944 insert(test_null_list(), 123)
1939 END 1945 END
1940 CheckDefExecAndScriptFailure(lines, 'E1130:', 1) 1946 v9.CheckDefExecAndScriptFailure(lines, 'E1130:', 1)
1941 1947
1942 lines =<< trim END 1948 lines =<< trim END
1943 insert(test_null_blob(), 123) 1949 insert(test_null_blob(), 123)
1944 END 1950 END
1945 CheckDefExecAndScriptFailure(lines, 'E1131:', 1) 1951 v9.CheckDefExecAndScriptFailure(lines, 'E1131:', 1)
1946 1952
1947 assert_equal([1, 2, 3], insert([2, 3], 1)) 1953 assert_equal([1, 2, 3], insert([2, 3], 1))
1948 assert_equal([1, 2, 3], insert([2, 3], s:number_one)) 1954 assert_equal([1, 2, 3], insert([2, 3], s:number_one))
1949 assert_equal([1, 2, 3], insert([1, 2], 3, 2)) 1955 assert_equal([1, 2, 3], insert([1, 2], 3, 2))
1950 assert_equal([1, 2, 3], insert([1, 2], 3, s:number_two)) 1956 assert_equal([1, 2, 3], insert([1, 2], 3, s:number_two))
1951 assert_equal(['a', 'b', 'c'], insert(['b', 'c'], 'a')) 1957 assert_equal(['a', 'b', 'c'], insert(['b', 'c'], 'a'))
1952 assert_equal(0z1234, insert(0z34, 0x12)) 1958 assert_equal(0z1234, insert(0z34, 0x12))
1953 1959
1954 CheckDefAndScriptFailure(['insert("a", 1)'], ['E1013: Argument 1: type mismatch, expected list<any> but got string', 'E1226: List or Blob required for argument 1']) 1960 v9.CheckDefAndScriptFailure(['insert("a", 1)'], ['E1013: Argument 1: type mismatch, expected list<any> but got string', 'E1226: List or Blob required for argument 1'])
1955 CheckDefFailure(['insert([2, 3], "a")'], 'E1013: Argument 2: type mismatch, expected number but got string') 1961 v9.CheckDefFailure(['insert([2, 3], "a")'], 'E1013: Argument 2: type mismatch, expected number but got string')
1956 CheckDefAndScriptFailure(['insert([2, 3], 1, "x")'], ['E1013: Argument 3: type mismatch, expected number but got string', 'E1210: Number required for argument 3']) 1962 v9.CheckDefAndScriptFailure(['insert([2, 3], 1, "x")'], ['E1013: Argument 3: type mismatch, expected number but got string', 'E1210: Number required for argument 3'])
1957 enddef 1963 enddef
1958 1964
1959 def Test_invert() 1965 def Test_invert()
1960 CheckDefAndScriptFailure(['invert("x")'], ['E1013: Argument 1: type mismatch, expected number but got string', 'E1210: Number required for argument 1']) 1966 v9.CheckDefAndScriptFailure(['invert("x")'], ['E1013: Argument 1: type mismatch, expected number but got string', 'E1210: Number required for argument 1'])
1961 enddef 1967 enddef
1962 1968
1963 def Test_isdirectory() 1969 def Test_isdirectory()
1964 CheckDefAndScriptFailure(['isdirectory(1.1)'], ['E1013: Argument 1: type mismatch, expected string but got float', 'E1174: String required for argument 1']) 1970 v9.CheckDefAndScriptFailure(['isdirectory(1.1)'], ['E1013: Argument 1: type mismatch, expected string but got float', 'E1174: String required for argument 1'])
1965 assert_false(isdirectory('NonExistingDir')) 1971 assert_false(isdirectory('NonExistingDir'))
1966 assert_false(isdirectory('')) 1972 assert_false(isdirectory(''))
1967 enddef 1973 enddef
1968 1974
1969 def Test_islocked() 1975 def Test_islocked()
1970 CheckDefAndScriptFailure(['islocked(true)'], ['E1013: Argument 1: type mismatch, expected string but got bool', 'E1174: String required for argument 1']) 1976 v9.CheckDefAndScriptFailure(['islocked(true)'], ['E1013: Argument 1: type mismatch, expected string but got bool', 'E1174: String required for argument 1'])
1971 CheckDefAndScriptFailure(['var n1: number = 10', 'islocked(n1)'], ['E1013: Argument 1: type mismatch, expected string but got number', 'E1174: String required for argument 1']) 1977 v9.CheckDefAndScriptFailure(['var n1: number = 10', 'islocked(n1)'], ['E1013: Argument 1: type mismatch, expected string but got number', 'E1174: String required for argument 1'])
1972 g:v1 = 10 1978 g:v1 = 10
1973 assert_false(islocked('g:v1')) 1979 assert_false(islocked('g:v1'))
1974 lockvar g:v1 1980 lockvar g:v1
1975 assert_true(islocked('g:v1')) 1981 assert_true(islocked('g:v1'))
1976 unlet g:v1 1982 unlet g:v1
1977 islocked('')->assert_equal(-1) 1983 islocked('')->assert_equal(-1)
1978 enddef 1984 enddef
1979 1985
1980 def Test_items() 1986 def Test_items()
1981 CheckDefFailure(['[]->items()'], 'E1013: Argument 1: type mismatch, expected dict<any> but got list<unknown>') 1987 v9.CheckDefFailure(['[]->items()'], 'E1013: Argument 1: type mismatch, expected dict<any> but got list<unknown>')
1982 assert_equal([['a', 10], ['b', 20]], {'a': 10, 'b': 20}->items()) 1988 assert_equal([['a', 10], ['b', 20]], {'a': 10, 'b': 20}->items())
1983 assert_equal([], {}->items()) 1989 assert_equal([], {}->items())
1984 enddef 1990 enddef
1985 1991
1986 def Test_job_getchannel() 1992 def Test_job_getchannel()
1987 if !has('job') 1993 if !has('job')
1988 CheckFeature job 1994 CheckFeature job
1989 else 1995 else
1990 CheckDefAndScriptFailure(['job_getchannel("a")'], ['E1013: Argument 1: type mismatch, expected job but got string', 'E1218: Job required for argument 1']) 1996 v9.CheckDefAndScriptFailure(['job_getchannel("a")'], ['E1013: Argument 1: type mismatch, expected job but got string', 'E1218: Job required for argument 1'])
1991 assert_fails('job_getchannel(test_null_job())', 'E916: not a valid job') 1997 assert_fails('job_getchannel(test_null_job())', 'E916: not a valid job')
1992 endif 1998 endif
1993 enddef 1999 enddef
1994 2000
1995 def Test_job_info() 2001 def Test_job_info()
1996 if !has('job') 2002 if !has('job')
1997 CheckFeature job 2003 CheckFeature job
1998 else 2004 else
1999 CheckDefAndScriptFailure(['job_info("a")'], ['E1013: Argument 1: type mismatch, expected job but got string', 'E1218: Job required for argument 1']) 2005 v9.CheckDefAndScriptFailure(['job_info("a")'], ['E1013: Argument 1: type mismatch, expected job but got string', 'E1218: Job required for argument 1'])
2000 assert_fails('job_info(test_null_job())', 'E916: not a valid job') 2006 assert_fails('job_info(test_null_job())', 'E916: not a valid job')
2001 endif 2007 endif
2002 enddef 2008 enddef
2003 2009
2004 " Test_job_info_return_type() is in test_vim9_fails.vim 2010 " Test_job_info_return_type() is in test_vim9_fails.vim
2005 2011
2006 def Test_job_setoptions() 2012 def Test_job_setoptions()
2007 if !has('job') 2013 if !has('job')
2008 CheckFeature job 2014 CheckFeature job
2009 else 2015 else
2010 CheckDefAndScriptFailure(['job_setoptions(test_null_channel(), {})'], ['E1013: Argument 1: type mismatch, expected job but got channel', 'E1218: Job required for argument 1']) 2016 v9.CheckDefAndScriptFailure(['job_setoptions(test_null_channel(), {})'], ['E1013: Argument 1: type mismatch, expected job but got channel', 'E1218: Job required for argument 1'])
2011 CheckDefAndScriptFailure(['job_setoptions(test_null_job(), [])'], ['E1013: Argument 2: type mismatch, expected dict<any> but got list<unknown>', 'E1206: Dictionary required for argument 2']) 2017 v9.CheckDefAndScriptFailure(['job_setoptions(test_null_job(), [])'], ['E1013: Argument 2: type mismatch, expected dict<any> but got list<unknown>', 'E1206: Dictionary required for argument 2'])
2012 assert_equal('fail', job_status(test_null_job())) 2018 assert_equal('fail', job_status(test_null_job()))
2013 endif 2019 endif
2014 enddef 2020 enddef
2015 2021
2016 def Test_job_status() 2022 def Test_job_status()
2017 if !has('job') 2023 if !has('job')
2018 CheckFeature job 2024 CheckFeature job
2019 else 2025 else
2020 CheckDefAndScriptFailure(['job_status("a")'], ['E1013: Argument 1: type mismatch, expected job but got string', 'E1218: Job required for argument 1']) 2026 v9.CheckDefAndScriptFailure(['job_status("a")'], ['E1013: Argument 1: type mismatch, expected job but got string', 'E1218: Job required for argument 1'])
2021 assert_equal('fail', job_status(test_null_job())) 2027 assert_equal('fail', job_status(test_null_job()))
2022 endif 2028 endif
2023 enddef 2029 enddef
2024 2030
2025 def Test_job_stop() 2031 def Test_job_stop()
2026 if !has('job') 2032 if !has('job')
2027 CheckFeature job 2033 CheckFeature job
2028 else 2034 else
2029 CheckDefAndScriptFailure(['job_stop("a")'], ['E1013: Argument 1: type mismatch, expected job but got string', 'E1218: Job required for argument 1']) 2035 v9.CheckDefAndScriptFailure(['job_stop("a")'], ['E1013: Argument 1: type mismatch, expected job but got string', 'E1218: Job required for argument 1'])
2030 CheckDefAndScriptFailure(['job_stop(test_null_job(), true)'], ['E1013: Argument 2: type mismatch, expected string but got bool', 'E1220: String or Number required for argument 2']) 2036 v9.CheckDefAndScriptFailure(['job_stop(test_null_job(), true)'], ['E1013: Argument 2: type mismatch, expected string but got bool', 'E1220: String or Number required for argument 2'])
2031 endif 2037 endif
2032 enddef 2038 enddef
2033 2039
2034 def Test_join() 2040 def Test_join()
2035 CheckDefAndScriptFailure(['join("abc")'], ['E1013: Argument 1: type mismatch, expected list<any> but got string', 'E1211: List required for argument 1']) 2041 v9.CheckDefAndScriptFailure(['join("abc")'], ['E1013: Argument 1: type mismatch, expected list<any> but got string', 'E1211: List required for argument 1'])
2036 CheckDefAndScriptFailure(['join([], 2)'], ['E1013: Argument 2: type mismatch, expected string but got number', 'E1174: String required for argument 2']) 2042 v9.CheckDefAndScriptFailure(['join([], 2)'], ['E1013: Argument 2: type mismatch, expected string but got number', 'E1174: String required for argument 2'])
2037 join([''], '')->assert_equal('') 2043 join([''], '')->assert_equal('')
2038 enddef 2044 enddef
2039 2045
2040 def Test_js_decode() 2046 def Test_js_decode()
2041 CheckDefAndScriptFailure(['js_decode(10)'], ['E1013: Argument 1: type mismatch, expected string but got number', 'E1174: String required for argument 1']) 2047 v9.CheckDefAndScriptFailure(['js_decode(10)'], ['E1013: Argument 1: type mismatch, expected string but got number', 'E1174: String required for argument 1'])
2042 assert_equal([1, 2], js_decode('[1,2]')) 2048 assert_equal([1, 2], js_decode('[1,2]'))
2043 js_decode('')->assert_equal(v:none) 2049 js_decode('')->assert_equal(v:none)
2044 enddef 2050 enddef
2045 2051
2046 def Test_json_decode() 2052 def Test_json_decode()
2047 CheckDefAndScriptFailure(['json_decode(true)'], ['E1013: Argument 1: type mismatch, expected string but got bool', 'E1174: String required for argument 1']) 2053 v9.CheckDefAndScriptFailure(['json_decode(true)'], ['E1013: Argument 1: type mismatch, expected string but got bool', 'E1174: String required for argument 1'])
2048 assert_equal(1.0, json_decode('1.0')) 2054 assert_equal(1.0, json_decode('1.0'))
2049 json_decode('')->assert_equal(v:none) 2055 json_decode('')->assert_equal(v:none)
2050 enddef 2056 enddef
2051 2057
2052 def Test_keys() 2058 def Test_keys()
2053 CheckDefAndScriptFailure(['keys([])'], ['E1013: Argument 1: type mismatch, expected dict<any> but got list<unknown>', 'E1206: Dictionary required for argument 1']) 2059 v9.CheckDefAndScriptFailure(['keys([])'], ['E1013: Argument 1: type mismatch, expected dict<any> but got list<unknown>', 'E1206: Dictionary required for argument 1'])
2054 assert_equal(['a'], {a: 'v'}->keys()) 2060 assert_equal(['a'], {a: 'v'}->keys())
2055 assert_equal([], {}->keys()) 2061 assert_equal([], {}->keys())
2056 enddef 2062 enddef
2057 2063
2058 def Test_keys_return_type() 2064 def Test_keys_return_type()
2059 const var: list<string> = {a: 1, b: 2}->keys() 2065 const var: list<string> = {a: 1, b: 2}->keys()
2060 var->assert_equal(['a', 'b']) 2066 var->assert_equal(['a', 'b'])
2061 enddef 2067 enddef
2062 2068
2063 def Test_len() 2069 def Test_len()
2064 CheckDefAndScriptFailure(['len(true)'], ['E1013: Argument 1: type mismatch, expected list<any> but got bool', 'E701: Invalid type for len()']) 2070 v9.CheckDefAndScriptFailure(['len(true)'], ['E1013: Argument 1: type mismatch, expected list<any> but got bool', 'E701: Invalid type for len()'])
2065 assert_equal(2, "ab"->len()) 2071 assert_equal(2, "ab"->len())
2066 assert_equal(3, 456->len()) 2072 assert_equal(3, 456->len())
2067 assert_equal(0, []->len()) 2073 assert_equal(0, []->len())
2068 assert_equal(1, {a: 10}->len()) 2074 assert_equal(1, {a: 10}->len())
2069 assert_equal(4, 0z20304050->len()) 2075 assert_equal(4, 0z20304050->len())
2070 enddef 2076 enddef
2071 2077
2072 def Test_libcall() 2078 def Test_libcall()
2073 CheckFeature libcall 2079 CheckFeature libcall
2074 CheckDefAndScriptFailure(['libcall(1, "b", 3)'], ['E1013: Argument 1: type mismatch, expected string but got number', 'E1174: String required for argument 1']) 2080 v9.CheckDefAndScriptFailure(['libcall(1, "b", 3)'], ['E1013: Argument 1: type mismatch, expected string but got number', 'E1174: String required for argument 1'])
2075 CheckDefAndScriptFailure(['libcall("a", 2, 3)'], ['E1013: Argument 2: type mismatch, expected string but got number', 'E1174: String required for argument 2']) 2081 v9.CheckDefAndScriptFailure(['libcall("a", 2, 3)'], ['E1013: Argument 2: type mismatch, expected string but got number', 'E1174: String required for argument 2'])
2076 CheckDefAndScriptFailure(['libcall("a", "b", 1.1)'], ['E1013: Argument 3: type mismatch, expected string but got float', 'E1220: String or Number required for argument 3']) 2082 v9.CheckDefAndScriptFailure(['libcall("a", "b", 1.1)'], ['E1013: Argument 3: type mismatch, expected string but got float', 'E1220: String or Number required for argument 3'])
2077 enddef 2083 enddef
2078 2084
2079 def Test_libcallnr() 2085 def Test_libcallnr()
2080 CheckFeature libcall 2086 CheckFeature libcall
2081 CheckDefAndScriptFailure(['libcallnr(1, "b", 3)'], ['E1013: Argument 1: type mismatch, expected string but got number', 'E1174: String required for argument 1']) 2087 v9.CheckDefAndScriptFailure(['libcallnr(1, "b", 3)'], ['E1013: Argument 1: type mismatch, expected string but got number', 'E1174: String required for argument 1'])
2082 CheckDefAndScriptFailure(['libcallnr("a", 2, 3)'], ['E1013: Argument 2: type mismatch, expected string but got number', 'E1174: String required for argument 2']) 2088 v9.CheckDefAndScriptFailure(['libcallnr("a", 2, 3)'], ['E1013: Argument 2: type mismatch, expected string but got number', 'E1174: String required for argument 2'])
2083 CheckDefAndScriptFailure(['libcallnr("a", "b", 1.1)'], ['E1013: Argument 3: type mismatch, expected string but got float', 'E1220: String or Number required for argument 3']) 2089 v9.CheckDefAndScriptFailure(['libcallnr("a", "b", 1.1)'], ['E1013: Argument 3: type mismatch, expected string but got float', 'E1220: String or Number required for argument 3'])
2084 enddef 2090 enddef
2085 2091
2086 def Test_line() 2092 def Test_line()
2087 assert_fails('line(true)', 'E1174:') 2093 assert_fails('line(true)', 'E1174:')
2088 CheckDefAndScriptFailure(['line(1)'], ['E1013: Argument 1: type mismatch, expected string but got number', 'E1174: String required for argument 1']) 2094 v9.CheckDefAndScriptFailure(['line(1)'], ['E1013: Argument 1: type mismatch, expected string but got number', 'E1174: String required for argument 1'])
2089 CheckDefAndScriptFailure(['line(".", "a")'], ['E1013: Argument 2: type mismatch, expected number but got string', 'E1210: Number required for argument 2']) 2095 v9.CheckDefAndScriptFailure(['line(".", "a")'], ['E1013: Argument 2: type mismatch, expected number but got string', 'E1210: Number required for argument 2'])
2090 CheckDefExecAndScriptFailure(['line("")'], 'E1209: Invalid value for a line number') 2096 v9.CheckDefExecAndScriptFailure(['line("")'], 'E1209: Invalid value for a line number')
2091 enddef 2097 enddef
2092 2098
2093 def Test_line2byte() 2099 def Test_line2byte()
2094 CheckDefAndScriptFailure(['line2byte(true)'], ['E1013: Argument 1: type mismatch, expected string but got bool', 'E1220: String or Number required for argument 1']) 2100 v9.CheckDefAndScriptFailure(['line2byte(true)'], ['E1013: Argument 1: type mismatch, expected string but got bool', 'E1220: String or Number required for argument 1'])
2095 CheckDefExecAndScriptFailure(['line2byte("")'], 'E1209: Invalid value for a line number') 2101 v9.CheckDefExecAndScriptFailure(['line2byte("")'], 'E1209: Invalid value for a line number')
2096 assert_equal(-1, line2byte(1)) 2102 assert_equal(-1, line2byte(1))
2097 assert_equal(-1, line2byte(10000)) 2103 assert_equal(-1, line2byte(10000))
2098 enddef 2104 enddef
2099 2105
2100 def Test_lispindent() 2106 def Test_lispindent()
2101 CheckDefAndScriptFailure(['lispindent({})'], ['E1013: Argument 1: type mismatch, expected string but got dict<unknown>', 'E1220: String or Number required for argument 1']) 2107 v9.CheckDefAndScriptFailure(['lispindent({})'], ['E1013: Argument 1: type mismatch, expected string but got dict<unknown>', 'E1220: String or Number required for argument 1'])
2102 CheckDefExecAndScriptFailure(['lispindent("")'], 'E1209: Invalid value for a line number') 2108 v9.CheckDefExecAndScriptFailure(['lispindent("")'], 'E1209: Invalid value for a line number')
2103 CheckDefExecAndScriptFailure(['lispindent(-1)'], 'E966: Invalid line number: -1') 2109 v9.CheckDefExecAndScriptFailure(['lispindent(-1)'], 'E966: Invalid line number: -1')
2104 assert_equal(0, lispindent(1)) 2110 assert_equal(0, lispindent(1))
2105 enddef 2111 enddef
2106 2112
2107 def Test_list2blob() 2113 def Test_list2blob()
2108 CheckDefAndScriptFailure(['list2blob(10)'], ['E1013: Argument 1: type mismatch, expected list<number> but got number', 'E1211: List required for argument 1']) 2114 v9.CheckDefAndScriptFailure(['list2blob(10)'], ['E1013: Argument 1: type mismatch, expected list<number> but got number', 'E1211: List required for argument 1'])
2109 CheckDefFailure(['list2blob([0z10, 0z02])'], 'E1013: Argument 1: type mismatch, expected list<number> but got list<blob>') 2115 v9.CheckDefFailure(['list2blob([0z10, 0z02])'], 'E1013: Argument 1: type mismatch, expected list<number> but got list<blob>')
2110 enddef 2116 enddef
2111 2117
2112 def Test_list2str_str2list_utf8() 2118 def Test_list2str_str2list_utf8()
2113 var s = "\u3042\u3044" 2119 var s = "\u3042\u3044"
2114 var l = [0x3042, 0x3044] 2120 var l = [0x3042, 0x3044]
2115 str2list(s, true)->assert_equal(l) 2121 str2list(s, true)->assert_equal(l)
2116 list2str(l, true)->assert_equal(s) 2122 list2str(l, true)->assert_equal(s)
2117 enddef 2123 enddef
2118 2124
2119 def Test_list2str() 2125 def Test_list2str()
2120 CheckDefAndScriptFailure(['list2str(".", true)'], ['E1013: Argument 1: type mismatch, expected list<number> but got string', 'E1211: List required for argument 1']) 2126 v9.CheckDefAndScriptFailure(['list2str(".", true)'], ['E1013: Argument 1: type mismatch, expected list<number> but got string', 'E1211: List required for argument 1'])
2121 CheckDefAndScriptFailure(['list2str([1], 0z10)'], ['E1013: Argument 2: type mismatch, expected bool but got blob', 'E1212: Bool required for argument 2']) 2127 v9.CheckDefAndScriptFailure(['list2str([1], 0z10)'], ['E1013: Argument 2: type mismatch, expected bool but got blob', 'E1212: Bool required for argument 2'])
2122 enddef 2128 enddef
2123 2129
2124 def SID(): number 2130 def s:SID(): number
2125 return expand('<SID>') 2131 return expand('<SID>')
2126 ->matchstr('<SNR>\zs\d\+\ze_$') 2132 ->matchstr('<SNR>\zs\d\+\ze_$')
2127 ->str2nr() 2133 ->str2nr()
2128 enddef 2134 enddef
2129 2135
2130 def Test_listener_add() 2136 def Test_listener_add()
2131 CheckDefAndScriptFailure(['listener_add("1", true)'], ['E1013: Argument 2: type mismatch, expected string but got bool', 'E1220: String or Number required for argument 2']) 2137 v9.CheckDefAndScriptFailure(['listener_add("1", true)'], ['E1013: Argument 2: type mismatch, expected string but got bool', 'E1220: String or Number required for argument 2'])
2132 enddef 2138 enddef
2133 2139
2134 def Test_listener_flush() 2140 def Test_listener_flush()
2135 CheckDefAndScriptFailure(['listener_flush([1])'], ['E1013: Argument 1: type mismatch, expected string but got list<number>', 'E1220: String or Number required for argument 1']) 2141 v9.CheckDefAndScriptFailure(['listener_flush([1])'], ['E1013: Argument 1: type mismatch, expected string but got list<number>', 'E1220: String or Number required for argument 1'])
2136 enddef 2142 enddef
2137 2143
2138 def Test_listener_remove() 2144 def Test_listener_remove()
2139 CheckDefAndScriptFailure(['listener_remove("x")'], ['E1013: Argument 1: type mismatch, expected number but got string', 'E1210: Number required for argument 1']) 2145 v9.CheckDefAndScriptFailure(['listener_remove("x")'], ['E1013: Argument 1: type mismatch, expected number but got string', 'E1210: Number required for argument 1'])
2140 enddef 2146 enddef
2141 2147
2142 def Test_luaeval() 2148 def Test_luaeval()
2143 if !has('lua') 2149 if !has('lua')
2144 CheckFeature lua 2150 CheckFeature lua
2145 endif 2151 endif
2146 CheckDefAndScriptFailure(['luaeval(10)'], ['E1013: Argument 1: type mismatch, expected string but got number', 'E1174: String required for argument 1']) 2152 v9.CheckDefAndScriptFailure(['luaeval(10)'], ['E1013: Argument 1: type mismatch, expected string but got number', 'E1174: String required for argument 1'])
2147 if exists_compiled('*luaeval') 2153 if exists_compiled('*luaeval')
2148 luaeval('')->assert_equal(v:null) 2154 luaeval('')->assert_equal(v:null)
2149 endif 2155 endif
2150 enddef 2156 enddef
2151 2157
2152 def Test_map() 2158 def Test_map()
2153 if has('channel') 2159 if has('channel')
2154 CheckDefAndScriptFailure(['map(test_null_channel(), "1")'], ['E1013: Argument 1: type mismatch, expected list<any> but got channel', 'E1251: List, Dictionary, Blob or String required for argument 1']) 2160 v9.CheckDefAndScriptFailure(['map(test_null_channel(), "1")'], ['E1013: Argument 1: type mismatch, expected list<any> but got channel', 'E1251: List, Dictionary, Blob or String required for argument 1'])
2155 endif 2161 endif
2156 CheckDefAndScriptFailure(['map(1, "1")'], ['E1013: Argument 1: type mismatch, expected list<any> but got number', 'E1251: List, Dictionary, Blob or String required for argument 1']) 2162 v9.CheckDefAndScriptFailure(['map(1, "1")'], ['E1013: Argument 1: type mismatch, expected list<any> but got number', 'E1251: List, Dictionary, Blob or String required for argument 1'])
2157 CheckDefAndScriptFailure(['map([1, 2], 4)'], ['E1256: String or function required for argument 2', 'E1024: Using a Number as a String']) 2163 v9.CheckDefAndScriptFailure(['map([1, 2], 4)'], ['E1256: String or function required for argument 2', 'E1024: Using a Number as a String'])
2158 2164
2159 # type of dict remains dict<any> even when type of values changes 2165 # type of dict remains dict<any> even when type of values changes
2160 # same for list 2166 # same for list
2161 var lines =<< trim END 2167 var lines =<< trim END
2162 var d: dict<any> = {a: 0} 2168 var d: dict<any> = {a: 0}
2177 l = [1] 2183 l = [1]
2178 g:gl = l 2184 g:gl = l
2179 map(g:gl, (k, v) => true) 2185 map(g:gl, (k, v) => true)
2180 assert_equal([true], g:gl) 2186 assert_equal([true], g:gl)
2181 END 2187 END
2182 CheckDefAndScriptSuccess(lines) 2188 v9.CheckDefAndScriptSuccess(lines)
2183 enddef 2189 enddef
2184 2190
2185 def Test_map_failure() 2191 def Test_map_failure()
2186 CheckFeature job 2192 CheckFeature job
2187 2193
2196 endif 2202 endif
2197 eval d[expand('<abuf>')]->mapnew((_, v: dict<job>) => 0) 2203 eval d[expand('<abuf>')]->mapnew((_, v: dict<job>) => 0)
2198 enddef 2204 enddef
2199 e 2205 e
2200 END 2206 END
2201 CheckScriptFailure(lines, 'E1013:') 2207 v9.CheckScriptFailure(lines, 'E1013:')
2202 au! BufReadPost 2208 au! BufReadPost
2203 delete('Xtmpfile') 2209 delete('Xtmpfile')
2204 2210
2205 lines =<< trim END 2211 lines =<< trim END
2206 var d: dict<number> = {a: 1} 2212 var d: dict<number> = {a: 1}
2207 g:gd = d 2213 g:gd = d
2208 map(g:gd, (k, v) => true) 2214 map(g:gd, (k, v) => true)
2209 END 2215 END
2210 CheckDefExecAndScriptFailure(lines, 'E1012: Type mismatch; expected number but got bool') 2216 v9.CheckDefExecAndScriptFailure(lines, 'E1012: Type mismatch; expected number but got bool')
2211 enddef 2217 enddef
2212 2218
2213 def Test_map_function_arg() 2219 def Test_map_function_arg()
2214 var lines =<< trim END 2220 var lines =<< trim END
2215 def MapOne(i: number, v: string): string 2221 def MapOne(i: number, v: string): string
2217 enddef 2223 enddef
2218 var l = ['a', 'b', 'c'] 2224 var l = ['a', 'b', 'c']
2219 map(l, MapOne) 2225 map(l, MapOne)
2220 assert_equal(['0:a', '1:b', '2:c'], l) 2226 assert_equal(['0:a', '1:b', '2:c'], l)
2221 END 2227 END
2222 CheckDefAndScriptSuccess(lines) 2228 v9.CheckDefAndScriptSuccess(lines)
2223 2229
2224 lines =<< trim END 2230 lines =<< trim END
2225 range(3)->map((a, b, c) => a + b + c) 2231 range(3)->map((a, b, c) => a + b + c)
2226 END 2232 END
2227 CheckDefExecAndScriptFailure(lines, 'E1190: One argument too few') 2233 v9.CheckDefExecAndScriptFailure(lines, 'E1190: One argument too few')
2228 lines =<< trim END 2234 lines =<< trim END
2229 range(3)->map((a, b, c, d) => a + b + c + d) 2235 range(3)->map((a, b, c, d) => a + b + c + d)
2230 END 2236 END
2231 CheckDefExecAndScriptFailure(lines, 'E1190: 2 arguments too few') 2237 v9.CheckDefExecAndScriptFailure(lines, 'E1190: 2 arguments too few')
2232 2238
2233 # declared list cannot change type 2239 # declared list cannot change type
2234 lines =<< trim END 2240 lines =<< trim END
2235 def Map(i: number, v: number): string 2241 def Map(i: number, v: number): string
2236 return 'bad' 2242 return 'bad'
2237 enddef 2243 enddef
2238 var ll: list<number> = [1, 2, 3] 2244 var ll: list<number> = [1, 2, 3]
2239 echo map(ll, Map) 2245 echo map(ll, Map)
2240 END 2246 END
2241 CheckDefAndScriptFailure(lines, ['E1013: Argument 2: type mismatch, expected func(...): number but got func(number, number): string', 'E1012: Type mismatch; expected number but got string in map()']) 2247 v9.CheckDefAndScriptFailure(lines, ['E1013: Argument 2: type mismatch, expected func(...): number but got func(number, number): string', 'E1012: Type mismatch; expected number but got string in map()'])
2242 2248
2243 # not declared list can change type 2249 # not declared list can change type
2244 echo [1, 2, 3]->map((..._) => 'x') 2250 echo [1, 2, 3]->map((..._) => 'x')
2245 enddef 2251 enddef
2246 2252
2248 var lines =<< trim END 2254 var lines =<< trim END
2249 var l = ['a', 'b', 'c'] 2255 var l = ['a', 'b', 'c']
2250 map(l, (k, v) => k .. '/' .. v ) 2256 map(l, (k, v) => k .. '/' .. v )
2251 assert_equal(['0/a', '1/b', '2/c'], l) 2257 assert_equal(['0/a', '1/b', '2/c'], l)
2252 END 2258 END
2253 CheckDefAndScriptSuccess(lines) 2259 v9.CheckDefAndScriptSuccess(lines)
2254 2260
2255 lines =<< trim END 2261 lines =<< trim END
2256 var l: list<number> = [0] 2262 var l: list<number> = [0]
2257 echo map(l, (_, v) => []) 2263 echo map(l, (_, v) => [])
2258 END 2264 END
2259 CheckDefAndScriptFailure(lines, ['E1013: Argument 2: type mismatch, expected func(...): number but got func(any, any): list<unknown>', 'E1012: Type mismatch; expected number but got list<unknown> in map()'], 2) 2265 v9.CheckDefAndScriptFailure(lines, ['E1013: Argument 2: type mismatch, expected func(...): number but got func(any, any): list<unknown>', 'E1012: Type mismatch; expected number but got list<unknown> in map()'], 2)
2260 2266
2261 lines =<< trim END 2267 lines =<< trim END
2262 var l: list<number> = range(2) 2268 var l: list<number> = range(2)
2263 echo map(l, (_, v) => []) 2269 echo map(l, (_, v) => [])
2264 END 2270 END
2265 CheckDefAndScriptFailure(lines, ['E1013: Argument 2: type mismatch, expected func(...): number but got func(any, any): list<unknown>', 'E1012: Type mismatch; expected number but got list<unknown> in map()'], 2) 2271 v9.CheckDefAndScriptFailure(lines, ['E1013: Argument 2: type mismatch, expected func(...): number but got func(any, any): list<unknown>', 'E1012: Type mismatch; expected number but got list<unknown> in map()'], 2)
2266 2272
2267 lines =<< trim END 2273 lines =<< trim END
2268 var d: dict<number> = {key: 0} 2274 var d: dict<number> = {key: 0}
2269 echo map(d, (_, v) => []) 2275 echo map(d, (_, v) => [])
2270 END 2276 END
2271 CheckDefAndScriptFailure(lines, ['E1013: Argument 2: type mismatch, expected func(...): number but got func(any, any): list<unknown>', 'E1012: Type mismatch; expected number but got list<unknown> in map()'], 2) 2277 v9.CheckDefAndScriptFailure(lines, ['E1013: Argument 2: type mismatch, expected func(...): number but got func(any, any): list<unknown>', 'E1012: Type mismatch; expected number but got list<unknown> in map()'], 2)
2272 enddef 2278 enddef
2273 2279
2274 def Test_maparg() 2280 def Test_maparg()
2275 var lnum = str2nr(expand('<sflnum>')) 2281 var lnum = str2nr(expand('<sflnum>'))
2276 map foo bar 2282 map foo bar
2287 sid: SID(), 2293 sid: SID(),
2288 scriptversion: 999999, 2294 scriptversion: 999999,
2289 rhs: 'bar', 2295 rhs: 'bar',
2290 buffer: 0}) 2296 buffer: 0})
2291 unmap foo 2297 unmap foo
2292 CheckDefAndScriptFailure(['maparg(1)'], ['E1013: Argument 1: type mismatch, expected string but got number', 'E1174: String required for argument 1']) 2298 v9.CheckDefAndScriptFailure(['maparg(1)'], ['E1013: Argument 1: type mismatch, expected string but got number', 'E1174: String required for argument 1'])
2293 CheckDefAndScriptFailure(['maparg("a", 2)'], ['E1013: Argument 2: type mismatch, expected string but got number', 'E1174: String required for argument 2']) 2299 v9.CheckDefAndScriptFailure(['maparg("a", 2)'], ['E1013: Argument 2: type mismatch, expected string but got number', 'E1174: String required for argument 2'])
2294 CheckDefAndScriptFailure(['maparg("a", "b", 2)'], ['E1013: Argument 3: type mismatch, expected bool but got number', 'E1212: Bool required for argument 3']) 2300 v9.CheckDefAndScriptFailure(['maparg("a", "b", 2)'], ['E1013: Argument 3: type mismatch, expected bool but got number', 'E1212: Bool required for argument 3'])
2295 CheckDefAndScriptFailure(['maparg("a", "b", true, 2)'], ['E1013: Argument 4: type mismatch, expected bool but got number', 'E1212: Bool required for argument 4']) 2301 v9.CheckDefAndScriptFailure(['maparg("a", "b", true, 2)'], ['E1013: Argument 4: type mismatch, expected bool but got number', 'E1212: Bool required for argument 4'])
2296 maparg('')->assert_equal('') 2302 maparg('')->assert_equal('')
2297 enddef 2303 enddef
2298 2304
2299 def Test_maparg_mapset() 2305 def Test_maparg_mapset()
2300 nnoremap <F3> :echo "hit F3"<CR> 2306 nnoremap <F3> :echo "hit F3"<CR>
2306 2312
2307 def Test_mapcheck() 2313 def Test_mapcheck()
2308 iabbrev foo foobar 2314 iabbrev foo foobar
2309 mapcheck('foo', 'i', true)->assert_equal('foobar') 2315 mapcheck('foo', 'i', true)->assert_equal('foobar')
2310 iunabbrev foo 2316 iunabbrev foo
2311 CheckDefAndScriptFailure(['mapcheck(1)'], ['E1013: Argument 1: type mismatch, expected string but got number', 'E1174: String required for argument 1']) 2317 v9.CheckDefAndScriptFailure(['mapcheck(1)'], ['E1013: Argument 1: type mismatch, expected string but got number', 'E1174: String required for argument 1'])
2312 CheckDefAndScriptFailure(['mapcheck("a", 2)'], ['E1013: Argument 2: type mismatch, expected string but got number', 'E1174: String required for argument 2']) 2318 v9.CheckDefAndScriptFailure(['mapcheck("a", 2)'], ['E1013: Argument 2: type mismatch, expected string but got number', 'E1174: String required for argument 2'])
2313 CheckDefAndScriptFailure(['mapcheck("a", "b", 2)'], ['E1013: Argument 3: type mismatch, expected bool but got number', 'E1212: Bool required for argument 3']) 2319 v9.CheckDefAndScriptFailure(['mapcheck("a", "b", 2)'], ['E1013: Argument 3: type mismatch, expected bool but got number', 'E1212: Bool required for argument 3'])
2314 mapcheck('')->assert_equal('') 2320 mapcheck('')->assert_equal('')
2315 mapcheck('', '')->assert_equal('') 2321 mapcheck('', '')->assert_equal('')
2316 enddef 2322 enddef
2317 2323
2318 def Test_mapnew() 2324 def Test_mapnew()
2319 if has('channel') 2325 if has('channel')
2320 CheckDefAndScriptFailure(['mapnew(test_null_job(), "1")'], ['E1013: Argument 1: type mismatch, expected list<any> but got job', 'E1251: List, Dictionary, Blob or String required for argument 1']) 2326 v9.CheckDefAndScriptFailure(['mapnew(test_null_job(), "1")'], ['E1013: Argument 1: type mismatch, expected list<any> but got job', 'E1251: List, Dictionary, Blob or String required for argument 1'])
2321 endif 2327 endif
2322 CheckDefAndScriptFailure(['mapnew(1, "1")'], ['E1013: Argument 1: type mismatch, expected list<any> but got number', 'E1251: List, Dictionary, Blob or String required for argument 1']) 2328 v9.CheckDefAndScriptFailure(['mapnew(1, "1")'], ['E1013: Argument 1: type mismatch, expected list<any> but got number', 'E1251: List, Dictionary, Blob or String required for argument 1'])
2323 enddef 2329 enddef
2324 2330
2325 def Test_mapset() 2331 def Test_mapset()
2326 CheckDefAndScriptFailure(['mapset(1, true, {})'], ['E1013: Argument 1: type mismatch, expected string but got number', 'E1174: String required for argument 1']) 2332 v9.CheckDefAndScriptFailure(['mapset(1, true, {})'], ['E1013: Argument 1: type mismatch, expected string but got number', 'E1174: String required for argument 1'])
2327 CheckDefAndScriptFailure(['mapset("a", 2, {})'], ['E1013: Argument 2: type mismatch, expected bool but got number', 'E1212: Bool required for argument 2']) 2333 v9.CheckDefAndScriptFailure(['mapset("a", 2, {})'], ['E1013: Argument 2: type mismatch, expected bool but got number', 'E1212: Bool required for argument 2'])
2328 CheckDefAndScriptFailure(['mapset("a", false, [])'], ['E1013: Argument 3: type mismatch, expected dict<any> but got list<unknown>', 'E1206: Dictionary required for argument 3']) 2334 v9.CheckDefAndScriptFailure(['mapset("a", false, [])'], ['E1013: Argument 3: type mismatch, expected dict<any> but got list<unknown>', 'E1206: Dictionary required for argument 3'])
2329 enddef 2335 enddef
2330 2336
2331 def Test_match() 2337 def Test_match()
2332 CheckDefAndScriptFailure(['match(0z12, "p")'], ['E1013: Argument 1: type mismatch, expected string but got blob', 'E1222: String or List required for argument 1']) 2338 v9.CheckDefAndScriptFailure(['match(0z12, "p")'], ['E1013: Argument 1: type mismatch, expected string but got blob', 'E1222: String or List required for argument 1'])
2333 CheckDefAndScriptFailure(['match(["s"], [2])'], ['E1013: Argument 2: type mismatch, expected string but got list<number>', 'E1174: String required for argument 2']) 2339 v9.CheckDefAndScriptFailure(['match(["s"], [2])'], ['E1013: Argument 2: type mismatch, expected string but got list<number>', 'E1174: String required for argument 2'])
2334 CheckDefAndScriptFailure(['match("s", "p", "q")'], ['E1013: Argument 3: type mismatch, expected number but got string', 'E1210: Number required for argument 3']) 2340 v9.CheckDefAndScriptFailure(['match("s", "p", "q")'], ['E1013: Argument 3: type mismatch, expected number but got string', 'E1210: Number required for argument 3'])
2335 CheckDefAndScriptFailure(['match("s", "p", 1, "r")'], ['E1013: Argument 4: type mismatch, expected number but got string', 'E1210: Number required for argument 4']) 2341 v9.CheckDefAndScriptFailure(['match("s", "p", 1, "r")'], ['E1013: Argument 4: type mismatch, expected number but got string', 'E1210: Number required for argument 4'])
2336 assert_equal(2, match('ab12cd', '12')) 2342 assert_equal(2, match('ab12cd', '12'))
2337 assert_equal(-1, match('ab12cd', '34')) 2343 assert_equal(-1, match('ab12cd', '34'))
2338 assert_equal(6, match('ab12cd12ef', '12', 4)) 2344 assert_equal(6, match('ab12cd12ef', '12', 4))
2339 assert_equal(2, match('abcd', '..', 0, 3)) 2345 assert_equal(2, match('abcd', '..', 0, 3))
2340 assert_equal(1, match(['a', 'b', 'c'], 'b')) 2346 assert_equal(1, match(['a', 'b', 'c'], 'b'))
2345 match('abc', '')->assert_equal(0) 2351 match('abc', '')->assert_equal(0)
2346 match('', '')->assert_equal(0) 2352 match('', '')->assert_equal(0)
2347 enddef 2353 enddef
2348 2354
2349 def Test_matchadd() 2355 def Test_matchadd()
2350 CheckDefAndScriptFailure(['matchadd(1, "b")'], ['E1013: Argument 1: type mismatch, expected string but got number', 'E1174: String required for argument 1']) 2356 v9.CheckDefAndScriptFailure(['matchadd(1, "b")'], ['E1013: Argument 1: type mismatch, expected string but got number', 'E1174: String required for argument 1'])
2351 CheckDefAndScriptFailure(['matchadd("a", 2)'], ['E1013: Argument 2: type mismatch, expected string but got number', 'E1174: String required for argument 2']) 2357 v9.CheckDefAndScriptFailure(['matchadd("a", 2)'], ['E1013: Argument 2: type mismatch, expected string but got number', 'E1174: String required for argument 2'])
2352 CheckDefAndScriptFailure(['matchadd("a", "b", "c")'], ['E1013: Argument 3: type mismatch, expected number but got string', 'E1210: Number required for argument 3']) 2358 v9.CheckDefAndScriptFailure(['matchadd("a", "b", "c")'], ['E1013: Argument 3: type mismatch, expected number but got string', 'E1210: Number required for argument 3'])
2353 CheckDefAndScriptFailure(['matchadd("a", "b", 1, "d")'], ['E1013: Argument 4: type mismatch, expected number but got string', 'E1210: Number required for argument 4']) 2359 v9.CheckDefAndScriptFailure(['matchadd("a", "b", 1, "d")'], ['E1013: Argument 4: type mismatch, expected number but got string', 'E1210: Number required for argument 4'])
2354 CheckDefAndScriptFailure(['matchadd("a", "b", 1, 1, [])'], ['E1013: Argument 5: type mismatch, expected dict<any> but got list<unknown>', 'E1206: Dictionary required for argument 5']) 2360 v9.CheckDefAndScriptFailure(['matchadd("a", "b", 1, 1, [])'], ['E1013: Argument 5: type mismatch, expected dict<any> but got list<unknown>', 'E1206: Dictionary required for argument 5'])
2355 matchadd('', 'a')->assert_equal(-1) 2361 matchadd('', 'a')->assert_equal(-1)
2356 matchadd('Search', '')->assert_equal(-1) 2362 matchadd('Search', '')->assert_equal(-1)
2357 enddef 2363 enddef
2358 2364
2359 def Test_matchaddpos() 2365 def Test_matchaddpos()
2360 CheckDefAndScriptFailure(['matchaddpos(1, [1])'], ['E1013: Argument 1: type mismatch, expected string but got number', 'E1174: String required for argument 1']) 2366 v9.CheckDefAndScriptFailure(['matchaddpos(1, [1])'], ['E1013: Argument 1: type mismatch, expected string but got number', 'E1174: String required for argument 1'])
2361 CheckDefAndScriptFailure(['matchaddpos("a", "b")'], ['E1013: Argument 2: type mismatch, expected list<any> but got string', 'E1211: List required for argument 2']) 2367 v9.CheckDefAndScriptFailure(['matchaddpos("a", "b")'], ['E1013: Argument 2: type mismatch, expected list<any> but got string', 'E1211: List required for argument 2'])
2362 CheckDefAndScriptFailure(['matchaddpos("a", [1], "c")'], ['E1013: Argument 3: type mismatch, expected number but got string', 'E1210: Number required for argument 3']) 2368 v9.CheckDefAndScriptFailure(['matchaddpos("a", [1], "c")'], ['E1013: Argument 3: type mismatch, expected number but got string', 'E1210: Number required for argument 3'])
2363 CheckDefAndScriptFailure(['matchaddpos("a", [1], 1, "d")'], ['E1013: Argument 4: type mismatch, expected number but got string', 'E1210: Number required for argument 4']) 2369 v9.CheckDefAndScriptFailure(['matchaddpos("a", [1], 1, "d")'], ['E1013: Argument 4: type mismatch, expected number but got string', 'E1210: Number required for argument 4'])
2364 CheckDefAndScriptFailure(['matchaddpos("a", [1], 1, 1, [])'], ['E1013: Argument 5: type mismatch, expected dict<any> but got list<unknown>', 'E1206: Dictionary required for argument 5']) 2370 v9.CheckDefAndScriptFailure(['matchaddpos("a", [1], 1, 1, [])'], ['E1013: Argument 5: type mismatch, expected dict<any> but got list<unknown>', 'E1206: Dictionary required for argument 5'])
2365 matchaddpos('', [1])->assert_equal(-1) 2371 matchaddpos('', [1])->assert_equal(-1)
2366 enddef 2372 enddef
2367 2373
2368 def Test_matcharg() 2374 def Test_matcharg()
2369 CheckDefAndScriptFailure(['matcharg("x")'], ['E1013: Argument 1: type mismatch, expected number but got string', 'E1210: Number required for argument 1']) 2375 v9.CheckDefAndScriptFailure(['matcharg("x")'], ['E1013: Argument 1: type mismatch, expected number but got string', 'E1210: Number required for argument 1'])
2370 enddef 2376 enddef
2371 2377
2372 def Test_matchdelete() 2378 def Test_matchdelete()
2373 CheckDefAndScriptFailure(['matchdelete("x")'], ['E1013: Argument 1: type mismatch, expected number but got string', 'E1210: Number required for argument 1']) 2379 v9.CheckDefAndScriptFailure(['matchdelete("x")'], ['E1013: Argument 1: type mismatch, expected number but got string', 'E1210: Number required for argument 1'])
2374 CheckDefAndScriptFailure(['matchdelete("x", 1)'], ['E1013: Argument 1: type mismatch, expected number but got string', 'E1210: Number required for argument 1']) 2380 v9.CheckDefAndScriptFailure(['matchdelete("x", 1)'], ['E1013: Argument 1: type mismatch, expected number but got string', 'E1210: Number required for argument 1'])
2375 CheckDefAndScriptFailure(['matchdelete(1, "x")'], ['E1013: Argument 2: type mismatch, expected number but got string', 'E1210: Number required for argument 2']) 2381 v9.CheckDefAndScriptFailure(['matchdelete(1, "x")'], ['E1013: Argument 2: type mismatch, expected number but got string', 'E1210: Number required for argument 2'])
2376 enddef 2382 enddef
2377 2383
2378 def Test_matchend() 2384 def Test_matchend()
2379 CheckDefAndScriptFailure(['matchend(0z12, "p")'], ['E1013: Argument 1: type mismatch, expected string but got blob', 'E1222: String or List required for argument 1']) 2385 v9.CheckDefAndScriptFailure(['matchend(0z12, "p")'], ['E1013: Argument 1: type mismatch, expected string but got blob', 'E1222: String or List required for argument 1'])
2380 CheckDefAndScriptFailure(['matchend(["s"], [2])'], ['E1013: Argument 2: type mismatch, expected string but got list<number>', 'E1174: String required for argument 2']) 2386 v9.CheckDefAndScriptFailure(['matchend(["s"], [2])'], ['E1013: Argument 2: type mismatch, expected string but got list<number>', 'E1174: String required for argument 2'])
2381 CheckDefAndScriptFailure(['matchend("s", "p", "q")'], ['E1013: Argument 3: type mismatch, expected number but got string', 'E1210: Number required for argument 3']) 2387 v9.CheckDefAndScriptFailure(['matchend("s", "p", "q")'], ['E1013: Argument 3: type mismatch, expected number but got string', 'E1210: Number required for argument 3'])
2382 CheckDefAndScriptFailure(['matchend("s", "p", 1, "r")'], ['E1013: Argument 4: type mismatch, expected number but got string', 'E1210: Number required for argument 4']) 2388 v9.CheckDefAndScriptFailure(['matchend("s", "p", 1, "r")'], ['E1013: Argument 4: type mismatch, expected number but got string', 'E1210: Number required for argument 4'])
2383 assert_equal(4, matchend('ab12cd', '12')) 2389 assert_equal(4, matchend('ab12cd', '12'))
2384 assert_equal(-1, matchend('ab12cd', '34')) 2390 assert_equal(-1, matchend('ab12cd', '34'))
2385 assert_equal(8, matchend('ab12cd12ef', '12', 4)) 2391 assert_equal(8, matchend('ab12cd12ef', '12', 4))
2386 assert_equal(4, matchend('abcd', '..', 0, 3)) 2392 assert_equal(4, matchend('abcd', '..', 0, 3))
2387 assert_equal(1, matchend(['a', 'b', 'c'], 'b')) 2393 assert_equal(1, matchend(['a', 'b', 'c'], 'b'))
2392 matchend('abc', '')->assert_equal(0) 2398 matchend('abc', '')->assert_equal(0)
2393 matchend('', '')->assert_equal(0) 2399 matchend('', '')->assert_equal(0)
2394 enddef 2400 enddef
2395 2401
2396 def Test_matchfuzzy() 2402 def Test_matchfuzzy()
2397 CheckDefAndScriptFailure(['matchfuzzy({}, "p")'], ['E1013: Argument 1: type mismatch, expected list<any> but got dict<unknown>', 'E1211: List required for argument 1']) 2403 v9.CheckDefAndScriptFailure(['matchfuzzy({}, "p")'], ['E1013: Argument 1: type mismatch, expected list<any> but got dict<unknown>', 'E1211: List required for argument 1'])
2398 CheckDefAndScriptFailure(['matchfuzzy([], 1)'], ['E1013: Argument 2: type mismatch, expected string but got number', 'E1174: String required for argument 2']) 2404 v9.CheckDefAndScriptFailure(['matchfuzzy([], 1)'], ['E1013: Argument 2: type mismatch, expected string but got number', 'E1174: String required for argument 2'])
2399 CheckDefAndScriptFailure(['matchfuzzy([], "a", [])'], ['E1013: Argument 3: type mismatch, expected dict<any> but got list<unknown>', 'E1206: Dictionary required for argument 3']) 2405 v9.CheckDefAndScriptFailure(['matchfuzzy([], "a", [])'], ['E1013: Argument 3: type mismatch, expected dict<any> but got list<unknown>', 'E1206: Dictionary required for argument 3'])
2400 matchfuzzy(['abc', 'xyz'], '')->assert_equal([]) 2406 matchfuzzy(['abc', 'xyz'], '')->assert_equal([])
2401 enddef 2407 enddef
2402 2408
2403 def Test_matchfuzzypos() 2409 def Test_matchfuzzypos()
2404 CheckDefAndScriptFailure(['matchfuzzypos({}, "p")'], ['E1013: Argument 1: type mismatch, expected list<any> but got dict<unknown>', 'E1211: List required for argument 1']) 2410 v9.CheckDefAndScriptFailure(['matchfuzzypos({}, "p")'], ['E1013: Argument 1: type mismatch, expected list<any> but got dict<unknown>', 'E1211: List required for argument 1'])
2405 CheckDefAndScriptFailure(['matchfuzzypos([], 1)'], ['E1013: Argument 2: type mismatch, expected string but got number', 'E1174: String required for argument 2']) 2411 v9.CheckDefAndScriptFailure(['matchfuzzypos([], 1)'], ['E1013: Argument 2: type mismatch, expected string but got number', 'E1174: String required for argument 2'])
2406 CheckDefAndScriptFailure(['matchfuzzypos([], "a", [])'], ['E1013: Argument 3: type mismatch, expected dict<any> but got list<unknown>', 'E1206: Dictionary required for argument 3']) 2412 v9.CheckDefAndScriptFailure(['matchfuzzypos([], "a", [])'], ['E1013: Argument 3: type mismatch, expected dict<any> but got list<unknown>', 'E1206: Dictionary required for argument 3'])
2407 matchfuzzypos(['abc', 'xyz'], '')->assert_equal([[], [], []]) 2413 matchfuzzypos(['abc', 'xyz'], '')->assert_equal([[], [], []])
2408 enddef 2414 enddef
2409 2415
2410 def Test_matchlist() 2416 def Test_matchlist()
2411 CheckDefAndScriptFailure(['matchlist(0z12, "p")'], ['E1013: Argument 1: type mismatch, expected string but got blob', 'E1222: String or List required for argument 1']) 2417 v9.CheckDefAndScriptFailure(['matchlist(0z12, "p")'], ['E1013: Argument 1: type mismatch, expected string but got blob', 'E1222: String or List required for argument 1'])
2412 CheckDefAndScriptFailure(['matchlist(["s"], [2])'], ['E1013: Argument 2: type mismatch, expected string but got list<number>', 'E1174: String required for argument 2']) 2418 v9.CheckDefAndScriptFailure(['matchlist(["s"], [2])'], ['E1013: Argument 2: type mismatch, expected string but got list<number>', 'E1174: String required for argument 2'])
2413 CheckDefAndScriptFailure(['matchlist("s", "p", "q")'], ['E1013: Argument 3: type mismatch, expected number but got string', 'E1210: Number required for argument 3']) 2419 v9.CheckDefAndScriptFailure(['matchlist("s", "p", "q")'], ['E1013: Argument 3: type mismatch, expected number but got string', 'E1210: Number required for argument 3'])
2414 CheckDefAndScriptFailure(['matchlist("s", "p", 1, "r")'], ['E1013: Argument 4: type mismatch, expected number but got string', 'E1210: Number required for argument 4']) 2420 v9.CheckDefAndScriptFailure(['matchlist("s", "p", 1, "r")'], ['E1013: Argument 4: type mismatch, expected number but got string', 'E1210: Number required for argument 4'])
2415 var l: list<string> = ['12', '', '', '', '', '', '', '', '', ''] 2421 var l: list<string> = ['12', '', '', '', '', '', '', '', '', '']
2416 assert_equal(l, matchlist('ab12cd', '12')) 2422 assert_equal(l, matchlist('ab12cd', '12'))
2417 assert_equal([], matchlist('ab12cd', '34')) 2423 assert_equal([], matchlist('ab12cd', '34'))
2418 assert_equal(l, matchlist('ab12cd12ef', '12', 4)) 2424 assert_equal(l, matchlist('ab12cd12ef', '12', 4))
2419 l[0] = 'cd' 2425 l[0] = 'cd'
2427 matchlist('abc', '')->assert_equal(repeat([''], 10)) 2433 matchlist('abc', '')->assert_equal(repeat([''], 10))
2428 matchlist('', '')->assert_equal(repeat([''], 10)) 2434 matchlist('', '')->assert_equal(repeat([''], 10))
2429 enddef 2435 enddef
2430 2436
2431 def Test_matchstr() 2437 def Test_matchstr()
2432 CheckDefAndScriptFailure(['matchstr(0z12, "p")'], ['E1013: Argument 1: type mismatch, expected string but got blob', 'E1222: String or List required for argument 1']) 2438 v9.CheckDefAndScriptFailure(['matchstr(0z12, "p")'], ['E1013: Argument 1: type mismatch, expected string but got blob', 'E1222: String or List required for argument 1'])
2433 CheckDefAndScriptFailure(['matchstr(["s"], [2])'], ['E1013: Argument 2: type mismatch, expected string but got list<number>', 'E1174: String required for argument 2']) 2439 v9.CheckDefAndScriptFailure(['matchstr(["s"], [2])'], ['E1013: Argument 2: type mismatch, expected string but got list<number>', 'E1174: String required for argument 2'])
2434 CheckDefAndScriptFailure(['matchstr("s", "p", "q")'], ['E1013: Argument 3: type mismatch, expected number but got string', 'E1210: Number required for argument 3']) 2440 v9.CheckDefAndScriptFailure(['matchstr("s", "p", "q")'], ['E1013: Argument 3: type mismatch, expected number but got string', 'E1210: Number required for argument 3'])
2435 CheckDefAndScriptFailure(['matchstr("s", "p", 1, "r")'], ['E1013: Argument 4: type mismatch, expected number but got string', 'E1210: Number required for argument 4']) 2441 v9.CheckDefAndScriptFailure(['matchstr("s", "p", 1, "r")'], ['E1013: Argument 4: type mismatch, expected number but got string', 'E1210: Number required for argument 4'])
2436 assert_equal('12', matchstr('ab12cd', '12')) 2442 assert_equal('12', matchstr('ab12cd', '12'))
2437 assert_equal('', matchstr('ab12cd', '34')) 2443 assert_equal('', matchstr('ab12cd', '34'))
2438 assert_equal('12', matchstr('ab12cd12ef', '12', 4)) 2444 assert_equal('12', matchstr('ab12cd12ef', '12', 4))
2439 assert_equal('cd', matchstr('abcd', '..', 0, 3)) 2445 assert_equal('cd', matchstr('abcd', '..', 0, 3))
2440 assert_equal('b', matchstr(['a', 'b', 'c'], 'b')) 2446 assert_equal('b', matchstr(['a', 'b', 'c'], 'b'))
2445 matchstr('abc', '')->assert_equal('') 2451 matchstr('abc', '')->assert_equal('')
2446 matchstr('', '')->assert_equal('') 2452 matchstr('', '')->assert_equal('')
2447 enddef 2453 enddef
2448 2454
2449 def Test_matchstrpos() 2455 def Test_matchstrpos()
2450 CheckDefAndScriptFailure(['matchstrpos(0z12, "p")'], ['E1013: Argument 1: type mismatch, expected string but got blob', 'E1222: String or List required for argument 1']) 2456 v9.CheckDefAndScriptFailure(['matchstrpos(0z12, "p")'], ['E1013: Argument 1: type mismatch, expected string but got blob', 'E1222: String or List required for argument 1'])
2451 CheckDefAndScriptFailure(['matchstrpos(["s"], [2])'], ['E1013: Argument 2: type mismatch, expected string but got list<number>', 'E1174: String required for argument 2']) 2457 v9.CheckDefAndScriptFailure(['matchstrpos(["s"], [2])'], ['E1013: Argument 2: type mismatch, expected string but got list<number>', 'E1174: String required for argument 2'])
2452 CheckDefAndScriptFailure(['matchstrpos("s", "p", "q")'], ['E1013: Argument 3: type mismatch, expected number but got string', 'E1210: Number required for argument 3']) 2458 v9.CheckDefAndScriptFailure(['matchstrpos("s", "p", "q")'], ['E1013: Argument 3: type mismatch, expected number but got string', 'E1210: Number required for argument 3'])
2453 CheckDefAndScriptFailure(['matchstrpos("s", "p", 1, "r")'], ['E1013: Argument 4: type mismatch, expected number but got string', 'E1210: Number required for argument 4']) 2459 v9.CheckDefAndScriptFailure(['matchstrpos("s", "p", 1, "r")'], ['E1013: Argument 4: type mismatch, expected number but got string', 'E1210: Number required for argument 4'])
2454 assert_equal(['12', 2, 4], matchstrpos('ab12cd', '12')) 2460 assert_equal(['12', 2, 4], matchstrpos('ab12cd', '12'))
2455 assert_equal(['', -1, -1], matchstrpos('ab12cd', '34')) 2461 assert_equal(['', -1, -1], matchstrpos('ab12cd', '34'))
2456 assert_equal(['12', 6, 8], matchstrpos('ab12cd12ef', '12', 4)) 2462 assert_equal(['12', 6, 8], matchstrpos('ab12cd12ef', '12', 4))
2457 assert_equal(['cd', 2, 4], matchstrpos('abcd', '..', 0, 3)) 2463 assert_equal(['cd', 2, 4], matchstrpos('abcd', '..', 0, 3))
2458 assert_equal(['b', 1, 0, 1], matchstrpos(['a', 'b', 'c'], 'b')) 2464 assert_equal(['b', 1, 0, 1], matchstrpos(['a', 'b', 'c'], 'b'))
2476 g:flag = false 2482 g:flag = false
2477 var l2: list<number> = g:flag 2483 var l2: list<number> = g:flag
2478 ? [1, max([2, 3])] 2484 ? [1, max([2, 3])]
2479 : [4, 5] 2485 : [4, 5]
2480 assert_equal([4, 5], l2) 2486 assert_equal([4, 5], l2)
2481 CheckDefAndScriptFailure(['max(5)'], ['E1013: Argument 1: type mismatch, expected list<any> but got number', 'E1227: List or Dictionary required for argument 1']) 2487 v9.CheckDefAndScriptFailure(['max(5)'], ['E1013: Argument 1: type mismatch, expected list<any> but got number', 'E1227: List or Dictionary required for argument 1'])
2482 enddef 2488 enddef
2483 2489
2484 def Test_menu_info() 2490 def Test_menu_info()
2485 CheckDefAndScriptFailure(['menu_info(10)'], ['E1013: Argument 1: type mismatch, expected string but got number', 'E1174: String required for argument 1']) 2491 v9.CheckDefAndScriptFailure(['menu_info(10)'], ['E1013: Argument 1: type mismatch, expected string but got number', 'E1174: String required for argument 1'])
2486 CheckDefAndScriptFailure(['menu_info(10, "n")'], ['E1013: Argument 1: type mismatch, expected string but got number', 'E1174: String required for argument 1']) 2492 v9.CheckDefAndScriptFailure(['menu_info(10, "n")'], ['E1013: Argument 1: type mismatch, expected string but got number', 'E1174: String required for argument 1'])
2487 CheckDefAndScriptFailure(['menu_info("File", 10)'], ['E1013: Argument 2: type mismatch, expected string but got number', 'E1174: String required for argument 2']) 2493 v9.CheckDefAndScriptFailure(['menu_info("File", 10)'], ['E1013: Argument 2: type mismatch, expected string but got number', 'E1174: String required for argument 2'])
2488 assert_equal({}, menu_info('aMenu')) 2494 assert_equal({}, menu_info('aMenu'))
2489 enddef 2495 enddef
2490 2496
2491 def Test_min() 2497 def Test_min()
2492 g:flag = true 2498 g:flag = true
2498 g:flag = false 2504 g:flag = false
2499 var l2: list<number> = g:flag 2505 var l2: list<number> = g:flag
2500 ? [1, min([2, 3])] 2506 ? [1, min([2, 3])]
2501 : [4, 5] 2507 : [4, 5]
2502 assert_equal([4, 5], l2) 2508 assert_equal([4, 5], l2)
2503 CheckDefAndScriptFailure(['min(5)'], ['E1013: Argument 1: type mismatch, expected list<any> but got number', 'E1227: List or Dictionary required for argument 1']) 2509 v9.CheckDefAndScriptFailure(['min(5)'], ['E1013: Argument 1: type mismatch, expected list<any> but got number', 'E1227: List or Dictionary required for argument 1'])
2504 enddef 2510 enddef
2505 2511
2506 def Test_mkdir() 2512 def Test_mkdir()
2507 CheckDefAndScriptFailure(['mkdir(["a"])'], ['E1013: Argument 1: type mismatch, expected string but got list<string>', 'E1174: String required for argument 1']) 2513 v9.CheckDefAndScriptFailure(['mkdir(["a"])'], ['E1013: Argument 1: type mismatch, expected string but got list<string>', 'E1174: String required for argument 1'])
2508 CheckDefAndScriptFailure(['mkdir("a", {})'], ['E1013: Argument 2: type mismatch, expected string but got dict<unknown>', 'E1174: String required for argument 2']) 2514 v9.CheckDefAndScriptFailure(['mkdir("a", {})'], ['E1013: Argument 2: type mismatch, expected string but got dict<unknown>', 'E1174: String required for argument 2'])
2509 CheckDefAndScriptFailure(['mkdir("a", "b", "c")'], ['E1013: Argument 3: type mismatch, expected number but got string', 'E1210: Number required for argument 3']) 2515 v9.CheckDefAndScriptFailure(['mkdir("a", "b", "c")'], ['E1013: Argument 3: type mismatch, expected number but got string', 'E1210: Number required for argument 3'])
2510 CheckDefExecAndScriptFailure(['mkdir("")'], 'E1175: Non-empty string required for argument 1') 2516 v9.CheckDefExecAndScriptFailure(['mkdir("")'], 'E1175: Non-empty string required for argument 1')
2511 delete('a', 'rf') 2517 delete('a', 'rf')
2512 enddef 2518 enddef
2513 2519
2514 def Test_mode() 2520 def Test_mode()
2515 CheckDefAndScriptFailure(['mode("1")'], ['E1013: Argument 1: type mismatch, expected bool but got string', 'E1212: Bool required for argument 1']) 2521 v9.CheckDefAndScriptFailure(['mode("1")'], ['E1013: Argument 1: type mismatch, expected bool but got string', 'E1212: Bool required for argument 1'])
2516 CheckDefAndScriptFailure(['mode(2)'], ['E1013: Argument 1: type mismatch, expected bool but got number', 'E1212: Bool required for argument 1']) 2522 v9.CheckDefAndScriptFailure(['mode(2)'], ['E1013: Argument 1: type mismatch, expected bool but got number', 'E1212: Bool required for argument 1'])
2517 enddef 2523 enddef
2518 2524
2519 def Test_mzeval() 2525 def Test_mzeval()
2520 if !has('mzscheme') 2526 if !has('mzscheme')
2521 CheckFeature mzscheme 2527 CheckFeature mzscheme
2522 endif 2528 endif
2523 CheckDefAndScriptFailure(['mzeval(["a"])'], ['E1013: Argument 1: type mismatch, expected string but got list<string>', 'E1174: String required for argument 1']) 2529 v9.CheckDefAndScriptFailure(['mzeval(["a"])'], ['E1013: Argument 1: type mismatch, expected string but got list<string>', 'E1174: String required for argument 1'])
2524 enddef 2530 enddef
2525 2531
2526 def Test_nextnonblank() 2532 def Test_nextnonblank()
2527 CheckDefAndScriptFailure(['nextnonblank(null)'], ['E1013: Argument 1: type mismatch, expected string but got special', 'E1220: String or Number required for argument 1']) 2533 v9.CheckDefAndScriptFailure(['nextnonblank(null)'], ['E1013: Argument 1: type mismatch, expected string but got special', 'E1220: String or Number required for argument 1'])
2528 CheckDefExecAndScriptFailure(['nextnonblank("")'], 'E1209: Invalid value for a line number') 2534 v9.CheckDefExecAndScriptFailure(['nextnonblank("")'], 'E1209: Invalid value for a line number')
2529 assert_equal(0, nextnonblank(1)) 2535 assert_equal(0, nextnonblank(1))
2530 enddef 2536 enddef
2531 2537
2532 def Test_nr2char() 2538 def Test_nr2char()
2533 nr2char(97, true)->assert_equal('a') 2539 nr2char(97, true)->assert_equal('a')
2534 CheckDefAndScriptFailure(['nr2char("x")'], ['E1013: Argument 1: type mismatch, expected number but got string', 'E1210: Number required for argument 1']) 2540 v9.CheckDefAndScriptFailure(['nr2char("x")'], ['E1013: Argument 1: type mismatch, expected number but got string', 'E1210: Number required for argument 1'])
2535 CheckDefAndScriptFailure(['nr2char(1, "a")'], ['E1013: Argument 2: type mismatch, expected bool but got string', 'E1212: Bool required for argument 2']) 2541 v9.CheckDefAndScriptFailure(['nr2char(1, "a")'], ['E1013: Argument 2: type mismatch, expected bool but got string', 'E1212: Bool required for argument 2'])
2536 enddef 2542 enddef
2537 2543
2538 def Test_or() 2544 def Test_or()
2539 CheckDefAndScriptFailure(['or("x", 0x2)'], ['E1013: Argument 1: type mismatch, expected number but got string', 'E1210: Number required for argument 1']) 2545 v9.CheckDefAndScriptFailure(['or("x", 0x2)'], ['E1013: Argument 1: type mismatch, expected number but got string', 'E1210: Number required for argument 1'])
2540 CheckDefAndScriptFailure(['or(0x1, "x")'], ['E1013: Argument 2: type mismatch, expected number but got string', 'E1210: Number required for argument 2']) 2546 v9.CheckDefAndScriptFailure(['or(0x1, "x")'], ['E1013: Argument 2: type mismatch, expected number but got string', 'E1210: Number required for argument 2'])
2541 enddef 2547 enddef
2542 2548
2543 def Test_pathshorten() 2549 def Test_pathshorten()
2544 CheckDefAndScriptFailure(['pathshorten(1)'], ['E1013: Argument 1: type mismatch, expected string but got number', 'E1174: String required for argument 1']) 2550 v9.CheckDefAndScriptFailure(['pathshorten(1)'], ['E1013: Argument 1: type mismatch, expected string but got number', 'E1174: String required for argument 1'])
2545 CheckDefAndScriptFailure(['pathshorten("a", "x")'], ['E1013: Argument 2: type mismatch, expected number but got string', 'E1210: Number required for argument 2']) 2551 v9.CheckDefAndScriptFailure(['pathshorten("a", "x")'], ['E1013: Argument 2: type mismatch, expected number but got string', 'E1210: Number required for argument 2'])
2546 pathshorten('')->assert_equal('') 2552 pathshorten('')->assert_equal('')
2547 enddef 2553 enddef
2548 2554
2549 def Test_perleval() 2555 def Test_perleval()
2550 if !has('perl') 2556 if !has('perl')
2551 CheckFeature perl 2557 CheckFeature perl
2552 endif 2558 endif
2553 CheckDefAndScriptFailure(['perleval(["a"])'], ['E1013: Argument 1: type mismatch, expected string but got list<string>', 'E1174: String required for argument 1']) 2559 v9.CheckDefAndScriptFailure(['perleval(["a"])'], ['E1013: Argument 1: type mismatch, expected string but got list<string>', 'E1174: String required for argument 1'])
2554 enddef 2560 enddef
2555 2561
2556 def Test_popup_atcursor() 2562 def Test_popup_atcursor()
2557 CheckDefAndScriptFailure(['popup_atcursor({"a": 10}, {})'], ['E1013: Argument 1: type mismatch, expected string but got dict<number>', 'E1224: String, Number or List required for argument 1']) 2563 v9.CheckDefAndScriptFailure(['popup_atcursor({"a": 10}, {})'], ['E1013: Argument 1: type mismatch, expected string but got dict<number>', 'E1224: String, Number or List required for argument 1'])
2558 CheckDefAndScriptFailure(['popup_atcursor("a", [1, 2])'], ['E1013: Argument 2: type mismatch, expected dict<any> but got list<number>', 'E1206: Dictionary required for argument 2']) 2564 v9.CheckDefAndScriptFailure(['popup_atcursor("a", [1, 2])'], ['E1013: Argument 2: type mismatch, expected dict<any> but got list<number>', 'E1206: Dictionary required for argument 2'])
2559 2565
2560 # Pass variable of type 'any' to popup_atcursor() 2566 # Pass variable of type 'any' to popup_atcursor()
2561 var what: any = 'Hello' 2567 var what: any = 'Hello'
2562 var popupID = what->popup_atcursor({moved: 'any'}) 2568 var popupID = what->popup_atcursor({moved: 'any'})
2563 assert_equal(0, popupID->popup_getoptions().tabpage) 2569 assert_equal(0, popupID->popup_getoptions().tabpage)
2564 popupID->popup_close() 2570 popupID->popup_close()
2565 enddef 2571 enddef
2566 2572
2567 def Test_popup_beval() 2573 def Test_popup_beval()
2568 CheckDefAndScriptFailure(['popup_beval({"a": 10}, {})'], ['E1013: Argument 1: type mismatch, expected string but got dict<number>', 'E1224: String, Number or List required for argument 1']) 2574 v9.CheckDefAndScriptFailure(['popup_beval({"a": 10}, {})'], ['E1013: Argument 1: type mismatch, expected string but got dict<number>', 'E1224: String, Number or List required for argument 1'])
2569 CheckDefAndScriptFailure(['popup_beval("a", [1, 2])'], ['E1013: Argument 2: type mismatch, expected dict<any> but got list<number>', 'E1206: Dictionary required for argument 2']) 2575 v9.CheckDefAndScriptFailure(['popup_beval("a", [1, 2])'], ['E1013: Argument 2: type mismatch, expected dict<any> but got list<number>', 'E1206: Dictionary required for argument 2'])
2570 enddef 2576 enddef
2571 2577
2572 def Test_popup_clear() 2578 def Test_popup_clear()
2573 CheckDefAndScriptFailure(['popup_clear(["a"])'], ['E1013: Argument 1: type mismatch, expected bool but got list<string>', 'E1212: Bool required for argument 1']) 2579 v9.CheckDefAndScriptFailure(['popup_clear(["a"])'], ['E1013: Argument 1: type mismatch, expected bool but got list<string>', 'E1212: Bool required for argument 1'])
2574 CheckDefAndScriptFailure(['popup_clear(2)'], ['E1013: Argument 1: type mismatch, expected bool but got number', 'E1212: Bool required for argument 1']) 2580 v9.CheckDefAndScriptFailure(['popup_clear(2)'], ['E1013: Argument 1: type mismatch, expected bool but got number', 'E1212: Bool required for argument 1'])
2575 enddef 2581 enddef
2576 2582
2577 def Test_popup_close() 2583 def Test_popup_close()
2578 CheckDefAndScriptFailure(['popup_close("a")'], ['E1013: Argument 1: type mismatch, expected number but got string', 'E1210: Number required for argument 1']) 2584 v9.CheckDefAndScriptFailure(['popup_close("a")'], ['E1013: Argument 1: type mismatch, expected number but got string', 'E1210: Number required for argument 1'])
2579 enddef 2585 enddef
2580 2586
2581 def Test_popup_create() 2587 def Test_popup_create()
2582 # Pass variable of type 'any' to popup_create() 2588 # Pass variable of type 'any' to popup_create()
2583 var what: any = 'Hello' 2589 var what: any = 'Hello'
2585 assert_equal(0, popupID->popup_getoptions().tabpage) 2591 assert_equal(0, popupID->popup_getoptions().tabpage)
2586 popupID->popup_close() 2592 popupID->popup_close()
2587 enddef 2593 enddef
2588 2594
2589 def Test_popup_dialog() 2595 def Test_popup_dialog()
2590 CheckDefAndScriptFailure(['popup_dialog({"a": 10}, {})'], ['E1013: Argument 1: type mismatch, expected string but got dict<number>', 'E1224: String, Number or List required for argument 1']) 2596 v9.CheckDefAndScriptFailure(['popup_dialog({"a": 10}, {})'], ['E1013: Argument 1: type mismatch, expected string but got dict<number>', 'E1224: String, Number or List required for argument 1'])
2591 CheckDefAndScriptFailure(['popup_dialog("a", [1, 2])'], ['E1013: Argument 2: type mismatch, expected dict<any> but got list<number>', 'E1206: Dictionary required for argument 2']) 2597 v9.CheckDefAndScriptFailure(['popup_dialog("a", [1, 2])'], ['E1013: Argument 2: type mismatch, expected dict<any> but got list<number>', 'E1206: Dictionary required for argument 2'])
2592 enddef 2598 enddef
2593 2599
2594 def Test_popup_filter_menu() 2600 def Test_popup_filter_menu()
2595 CheckDefAndScriptFailure(['popup_filter_menu("x", "")'], ['E1013: Argument 1: type mismatch, expected number but got string', 'E1210: Number required for argument 1']) 2601 v9.CheckDefAndScriptFailure(['popup_filter_menu("x", "")'], ['E1013: Argument 1: type mismatch, expected number but got string', 'E1210: Number required for argument 1'])
2596 CheckDefAndScriptFailure(['popup_filter_menu(1, 1)'], ['E1013: Argument 2: type mismatch, expected string but got number', 'E1174: String required for argument 2']) 2602 v9.CheckDefAndScriptFailure(['popup_filter_menu(1, 1)'], ['E1013: Argument 2: type mismatch, expected string but got number', 'E1174: String required for argument 2'])
2597 var id: number = popup_menu(["one", "two", "three"], {}) 2603 var id: number = popup_menu(["one", "two", "three"], {})
2598 popup_filter_menu(id, '') 2604 popup_filter_menu(id, '')
2599 popup_close(id) 2605 popup_close(id)
2600 enddef 2606 enddef
2601 2607
2602 def Test_popup_filter_yesno() 2608 def Test_popup_filter_yesno()
2603 CheckDefAndScriptFailure(['popup_filter_yesno("x", "")'], ['E1013: Argument 1: type mismatch, expected number but got string', 'E1210: Number required for argument 1']) 2609 v9.CheckDefAndScriptFailure(['popup_filter_yesno("x", "")'], ['E1013: Argument 1: type mismatch, expected number but got string', 'E1210: Number required for argument 1'])
2604 CheckDefAndScriptFailure(['popup_filter_yesno(1, 1)'], ['E1013: Argument 2: type mismatch, expected string but got number', 'E1174: String required for argument 2']) 2610 v9.CheckDefAndScriptFailure(['popup_filter_yesno(1, 1)'], ['E1013: Argument 2: type mismatch, expected string but got number', 'E1174: String required for argument 2'])
2605 enddef 2611 enddef
2606 2612
2607 def Test_popup_getoptions() 2613 def Test_popup_getoptions()
2608 CheckDefAndScriptFailure(['popup_getoptions("a")'], ['E1013: Argument 1: type mismatch, expected number but got string', 'E1210: Number required for argument 1']) 2614 v9.CheckDefAndScriptFailure(['popup_getoptions("a")'], ['E1013: Argument 1: type mismatch, expected number but got string', 'E1210: Number required for argument 1'])
2609 CheckDefAndScriptFailure(['popup_getoptions(true)'], ['E1013: Argument 1: type mismatch, expected number but got bool', 'E1210: Number required for argument 1']) 2615 v9.CheckDefAndScriptFailure(['popup_getoptions(true)'], ['E1013: Argument 1: type mismatch, expected number but got bool', 'E1210: Number required for argument 1'])
2610 enddef 2616 enddef
2611 2617
2612 def Test_popup_getpos() 2618 def Test_popup_getpos()
2613 CheckDefAndScriptFailure(['popup_getpos("a")'], ['E1013: Argument 1: type mismatch, expected number but got string', 'E1210: Number required for argument 1']) 2619 v9.CheckDefAndScriptFailure(['popup_getpos("a")'], ['E1013: Argument 1: type mismatch, expected number but got string', 'E1210: Number required for argument 1'])
2614 CheckDefAndScriptFailure(['popup_getpos(true)'], ['E1013: Argument 1: type mismatch, expected number but got bool', 'E1210: Number required for argument 1']) 2620 v9.CheckDefAndScriptFailure(['popup_getpos(true)'], ['E1013: Argument 1: type mismatch, expected number but got bool', 'E1210: Number required for argument 1'])
2615 enddef 2621 enddef
2616 2622
2617 def Test_popup_hide() 2623 def Test_popup_hide()
2618 CheckDefAndScriptFailure(['popup_hide("a")'], ['E1013: Argument 1: type mismatch, expected number but got string', 'E1210: Number required for argument 1']) 2624 v9.CheckDefAndScriptFailure(['popup_hide("a")'], ['E1013: Argument 1: type mismatch, expected number but got string', 'E1210: Number required for argument 1'])
2619 CheckDefAndScriptFailure(['popup_hide(true)'], ['E1013: Argument 1: type mismatch, expected number but got bool', 'E1210: Number required for argument 1']) 2625 v9.CheckDefAndScriptFailure(['popup_hide(true)'], ['E1013: Argument 1: type mismatch, expected number but got bool', 'E1210: Number required for argument 1'])
2620 enddef 2626 enddef
2621 2627
2622 def Test_popup_locate() 2628 def Test_popup_locate()
2623 CheckDefAndScriptFailure(['popup_locate("a", 20)'], ['E1013: Argument 1: type mismatch, expected number but got string', 'E1210: Number required for argument 1']) 2629 v9.CheckDefAndScriptFailure(['popup_locate("a", 20)'], ['E1013: Argument 1: type mismatch, expected number but got string', 'E1210: Number required for argument 1'])
2624 CheckDefAndScriptFailure(['popup_locate(10, "b")'], ['E1013: Argument 2: type mismatch, expected number but got string', 'E1210: Number required for argument 2']) 2630 v9.CheckDefAndScriptFailure(['popup_locate(10, "b")'], ['E1013: Argument 2: type mismatch, expected number but got string', 'E1210: Number required for argument 2'])
2625 enddef 2631 enddef
2626 2632
2627 def Test_popup_menu() 2633 def Test_popup_menu()
2628 CheckDefAndScriptFailure(['popup_menu({"a": 10}, {})'], ['E1013: Argument 1: type mismatch, expected string but got dict<number>', 'E1224: String, Number or List required for argument 1']) 2634 v9.CheckDefAndScriptFailure(['popup_menu({"a": 10}, {})'], ['E1013: Argument 1: type mismatch, expected string but got dict<number>', 'E1224: String, Number or List required for argument 1'])
2629 CheckDefAndScriptFailure(['popup_menu("a", [1, 2])'], ['E1013: Argument 2: type mismatch, expected dict<any> but got list<number>', 'E1206: Dictionary required for argument 2']) 2635 v9.CheckDefAndScriptFailure(['popup_menu("a", [1, 2])'], ['E1013: Argument 2: type mismatch, expected dict<any> but got list<number>', 'E1206: Dictionary required for argument 2'])
2630 enddef 2636 enddef
2631 2637
2632 def Test_popup_move() 2638 def Test_popup_move()
2633 CheckDefAndScriptFailure(['popup_move("x", {})'], ['E1013: Argument 1: type mismatch, expected number but got string', 'E1210: Number required for argument 1']) 2639 v9.CheckDefAndScriptFailure(['popup_move("x", {})'], ['E1013: Argument 1: type mismatch, expected number but got string', 'E1210: Number required for argument 1'])
2634 CheckDefAndScriptFailure(['popup_move(1, [])'], ['E1013: Argument 2: type mismatch, expected dict<any> but got list<unknown>', 'E1206: Dictionary required for argument 2']) 2640 v9.CheckDefAndScriptFailure(['popup_move(1, [])'], ['E1013: Argument 2: type mismatch, expected dict<any> but got list<unknown>', 'E1206: Dictionary required for argument 2'])
2635 enddef 2641 enddef
2636 2642
2637 def Test_popup_notification() 2643 def Test_popup_notification()
2638 CheckDefAndScriptFailure(['popup_notification({"a": 10}, {})'], ['E1013: Argument 1: type mismatch, expected string but got dict<number>', 'E1224: String, Number or List required for argument 1']) 2644 v9.CheckDefAndScriptFailure(['popup_notification({"a": 10}, {})'], ['E1013: Argument 1: type mismatch, expected string but got dict<number>', 'E1224: String, Number or List required for argument 1'])
2639 CheckDefAndScriptFailure(['popup_notification("a", [1, 2])'], ['E1013: Argument 2: type mismatch, expected dict<any> but got list<number>', 'E1206: Dictionary required for argument 2']) 2645 v9.CheckDefAndScriptFailure(['popup_notification("a", [1, 2])'], ['E1013: Argument 2: type mismatch, expected dict<any> but got list<number>', 'E1206: Dictionary required for argument 2'])
2640 enddef 2646 enddef
2641 2647
2642 def Test_popup_setoptions() 2648 def Test_popup_setoptions()
2643 CheckDefAndScriptFailure(['popup_setoptions("x", {})'], ['E1013: Argument 1: type mismatch, expected number but got string', 'E1210: Number required for argument 1']) 2649 v9.CheckDefAndScriptFailure(['popup_setoptions("x", {})'], ['E1013: Argument 1: type mismatch, expected number but got string', 'E1210: Number required for argument 1'])
2644 CheckDefAndScriptFailure(['popup_setoptions(1, [])'], ['E1013: Argument 2: type mismatch, expected dict<any> but got list<unknown>', 'E1206: Dictionary required for argument 2']) 2650 v9.CheckDefAndScriptFailure(['popup_setoptions(1, [])'], ['E1013: Argument 2: type mismatch, expected dict<any> but got list<unknown>', 'E1206: Dictionary required for argument 2'])
2645 enddef 2651 enddef
2646 2652
2647 def Test_popup_settext() 2653 def Test_popup_settext()
2648 CheckDefAndScriptFailure(['popup_settext("x", [])'], ['E1013: Argument 1: type mismatch, expected number but got string', 'E1210: Number required for argument 1']) 2654 v9.CheckDefAndScriptFailure(['popup_settext("x", [])'], ['E1013: Argument 1: type mismatch, expected number but got string', 'E1210: Number required for argument 1'])
2649 CheckDefAndScriptFailure(['popup_settext(1, 2)'], ['E1013: Argument 2: type mismatch, expected string but got number', 'E1222: String or List required for argument 2']) 2655 v9.CheckDefAndScriptFailure(['popup_settext(1, 2)'], ['E1013: Argument 2: type mismatch, expected string but got number', 'E1222: String or List required for argument 2'])
2650 enddef 2656 enddef
2651 2657
2652 def Test_popup_show() 2658 def Test_popup_show()
2653 CheckDefAndScriptFailure(['popup_show("a")'], ['E1013: Argument 1: type mismatch, expected number but got string', 'E1210: Number required for argument 1']) 2659 v9.CheckDefAndScriptFailure(['popup_show("a")'], ['E1013: Argument 1: type mismatch, expected number but got string', 'E1210: Number required for argument 1'])
2654 CheckDefAndScriptFailure(['popup_show(true)'], ['E1013: Argument 1: type mismatch, expected number but got bool', 'E1210: Number required for argument 1']) 2660 v9.CheckDefAndScriptFailure(['popup_show(true)'], ['E1013: Argument 1: type mismatch, expected number but got bool', 'E1210: Number required for argument 1'])
2655 enddef 2661 enddef
2656 2662
2657 def Test_prevnonblank() 2663 def Test_prevnonblank()
2658 CheckDefAndScriptFailure(['prevnonblank(null)'], ['E1013: Argument 1: type mismatch, expected string but got special', 'E1220: String or Number required for argument 1']) 2664 v9.CheckDefAndScriptFailure(['prevnonblank(null)'], ['E1013: Argument 1: type mismatch, expected string but got special', 'E1220: String or Number required for argument 1'])
2659 CheckDefExecAndScriptFailure(['prevnonblank("")'], 'E1209: Invalid value for a line number') 2665 v9.CheckDefExecAndScriptFailure(['prevnonblank("")'], 'E1209: Invalid value for a line number')
2660 assert_equal(0, prevnonblank(1)) 2666 assert_equal(0, prevnonblank(1))
2661 enddef 2667 enddef
2662 2668
2663 def Test_printf() 2669 def Test_printf()
2664 CheckDefAndScriptFailure(['printf([1])'], ['E1013: Argument 1: type mismatch, expected string but got list<number>', 'E1220: String or Number required for argument 1']) 2670 v9.CheckDefAndScriptFailure(['printf([1])'], ['E1013: Argument 1: type mismatch, expected string but got list<number>', 'E1220: String or Number required for argument 1'])
2665 printf(0x10)->assert_equal('16') 2671 printf(0x10)->assert_equal('16')
2666 assert_equal(" abc", "abc"->printf("%4s")) 2672 assert_equal(" abc", "abc"->printf("%4s"))
2667 enddef 2673 enddef
2668 2674
2669 def Test_prompt_getprompt() 2675 def Test_prompt_getprompt()
2670 if !has('channel') 2676 if !has('channel')
2671 CheckFeature channel 2677 CheckFeature channel
2672 else 2678 else
2673 CheckDefAndScriptFailure(['prompt_getprompt([])'], ['E1013: Argument 1: type mismatch, expected string but got list<unknown>', 'E1220: String or Number required for argument 1']) 2679 v9.CheckDefAndScriptFailure(['prompt_getprompt([])'], ['E1013: Argument 1: type mismatch, expected string but got list<unknown>', 'E1220: String or Number required for argument 1'])
2674 assert_equal('', prompt_getprompt('NonExistingBuf')) 2680 assert_equal('', prompt_getprompt('NonExistingBuf'))
2675 endif 2681 endif
2676 enddef 2682 enddef
2677 2683
2678 def Test_prompt_setcallback() 2684 def Test_prompt_setcallback()
2679 if !has('channel') 2685 if !has('channel')
2680 CheckFeature channel 2686 CheckFeature channel
2681 else 2687 else
2682 CheckDefAndScriptFailure(['prompt_setcallback(true, "1")'], ['E1013: Argument 1: type mismatch, expected string but got bool', 'E1220: String or Number required for argument 1']) 2688 v9.CheckDefAndScriptFailure(['prompt_setcallback(true, "1")'], ['E1013: Argument 1: type mismatch, expected string but got bool', 'E1220: String or Number required for argument 1'])
2683 endif 2689 endif
2684 enddef 2690 enddef
2685 2691
2686 def Test_prompt_setinterrupt() 2692 def Test_prompt_setinterrupt()
2687 if !has('channel') 2693 if !has('channel')
2688 CheckFeature channel 2694 CheckFeature channel
2689 else 2695 else
2690 CheckDefAndScriptFailure(['prompt_setinterrupt(true, "1")'], ['E1013: Argument 1: type mismatch, expected string but got bool', 'E1220: String or Number required for argument 1']) 2696 v9.CheckDefAndScriptFailure(['prompt_setinterrupt(true, "1")'], ['E1013: Argument 1: type mismatch, expected string but got bool', 'E1220: String or Number required for argument 1'])
2691 endif 2697 endif
2692 enddef 2698 enddef
2693 2699
2694 def Test_prompt_setprompt() 2700 def Test_prompt_setprompt()
2695 if !has('channel') 2701 if !has('channel')
2696 CheckFeature channel 2702 CheckFeature channel
2697 else 2703 else
2698 CheckDefAndScriptFailure(['prompt_setprompt([], "p")'], ['E1013: Argument 1: type mismatch, expected string but got list<unknown>', 'E1220: String or Number required for argument 1']) 2704 v9.CheckDefAndScriptFailure(['prompt_setprompt([], "p")'], ['E1013: Argument 1: type mismatch, expected string but got list<unknown>', 'E1220: String or Number required for argument 1'])
2699 CheckDefAndScriptFailure(['prompt_setprompt(1, [])'], ['E1013: Argument 2: type mismatch, expected string but got list<unknown>', 'E1174: String required for argument 2']) 2705 v9.CheckDefAndScriptFailure(['prompt_setprompt(1, [])'], ['E1013: Argument 2: type mismatch, expected string but got list<unknown>', 'E1174: String required for argument 2'])
2700 endif 2706 endif
2701 enddef 2707 enddef
2702 2708
2703 def Test_prop_add() 2709 def Test_prop_add()
2704 CheckDefAndScriptFailure(['prop_add("a", 2, {})'], ['E1013: Argument 1: type mismatch, expected number but got string', 'E1210: Number required for argument 1']) 2710 v9.CheckDefAndScriptFailure(['prop_add("a", 2, {})'], ['E1013: Argument 1: type mismatch, expected number but got string', 'E1210: Number required for argument 1'])
2705 CheckDefAndScriptFailure(['prop_add(1, "b", {})'], ['E1013: Argument 2: type mismatch, expected number but got string', 'E1210: Number required for argument 2']) 2711 v9.CheckDefAndScriptFailure(['prop_add(1, "b", {})'], ['E1013: Argument 2: type mismatch, expected number but got string', 'E1210: Number required for argument 2'])
2706 CheckDefAndScriptFailure(['prop_add(1, 2, [])'], ['E1013: Argument 3: type mismatch, expected dict<any> but got list<unknown>', 'E1206: Dictionary required for argument 3']) 2712 v9.CheckDefAndScriptFailure(['prop_add(1, 2, [])'], ['E1013: Argument 3: type mismatch, expected dict<any> but got list<unknown>', 'E1206: Dictionary required for argument 3'])
2707 enddef 2713 enddef
2708 2714
2709 def Test_prop_add_list() 2715 def Test_prop_add_list()
2710 CheckDefAndScriptFailure(['prop_add_list([], [])'], ['E1013: Argument 1: type mismatch, expected dict<any> but got list<unknown>', 'E1206: Dictionary required for argument 1']) 2716 v9.CheckDefAndScriptFailure(['prop_add_list([], [])'], ['E1013: Argument 1: type mismatch, expected dict<any> but got list<unknown>', 'E1206: Dictionary required for argument 1'])
2711 CheckDefAndScriptFailure(['prop_add_list({}, {})'], ['E1013: Argument 2: type mismatch, expected list<any> but got dict<unknown>', 'E1211: List required for argument 2']) 2717 v9.CheckDefAndScriptFailure(['prop_add_list({}, {})'], ['E1013: Argument 2: type mismatch, expected list<any> but got dict<unknown>', 'E1211: List required for argument 2'])
2712 enddef 2718 enddef
2713 2719
2714 def Test_prop_clear() 2720 def Test_prop_clear()
2715 CheckDefAndScriptFailure(['prop_clear("a")'], ['E1013: Argument 1: type mismatch, expected number but got string', 'E1210: Number required for argument 1']) 2721 v9.CheckDefAndScriptFailure(['prop_clear("a")'], ['E1013: Argument 1: type mismatch, expected number but got string', 'E1210: Number required for argument 1'])
2716 CheckDefAndScriptFailure(['prop_clear(1, "b")'], ['E1013: Argument 2: type mismatch, expected number but got string', 'E1210: Number required for argument 2']) 2722 v9.CheckDefAndScriptFailure(['prop_clear(1, "b")'], ['E1013: Argument 2: type mismatch, expected number but got string', 'E1210: Number required for argument 2'])
2717 CheckDefAndScriptFailure(['prop_clear(1, 2, [])'], ['E1013: Argument 3: type mismatch, expected dict<any> but got list<unknown>', 'E1206: Dictionary required for argument 3']) 2723 v9.CheckDefAndScriptFailure(['prop_clear(1, 2, [])'], ['E1013: Argument 3: type mismatch, expected dict<any> but got list<unknown>', 'E1206: Dictionary required for argument 3'])
2718 enddef 2724 enddef
2719 2725
2720 def Test_prop_find() 2726 def Test_prop_find()
2721 CheckDefAndScriptFailure(['prop_find([1, 2])'], ['E1013: Argument 1: type mismatch, expected dict<any> but got list<number>', 'E1206: Dictionary required for argument 1']) 2727 v9.CheckDefAndScriptFailure(['prop_find([1, 2])'], ['E1013: Argument 1: type mismatch, expected dict<any> but got list<number>', 'E1206: Dictionary required for argument 1'])
2722 CheckDefAndScriptFailure(['prop_find([1, 2], "k")'], ['E1013: Argument 1: type mismatch, expected dict<any> but got list<number>', 'E1206: Dictionary required for argument 1']) 2728 v9.CheckDefAndScriptFailure(['prop_find([1, 2], "k")'], ['E1013: Argument 1: type mismatch, expected dict<any> but got list<number>', 'E1206: Dictionary required for argument 1'])
2723 CheckDefAndScriptFailure(['prop_find({"a": 10}, ["a"])'], ['E1013: Argument 2: type mismatch, expected string but got list<string>', 'E1174: String required for argument 2']) 2729 v9.CheckDefAndScriptFailure(['prop_find({"a": 10}, ["a"])'], ['E1013: Argument 2: type mismatch, expected string but got list<string>', 'E1174: String required for argument 2'])
2724 assert_fails("prop_find({}, '')", 'E474:') 2730 assert_fails("prop_find({}, '')", 'E474:')
2725 enddef 2731 enddef
2726 2732
2727 def Test_prop_list() 2733 def Test_prop_list()
2728 CheckDefAndScriptFailure(['prop_list("x")'], ['E1013: Argument 1: type mismatch, expected number but got string', 'E1210: Number required for argument 1']) 2734 v9.CheckDefAndScriptFailure(['prop_list("x")'], ['E1013: Argument 1: type mismatch, expected number but got string', 'E1210: Number required for argument 1'])
2729 CheckDefAndScriptFailure(['prop_list(1, [])'], ['E1013: Argument 2: type mismatch, expected dict<any> but got list<unknown>', 'E1206: Dictionary required for argument 2']) 2735 v9.CheckDefAndScriptFailure(['prop_list(1, [])'], ['E1013: Argument 2: type mismatch, expected dict<any> but got list<unknown>', 'E1206: Dictionary required for argument 2'])
2730 enddef 2736 enddef
2731 2737
2732 def Test_prop_remove() 2738 def Test_prop_remove()
2733 CheckDefAndScriptFailure(['prop_remove([])'], ['E1013: Argument 1: type mismatch, expected dict<any> but got list<unknown>', 'E1206: Dictionary required for argument 1']) 2739 v9.CheckDefAndScriptFailure(['prop_remove([])'], ['E1013: Argument 1: type mismatch, expected dict<any> but got list<unknown>', 'E1206: Dictionary required for argument 1'])
2734 CheckDefAndScriptFailure(['prop_remove({}, "a")'], ['E1013: Argument 2: type mismatch, expected number but got string', 'E1210: Number required for argument 2']) 2740 v9.CheckDefAndScriptFailure(['prop_remove({}, "a")'], ['E1013: Argument 2: type mismatch, expected number but got string', 'E1210: Number required for argument 2'])
2735 CheckDefAndScriptFailure(['prop_remove({}, 1, "b")'], ['E1013: Argument 3: type mismatch, expected number but got string', 'E1210: Number required for argument 3']) 2741 v9.CheckDefAndScriptFailure(['prop_remove({}, 1, "b")'], ['E1013: Argument 3: type mismatch, expected number but got string', 'E1210: Number required for argument 3'])
2736 enddef 2742 enddef
2737 2743
2738 def Test_prop_type_add() 2744 def Test_prop_type_add()
2739 CheckDefAndScriptFailure(['prop_type_add({"a": 10}, "b")'], ['E1013: Argument 1: type mismatch, expected string but got dict<number>', 'E1174: String required for argument 1']) 2745 v9.CheckDefAndScriptFailure(['prop_type_add({"a": 10}, "b")'], ['E1013: Argument 1: type mismatch, expected string but got dict<number>', 'E1174: String required for argument 1'])
2740 CheckDefAndScriptFailure(['prop_type_add("a", "b")'], ['E1013: Argument 2: type mismatch, expected dict<any> but got string', 'E1206: Dictionary required for argument 2']) 2746 v9.CheckDefAndScriptFailure(['prop_type_add("a", "b")'], ['E1013: Argument 2: type mismatch, expected dict<any> but got string', 'E1206: Dictionary required for argument 2'])
2741 assert_fails("prop_type_add('', {highlight: 'Search'})", 'E474:') 2747 assert_fails("prop_type_add('', {highlight: 'Search'})", 'E474:')
2742 enddef 2748 enddef
2743 2749
2744 def Test_prop_type_change() 2750 def Test_prop_type_change()
2745 CheckDefAndScriptFailure(['prop_type_change({"a": 10}, "b")'], ['E1013: Argument 1: type mismatch, expected string but got dict<number>', 'E1174: String required for argument 1']) 2751 v9.CheckDefAndScriptFailure(['prop_type_change({"a": 10}, "b")'], ['E1013: Argument 1: type mismatch, expected string but got dict<number>', 'E1174: String required for argument 1'])
2746 CheckDefAndScriptFailure(['prop_type_change("a", "b")'], ['E1013: Argument 2: type mismatch, expected dict<any> but got string', 'E1206: Dictionary required for argument 2']) 2752 v9.CheckDefAndScriptFailure(['prop_type_change("a", "b")'], ['E1013: Argument 2: type mismatch, expected dict<any> but got string', 'E1206: Dictionary required for argument 2'])
2747 assert_fails("prop_type_change('', {highlight: 'Search'})", 'E474:') 2753 assert_fails("prop_type_change('', {highlight: 'Search'})", 'E474:')
2748 enddef 2754 enddef
2749 2755
2750 def Test_prop_type_delete() 2756 def Test_prop_type_delete()
2751 CheckDefAndScriptFailure(['prop_type_delete({"a": 10})'], ['E1013: Argument 1: type mismatch, expected string but got dict<number>', 'E1174: String required for argument 1']) 2757 v9.CheckDefAndScriptFailure(['prop_type_delete({"a": 10})'], ['E1013: Argument 1: type mismatch, expected string but got dict<number>', 'E1174: String required for argument 1'])
2752 CheckDefAndScriptFailure(['prop_type_delete({"a": 10}, "b")'], ['E1013: Argument 1: type mismatch, expected string but got dict<number>', 'E1174: String required for argument 1']) 2758 v9.CheckDefAndScriptFailure(['prop_type_delete({"a": 10}, "b")'], ['E1013: Argument 1: type mismatch, expected string but got dict<number>', 'E1174: String required for argument 1'])
2753 CheckDefAndScriptFailure(['prop_type_delete("a", "b")'], ['E1013: Argument 2: type mismatch, expected dict<any> but got string', 'E1206: Dictionary required for argument 2']) 2759 v9.CheckDefAndScriptFailure(['prop_type_delete("a", "b")'], ['E1013: Argument 2: type mismatch, expected dict<any> but got string', 'E1206: Dictionary required for argument 2'])
2754 assert_fails("prop_type_delete('')", 'E474:') 2760 assert_fails("prop_type_delete('')", 'E474:')
2755 enddef 2761 enddef
2756 2762
2757 def Test_prop_type_get() 2763 def Test_prop_type_get()
2758 CheckDefAndScriptFailure(['prop_type_get({"a": 10})'], ['E1013: Argument 1: type mismatch, expected string but got dict<number>', 'E1174: String required for argument 1']) 2764 v9.CheckDefAndScriptFailure(['prop_type_get({"a": 10})'], ['E1013: Argument 1: type mismatch, expected string but got dict<number>', 'E1174: String required for argument 1'])
2759 CheckDefAndScriptFailure(['prop_type_get({"a": 10}, "b")'], ['E1013: Argument 1: type mismatch, expected string but got dict<number>', 'E1174: String required for argument 1']) 2765 v9.CheckDefAndScriptFailure(['prop_type_get({"a": 10}, "b")'], ['E1013: Argument 1: type mismatch, expected string but got dict<number>', 'E1174: String required for argument 1'])
2760 CheckDefAndScriptFailure(['prop_type_get("a", "b")'], ['E1013: Argument 2: type mismatch, expected dict<any> but got string', 'E1206: Dictionary required for argument 2']) 2766 v9.CheckDefAndScriptFailure(['prop_type_get("a", "b")'], ['E1013: Argument 2: type mismatch, expected dict<any> but got string', 'E1206: Dictionary required for argument 2'])
2761 assert_fails("prop_type_get('')", 'E474:') 2767 assert_fails("prop_type_get('')", 'E474:')
2762 enddef 2768 enddef
2763 2769
2764 def Test_prop_type_list() 2770 def Test_prop_type_list()
2765 CheckDefAndScriptFailure(['prop_type_list(["a"])'], ['E1013: Argument 1: type mismatch, expected dict<any> but got list<string>', 'E1206: Dictionary required for argument 1']) 2771 v9.CheckDefAndScriptFailure(['prop_type_list(["a"])'], ['E1013: Argument 1: type mismatch, expected dict<any> but got list<string>', 'E1206: Dictionary required for argument 1'])
2766 CheckDefAndScriptFailure(['prop_type_list(2)'], ['E1013: Argument 1: type mismatch, expected dict<any> but got number', 'E1206: Dictionary required for argument 1']) 2772 v9.CheckDefAndScriptFailure(['prop_type_list(2)'], ['E1013: Argument 1: type mismatch, expected dict<any> but got number', 'E1206: Dictionary required for argument 1'])
2767 enddef 2773 enddef
2768 2774
2769 def Test_py3eval() 2775 def Test_py3eval()
2770 if !has('python3') 2776 if !has('python3')
2771 CheckFeature python3 2777 CheckFeature python3
2772 endif 2778 endif
2773 CheckDefAndScriptFailure(['py3eval([2])'], ['E1013: Argument 1: type mismatch, expected string but got list<number>', 'E1174: String required for argument 1']) 2779 v9.CheckDefAndScriptFailure(['py3eval([2])'], ['E1013: Argument 1: type mismatch, expected string but got list<number>', 'E1174: String required for argument 1'])
2774 enddef 2780 enddef
2775 2781
2776 def Test_pyeval() 2782 def Test_pyeval()
2777 if !has('python') 2783 if !has('python')
2778 CheckFeature python 2784 CheckFeature python
2779 endif 2785 endif
2780 CheckDefAndScriptFailure(['pyeval([2])'], ['E1013: Argument 1: type mismatch, expected string but got list<number>', 'E1174: String required for argument 1']) 2786 v9.CheckDefAndScriptFailure(['pyeval([2])'], ['E1013: Argument 1: type mismatch, expected string but got list<number>', 'E1174: String required for argument 1'])
2781 enddef 2787 enddef
2782 2788
2783 def Test_pyxeval() 2789 def Test_pyxeval()
2784 if !has('python') && !has('python3') 2790 if !has('python') && !has('python3')
2785 CheckFeature python 2791 CheckFeature python
2786 endif 2792 endif
2787 CheckDefAndScriptFailure(['pyxeval([2])'], ['E1013: Argument 1: type mismatch, expected string but got list<number>', 'E1174: String required for argument 1']) 2793 v9.CheckDefAndScriptFailure(['pyxeval([2])'], ['E1013: Argument 1: type mismatch, expected string but got list<number>', 'E1174: String required for argument 1'])
2788 enddef 2794 enddef
2789 2795
2790 def Test_rand() 2796 def Test_rand()
2791 CheckDefAndScriptFailure(['rand(10)'], ['E1013: Argument 1: type mismatch, expected list<number> but got number', 'E1211: List required for argument 1']) 2797 v9.CheckDefAndScriptFailure(['rand(10)'], ['E1013: Argument 1: type mismatch, expected list<number> but got number', 'E1211: List required for argument 1'])
2792 CheckDefFailure(['rand(["a"])'], 'E1013: Argument 1: type mismatch, expected list<number> but got list<string>') 2798 v9.CheckDefFailure(['rand(["a"])'], 'E1013: Argument 1: type mismatch, expected list<number> but got list<string>')
2793 assert_true(rand() >= 0) 2799 assert_true(rand() >= 0)
2794 assert_true(rand(srand()) >= 0) 2800 assert_true(rand(srand()) >= 0)
2795 enddef 2801 enddef
2796 2802
2797 def Test_range() 2803 def Test_range()
2798 CheckDefAndScriptFailure(['range("a")'], ['E1013: Argument 1: type mismatch, expected number but got string', 'E1210: Number required for argument 1']) 2804 v9.CheckDefAndScriptFailure(['range("a")'], ['E1013: Argument 1: type mismatch, expected number but got string', 'E1210: Number required for argument 1'])
2799 CheckDefAndScriptFailure(['range(10, "b")'], ['E1013: Argument 2: type mismatch, expected number but got string', 'E1210: Number required for argument 2']) 2805 v9.CheckDefAndScriptFailure(['range(10, "b")'], ['E1013: Argument 2: type mismatch, expected number but got string', 'E1210: Number required for argument 2'])
2800 CheckDefAndScriptFailure(['range(10, 20, "c")'], ['E1013: Argument 3: type mismatch, expected number but got string', 'E1210: Number required for argument 3']) 2806 v9.CheckDefAndScriptFailure(['range(10, 20, "c")'], ['E1013: Argument 3: type mismatch, expected number but got string', 'E1210: Number required for argument 3'])
2801 enddef 2807 enddef
2802 2808
2803 def Test_readdir() 2809 def Test_readdir()
2804 eval expand('sautest')->readdir((e) => e[0] !=# '.') 2810 eval expand('sautest')->readdir((e) => e[0] !=# '.')
2805 eval expand('sautest')->readdirex((e) => e.name[0] !=# '.') 2811 eval expand('sautest')->readdirex((e) => e.name[0] !=# '.')
2806 CheckDefAndScriptFailure(['readdir(["a"])'], ['E1013: Argument 1: type mismatch, expected string but got list<string>', 'E1174: String required for argument 1']) 2812 v9.CheckDefAndScriptFailure(['readdir(["a"])'], ['E1013: Argument 1: type mismatch, expected string but got list<string>', 'E1174: String required for argument 1'])
2807 CheckDefAndScriptFailure(['readdir("a", "1", [3])'], ['E1013: Argument 3: type mismatch, expected dict<any> but got list<number>', 'E1206: Dictionary required for argument 3']) 2813 v9.CheckDefAndScriptFailure(['readdir("a", "1", [3])'], ['E1013: Argument 3: type mismatch, expected dict<any> but got list<number>', 'E1206: Dictionary required for argument 3'])
2808 if has('unix') 2814 if has('unix')
2809 # only fails on Unix-like systems 2815 # only fails on Unix-like systems
2810 assert_fails('readdir("")', 'E484: Can''t open file') 2816 assert_fails('readdir("")', 'E484: Can''t open file')
2811 endif 2817 endif
2812 enddef 2818 enddef
2813 2819
2814 def Test_readdirex() 2820 def Test_readdirex()
2815 CheckDefAndScriptFailure(['readdirex(["a"])'], ['E1013: Argument 1: type mismatch, expected string but got list<string>', 'E1174: String required for argument 1']) 2821 v9.CheckDefAndScriptFailure(['readdirex(["a"])'], ['E1013: Argument 1: type mismatch, expected string but got list<string>', 'E1174: String required for argument 1'])
2816 CheckDefAndScriptFailure(['readdirex("a", "1", [3])'], ['E1013: Argument 3: type mismatch, expected dict<any> but got list<number>', 'E1206: Dictionary required for argument 3']) 2822 v9.CheckDefAndScriptFailure(['readdirex("a", "1", [3])'], ['E1013: Argument 3: type mismatch, expected dict<any> but got list<number>', 'E1206: Dictionary required for argument 3'])
2817 if has('unix') 2823 if has('unix')
2818 # only fails on Unix-like systems 2824 # only fails on Unix-like systems
2819 assert_fails('readdirex("")', 'E484: Can''t open file') 2825 assert_fails('readdirex("")', 'E484: Can''t open file')
2820 endif 2826 endif
2821 enddef 2827 enddef
2827 assert_equal(blob, read) 2833 assert_equal(blob, read)
2828 2834
2829 var lines =<< trim END 2835 var lines =<< trim END
2830 var read: list<string> = readblob('Xreadblob') 2836 var read: list<string> = readblob('Xreadblob')
2831 END 2837 END
2832 CheckDefAndScriptFailure(lines, 'E1012: Type mismatch; expected list<string> but got blob', 1) 2838 v9.CheckDefAndScriptFailure(lines, 'E1012: Type mismatch; expected list<string> but got blob', 1)
2833 CheckDefExecAndScriptFailure(['readblob("")'], 'E484: Can''t open file <empty>') 2839 v9.CheckDefExecAndScriptFailure(['readblob("")'], 'E484: Can''t open file <empty>')
2834 delete('Xreadblob') 2840 delete('Xreadblob')
2835 enddef 2841 enddef
2836 2842
2837 def Test_readfile() 2843 def Test_readfile()
2838 var text = ['aaa', 'bbb', 'ccc'] 2844 var text = ['aaa', 'bbb', 'ccc']
2841 assert_equal(text, read) 2847 assert_equal(text, read)
2842 2848
2843 var lines =<< trim END 2849 var lines =<< trim END
2844 var read: dict<string> = readfile('Xreadfile') 2850 var read: dict<string> = readfile('Xreadfile')
2845 END 2851 END
2846 CheckDefAndScriptFailure(lines, 'E1012: Type mismatch; expected dict<string> but got list<string>', 1) 2852 v9.CheckDefAndScriptFailure(lines, 'E1012: Type mismatch; expected dict<string> but got list<string>', 1)
2847 delete('Xreadfile') 2853 delete('Xreadfile')
2848 2854
2849 CheckDefAndScriptFailure(['readfile("a", 0z10)'], ['E1013: Argument 2: type mismatch, expected string but got blob', 'E1174: String required for argument 2']) 2855 v9.CheckDefAndScriptFailure(['readfile("a", 0z10)'], ['E1013: Argument 2: type mismatch, expected string but got blob', 'E1174: String required for argument 2'])
2850 CheckDefAndScriptFailure(['readfile("a", "b", "c")'], ['E1013: Argument 3: type mismatch, expected number but got string', 'E1210: Number required for argument 3']) 2856 v9.CheckDefAndScriptFailure(['readfile("a", "b", "c")'], ['E1013: Argument 3: type mismatch, expected number but got string', 'E1210: Number required for argument 3'])
2851 CheckDefExecAndScriptFailure(['readfile("")'], 'E1175: Non-empty string required for argument 1') 2857 v9.CheckDefExecAndScriptFailure(['readfile("")'], 'E1175: Non-empty string required for argument 1')
2852 enddef 2858 enddef
2853 2859
2854 def Test_reduce() 2860 def Test_reduce()
2855 CheckDefAndScriptFailure(['reduce({a: 10}, "1")'], ['E1013: Argument 1: type mismatch, expected list<any> but got dict<number>', 'E1252: String, List or Blob required for argument 1']) 2861 v9.CheckDefAndScriptFailure(['reduce({a: 10}, "1")'], ['E1013: Argument 1: type mismatch, expected list<any> but got dict<number>', 'E1252: String, List or Blob required for argument 1'])
2856 assert_equal(6, [1, 2, 3]->reduce((r, c) => r + c, 0)) 2862 assert_equal(6, [1, 2, 3]->reduce((r, c) => r + c, 0))
2857 assert_equal(11, 0z0506->reduce((r, c) => r + c, 0)) 2863 assert_equal(11, 0z0506->reduce((r, c) => r + c, 0))
2858 enddef 2864 enddef
2859 2865
2860 def Test_reltime() 2866 def Test_reltime()
2861 CheckFeature reltime 2867 CheckFeature reltime
2862 2868
2863 CheckDefExecAndScriptFailure(['[]->reltime()'], 'E474:') 2869 v9.CheckDefExecAndScriptFailure(['[]->reltime()'], 'E474:')
2864 CheckDefExecAndScriptFailure(['[]->reltime([])'], 'E474:') 2870 v9.CheckDefExecAndScriptFailure(['[]->reltime([])'], 'E474:')
2865 2871
2866 CheckDefAndScriptFailure(['reltime("x")'], ['E1013: Argument 1: type mismatch, expected list<number> but got string', 'E1211: List required for argument 1']) 2872 v9.CheckDefAndScriptFailure(['reltime("x")'], ['E1013: Argument 1: type mismatch, expected list<number> but got string', 'E1211: List required for argument 1'])
2867 CheckDefFailure(['reltime(["x", "y"])'], 'E1013: Argument 1: type mismatch, expected list<number> but got list<string>') 2873 v9.CheckDefFailure(['reltime(["x", "y"])'], 'E1013: Argument 1: type mismatch, expected list<number> but got list<string>')
2868 CheckDefAndScriptFailure(['reltime([1, 2], 10)'], ['E1013: Argument 2: type mismatch, expected list<number> but got number', 'E1211: List required for argument 2']) 2874 v9.CheckDefAndScriptFailure(['reltime([1, 2], 10)'], ['E1013: Argument 2: type mismatch, expected list<number> but got number', 'E1211: List required for argument 2'])
2869 CheckDefFailure(['reltime([1, 2], ["a", "b"])'], 'E1013: Argument 2: type mismatch, expected list<number> but got list<string>') 2875 v9.CheckDefFailure(['reltime([1, 2], ["a", "b"])'], 'E1013: Argument 2: type mismatch, expected list<number> but got list<string>')
2870 var start: list<any> = reltime() 2876 var start: list<any> = reltime()
2871 assert_true(type(reltime(start)) == v:t_list) 2877 assert_true(type(reltime(start)) == v:t_list)
2872 var end: list<any> = reltime() 2878 var end: list<any> = reltime()
2873 assert_true(type(reltime(start, end)) == v:t_list) 2879 assert_true(type(reltime(start, end)) == v:t_list)
2874 enddef 2880 enddef
2875 2881
2876 def Test_reltimefloat() 2882 def Test_reltimefloat()
2877 CheckFeature reltime 2883 CheckFeature reltime
2878 2884
2879 CheckDefExecAndScriptFailure(['[]->reltimefloat()'], 'E474:') 2885 v9.CheckDefExecAndScriptFailure(['[]->reltimefloat()'], 'E474:')
2880 2886
2881 CheckDefAndScriptFailure(['reltimefloat("x")'], ['E1013: Argument 1: type mismatch, expected list<number> but got string', 'E1211: List required for argument 1']) 2887 v9.CheckDefAndScriptFailure(['reltimefloat("x")'], ['E1013: Argument 1: type mismatch, expected list<number> but got string', 'E1211: List required for argument 1'])
2882 CheckDefFailure(['reltimefloat([1.1])'], 'E1013: Argument 1: type mismatch, expected list<number> but got list<float>') 2888 v9.CheckDefFailure(['reltimefloat([1.1])'], 'E1013: Argument 1: type mismatch, expected list<number> but got list<float>')
2883 assert_true(type(reltimefloat(reltime())) == v:t_float) 2889 assert_true(type(reltimefloat(reltime())) == v:t_float)
2884 enddef 2890 enddef
2885 2891
2886 def Test_reltimestr() 2892 def Test_reltimestr()
2887 CheckFeature reltime 2893 CheckFeature reltime
2888 2894
2889 CheckDefExecAndScriptFailure(['[]->reltimestr()'], 'E474:') 2895 v9.CheckDefExecAndScriptFailure(['[]->reltimestr()'], 'E474:')
2890 2896
2891 CheckDefAndScriptFailure(['reltimestr(true)'], ['E1013: Argument 1: type mismatch, expected list<number> but got bool', 'E1211: List required for argument 1']) 2897 v9.CheckDefAndScriptFailure(['reltimestr(true)'], ['E1013: Argument 1: type mismatch, expected list<number> but got bool', 'E1211: List required for argument 1'])
2892 CheckDefFailure(['reltimestr([true])'], 'E1013: Argument 1: type mismatch, expected list<number> but got list<bool>') 2898 v9.CheckDefFailure(['reltimestr([true])'], 'E1013: Argument 1: type mismatch, expected list<number> but got list<bool>')
2893 assert_true(type(reltimestr(reltime())) == v:t_string) 2899 assert_true(type(reltimestr(reltime())) == v:t_string)
2894 enddef 2900 enddef
2895 2901
2896 def Test_remote_expr() 2902 def Test_remote_expr()
2897 CheckFeature clientserver 2903 CheckFeature clientserver
2898 CheckEnv DISPLAY 2904 CheckEnv DISPLAY
2899 CheckDefAndScriptFailure(['remote_expr(1, "b")'], ['E1013: Argument 1: type mismatch, expected string but got number', 'E1174: String required for argument 1']) 2905 v9.CheckDefAndScriptFailure(['remote_expr(1, "b")'], ['E1013: Argument 1: type mismatch, expected string but got number', 'E1174: String required for argument 1'])
2900 CheckDefAndScriptFailure(['remote_expr("a", 2)'], ['E1013: Argument 2: type mismatch, expected string but got number', 'E1174: String required for argument 2']) 2906 v9.CheckDefAndScriptFailure(['remote_expr("a", 2)'], ['E1013: Argument 2: type mismatch, expected string but got number', 'E1174: String required for argument 2'])
2901 CheckDefAndScriptFailure(['remote_expr("a", "b", 3)'], ['E1013: Argument 3: type mismatch, expected string but got number', 'E1174: String required for argument 3']) 2907 v9.CheckDefAndScriptFailure(['remote_expr("a", "b", 3)'], ['E1013: Argument 3: type mismatch, expected string but got number', 'E1174: String required for argument 3'])
2902 CheckDefAndScriptFailure(['remote_expr("a", "b", "c", "d")'], ['E1013: Argument 4: type mismatch, expected number but got string', 'E1210: Number required for argument 4']) 2908 v9.CheckDefAndScriptFailure(['remote_expr("a", "b", "c", "d")'], ['E1013: Argument 4: type mismatch, expected number but got string', 'E1210: Number required for argument 4'])
2903 CheckDefExecAndScriptFailure(['remote_expr("", "")'], 'E241: Unable to send to ') 2909 v9.CheckDefExecAndScriptFailure(['remote_expr("", "")'], 'E241: Unable to send to ')
2904 enddef 2910 enddef
2905 2911
2906 def Test_remote_foreground() 2912 def Test_remote_foreground()
2907 CheckFeature clientserver 2913 CheckFeature clientserver
2908 # remote_foreground() doesn't fail on MS-Windows 2914 # remote_foreground() doesn't fail on MS-Windows
2909 CheckNotMSWindows 2915 CheckNotMSWindows
2910 CheckEnv DISPLAY 2916 CheckEnv DISPLAY
2911 2917
2912 CheckDefAndScriptFailure(['remote_foreground(10)'], ['E1013: Argument 1: type mismatch, expected string but got number', 'E1174: String required for argument 1']) 2918 v9.CheckDefAndScriptFailure(['remote_foreground(10)'], ['E1013: Argument 1: type mismatch, expected string but got number', 'E1174: String required for argument 1'])
2913 assert_fails('remote_foreground("NonExistingServer")', 'E241:') 2919 assert_fails('remote_foreground("NonExistingServer")', 'E241:')
2914 assert_fails('remote_foreground("")', 'E241:') 2920 assert_fails('remote_foreground("")', 'E241:')
2915 enddef 2921 enddef
2916 2922
2917 def Test_remote_peek() 2923 def Test_remote_peek()
2918 CheckFeature clientserver 2924 CheckFeature clientserver
2919 CheckEnv DISPLAY 2925 CheckEnv DISPLAY
2920 CheckDefAndScriptFailure(['remote_peek(0z10)'], ['E1013: Argument 1: type mismatch, expected string but got blob', 'E1174: String required for argument 1']) 2926 v9.CheckDefAndScriptFailure(['remote_peek(0z10)'], ['E1013: Argument 1: type mismatch, expected string but got blob', 'E1174: String required for argument 1'])
2921 CheckDefAndScriptFailure(['remote_peek("a5b6c7", [1])'], ['E1013: Argument 2: type mismatch, expected string but got list<number>', 'E1174: String required for argument 2']) 2927 v9.CheckDefAndScriptFailure(['remote_peek("a5b6c7", [1])'], ['E1013: Argument 2: type mismatch, expected string but got list<number>', 'E1174: String required for argument 2'])
2922 CheckDefExecAndScriptFailure(['remote_peek("")'], 'E573: Invalid server id used') 2928 v9.CheckDefExecAndScriptFailure(['remote_peek("")'], 'E573: Invalid server id used')
2923 enddef 2929 enddef
2924 2930
2925 def Test_remote_read() 2931 def Test_remote_read()
2926 CheckFeature clientserver 2932 CheckFeature clientserver
2927 CheckEnv DISPLAY 2933 CheckEnv DISPLAY
2928 CheckDefAndScriptFailure(['remote_read(1)'], ['E1013: Argument 1: type mismatch, expected string but got number', 'E1174: String required for argument 1']) 2934 v9.CheckDefAndScriptFailure(['remote_read(1)'], ['E1013: Argument 1: type mismatch, expected string but got number', 'E1174: String required for argument 1'])
2929 CheckDefAndScriptFailure(['remote_read("a", "x")'], ['E1013: Argument 2: type mismatch, expected number but got string', 'E1210: Number required for argument 2']) 2935 v9.CheckDefAndScriptFailure(['remote_read("a", "x")'], ['E1013: Argument 2: type mismatch, expected number but got string', 'E1210: Number required for argument 2'])
2930 CheckDefExecAndScriptFailure(['remote_read("")'], 'E573: Invalid server id used') 2936 v9.CheckDefExecAndScriptFailure(['remote_read("")'], 'E573: Invalid server id used')
2931 enddef 2937 enddef
2932 2938
2933 def Test_remote_send() 2939 def Test_remote_send()
2934 CheckFeature clientserver 2940 CheckFeature clientserver
2935 CheckEnv DISPLAY 2941 CheckEnv DISPLAY
2936 CheckDefAndScriptFailure(['remote_send(1, "b")'], ['E1013: Argument 1: type mismatch, expected string but got number', 'E1174: String required for argument 1']) 2942 v9.CheckDefAndScriptFailure(['remote_send(1, "b")'], ['E1013: Argument 1: type mismatch, expected string but got number', 'E1174: String required for argument 1'])
2937 CheckDefAndScriptFailure(['remote_send("a", 2)'], ['E1013: Argument 2: type mismatch, expected string but got number', 'E1174: String required for argument 2']) 2943 v9.CheckDefAndScriptFailure(['remote_send("a", 2)'], ['E1013: Argument 2: type mismatch, expected string but got number', 'E1174: String required for argument 2'])
2938 CheckDefAndScriptFailure(['remote_send("a", "b", 3)'], ['E1013: Argument 3: type mismatch, expected string but got number', 'E1174: String required for argument 3']) 2944 v9.CheckDefAndScriptFailure(['remote_send("a", "b", 3)'], ['E1013: Argument 3: type mismatch, expected string but got number', 'E1174: String required for argument 3'])
2939 assert_fails('remote_send("", "")', 'E241:') 2945 assert_fails('remote_send("", "")', 'E241:')
2940 enddef 2946 enddef
2941 2947
2942 def Test_remote_startserver() 2948 def Test_remote_startserver()
2943 CheckFeature clientserver 2949 CheckFeature clientserver
2944 CheckEnv DISPLAY 2950 CheckEnv DISPLAY
2945 CheckDefAndScriptFailure(['remote_startserver({})'], ['E1013: Argument 1: type mismatch, expected string but got dict<unknown>', 'E1174: String required for argument 1']) 2951 v9.CheckDefAndScriptFailure(['remote_startserver({})'], ['E1013: Argument 1: type mismatch, expected string but got dict<unknown>', 'E1174: String required for argument 1'])
2946 enddef 2952 enddef
2947 2953
2948 def Test_remove_const_list() 2954 def Test_remove_const_list()
2949 var l: list<number> = [1, 2, 3, 4] 2955 var l: list<number> = [1, 2, 3, 4]
2950 assert_equal([1, 2], remove(l, 0, 1)) 2956 assert_equal([1, 2], remove(l, 0, 1))
2951 assert_equal([3, 4], l) 2957 assert_equal([3, 4], l)
2952 enddef 2958 enddef
2953 2959
2954 def Test_remove() 2960 def Test_remove()
2955 CheckDefAndScriptFailure(['remove("a", 1)'], ['E1013: Argument 1: type mismatch, expected list<any> but got string', 'E1228: List, Dictionary or Blob required for argument 1']) 2961 v9.CheckDefAndScriptFailure(['remove("a", 1)'], ['E1013: Argument 1: type mismatch, expected list<any> but got string', 'E1228: List, Dictionary or Blob required for argument 1'])
2956 CheckDefAndScriptFailure(['remove([], "b")'], ['E1013: Argument 2: type mismatch, expected number but got string', 'E1210: Number required for argument 2']) 2962 v9.CheckDefAndScriptFailure(['remove([], "b")'], ['E1013: Argument 2: type mismatch, expected number but got string', 'E1210: Number required for argument 2'])
2957 CheckDefAndScriptFailure(['remove([], 1, "c")'], ['E1013: Argument 3: type mismatch, expected number but got string', 'E1210: Number required for argument 3']) 2963 v9.CheckDefAndScriptFailure(['remove([], 1, "c")'], ['E1013: Argument 3: type mismatch, expected number but got string', 'E1210: Number required for argument 3'])
2958 CheckDefAndScriptFailure(['remove({}, 1.1)'], ['E1013: Argument 2: type mismatch, expected string but got float', 'E1220: String or Number required for argument 2']) 2964 v9.CheckDefAndScriptFailure(['remove({}, 1.1)'], ['E1013: Argument 2: type mismatch, expected string but got float', 'E1220: String or Number required for argument 2'])
2959 CheckDefAndScriptFailure(['remove(0z10, "b")'], ['E1013: Argument 2: type mismatch, expected number but got string', 'E1210: Number required for argument 2']) 2965 v9.CheckDefAndScriptFailure(['remove(0z10, "b")'], ['E1013: Argument 2: type mismatch, expected number but got string', 'E1210: Number required for argument 2'])
2960 CheckDefAndScriptFailure(['remove(0z20, 1, "c")'], ['E1013: Argument 3: type mismatch, expected number but got string', 'E1210: Number required for argument 3']) 2966 v9.CheckDefAndScriptFailure(['remove(0z20, 1, "c")'], ['E1013: Argument 3: type mismatch, expected number but got string', 'E1210: Number required for argument 3'])
2961 var l: any = [1, 2, 3, 4] 2967 var l: any = [1, 2, 3, 4]
2962 remove(l, 1) 2968 remove(l, 1)
2963 assert_equal([1, 3, 4], l) 2969 assert_equal([1, 3, 4], l)
2964 remove(l, 0, 1) 2970 remove(l, 0, 1)
2965 assert_equal([4], l) 2971 assert_equal([4], l)
2984 endfor 2990 endfor
2985 res->assert_equal(3) 2991 res->assert_equal(3)
2986 enddef 2992 enddef
2987 2993
2988 def Test_rename() 2994 def Test_rename()
2989 CheckDefAndScriptFailure(['rename(1, "b")'], ['E1013: Argument 1: type mismatch, expected string but got number', 'E1174: String required for argument 1']) 2995 v9.CheckDefAndScriptFailure(['rename(1, "b")'], ['E1013: Argument 1: type mismatch, expected string but got number', 'E1174: String required for argument 1'])
2990 CheckDefAndScriptFailure(['rename("a", 2)'], ['E1013: Argument 2: type mismatch, expected string but got number', 'E1174: String required for argument 2']) 2996 v9.CheckDefAndScriptFailure(['rename("a", 2)'], ['E1013: Argument 2: type mismatch, expected string but got number', 'E1174: String required for argument 2'])
2991 rename('', '')->assert_equal(0) 2997 rename('', '')->assert_equal(0)
2992 enddef 2998 enddef
2993 2999
2994 def Test_repeat() 3000 def Test_repeat()
2995 CheckDefAndScriptFailure(['repeat(1.1, 2)'], ['E1013: Argument 1: type mismatch, expected string but got float', 'E1224: String, Number or List required for argument 1']) 3001 v9.CheckDefAndScriptFailure(['repeat(1.1, 2)'], ['E1013: Argument 1: type mismatch, expected string but got float', 'E1224: String, Number or List required for argument 1'])
2996 CheckDefAndScriptFailure(['repeat({a: 10}, 2)'], ['E1013: Argument 1: type mismatch, expected string but got dict<', 'E1224: String, Number or List required for argument 1']) 3002 v9.CheckDefAndScriptFailure(['repeat({a: 10}, 2)'], ['E1013: Argument 1: type mismatch, expected string but got dict<', 'E1224: String, Number or List required for argument 1'])
2997 var lines =<< trim END 3003 var lines =<< trim END
2998 assert_equal('aaa', repeat('a', 3)) 3004 assert_equal('aaa', repeat('a', 3))
2999 assert_equal('111', repeat(1, 3)) 3005 assert_equal('111', repeat(1, 3))
3000 assert_equal([1, 1, 1], repeat([1], 3)) 3006 assert_equal([1, 1, 1], repeat([1], 3))
3001 var s = '-' 3007 var s = '-'
3002 s ..= repeat(5, 3) 3008 s ..= repeat(5, 3)
3003 assert_equal('-555', s) 3009 assert_equal('-555', s)
3004 END 3010 END
3005 CheckDefAndScriptSuccess(lines) 3011 v9.CheckDefAndScriptSuccess(lines)
3006 enddef 3012 enddef
3007 3013
3008 def Test_resolve() 3014 def Test_resolve()
3009 CheckDefAndScriptFailure(['resolve([])'], ['E1013: Argument 1: type mismatch, expected string but got list<unknown>', 'E1174: String required for argument 1']) 3015 v9.CheckDefAndScriptFailure(['resolve([])'], ['E1013: Argument 1: type mismatch, expected string but got list<unknown>', 'E1174: String required for argument 1'])
3010 assert_equal('SomeFile', resolve('SomeFile')) 3016 assert_equal('SomeFile', resolve('SomeFile'))
3011 resolve('')->assert_equal('') 3017 resolve('')->assert_equal('')
3012 enddef 3018 enddef
3013 3019
3014 def Test_reverse() 3020 def Test_reverse()
3015 CheckDefAndScriptFailure(['reverse(10)'], ['E1013: Argument 1: type mismatch, expected list<any> but got number', 'E1226: List or Blob required for argument 1']) 3021 v9.CheckDefAndScriptFailure(['reverse(10)'], ['E1013: Argument 1: type mismatch, expected list<any> but got number', 'E1226: List or Blob required for argument 1'])
3016 CheckDefAndScriptFailure(['reverse("abc")'], ['E1013: Argument 1: type mismatch, expected list<any> but got string', 'E1226: List or Blob required for argument 1']) 3022 v9.CheckDefAndScriptFailure(['reverse("abc")'], ['E1013: Argument 1: type mismatch, expected list<any> but got string', 'E1226: List or Blob required for argument 1'])
3017 enddef 3023 enddef
3018 3024
3019 def Test_reverse_return_type() 3025 def Test_reverse_return_type()
3020 var l = reverse([1, 2, 3]) 3026 var l = reverse([1, 2, 3])
3021 var res = 0 3027 var res = 0
3027 3033
3028 def Test_rubyeval() 3034 def Test_rubyeval()
3029 if !has('ruby') 3035 if !has('ruby')
3030 CheckFeature ruby 3036 CheckFeature ruby
3031 endif 3037 endif
3032 CheckDefAndScriptFailure(['rubyeval([2])'], ['E1013: Argument 1: type mismatch, expected string but got list<number>', 'E1174: String required for argument 1']) 3038 v9.CheckDefAndScriptFailure(['rubyeval([2])'], ['E1013: Argument 1: type mismatch, expected string but got list<number>', 'E1174: String required for argument 1'])
3033 enddef 3039 enddef
3034 3040
3035 def Test_screenattr() 3041 def Test_screenattr()
3036 CheckDefAndScriptFailure(['screenattr("x", 1)'], ['E1013: Argument 1: type mismatch, expected number but got string', 'E1210: Number required for argument 1']) 3042 v9.CheckDefAndScriptFailure(['screenattr("x", 1)'], ['E1013: Argument 1: type mismatch, expected number but got string', 'E1210: Number required for argument 1'])
3037 CheckDefAndScriptFailure(['screenattr(1, "x")'], ['E1013: Argument 2: type mismatch, expected number but got string', 'E1210: Number required for argument 2']) 3043 v9.CheckDefAndScriptFailure(['screenattr(1, "x")'], ['E1013: Argument 2: type mismatch, expected number but got string', 'E1210: Number required for argument 2'])
3038 enddef 3044 enddef
3039 3045
3040 def Test_screenchar() 3046 def Test_screenchar()
3041 CheckDefAndScriptFailure(['screenchar("x", 1)'], ['E1013: Argument 1: type mismatch, expected number but got string', 'E1210: Number required for argument 1']) 3047 v9.CheckDefAndScriptFailure(['screenchar("x", 1)'], ['E1013: Argument 1: type mismatch, expected number but got string', 'E1210: Number required for argument 1'])
3042 CheckDefAndScriptFailure(['screenchar(1, "x")'], ['E1013: Argument 2: type mismatch, expected number but got string', 'E1210: Number required for argument 2']) 3048 v9.CheckDefAndScriptFailure(['screenchar(1, "x")'], ['E1013: Argument 2: type mismatch, expected number but got string', 'E1210: Number required for argument 2'])
3043 enddef 3049 enddef
3044 3050
3045 def Test_screenchars() 3051 def Test_screenchars()
3046 CheckDefAndScriptFailure(['screenchars("x", 1)'], ['E1013: Argument 1: type mismatch, expected number but got string', 'E1210: Number required for argument 1']) 3052 v9.CheckDefAndScriptFailure(['screenchars("x", 1)'], ['E1013: Argument 1: type mismatch, expected number but got string', 'E1210: Number required for argument 1'])
3047 CheckDefAndScriptFailure(['screenchars(1, "x")'], ['E1013: Argument 2: type mismatch, expected number but got string', 'E1210: Number required for argument 2']) 3053 v9.CheckDefAndScriptFailure(['screenchars(1, "x")'], ['E1013: Argument 2: type mismatch, expected number but got string', 'E1210: Number required for argument 2'])
3048 enddef 3054 enddef
3049 3055
3050 def Test_screenpos() 3056 def Test_screenpos()
3051 CheckDefAndScriptFailure(['screenpos("a", 1, 1)'], ['E1013: Argument 1: type mismatch, expected number but got string', 'E1210: Number required for argument 1']) 3057 v9.CheckDefAndScriptFailure(['screenpos("a", 1, 1)'], ['E1013: Argument 1: type mismatch, expected number but got string', 'E1210: Number required for argument 1'])
3052 CheckDefAndScriptFailure(['screenpos(1, "b", 1)'], ['E1013: Argument 2: type mismatch, expected number but got string', 'E1210: Number required for argument 2']) 3058 v9.CheckDefAndScriptFailure(['screenpos(1, "b", 1)'], ['E1013: Argument 2: type mismatch, expected number but got string', 'E1210: Number required for argument 2'])
3053 CheckDefAndScriptFailure(['screenpos(1, 1, "c")'], ['E1013: Argument 3: type mismatch, expected number but got string', 'E1210: Number required for argument 3']) 3059 v9.CheckDefAndScriptFailure(['screenpos(1, 1, "c")'], ['E1013: Argument 3: type mismatch, expected number but got string', 'E1210: Number required for argument 3'])
3054 assert_equal({col: 1, row: 1, endcol: 1, curscol: 1}, screenpos(1, 1, 1)) 3060 assert_equal({col: 1, row: 1, endcol: 1, curscol: 1}, screenpos(1, 1, 1))
3055 enddef 3061 enddef
3056 3062
3057 def Test_screenstring() 3063 def Test_screenstring()
3058 CheckDefAndScriptFailure(['screenstring("x", 1)'], ['E1013: Argument 1: type mismatch, expected number but got string', 'E1210: Number required for argument 1']) 3064 v9.CheckDefAndScriptFailure(['screenstring("x", 1)'], ['E1013: Argument 1: type mismatch, expected number but got string', 'E1210: Number required for argument 1'])
3059 CheckDefAndScriptFailure(['screenstring(1, "x")'], ['E1013: Argument 2: type mismatch, expected number but got string', 'E1210: Number required for argument 2']) 3065 v9.CheckDefAndScriptFailure(['screenstring(1, "x")'], ['E1013: Argument 2: type mismatch, expected number but got string', 'E1210: Number required for argument 2'])
3060 enddef 3066 enddef
3061 3067
3062 def Test_search() 3068 def Test_search()
3063 new 3069 new
3064 setline(1, ['foo', 'bar']) 3070 setline(1, ['foo', 'bar'])
3086 normal 0 3092 normal 0
3087 assert_equal(0, search('this', '', 0, 0, 'col(".") > col')) 3093 assert_equal(0, search('this', '', 0, 0, 'col(".") > col'))
3088 normal 0 3094 normal 0
3089 assert_equal([0, 0], searchpos('this', '', 0, 0, 'col(".") > col')) 3095 assert_equal([0, 0], searchpos('this', '', 0, 0, 'col(".") > col'))
3090 bwipe! 3096 bwipe!
3091 CheckDefAndScriptFailure(['search(1)'], ['E1013: Argument 1: type mismatch, expected string but got number', 'E1174: String required for argument 1']) 3097 v9.CheckDefAndScriptFailure(['search(1)'], ['E1013: Argument 1: type mismatch, expected string but got number', 'E1174: String required for argument 1'])
3092 CheckDefAndScriptFailure(['search("a", 2)'], ['E1013: Argument 2: type mismatch, expected string but got number', 'E1174: String required for argument 2']) 3098 v9.CheckDefAndScriptFailure(['search("a", 2)'], ['E1013: Argument 2: type mismatch, expected string but got number', 'E1174: String required for argument 2'])
3093 CheckDefAndScriptFailure(['search("a", "b", "c")'], ['E1013: Argument 3: type mismatch, expected number but got string', 'E1210: Number required for argument 3']) 3099 v9.CheckDefAndScriptFailure(['search("a", "b", "c")'], ['E1013: Argument 3: type mismatch, expected number but got string', 'E1210: Number required for argument 3'])
3094 CheckDefAndScriptFailure(['search("a", "b", 3, "d")'], ['E1013: Argument 4: type mismatch, expected number but got string', 'E1210: Number required for argument 4']) 3100 v9.CheckDefAndScriptFailure(['search("a", "b", 3, "d")'], ['E1013: Argument 4: type mismatch, expected number but got string', 'E1210: Number required for argument 4'])
3095 new 3101 new
3096 setline(1, "match this") 3102 setline(1, "match this")
3097 CheckDefAndScriptFailure(['search("a", "", 9, 0, [0])'], ['E1013: Argument 5: type mismatch, expected func(...): any but got list<number>', 'E730: Using a List as a String']) 3103 v9.CheckDefAndScriptFailure(['search("a", "", 9, 0, [0])'], ['E1013: Argument 5: type mismatch, expected func(...): any but got list<number>', 'E730: Using a List as a String'])
3098 bwipe! 3104 bwipe!
3099 enddef 3105 enddef
3100 3106
3101 def Test_searchcount() 3107 def Test_searchcount()
3102 new 3108 new
3108 current: 1, 3114 current: 1,
3109 total: 1, 3115 total: 1,
3110 maxcount: 99, 3116 maxcount: 99,
3111 incomplete: 0}) 3117 incomplete: 0})
3112 bwipe! 3118 bwipe!
3113 CheckDefAndScriptFailure(['searchcount([1])'], ['E1013: Argument 1: type mismatch, expected dict<any> but got list<number>', 'E1206: Dictionary required for argument 1']) 3119 v9.CheckDefAndScriptFailure(['searchcount([1])'], ['E1013: Argument 1: type mismatch, expected dict<any> but got list<number>', 'E1206: Dictionary required for argument 1'])
3114 enddef 3120 enddef
3115 3121
3116 def Test_searchdecl() 3122 def Test_searchdecl()
3117 searchdecl('blah', true, true)->assert_equal(1) 3123 searchdecl('blah', true, true)->assert_equal(1)
3118 CheckDefAndScriptFailure(['searchdecl(1)'], ['E1013: Argument 1: type mismatch, expected string but got number', 'E1174: String required for argument 1']) 3124 v9.CheckDefAndScriptFailure(['searchdecl(1)'], ['E1013: Argument 1: type mismatch, expected string but got number', 'E1174: String required for argument 1'])
3119 CheckDefAndScriptFailure(['searchdecl("a", 2)'], ['E1013: Argument 2: type mismatch, expected bool but got number', 'E1212: Bool required for argument 2']) 3125 v9.CheckDefAndScriptFailure(['searchdecl("a", 2)'], ['E1013: Argument 2: type mismatch, expected bool but got number', 'E1212: Bool required for argument 2'])
3120 CheckDefAndScriptFailure(['searchdecl("a", true, 2)'], ['E1013: Argument 3: type mismatch, expected bool but got number', 'E1212: Bool required for argument 3']) 3126 v9.CheckDefAndScriptFailure(['searchdecl("a", true, 2)'], ['E1013: Argument 3: type mismatch, expected bool but got number', 'E1212: Bool required for argument 3'])
3121 enddef 3127 enddef
3122 3128
3123 def Test_searchpair() 3129 def Test_searchpair()
3124 new 3130 new
3125 setline(1, "here { and } there") 3131 setline(1, "here { and } there")
3157 g:caught = 'yes' 3163 g:caught = 'yes'
3158 endtry 3164 endtry
3159 enddef 3165 enddef
3160 Fail() 3166 Fail()
3161 END 3167 END
3162 CheckScriptSuccess(lines) 3168 v9.CheckScriptSuccess(lines)
3163 assert_equal('yes', g:caught) 3169 assert_equal('yes', g:caught)
3164 unlet g:caught 3170 unlet g:caught
3165 bwipe! 3171 bwipe!
3166 3172
3167 lines =<< trim END 3173 lines =<< trim END
3168 echo searchpair("a", "b", "c", "d", "f", 33) 3174 echo searchpair("a", "b", "c", "d", "f", 33)
3169 END 3175 END
3170 CheckDefAndScriptFailure(lines, ['E1001: Variable not found: f', 'E475: Invalid argument: d']) 3176 v9.CheckDefAndScriptFailure(lines, ['E1001: Variable not found: f', 'E475: Invalid argument: d'])
3171 3177
3172 var errors = ['E1013: Argument 1: type mismatch, expected string but got number', 'E1174: String required for argument 1'] 3178 var errors = ['E1013: Argument 1: type mismatch, expected string but got number', 'E1174: String required for argument 1']
3173 CheckDefAndScriptFailure(['searchpair(1, "b", "c")'], errors) 3179 v9.CheckDefAndScriptFailure(['searchpair(1, "b", "c")'], errors)
3174 CheckDefAndScriptFailure(['searchpairpos(1, "b", "c")'], errors) 3180 v9.CheckDefAndScriptFailure(['searchpairpos(1, "b", "c")'], errors)
3175 3181
3176 errors = ['E1013: Argument 2: type mismatch, expected string but got number', 'E1174: String required for argument 2'] 3182 errors = ['E1013: Argument 2: type mismatch, expected string but got number', 'E1174: String required for argument 2']
3177 CheckDefAndScriptFailure(['searchpair("a", 2, "c")'], errors) 3183 v9.CheckDefAndScriptFailure(['searchpair("a", 2, "c")'], errors)
3178 CheckDefAndScriptFailure(['searchpairpos("a", 2, "c")'], errors) 3184 v9.CheckDefAndScriptFailure(['searchpairpos("a", 2, "c")'], errors)
3179 3185
3180 errors = ['E1013: Argument 3: type mismatch, expected string but got number', 'E1174: String required for argument 3'] 3186 errors = ['E1013: Argument 3: type mismatch, expected string but got number', 'E1174: String required for argument 3']
3181 CheckDefAndScriptFailure(['searchpair("a", "b", 3)'], errors) 3187 v9.CheckDefAndScriptFailure(['searchpair("a", "b", 3)'], errors)
3182 CheckDefAndScriptFailure(['searchpairpos("a", "b", 3)'], errors) 3188 v9.CheckDefAndScriptFailure(['searchpairpos("a", "b", 3)'], errors)
3183 3189
3184 errors = ['E1013: Argument 4: type mismatch, expected string but got number', 'E1174: String required for argument 4'] 3190 errors = ['E1013: Argument 4: type mismatch, expected string but got number', 'E1174: String required for argument 4']
3185 CheckDefAndScriptFailure(['searchpair("a", "b", "c", 4)'], errors) 3191 v9.CheckDefAndScriptFailure(['searchpair("a", "b", "c", 4)'], errors)
3186 3192
3187 new 3193 new
3188 setline(1, "match this") 3194 setline(1, "match this")
3189 errors = ['E1013: Argument 5: type mismatch, expected func(...): any but got list<number>', 'E730: Using a List as a String'] 3195 errors = ['E1013: Argument 5: type mismatch, expected func(...): any but got list<number>', 'E730: Using a List as a String']
3190 CheckDefAndScriptFailure(['searchpair("a", "b", "c", "r", [0])'], errors) 3196 v9.CheckDefAndScriptFailure(['searchpair("a", "b", "c", "r", [0])'], errors)
3191 CheckDefAndScriptFailure(['searchpairpos("a", "b", "c", "r", [0])'], errors) 3197 v9.CheckDefAndScriptFailure(['searchpairpos("a", "b", "c", "r", [0])'], errors)
3192 bwipe! 3198 bwipe!
3193 3199
3194 errors = ['E1013: Argument 6: type mismatch, expected number but got string', 'E1210: Number required for argument 6'] 3200 errors = ['E1013: Argument 6: type mismatch, expected number but got string', 'E1210: Number required for argument 6']
3195 CheckDefAndScriptFailure(['searchpair("a", "b", "c", "r", "1", "f")'], errors) 3201 v9.CheckDefAndScriptFailure(['searchpair("a", "b", "c", "r", "1", "f")'], errors)
3196 CheckDefAndScriptFailure(['searchpairpos("a", "b", "c", "r", "1", "f")'], errors) 3202 v9.CheckDefAndScriptFailure(['searchpairpos("a", "b", "c", "r", "1", "f")'], errors)
3197 3203
3198 errors = ['E1013: Argument 7: type mismatch, expected number but got string', 'E1210: Number required for argument 7'] 3204 errors = ['E1013: Argument 7: type mismatch, expected number but got string', 'E1210: Number required for argument 7']
3199 CheckDefAndScriptFailure(['searchpair("a", "b", "c", "r", "1", 3, "g")'], errors) 3205 v9.CheckDefAndScriptFailure(['searchpair("a", "b", "c", "r", "1", 3, "g")'], errors)
3200 CheckDefAndScriptFailure(['searchpairpos("a", "b", "c", "r", "1", 3, "g")'], errors) 3206 v9.CheckDefAndScriptFailure(['searchpairpos("a", "b", "c", "r", "1", 3, "g")'], errors)
3201 enddef 3207 enddef
3202 3208
3203 def Test_searchpos() 3209 def Test_searchpos()
3204 CheckDefAndScriptFailure(['searchpos(1)'], ['E1013: Argument 1: type mismatch, expected string but got number', 'E1174: String required for argument 1']) 3210 v9.CheckDefAndScriptFailure(['searchpos(1)'], ['E1013: Argument 1: type mismatch, expected string but got number', 'E1174: String required for argument 1'])
3205 CheckDefAndScriptFailure(['searchpos("a", 2)'], ['E1013: Argument 2: type mismatch, expected string but got number', 'E1174: String required for argument 2']) 3211 v9.CheckDefAndScriptFailure(['searchpos("a", 2)'], ['E1013: Argument 2: type mismatch, expected string but got number', 'E1174: String required for argument 2'])
3206 CheckDefAndScriptFailure(['searchpos("a", "b", "c")'], ['E1013: Argument 3: type mismatch, expected number but got string', 'E1210: Number required for argument 3']) 3212 v9.CheckDefAndScriptFailure(['searchpos("a", "b", "c")'], ['E1013: Argument 3: type mismatch, expected number but got string', 'E1210: Number required for argument 3'])
3207 CheckDefAndScriptFailure(['searchpos("a", "b", 3, "d")'], ['E1013: Argument 4: type mismatch, expected number but got string', 'E1210: Number required for argument 4']) 3213 v9.CheckDefAndScriptFailure(['searchpos("a", "b", 3, "d")'], ['E1013: Argument 4: type mismatch, expected number but got string', 'E1210: Number required for argument 4'])
3208 new 3214 new
3209 setline(1, "match this") 3215 setline(1, "match this")
3210 CheckDefAndScriptFailure(['searchpos("a", "", 9, 0, [0])'], ['E1013: Argument 5: type mismatch, expected func(...): any but got list<number>', 'E730: Using a List as a String']) 3216 v9.CheckDefAndScriptFailure(['searchpos("a", "", 9, 0, [0])'], ['E1013: Argument 5: type mismatch, expected func(...): any but got list<number>', 'E730: Using a List as a String'])
3211 bwipe! 3217 bwipe!
3212 enddef 3218 enddef
3213 3219
3214 def Test_server2client() 3220 def Test_server2client()
3215 CheckFeature clientserver 3221 CheckFeature clientserver
3216 CheckEnv DISPLAY 3222 CheckEnv DISPLAY
3217 CheckDefAndScriptFailure(['server2client(10, "b")'], ['E1013: Argument 1: type mismatch, expected string but got number', 'E1174: String required for argument 1']) 3223 v9.CheckDefAndScriptFailure(['server2client(10, "b")'], ['E1013: Argument 1: type mismatch, expected string but got number', 'E1174: String required for argument 1'])
3218 CheckDefAndScriptFailure(['server2client("a", 10)'], ['E1013: Argument 2: type mismatch, expected string but got number', 'E1174: String required for argument 2']) 3224 v9.CheckDefAndScriptFailure(['server2client("a", 10)'], ['E1013: Argument 2: type mismatch, expected string but got number', 'E1174: String required for argument 2'])
3219 CheckDefExecAndScriptFailure(['server2client("", "a")'], 'E573: Invalid server id used') 3225 v9.CheckDefExecAndScriptFailure(['server2client("", "a")'], 'E573: Invalid server id used')
3220 CheckDefExecAndScriptFailure(['server2client("", "")'], 'E573: Invalid server id used') 3226 v9.CheckDefExecAndScriptFailure(['server2client("", "")'], 'E573: Invalid server id used')
3221 enddef 3227 enddef
3222 3228
3223 def Test_shellescape() 3229 def Test_shellescape()
3224 CheckDefAndScriptFailure(['shellescape(1)'], ['E1013: Argument 1: type mismatch, expected string but got number', 'E1174: String required for argument 1']) 3230 v9.CheckDefAndScriptFailure(['shellescape(1)'], ['E1013: Argument 1: type mismatch, expected string but got number', 'E1174: String required for argument 1'])
3225 CheckDefAndScriptFailure(['shellescape("a", 2)'], ['E1013: Argument 2: type mismatch, expected bool but got number', 'E1212: Bool required for argument 2']) 3231 v9.CheckDefAndScriptFailure(['shellescape("a", 2)'], ['E1013: Argument 2: type mismatch, expected bool but got number', 'E1212: Bool required for argument 2'])
3226 if has('unix') 3232 if has('unix')
3227 assert_equal("''", shellescape('')) 3233 assert_equal("''", shellescape(''))
3228 endif 3234 endif
3229 enddef 3235 enddef
3230 3236
3273 getbufline(b, 2, 4)) 3279 getbufline(b, 2, 4))
3274 endif 3280 endif
3275 3281
3276 exe 'bwipe! ' .. b 3282 exe 'bwipe! ' .. b
3277 END 3283 END
3278 CheckDefAndScriptSuccess(lines) 3284 v9.CheckDefAndScriptSuccess(lines)
3279 enddef 3285 enddef
3280 3286
3281 def Test_setbufvar() 3287 def Test_setbufvar()
3282 setbufvar(bufnr('%'), '&syntax', 'vim') 3288 setbufvar(bufnr('%'), '&syntax', 'vim')
3283 &syntax->assert_equal('vim') 3289 &syntax->assert_equal('vim')
3300 setlocal list& 3306 setlocal list&
3301 3307
3302 setbufvar('%', 'myvar', 123) 3308 setbufvar('%', 'myvar', 123)
3303 getbufvar('%', 'myvar')->assert_equal(123) 3309 getbufvar('%', 'myvar')->assert_equal(123)
3304 3310
3305 CheckDefAndScriptFailure(['setbufvar(true, "v", 3)'], ['E1013: Argument 1: type mismatch, expected string but got bool', 'E1220: String or Number required for argument 1']) 3311 v9.CheckDefAndScriptFailure(['setbufvar(true, "v", 3)'], ['E1013: Argument 1: type mismatch, expected string but got bool', 'E1220: String or Number required for argument 1'])
3306 CheckDefAndScriptFailure(['setbufvar(1, 2, 3)'], ['E1013: Argument 2: type mismatch, expected string but got number', 'E1174: String required for argument 2']) 3312 v9.CheckDefAndScriptFailure(['setbufvar(1, 2, 3)'], ['E1013: Argument 2: type mismatch, expected string but got number', 'E1174: String required for argument 2'])
3307 assert_fails('setbufvar("%", "", 10)', 'E461: Illegal variable name') 3313 assert_fails('setbufvar("%", "", 10)', 'E461: Illegal variable name')
3308 enddef 3314 enddef
3309 3315
3310 def Test_setbufline() 3316 def Test_setbufline()
3311 new 3317 new
3314 setbufline(bnum, 1, range(1, 3)) 3320 setbufline(bnum, 1, range(1, 3))
3315 setbufline(bnum, 4, 'one') 3321 setbufline(bnum, 4, 'one')
3316 setbufline(bnum, 5, 10) 3322 setbufline(bnum, 5, 10)
3317 setbufline(bnum, 6, ['two', 11]) 3323 setbufline(bnum, 6, ['two', 11])
3318 assert_equal(['1', '2', '3', 'one', '10', 'two', '11'], getbufline(bnum, 1, '$')) 3324 assert_equal(['1', '2', '3', 'one', '10', 'two', '11'], getbufline(bnum, 1, '$'))
3319 CheckDefAndScriptFailure(['setbufline([1], 1, "x")'], ['E1013: Argument 1: type mismatch, expected string but got list<number>', 'E1220: String or Number required for argument 1']) 3325 v9.CheckDefAndScriptFailure(['setbufline([1], 1, "x")'], ['E1013: Argument 1: type mismatch, expected string but got list<number>', 'E1220: String or Number required for argument 1'])
3320 CheckDefAndScriptFailure(['setbufline(1, [1], "x")'], ['E1013: Argument 2: type mismatch, expected string but got list<number>', 'E1220: String or Number required for argument 2']) 3326 v9.CheckDefAndScriptFailure(['setbufline(1, [1], "x")'], ['E1013: Argument 2: type mismatch, expected string but got list<number>', 'E1220: String or Number required for argument 2'])
3321 CheckDefExecAndScriptFailure(['setbufline(' .. bnum .. ', -1, "x")'], 'E966: Invalid line number: -1') 3327 v9.CheckDefExecAndScriptFailure(['setbufline(' .. bnum .. ', -1, "x")'], 'E966: Invalid line number: -1')
3322 CheckDefAndScriptFailure(['setbufline(1, 1, {"a": 10})'], ['E1013: Argument 3: type mismatch, expected string but got dict<number>', 'E1224: String, Number or List required for argument 3']) 3328 v9.CheckDefAndScriptFailure(['setbufline(1, 1, {"a": 10})'], ['E1013: Argument 3: type mismatch, expected string but got dict<number>', 'E1224: String, Number or List required for argument 3'])
3323 bnum->bufwinid()->win_gotoid() 3329 bnum->bufwinid()->win_gotoid()
3324 setbufline('', 1, 'nombres') 3330 setbufline('', 1, 'nombres')
3325 getline(1)->assert_equal('nombres') 3331 getline(1)->assert_equal('nombres')
3326 bw! 3332 bw!
3327 enddef 3333 enddef
3328 3334
3329 def Test_setcellwidths() 3335 def Test_setcellwidths()
3330 CheckDefAndScriptFailure(['setcellwidths(1)'], ['E1013: Argument 1: type mismatch, expected list<any> but got number', 'E1211: List required for argument 1']) 3336 v9.CheckDefAndScriptFailure(['setcellwidths(1)'], ['E1013: Argument 1: type mismatch, expected list<any> but got number', 'E1211: List required for argument 1'])
3331 CheckDefAndScriptFailure(['setcellwidths({"a": 10})'], ['E1013: Argument 1: type mismatch, expected list<any> but got dict<number>', 'E1211: List required for argument 1']) 3337 v9.CheckDefAndScriptFailure(['setcellwidths({"a": 10})'], ['E1013: Argument 1: type mismatch, expected list<any> but got dict<number>', 'E1211: List required for argument 1'])
3332 enddef 3338 enddef
3333 3339
3334 def Test_setcharpos() 3340 def Test_setcharpos()
3335 CheckDefAndScriptFailure(['setcharpos(1, [])'], ['E1013: Argument 1: type mismatch, expected string but got number', 'E1174: String required for argument 1']) 3341 v9.CheckDefAndScriptFailure(['setcharpos(1, [])'], ['E1013: Argument 1: type mismatch, expected string but got number', 'E1174: String required for argument 1'])
3336 CheckDefFailure(['setcharpos(".", ["a"])'], 'E1013: Argument 2: type mismatch, expected list<number> but got list<string>') 3342 v9.CheckDefFailure(['setcharpos(".", ["a"])'], 'E1013: Argument 2: type mismatch, expected list<number> but got list<string>')
3337 CheckDefAndScriptFailure(['setcharpos(".", 1)'], ['E1013: Argument 2: type mismatch, expected list<number> but got number', 'E1211: List required for argument 2']) 3343 v9.CheckDefAndScriptFailure(['setcharpos(".", 1)'], ['E1013: Argument 2: type mismatch, expected list<number> but got number', 'E1211: List required for argument 2'])
3338 CheckDefExecAndScriptFailure(['setcharpos("", [0, 1, 1, 1])'], 'E474: Invalid argument') 3344 v9.CheckDefExecAndScriptFailure(['setcharpos("", [0, 1, 1, 1])'], 'E474: Invalid argument')
3339 enddef 3345 enddef
3340 3346
3341 def Test_setcharsearch() 3347 def Test_setcharsearch()
3342 CheckDefAndScriptFailure(['setcharsearch("x")'], ['E1013: Argument 1: type mismatch, expected dict<any> but got string', 'E1206: Dictionary required for argument 1']) 3348 v9.CheckDefAndScriptFailure(['setcharsearch("x")'], ['E1013: Argument 1: type mismatch, expected dict<any> but got string', 'E1206: Dictionary required for argument 1'])
3343 CheckDefAndScriptFailure(['setcharsearch([])'], ['E1013: Argument 1: type mismatch, expected dict<any> but got list<unknown>', 'E1206: Dictionary required for argument 1']) 3349 v9.CheckDefAndScriptFailure(['setcharsearch([])'], ['E1013: Argument 1: type mismatch, expected dict<any> but got list<unknown>', 'E1206: Dictionary required for argument 1'])
3344 var d: dict<any> = {char: 'x', forward: 1, until: 1} 3350 var d: dict<any> = {char: 'x', forward: 1, until: 1}
3345 setcharsearch(d) 3351 setcharsearch(d)
3346 assert_equal(d, getcharsearch()) 3352 assert_equal(d, getcharsearch())
3347 enddef 3353 enddef
3348 3354
3349 def Test_setcmdpos() 3355 def Test_setcmdpos()
3350 CheckDefAndScriptFailure(['setcmdpos("x")'], ['E1013: Argument 1: type mismatch, expected number but got string', 'E1210: Number required for argument 1']) 3356 v9.CheckDefAndScriptFailure(['setcmdpos("x")'], ['E1013: Argument 1: type mismatch, expected number but got string', 'E1210: Number required for argument 1'])
3351 enddef 3357 enddef
3352 3358
3353 def Test_setcursorcharpos() 3359 def Test_setcursorcharpos()
3354 CheckDefAndScriptFailure(['setcursorcharpos(0z10, 1)'], ['E1013: Argument 1: type mismatch, expected number but got blob', 'E1224: String, Number or List required for argument 1']) 3360 v9.CheckDefAndScriptFailure(['setcursorcharpos(0z10, 1)'], ['E1013: Argument 1: type mismatch, expected number but got blob', 'E1224: String, Number or List required for argument 1'])
3355 CheckDefAndScriptFailure(['setcursorcharpos(1, "2")'], ['E1013: Argument 2: type mismatch, expected number but got string', 'E1210: Number required for argument 2']) 3361 v9.CheckDefAndScriptFailure(['setcursorcharpos(1, "2")'], ['E1013: Argument 2: type mismatch, expected number but got string', 'E1210: Number required for argument 2'])
3356 CheckDefAndScriptFailure(['setcursorcharpos(1, 2, "3")'], ['E1013: Argument 3: type mismatch, expected number but got string', 'E1210: Number required for argument 3']) 3362 v9.CheckDefAndScriptFailure(['setcursorcharpos(1, 2, "3")'], ['E1013: Argument 3: type mismatch, expected number but got string', 'E1210: Number required for argument 3'])
3357 CheckDefExecAndScriptFailure(['setcursorcharpos("", 10)'], 'E1209: Invalid value for a line number') 3363 v9.CheckDefExecAndScriptFailure(['setcursorcharpos("", 10)'], 'E1209: Invalid value for a line number')
3358 enddef 3364 enddef
3359 3365
3360 def Test_setenv() 3366 def Test_setenv()
3361 CheckDefAndScriptFailure(['setenv(1, 2)'], ['E1013: Argument 1: type mismatch, expected string but got number', 'E1174: String required for argument 1']) 3367 v9.CheckDefAndScriptFailure(['setenv(1, 2)'], ['E1013: Argument 1: type mismatch, expected string but got number', 'E1174: String required for argument 1'])
3362 assert_equal(0, setenv('', '')) 3368 assert_equal(0, setenv('', ''))
3363 assert_equal(0, setenv('', v:null)) 3369 assert_equal(0, setenv('', v:null))
3364 enddef 3370 enddef
3365 3371
3366 def Test_setfperm() 3372 def Test_setfperm()
3367 CheckDefAndScriptFailure(['setfperm(1, "b")'], ['E1013: Argument 1: type mismatch, expected string but got number', 'E1174: String required for argument 1']) 3373 v9.CheckDefAndScriptFailure(['setfperm(1, "b")'], ['E1013: Argument 1: type mismatch, expected string but got number', 'E1174: String required for argument 1'])
3368 CheckDefAndScriptFailure(['setfperm("a", 0z10)'], ['E1013: Argument 2: type mismatch, expected string but got blob', 'E1174: String required for argument 2']) 3374 v9.CheckDefAndScriptFailure(['setfperm("a", 0z10)'], ['E1013: Argument 2: type mismatch, expected string but got blob', 'E1174: String required for argument 2'])
3369 CheckDefExecAndScriptFailure(['setfperm("Xfile", "")'], 'E475: Invalid argument') 3375 v9.CheckDefExecAndScriptFailure(['setfperm("Xfile", "")'], 'E475: Invalid argument')
3370 CheckDefExecAndScriptFailure(['setfperm("", "")'], 'E475: Invalid argument') 3376 v9.CheckDefExecAndScriptFailure(['setfperm("", "")'], 'E475: Invalid argument')
3371 assert_equal(0, setfperm('', 'rw-r--r--')) 3377 assert_equal(0, setfperm('', 'rw-r--r--'))
3372 enddef 3378 enddef
3373 3379
3374 def Test_setline() 3380 def Test_setline()
3375 new 3381 new
3379 assert_equal(['a', 'b', 'c', 'd'], getline(1, '$')) 3385 assert_equal(['a', 'b', 'c', 'd'], getline(1, '$'))
3380 setline(1, 'one') 3386 setline(1, 'one')
3381 assert_equal(['one', 'b', 'c', 'd'], getline(1, '$')) 3387 assert_equal(['one', 'b', 'c', 'd'], getline(1, '$'))
3382 setline(1, 10) 3388 setline(1, 10)
3383 assert_equal(['10', 'b', 'c', 'd'], getline(1, '$')) 3389 assert_equal(['10', 'b', 'c', 'd'], getline(1, '$'))
3384 CheckDefAndScriptFailure(['setline([1], "x")'], ['E1013: Argument 1: type mismatch, expected string but got list<number>', 'E1220: String or Number required for argument 1']) 3390 v9.CheckDefAndScriptFailure(['setline([1], "x")'], ['E1013: Argument 1: type mismatch, expected string but got list<number>', 'E1220: String or Number required for argument 1'])
3385 CheckDefExecAndScriptFailure(['setline("", "x")'], 'E1209: Invalid value for a line number') 3391 v9.CheckDefExecAndScriptFailure(['setline("", "x")'], 'E1209: Invalid value for a line number')
3386 CheckDefExecAndScriptFailure(['setline(-1, "x")'], 'E966: Invalid line number: -1') 3392 v9.CheckDefExecAndScriptFailure(['setline(-1, "x")'], 'E966: Invalid line number: -1')
3387 assert_fails('setline(".a", "x")', ['E1209:', 'E1209:']) 3393 assert_fails('setline(".a", "x")', ['E1209:', 'E1209:'])
3388 bw! 3394 bw!
3389 enddef 3395 enddef
3390 3396
3391 def Test_setloclist() 3397 def Test_setloclist()
3392 var items = [{filename: '/tmp/file', lnum: 1, valid: true}] 3398 var items = [{filename: '/tmp/file', lnum: 1, valid: true}]
3393 var what = {items: items} 3399 var what = {items: items}
3394 setqflist([], ' ', what) 3400 setqflist([], ' ', what)
3395 setloclist(0, [], ' ', what) 3401 setloclist(0, [], ' ', what)
3396 CheckDefAndScriptFailure(['setloclist("1", [])'], ['E1013: Argument 1: type mismatch, expected number but got string', 'E1210: Number required for argument 1']) 3402 v9.CheckDefAndScriptFailure(['setloclist("1", [])'], ['E1013: Argument 1: type mismatch, expected number but got string', 'E1210: Number required for argument 1'])
3397 CheckDefAndScriptFailure(['setloclist(1, 2)'], ['E1013: Argument 2: type mismatch, expected list<any> but got number', 'E1211: List required for argument 2']) 3403 v9.CheckDefAndScriptFailure(['setloclist(1, 2)'], ['E1013: Argument 2: type mismatch, expected list<any> but got number', 'E1211: List required for argument 2'])
3398 CheckDefAndScriptFailure(['setloclist(1, [], 3)'], ['E1013: Argument 3: type mismatch, expected string but got number', 'E1174: String required for argument 3']) 3404 v9.CheckDefAndScriptFailure(['setloclist(1, [], 3)'], ['E1013: Argument 3: type mismatch, expected string but got number', 'E1174: String required for argument 3'])
3399 CheckDefAndScriptFailure(['setloclist(1, [], "a", [])'], ['E1013: Argument 4: type mismatch, expected dict<any> but got list<unknown>', 'E1206: Dictionary required for argument 4']) 3405 v9.CheckDefAndScriptFailure(['setloclist(1, [], "a", [])'], ['E1013: Argument 4: type mismatch, expected dict<any> but got list<unknown>', 'E1206: Dictionary required for argument 4'])
3400 enddef 3406 enddef
3401 3407
3402 def Test_setmatches() 3408 def Test_setmatches()
3403 CheckDefAndScriptFailure(['setmatches({})'], ['E1013: Argument 1: type mismatch, expected list<any> but got dict<unknown>', 'E1211: List required for argument 1']) 3409 v9.CheckDefAndScriptFailure(['setmatches({})'], ['E1013: Argument 1: type mismatch, expected list<any> but got dict<unknown>', 'E1211: List required for argument 1'])
3404 CheckDefAndScriptFailure(['setmatches([], "1")'], ['E1013: Argument 2: type mismatch, expected number but got string', 'E1210: Number required for argument 2']) 3410 v9.CheckDefAndScriptFailure(['setmatches([], "1")'], ['E1013: Argument 2: type mismatch, expected number but got string', 'E1210: Number required for argument 2'])
3405 enddef 3411 enddef
3406 3412
3407 def Test_setpos() 3413 def Test_setpos()
3408 CheckDefAndScriptFailure(['setpos(1, [])'], ['E1013: Argument 1: type mismatch, expected string but got number', 'E1174: String required for argument 1']) 3414 v9.CheckDefAndScriptFailure(['setpos(1, [])'], ['E1013: Argument 1: type mismatch, expected string but got number', 'E1174: String required for argument 1'])
3409 CheckDefFailure(['setpos(".", ["a"])'], 'E1013: Argument 2: type mismatch, expected list<number> but got list<string>') 3415 v9.CheckDefFailure(['setpos(".", ["a"])'], 'E1013: Argument 2: type mismatch, expected list<number> but got list<string>')
3410 CheckDefAndScriptFailure(['setpos(".", 1)'], ['E1013: Argument 2: type mismatch, expected list<number> but got number', 'E1211: List required for argument 2']) 3416 v9.CheckDefAndScriptFailure(['setpos(".", 1)'], ['E1013: Argument 2: type mismatch, expected list<number> but got number', 'E1211: List required for argument 2'])
3411 CheckDefExecAndScriptFailure(['setpos("", [0, 1, 1, 1])'], 'E474: Invalid argument') 3417 v9.CheckDefExecAndScriptFailure(['setpos("", [0, 1, 1, 1])'], 'E474: Invalid argument')
3412 enddef 3418 enddef
3413 3419
3414 def Test_setqflist() 3420 def Test_setqflist()
3415 CheckDefAndScriptFailure(['setqflist(1, "")'], ['E1013: Argument 1: type mismatch, expected list<any> but got number', 'E1211: List required for argument 1']) 3421 v9.CheckDefAndScriptFailure(['setqflist(1, "")'], ['E1013: Argument 1: type mismatch, expected list<any> but got number', 'E1211: List required for argument 1'])
3416 CheckDefAndScriptFailure(['setqflist([], 2)'], ['E1013: Argument 2: type mismatch, expected string but got number', 'E1174: String required for argument 2']) 3422 v9.CheckDefAndScriptFailure(['setqflist([], 2)'], ['E1013: Argument 2: type mismatch, expected string but got number', 'E1174: String required for argument 2'])
3417 CheckDefAndScriptFailure(['setqflist([], "", [])'], ['E1013: Argument 3: type mismatch, expected dict<any> but got list<unknown>', 'E1206: Dictionary required for argument 3']) 3423 v9.CheckDefAndScriptFailure(['setqflist([], "", [])'], ['E1013: Argument 3: type mismatch, expected dict<any> but got list<unknown>', 'E1206: Dictionary required for argument 3'])
3418 enddef 3424 enddef
3419 3425
3420 def Test_setreg() 3426 def Test_setreg()
3421 setreg('a', ['aaa', 'bbb', 'ccc']) 3427 setreg('a', ['aaa', 'bbb', 'ccc'])
3422 var reginfo = getreginfo('a') 3428 var reginfo = getreginfo('a')
3423 setreg('a', reginfo) 3429 setreg('a', reginfo)
3424 getreginfo('a')->assert_equal(reginfo) 3430 getreginfo('a')->assert_equal(reginfo)
3425 assert_fails('setreg("ab", 0)', 'E1162:') 3431 assert_fails('setreg("ab", 0)', 'E1162:')
3426 CheckDefAndScriptFailure(['setreg(1, "b")'], ['E1013: Argument 1: type mismatch, expected string but got number', 'E1174: String required for argument 1']) 3432 v9.CheckDefAndScriptFailure(['setreg(1, "b")'], ['E1013: Argument 1: type mismatch, expected string but got number', 'E1174: String required for argument 1'])
3427 CheckDefAndScriptFailure(['setreg("a", "b", 3)'], ['E1013: Argument 3: type mismatch, expected string but got number', 'E1174: String required for argument 3']) 3433 v9.CheckDefAndScriptFailure(['setreg("a", "b", 3)'], ['E1013: Argument 3: type mismatch, expected string but got number', 'E1174: String required for argument 3'])
3428 setreg('', '1a2b3c') 3434 setreg('', '1a2b3c')
3429 assert_equal('1a2b3c', @") 3435 assert_equal('1a2b3c', @")
3430 enddef 3436 enddef
3431 3437
3432 def Test_settabvar() 3438 def Test_settabvar()
3433 CheckDefAndScriptFailure(['settabvar("a", "b", 1)'], ['E1013: Argument 1: type mismatch, expected number but got string', 'E1210: Number required for argument 1']) 3439 v9.CheckDefAndScriptFailure(['settabvar("a", "b", 1)'], ['E1013: Argument 1: type mismatch, expected number but got string', 'E1210: Number required for argument 1'])
3434 CheckDefAndScriptFailure(['settabvar(1, 2, "c")'], ['E1013: Argument 2: type mismatch, expected string but got number', 'E1174: String required for argument 2']) 3440 v9.CheckDefAndScriptFailure(['settabvar(1, 2, "c")'], ['E1013: Argument 2: type mismatch, expected string but got number', 'E1174: String required for argument 2'])
3435 assert_fails('settabvar(1, "", 10)', 'E461: Illegal variable name') 3441 assert_fails('settabvar(1, "", 10)', 'E461: Illegal variable name')
3436 enddef 3442 enddef
3437 3443
3438 def Test_settabwinvar() 3444 def Test_settabwinvar()
3439 CheckDefAndScriptFailure(['settabwinvar("a", 2, "c", true)'], ['E1013: Argument 1: type mismatch, expected number but got string', 'E1210: Number required for argument 1']) 3445 v9.CheckDefAndScriptFailure(['settabwinvar("a", 2, "c", true)'], ['E1013: Argument 1: type mismatch, expected number but got string', 'E1210: Number required for argument 1'])
3440 CheckDefAndScriptFailure(['settabwinvar(1, "b", "c", [])'], ['E1013: Argument 2: type mismatch, expected number but got string', 'E1210: Number required for argument 2']) 3446 v9.CheckDefAndScriptFailure(['settabwinvar(1, "b", "c", [])'], ['E1013: Argument 2: type mismatch, expected number but got string', 'E1210: Number required for argument 2'])
3441 CheckDefAndScriptFailure(['settabwinvar(1, 1, 3, {})'], ['E1013: Argument 3: type mismatch, expected string but got number', 'E1174: String required for argument 3']) 3447 v9.CheckDefAndScriptFailure(['settabwinvar(1, 1, 3, {})'], ['E1013: Argument 3: type mismatch, expected string but got number', 'E1174: String required for argument 3'])
3442 assert_fails('settabwinvar(1, 1, "", 10)', 'E461: Illegal variable name') 3448 assert_fails('settabwinvar(1, 1, "", 10)', 'E461: Illegal variable name')
3443 enddef 3449 enddef
3444 3450
3445 def Test_settagstack() 3451 def Test_settagstack()
3446 CheckDefAndScriptFailure(['settagstack(true, {})'], ['E1013: Argument 1: type mismatch, expected number but got bool', 'E1210: Number required for argument 1']) 3452 v9.CheckDefAndScriptFailure(['settagstack(true, {})'], ['E1013: Argument 1: type mismatch, expected number but got bool', 'E1210: Number required for argument 1'])
3447 CheckDefAndScriptFailure(['settagstack(1, [1])'], ['E1013: Argument 2: type mismatch, expected dict<any> but got list<number>', 'E1206: Dictionary required for argument 2']) 3453 v9.CheckDefAndScriptFailure(['settagstack(1, [1])'], ['E1013: Argument 2: type mismatch, expected dict<any> but got list<number>', 'E1206: Dictionary required for argument 2'])
3448 CheckDefAndScriptFailure(['settagstack(1, {}, 2)'], ['E1013: Argument 3: type mismatch, expected string but got number', 'E1174: String required for argument 3']) 3454 v9.CheckDefAndScriptFailure(['settagstack(1, {}, 2)'], ['E1013: Argument 3: type mismatch, expected string but got number', 'E1174: String required for argument 3'])
3449 assert_fails('settagstack(1, {}, "")', 'E962: Invalid action') 3455 assert_fails('settagstack(1, {}, "")', 'E962: Invalid action')
3450 enddef 3456 enddef
3451 3457
3452 def Test_setwinvar() 3458 def Test_setwinvar()
3453 CheckDefAndScriptFailure(['setwinvar("a", "b", 1)'], ['E1013: Argument 1: type mismatch, expected number but got string', 'E1210: Number required for argument 1']) 3459 v9.CheckDefAndScriptFailure(['setwinvar("a", "b", 1)'], ['E1013: Argument 1: type mismatch, expected number but got string', 'E1210: Number required for argument 1'])
3454 CheckDefAndScriptFailure(['setwinvar(1, 2, "c")'], ['E1013: Argument 2: type mismatch, expected string but got number', 'E1174: String required for argument 2']) 3460 v9.CheckDefAndScriptFailure(['setwinvar(1, 2, "c")'], ['E1013: Argument 2: type mismatch, expected string but got number', 'E1174: String required for argument 2'])
3455 assert_fails('setwinvar(1, "", 10)', 'E461: Illegal variable name') 3461 assert_fails('setwinvar(1, "", 10)', 'E461: Illegal variable name')
3456 enddef 3462 enddef
3457 3463
3458 def Test_sha256() 3464 def Test_sha256()
3459 CheckDefAndScriptFailure(['sha256(100)'], ['E1013: Argument 1: type mismatch, expected string but got number', 'E1174: String required for argument 1']) 3465 v9.CheckDefAndScriptFailure(['sha256(100)'], ['E1013: Argument 1: type mismatch, expected string but got number', 'E1174: String required for argument 1'])
3460 CheckDefAndScriptFailure(['sha256(0zABCD)'], ['E1013: Argument 1: type mismatch, expected string but got blob', 'E1174: String required for argument 1']) 3466 v9.CheckDefAndScriptFailure(['sha256(0zABCD)'], ['E1013: Argument 1: type mismatch, expected string but got blob', 'E1174: String required for argument 1'])
3461 assert_equal('ba7816bf8f01cfea414140de5dae2223b00361a396177a9cb410ff61f20015ad', sha256('abc')) 3467 assert_equal('ba7816bf8f01cfea414140de5dae2223b00361a396177a9cb410ff61f20015ad', sha256('abc'))
3462 assert_equal('e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855', sha256('')) 3468 assert_equal('e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855', sha256(''))
3463 enddef 3469 enddef
3464 3470
3465 def Test_shiftwidth() 3471 def Test_shiftwidth()
3466 CheckDefAndScriptFailure(['shiftwidth("x")'], ['E1013: Argument 1: type mismatch, expected number but got string', 'E1210: Number required for argument 1']) 3472 v9.CheckDefAndScriptFailure(['shiftwidth("x")'], ['E1013: Argument 1: type mismatch, expected number but got string', 'E1210: Number required for argument 1'])
3467 enddef 3473 enddef
3468 3474
3469 def Test_sign_define() 3475 def Test_sign_define()
3470 CheckDefAndScriptFailure(['sign_define({"a": 10})'], ['E1013: Argument 1: type mismatch, expected string but got dict<number>', 'E1222: String or List required for argument 1']) 3476 v9.CheckDefAndScriptFailure(['sign_define({"a": 10})'], ['E1013: Argument 1: type mismatch, expected string but got dict<number>', 'E1222: String or List required for argument 1'])
3471 CheckDefAndScriptFailure(['sign_define({"a": 10}, "b")'], ['E1013: Argument 1: type mismatch, expected string but got dict<number>', 'E1222: String or List required for argument 1']) 3477 v9.CheckDefAndScriptFailure(['sign_define({"a": 10}, "b")'], ['E1013: Argument 1: type mismatch, expected string but got dict<number>', 'E1222: String or List required for argument 1'])
3472 CheckDefAndScriptFailure(['sign_define("a", ["b"])'], ['E1013: Argument 2: type mismatch, expected dict<any> but got list<string>', 'E1206: Dictionary required for argument 2']) 3478 v9.CheckDefAndScriptFailure(['sign_define("a", ["b"])'], ['E1013: Argument 2: type mismatch, expected dict<any> but got list<string>', 'E1206: Dictionary required for argument 2'])
3473 enddef 3479 enddef
3474 3480
3475 def Test_sign_getdefined() 3481 def Test_sign_getdefined()
3476 CheckDefAndScriptFailure(['sign_getdefined(["x"])'], ['E1013: Argument 1: type mismatch, expected string but got list<string>', 'E1174: String required for argument 1']) 3482 v9.CheckDefAndScriptFailure(['sign_getdefined(["x"])'], ['E1013: Argument 1: type mismatch, expected string but got list<string>', 'E1174: String required for argument 1'])
3477 CheckDefAndScriptFailure(['sign_getdefined(2)'], ['E1013: Argument 1: type mismatch, expected string but got number', 'E1174: String required for argument 1']) 3483 v9.CheckDefAndScriptFailure(['sign_getdefined(2)'], ['E1013: Argument 1: type mismatch, expected string but got number', 'E1174: String required for argument 1'])
3478 sign_getdefined('')->assert_equal([]) 3484 sign_getdefined('')->assert_equal([])
3479 enddef 3485 enddef
3480 3486
3481 def Test_sign_getplaced() 3487 def Test_sign_getplaced()
3482 CheckDefAndScriptFailure(['sign_getplaced(["x"])'], ['E1013: Argument 1: type mismatch, expected string but got list<string>', 'E1220: String or Number required for argument 1']) 3488 v9.CheckDefAndScriptFailure(['sign_getplaced(["x"])'], ['E1013: Argument 1: type mismatch, expected string but got list<string>', 'E1220: String or Number required for argument 1'])
3483 CheckDefAndScriptFailure(['sign_getplaced(1, ["a"])'], ['E1013: Argument 2: type mismatch, expected dict<any> but got list<string>', 'E1206: Dictionary required for argument 2']) 3489 v9.CheckDefAndScriptFailure(['sign_getplaced(1, ["a"])'], ['E1013: Argument 2: type mismatch, expected dict<any> but got list<string>', 'E1206: Dictionary required for argument 2'])
3484 CheckDefAndScriptFailure(['sign_getplaced("a", 1.1)'], ['E1013: Argument 2: type mismatch, expected dict<any> but got float', 'E1206: Dictionary required for argument 2']) 3490 v9.CheckDefAndScriptFailure(['sign_getplaced("a", 1.1)'], ['E1013: Argument 2: type mismatch, expected dict<any> but got float', 'E1206: Dictionary required for argument 2'])
3485 CheckDefExecAndScriptFailure(['sign_getplaced(bufnr(), {lnum: ""})'], 'E1030: Using a String as a Number:') 3491 v9.CheckDefExecAndScriptFailure(['sign_getplaced(bufnr(), {lnum: ""})'], 'E1030: Using a String as a Number:')
3486 sign_getplaced('')->assert_equal([{signs: [], bufnr: bufnr()}]) 3492 sign_getplaced('')->assert_equal([{signs: [], bufnr: bufnr()}])
3487 enddef 3493 enddef
3488 3494
3489 def Test_sign_jump() 3495 def Test_sign_jump()
3490 CheckDefAndScriptFailure(['sign_jump("a", "b", "c")'], ['E1013: Argument 1: type mismatch, expected number but got string', 'E1210: Number required for argument 1']) 3496 v9.CheckDefAndScriptFailure(['sign_jump("a", "b", "c")'], ['E1013: Argument 1: type mismatch, expected number but got string', 'E1210: Number required for argument 1'])
3491 CheckDefAndScriptFailure(['sign_jump(1, 2, 3)'], ['E1013: Argument 2: type mismatch, expected string but got number', 'E1174: String required for argument 2']) 3497 v9.CheckDefAndScriptFailure(['sign_jump(1, 2, 3)'], ['E1013: Argument 2: type mismatch, expected string but got number', 'E1174: String required for argument 2'])
3492 CheckDefAndScriptFailure(['sign_jump(1, "b", true)'], ['E1013: Argument 3: type mismatch, expected string but got bool', 'E1220: String or Number required for argument 3']) 3498 v9.CheckDefAndScriptFailure(['sign_jump(1, "b", true)'], ['E1013: Argument 3: type mismatch, expected string but got bool', 'E1220: String or Number required for argument 3'])
3493 enddef 3499 enddef
3494 3500
3495 def Test_sign_place() 3501 def Test_sign_place()
3496 CheckDefAndScriptFailure(['sign_place("a", "b", "c", "d")'], ['E1013: Argument 1: type mismatch, expected number but got string', 'E1210: Number required for argument 1']) 3502 v9.CheckDefAndScriptFailure(['sign_place("a", "b", "c", "d")'], ['E1013: Argument 1: type mismatch, expected number but got string', 'E1210: Number required for argument 1'])
3497 CheckDefAndScriptFailure(['sign_place(1, 2, "c", "d")'], ['E1013: Argument 2: type mismatch, expected string but got number', 'E1174: String required for argument 2']) 3503 v9.CheckDefAndScriptFailure(['sign_place(1, 2, "c", "d")'], ['E1013: Argument 2: type mismatch, expected string but got number', 'E1174: String required for argument 2'])
3498 CheckDefAndScriptFailure(['sign_place(1, "b", 3, "d")'], ['E1013: Argument 3: type mismatch, expected string but got number', 'E1174: String required for argument 3']) 3504 v9.CheckDefAndScriptFailure(['sign_place(1, "b", 3, "d")'], ['E1013: Argument 3: type mismatch, expected string but got number', 'E1174: String required for argument 3'])
3499 CheckDefAndScriptFailure(['sign_place(1, "b", "c", 1.1)'], ['E1013: Argument 4: type mismatch, expected string but got float', 'E1220: String or Number required for argument 4']) 3505 v9.CheckDefAndScriptFailure(['sign_place(1, "b", "c", 1.1)'], ['E1013: Argument 4: type mismatch, expected string but got float', 'E1220: String or Number required for argument 4'])
3500 CheckDefAndScriptFailure(['sign_place(1, "b", "c", "d", [1])'], ['E1013: Argument 5: type mismatch, expected dict<any> but got list<number>', 'E1206: Dictionary required for argument 5']) 3506 v9.CheckDefAndScriptFailure(['sign_place(1, "b", "c", "d", [1])'], ['E1013: Argument 5: type mismatch, expected dict<any> but got list<number>', 'E1206: Dictionary required for argument 5'])
3501 CheckDefExecAndScriptFailure(['sign_place(0, "", "MySign", bufnr(), {lnum: ""})'], 'E1209: Invalid value for a line number: ""') 3507 v9.CheckDefExecAndScriptFailure(['sign_place(0, "", "MySign", bufnr(), {lnum: ""})'], 'E1209: Invalid value for a line number: ""')
3502 assert_fails("sign_place(0, '', '', '')", 'E155:') 3508 assert_fails("sign_place(0, '', '', '')", 'E155:')
3503 enddef 3509 enddef
3504 3510
3505 def Test_sign_placelist() 3511 def Test_sign_placelist()
3506 CheckDefAndScriptFailure(['sign_placelist("x")'], ['E1013: Argument 1: type mismatch, expected list<any> but got string', 'E1211: List required for argument 1']) 3512 v9.CheckDefAndScriptFailure(['sign_placelist("x")'], ['E1013: Argument 1: type mismatch, expected list<any> but got string', 'E1211: List required for argument 1'])
3507 CheckDefAndScriptFailure(['sign_placelist({"a": 10})'], ['E1013: Argument 1: type mismatch, expected list<any> but got dict<number>', 'E1211: List required for argument 1']) 3513 v9.CheckDefAndScriptFailure(['sign_placelist({"a": 10})'], ['E1013: Argument 1: type mismatch, expected list<any> but got dict<number>', 'E1211: List required for argument 1'])
3508 CheckDefExecAndScriptFailure(['sign_placelist([{"name": "MySign", "buffer": bufnr(), "lnum": ""}])'], 'E1209: Invalid value for a line number: ""') 3514 v9.CheckDefExecAndScriptFailure(['sign_placelist([{"name": "MySign", "buffer": bufnr(), "lnum": ""}])'], 'E1209: Invalid value for a line number: ""')
3509 assert_fails('sign_placelist([{name: "MySign", buffer: "", lnum: 1}])', 'E155:') 3515 assert_fails('sign_placelist([{name: "MySign", buffer: "", lnum: 1}])', 'E155:')
3510 enddef 3516 enddef
3511 3517
3512 def Test_sign_undefine() 3518 def Test_sign_undefine()
3513 CheckDefAndScriptFailure(['sign_undefine({})'], ['E1013: Argument 1: type mismatch, expected string but got dict<unknown>', 'E1222: String or List required for argument 1']) 3519 v9.CheckDefAndScriptFailure(['sign_undefine({})'], ['E1013: Argument 1: type mismatch, expected string but got dict<unknown>', 'E1222: String or List required for argument 1'])
3514 CheckDefAndScriptFailure(['sign_undefine([1])'], ['E1013: Argument 1: type mismatch, expected list<string> but got list<number>', 'E155: Unknown sign:']) 3520 v9.CheckDefAndScriptFailure(['sign_undefine([1])'], ['E1013: Argument 1: type mismatch, expected list<string> but got list<number>', 'E155: Unknown sign:'])
3515 enddef 3521 enddef
3516 3522
3517 def Test_sign_unplace() 3523 def Test_sign_unplace()
3518 CheckDefAndScriptFailure(['sign_unplace({"a": 10})'], ['E1013: Argument 1: type mismatch, expected string but got dict<number>', 'E1174: String required for argument 1']) 3524 v9.CheckDefAndScriptFailure(['sign_unplace({"a": 10})'], ['E1013: Argument 1: type mismatch, expected string but got dict<number>', 'E1174: String required for argument 1'])
3519 CheckDefAndScriptFailure(['sign_unplace({"a": 10}, "b")'], ['E1013: Argument 1: type mismatch, expected string but got dict<number>', 'E1174: String required for argument 1']) 3525 v9.CheckDefAndScriptFailure(['sign_unplace({"a": 10}, "b")'], ['E1013: Argument 1: type mismatch, expected string but got dict<number>', 'E1174: String required for argument 1'])
3520 CheckDefAndScriptFailure(['sign_unplace("a", ["b"])'], ['E1013: Argument 2: type mismatch, expected dict<any> but got list<string>', 'E1206: Dictionary required for argument 2']) 3526 v9.CheckDefAndScriptFailure(['sign_unplace("a", ["b"])'], ['E1013: Argument 2: type mismatch, expected dict<any> but got list<string>', 'E1206: Dictionary required for argument 2'])
3521 enddef 3527 enddef
3522 3528
3523 def Test_sign_unplacelist() 3529 def Test_sign_unplacelist()
3524 CheckDefAndScriptFailure(['sign_unplacelist("x")'], ['E1013: Argument 1: type mismatch, expected list<any> but got string', 'E1211: List required for argument 1']) 3530 v9.CheckDefAndScriptFailure(['sign_unplacelist("x")'], ['E1013: Argument 1: type mismatch, expected list<any> but got string', 'E1211: List required for argument 1'])
3525 CheckDefAndScriptFailure(['sign_unplacelist({"a": 10})'], ['E1013: Argument 1: type mismatch, expected list<any> but got dict<number>', 'E1211: List required for argument 1']) 3531 v9.CheckDefAndScriptFailure(['sign_unplacelist({"a": 10})'], ['E1013: Argument 1: type mismatch, expected list<any> but got dict<number>', 'E1211: List required for argument 1'])
3526 enddef 3532 enddef
3527 3533
3528 def Test_simplify() 3534 def Test_simplify()
3529 CheckDefAndScriptFailure(['simplify(100)'], ['E1013: Argument 1: type mismatch, expected string but got number', 'E1174: String required for argument 1']) 3535 v9.CheckDefAndScriptFailure(['simplify(100)'], ['E1013: Argument 1: type mismatch, expected string but got number', 'E1174: String required for argument 1'])
3530 call assert_equal('NonExistingFile', simplify('NonExistingFile')) 3536 call assert_equal('NonExistingFile', simplify('NonExistingFile'))
3531 simplify('')->assert_equal('') 3537 simplify('')->assert_equal('')
3532 enddef 3538 enddef
3533 3539
3534 def Test_slice() 3540 def Test_slice()
3550 assert_equal(0z112233, slice(0z001122334455, 1, 4)) 3556 assert_equal(0z112233, slice(0z001122334455, 1, 4))
3551 assert_equal(0z11223344, slice(0z001122334455, 1, -1)) 3557 assert_equal(0z11223344, slice(0z001122334455, 1, -1))
3552 assert_equal(0z11, slice(0z001122334455, 1, -4)) 3558 assert_equal(0z11, slice(0z001122334455, 1, -4))
3553 assert_equal(0z, slice(0z001122334455, 1, -5)) 3559 assert_equal(0z, slice(0z001122334455, 1, -5))
3554 assert_equal(0z, slice(0z001122334455, 1, -6)) 3560 assert_equal(0z, slice(0z001122334455, 1, -6))
3555 CheckDefAndScriptFailure(['slice({"a": 10}, 1)'], ['E1013: Argument 1: type mismatch, expected list<any> but got dict<number>', 'E1211: List required for argument 1']) 3561 v9.CheckDefAndScriptFailure(['slice({"a": 10}, 1)'], ['E1013: Argument 1: type mismatch, expected list<any> but got dict<number>', 'E1211: List required for argument 1'])
3556 CheckDefAndScriptFailure(['slice([1, 2, 3], "b")'], ['E1013: Argument 2: type mismatch, expected number but got string', 'E1210: Number required for argument 2']) 3562 v9.CheckDefAndScriptFailure(['slice([1, 2, 3], "b")'], ['E1013: Argument 2: type mismatch, expected number but got string', 'E1210: Number required for argument 2'])
3557 CheckDefAndScriptFailure(['slice("abc", 1, "c")'], ['E1013: Argument 3: type mismatch, expected number but got string', 'E1210: Number required for argument 3']) 3563 v9.CheckDefAndScriptFailure(['slice("abc", 1, "c")'], ['E1013: Argument 3: type mismatch, expected number but got string', 'E1210: Number required for argument 3'])
3558 enddef 3564 enddef
3559 3565
3560 def Test_spellsuggest() 3566 def Test_spellsuggest()
3561 if !has('spell') 3567 if !has('spell')
3562 CheckFeature spell 3568 CheckFeature spell
3563 else 3569 else
3564 spellsuggest('marrch', 1, true)->assert_equal(['March']) 3570 spellsuggest('marrch', 1, true)->assert_equal(['March'])
3565 endif 3571 endif
3566 CheckDefAndScriptFailure(['spellsuggest(1)'], ['E1013: Argument 1: type mismatch, expected string but got number', 'E1174: String required for argument 1']) 3572 v9.CheckDefAndScriptFailure(['spellsuggest(1)'], ['E1013: Argument 1: type mismatch, expected string but got number', 'E1174: String required for argument 1'])
3567 CheckDefAndScriptFailure(['spellsuggest("a", "b")'], ['E1013: Argument 2: type mismatch, expected number but got string', 'E1210: Number required for argument 2']) 3573 v9.CheckDefAndScriptFailure(['spellsuggest("a", "b")'], ['E1013: Argument 2: type mismatch, expected number but got string', 'E1210: Number required for argument 2'])
3568 CheckDefAndScriptFailure(['spellsuggest("a", 1, 0z01)'], ['E1013: Argument 3: type mismatch, expected bool but got blob', 'E1212: Bool required for argument 3']) 3574 v9.CheckDefAndScriptFailure(['spellsuggest("a", 1, 0z01)'], ['E1013: Argument 3: type mismatch, expected bool but got blob', 'E1212: Bool required for argument 3'])
3569 spellsuggest('')->assert_equal([]) 3575 spellsuggest('')->assert_equal([])
3570 enddef 3576 enddef
3571 3577
3572 def Test_sound_playevent() 3578 def Test_sound_playevent()
3573 CheckFeature sound 3579 CheckFeature sound
3574 CheckDefAndScriptFailure(['sound_playevent(1)'], ['E1013: Argument 1: type mismatch, expected string but got number', 'E1174: String required for argument 1']) 3580 v9.CheckDefAndScriptFailure(['sound_playevent(1)'], ['E1013: Argument 1: type mismatch, expected string but got number', 'E1174: String required for argument 1'])
3575 enddef 3581 enddef
3576 3582
3577 def Test_sound_playfile() 3583 def Test_sound_playfile()
3578 CheckFeature sound 3584 CheckFeature sound
3579 CheckDefAndScriptFailure(['sound_playfile(1)'], ['E1013: Argument 1: type mismatch, expected string but got number', 'E1174: String required for argument 1']) 3585 v9.CheckDefAndScriptFailure(['sound_playfile(1)'], ['E1013: Argument 1: type mismatch, expected string but got number', 'E1174: String required for argument 1'])
3580 enddef 3586 enddef
3581 3587
3582 def Test_sound_stop() 3588 def Test_sound_stop()
3583 CheckFeature sound 3589 CheckFeature sound
3584 CheckDefAndScriptFailure(['sound_stop("x")'], ['E1013: Argument 1: type mismatch, expected number but got string', 'E1210: Number required for argument 1']) 3590 v9.CheckDefAndScriptFailure(['sound_stop("x")'], ['E1013: Argument 1: type mismatch, expected number but got string', 'E1210: Number required for argument 1'])
3585 enddef 3591 enddef
3586 3592
3587 def Test_soundfold() 3593 def Test_soundfold()
3588 CheckDefAndScriptFailure(['soundfold(20)'], ['E1013: Argument 1: type mismatch, expected string but got number', 'E1174: String required for argument 1']) 3594 v9.CheckDefAndScriptFailure(['soundfold(20)'], ['E1013: Argument 1: type mismatch, expected string but got number', 'E1174: String required for argument 1'])
3589 assert_equal('abc', soundfold('abc')) 3595 assert_equal('abc', soundfold('abc'))
3590 assert_equal('', soundfold('')) 3596 assert_equal('', soundfold(''))
3591 enddef 3597 enddef
3592 3598
3593 def Test_sort_return_type() 3599 def Test_sort_return_type()
3605 enddef 3611 enddef
3606 var l = [3, 6, 7, 1, 8, 2, 4, 5] 3612 var l = [3, 6, 7, 1, 8, 2, 4, 5]
3607 sort(l, Compare) 3613 sort(l, Compare)
3608 assert_equal([1, 2, 3, 4, 5, 6, 7, 8], l) 3614 assert_equal([1, 2, 3, 4, 5, 6, 7, 8], l)
3609 END 3615 END
3610 CheckDefAndScriptSuccess(lines) 3616 v9.CheckDefAndScriptSuccess(lines)
3611 CheckDefAndScriptFailure(['sort("a")'], ['E1013: Argument 1: type mismatch, expected list<any> but got string', 'E1211: List required for argument 1']) 3617 v9.CheckDefAndScriptFailure(['sort("a")'], ['E1013: Argument 1: type mismatch, expected list<any> but got string', 'E1211: List required for argument 1'])
3612 CheckDefAndScriptFailure(['sort([1], "", [1])'], ['E1013: Argument 3: type mismatch, expected dict<any> but got list<number>', 'E1206: Dictionary required for argument 3']) 3618 v9.CheckDefAndScriptFailure(['sort([1], "", [1])'], ['E1013: Argument 3: type mismatch, expected dict<any> but got list<number>', 'E1206: Dictionary required for argument 3'])
3613 enddef 3619 enddef
3614 3620
3615 def Test_sort_compare_func_fails() 3621 def Test_sort_compare_func_fails()
3616 var lines =<< trim END 3622 var lines =<< trim END
3617 vim9script 3623 vim9script
3622 3628
3623 delete('Xbadsort') 3629 delete('Xbadsort')
3624 enddef 3630 enddef
3625 3631
3626 def Test_spellbadword() 3632 def Test_spellbadword()
3627 CheckDefAndScriptFailure(['spellbadword(100)'], ['E1013: Argument 1: type mismatch, expected string but got number', 'E1174: String required for argument 1']) 3633 v9.CheckDefAndScriptFailure(['spellbadword(100)'], ['E1013: Argument 1: type mismatch, expected string but got number', 'E1174: String required for argument 1'])
3628 spellbadword('good')->assert_equal(['', '']) 3634 spellbadword('good')->assert_equal(['', ''])
3629 spellbadword('')->assert_equal(['', '']) 3635 spellbadword('')->assert_equal(['', ''])
3630 enddef 3636 enddef
3631 3637
3632 def Test_split() 3638 def Test_split()
3633 split(' aa bb ', '\W\+', true)->assert_equal(['', 'aa', 'bb', '']) 3639 split(' aa bb ', '\W\+', true)->assert_equal(['', 'aa', 'bb', ''])
3634 CheckDefAndScriptFailure(['split(1, "b")'], ['E1013: Argument 1: type mismatch, expected string but got number', 'E1174: String required for argument 1']) 3640 v9.CheckDefAndScriptFailure(['split(1, "b")'], ['E1013: Argument 1: type mismatch, expected string but got number', 'E1174: String required for argument 1'])
3635 CheckDefAndScriptFailure(['split("a", 2)'], ['E1013: Argument 2: type mismatch, expected string but got number', 'E1174: String required for argument 2']) 3641 v9.CheckDefAndScriptFailure(['split("a", 2)'], ['E1013: Argument 2: type mismatch, expected string but got number', 'E1174: String required for argument 2'])
3636 CheckDefAndScriptFailure(['split("a", "b", 2)'], ['E1013: Argument 3: type mismatch, expected bool but got number', 'E1212: Bool required for argument 3']) 3642 v9.CheckDefAndScriptFailure(['split("a", "b", 2)'], ['E1013: Argument 3: type mismatch, expected bool but got number', 'E1212: Bool required for argument 3'])
3637 split('')->assert_equal([]) 3643 split('')->assert_equal([])
3638 split('', '')->assert_equal([]) 3644 split('', '')->assert_equal([])
3639 enddef 3645 enddef
3640 3646
3641 def Test_srand() 3647 def Test_srand()
3642 CheckDefAndScriptFailure(['srand("a")'], ['E1013: Argument 1: type mismatch, expected number but got string', 'E1210: Number required for argument 1']) 3648 v9.CheckDefAndScriptFailure(['srand("a")'], ['E1013: Argument 1: type mismatch, expected number but got string', 'E1210: Number required for argument 1'])
3643 type(srand(100))->assert_equal(v:t_list) 3649 type(srand(100))->assert_equal(v:t_list)
3644 enddef 3650 enddef
3645 3651
3646 def Test_state() 3652 def Test_state()
3647 CheckDefAndScriptFailure(['state({})'], ['E1013: Argument 1: type mismatch, expected string but got dict<unknown>', 'E1174: String required for argument 1']) 3653 v9.CheckDefAndScriptFailure(['state({})'], ['E1013: Argument 1: type mismatch, expected string but got dict<unknown>', 'E1174: String required for argument 1'])
3648 assert_equal('', state('a')) 3654 assert_equal('', state('a'))
3649 enddef 3655 enddef
3650 3656
3651 def Test_str2float() 3657 def Test_str2float()
3652 if !has('float') 3658 if !has('float')
3654 else 3660 else
3655 str2float("1.00")->assert_equal(1.00) 3661 str2float("1.00")->assert_equal(1.00)
3656 str2float("2e-2")->assert_equal(0.02) 3662 str2float("2e-2")->assert_equal(0.02)
3657 str2float('')->assert_equal(0.0) 3663 str2float('')->assert_equal(0.0)
3658 3664
3659 CheckDefAndScriptFailure(['str2float(123)'], ['E1013: Argument 1: type mismatch, expected string but got number', 'E1174: String required for argument 1']) 3665 v9.CheckDefAndScriptFailure(['str2float(123)'], ['E1013: Argument 1: type mismatch, expected string but got number', 'E1174: String required for argument 1'])
3660 endif 3666 endif
3661 enddef 3667 enddef
3662 3668
3663 def Test_str2list() 3669 def Test_str2list()
3664 CheckDefAndScriptFailure(['str2list(10)'], ['E1013: Argument 1: type mismatch, expected string but got number', 'E1174: String required for argument 1']) 3670 v9.CheckDefAndScriptFailure(['str2list(10)'], ['E1013: Argument 1: type mismatch, expected string but got number', 'E1174: String required for argument 1'])
3665 CheckDefAndScriptFailure(['str2list("a", 2)'], ['E1013: Argument 2: type mismatch, expected bool but got number', 'E1212: Bool required for argument 2']) 3671 v9.CheckDefAndScriptFailure(['str2list("a", 2)'], ['E1013: Argument 2: type mismatch, expected bool but got number', 'E1212: Bool required for argument 2'])
3666 assert_equal([97], str2list('a')) 3672 assert_equal([97], str2list('a'))
3667 assert_equal([97], str2list('a', 1)) 3673 assert_equal([97], str2list('a', 1))
3668 assert_equal([97], str2list('a', true)) 3674 assert_equal([97], str2list('a', true))
3669 str2list('')->assert_equal([]) 3675 str2list('')->assert_equal([])
3670 enddef 3676 enddef
3671 3677
3672 def Test_str2nr() 3678 def Test_str2nr()
3673 str2nr("1'000'000", 10, true)->assert_equal(1000000) 3679 str2nr("1'000'000", 10, true)->assert_equal(1000000)
3674 str2nr('')->assert_equal(0) 3680 str2nr('')->assert_equal(0)
3675 3681
3676 CheckDefAndScriptFailure(['str2nr(123)'], ['E1013: Argument 1: type mismatch, expected string but got number', 'E1174: String required for argument 1']) 3682 v9.CheckDefAndScriptFailure(['str2nr(123)'], ['E1013: Argument 1: type mismatch, expected string but got number', 'E1174: String required for argument 1'])
3677 CheckDefAndScriptFailure(['str2nr("123", "x")'], ['E1013: Argument 2: type mismatch, expected number but got string', 'E1210: Number required for argument 2']) 3683 v9.CheckDefAndScriptFailure(['str2nr("123", "x")'], ['E1013: Argument 2: type mismatch, expected number but got string', 'E1210: Number required for argument 2'])
3678 CheckDefAndScriptFailure(['str2nr("123", 10, "x")'], ['E1013: Argument 3: type mismatch, expected bool but got string', 'E1212: Bool required for argument 3']) 3684 v9.CheckDefAndScriptFailure(['str2nr("123", 10, "x")'], ['E1013: Argument 3: type mismatch, expected bool but got string', 'E1212: Bool required for argument 3'])
3679 enddef 3685 enddef
3680 3686
3681 def Test_strcharlen() 3687 def Test_strcharlen()
3682 CheckDefAndScriptFailure(['strcharlen([1])'], ['E1013: Argument 1: type mismatch, expected string but got list<number>', 'E1220: String or Number required for argument 1']) 3688 v9.CheckDefAndScriptFailure(['strcharlen([1])'], ['E1013: Argument 1: type mismatch, expected string but got list<number>', 'E1220: String or Number required for argument 1'])
3683 "abc"->strcharlen()->assert_equal(3) 3689 "abc"->strcharlen()->assert_equal(3)
3684 strcharlen(99)->assert_equal(2) 3690 strcharlen(99)->assert_equal(2)
3685 enddef 3691 enddef
3686 3692
3687 def Test_strcharpart() 3693 def Test_strcharpart()
3688 CheckDefAndScriptFailure(['strcharpart(1, 2)'], ['E1013: Argument 1: type mismatch, expected string but got number', 'E1174: String required for argument 1']) 3694 v9.CheckDefAndScriptFailure(['strcharpart(1, 2)'], ['E1013: Argument 1: type mismatch, expected string but got number', 'E1174: String required for argument 1'])
3689 CheckDefAndScriptFailure(['strcharpart("a", "b")'], ['E1013: Argument 2: type mismatch, expected number but got string', 'E1210: Number required for argument 2']) 3695 v9.CheckDefAndScriptFailure(['strcharpart("a", "b")'], ['E1013: Argument 2: type mismatch, expected number but got string', 'E1210: Number required for argument 2'])
3690 CheckDefAndScriptFailure(['strcharpart("a", 1, "c")'], ['E1013: Argument 3: type mismatch, expected number but got string', 'E1210: Number required for argument 3']) 3696 v9.CheckDefAndScriptFailure(['strcharpart("a", 1, "c")'], ['E1013: Argument 3: type mismatch, expected number but got string', 'E1210: Number required for argument 3'])
3691 CheckDefAndScriptFailure(['strcharpart("a", 1, 1, 2)'], ['E1013: Argument 4: type mismatch, expected bool but got number', 'E1212: Bool required for argument 4']) 3697 v9.CheckDefAndScriptFailure(['strcharpart("a", 1, 1, 2)'], ['E1013: Argument 4: type mismatch, expected bool but got number', 'E1212: Bool required for argument 4'])
3692 strcharpart('', 0)->assert_equal('') 3698 strcharpart('', 0)->assert_equal('')
3693 enddef 3699 enddef
3694 3700
3695 def Test_strchars() 3701 def Test_strchars()
3696 strchars("A\u20dd", true)->assert_equal(1) 3702 strchars("A\u20dd", true)->assert_equal(1)
3697 CheckDefAndScriptFailure(['strchars(10)'], ['E1013: Argument 1: type mismatch, expected string but got number', 'E1174: String required for argument 1']) 3703 v9.CheckDefAndScriptFailure(['strchars(10)'], ['E1013: Argument 1: type mismatch, expected string but got number', 'E1174: String required for argument 1'])
3698 CheckDefAndScriptFailure(['strchars("a", 2)'], ['E1013: Argument 2: type mismatch, expected bool but got number', 'E1212: Bool required for argument 2']) 3704 v9.CheckDefAndScriptFailure(['strchars("a", 2)'], ['E1013: Argument 2: type mismatch, expected bool but got number', 'E1212: Bool required for argument 2'])
3699 assert_equal(3, strchars('abc')) 3705 assert_equal(3, strchars('abc'))
3700 assert_equal(3, strchars('abc', 1)) 3706 assert_equal(3, strchars('abc', 1))
3701 assert_equal(3, strchars('abc', true)) 3707 assert_equal(3, strchars('abc', true))
3702 strchars('')->assert_equal(0) 3708 strchars('')->assert_equal(0)
3703 enddef 3709 enddef
3704 3710
3705 def Test_strdisplaywidth() 3711 def Test_strdisplaywidth()
3706 CheckDefAndScriptFailure(['strdisplaywidth(1)'], ['E1013: Argument 1: type mismatch, expected string but got number', 'E1174: String required for argument 1']) 3712 v9.CheckDefAndScriptFailure(['strdisplaywidth(1)'], ['E1013: Argument 1: type mismatch, expected string but got number', 'E1174: String required for argument 1'])
3707 CheckDefAndScriptFailure(['strdisplaywidth("a", "x")'], ['E1013: Argument 2: type mismatch, expected number but got string', 'E1210: Number required for argument 2']) 3713 v9.CheckDefAndScriptFailure(['strdisplaywidth("a", "x")'], ['E1013: Argument 2: type mismatch, expected number but got string', 'E1210: Number required for argument 2'])
3708 strdisplaywidth('')->assert_equal(0) 3714 strdisplaywidth('')->assert_equal(0)
3709 enddef 3715 enddef
3710 3716
3711 def Test_strftime() 3717 def Test_strftime()
3712 if exists('*strftime') 3718 if exists('*strftime')
3713 CheckDefAndScriptFailure(['strftime(1)'], ['E1013: Argument 1: type mismatch, expected string but got number', 'E1174: String required for argument 1']) 3719 v9.CheckDefAndScriptFailure(['strftime(1)'], ['E1013: Argument 1: type mismatch, expected string but got number', 'E1174: String required for argument 1'])
3714 CheckDefAndScriptFailure(['strftime("a", "x")'], ['E1013: Argument 2: type mismatch, expected number but got string', 'E1210: Number required for argument 2']) 3720 v9.CheckDefAndScriptFailure(['strftime("a", "x")'], ['E1013: Argument 2: type mismatch, expected number but got string', 'E1210: Number required for argument 2'])
3715 strftime('')->assert_equal('') 3721 strftime('')->assert_equal('')
3716 endif 3722 endif
3717 enddef 3723 enddef
3718 3724
3719 def Test_strgetchar() 3725 def Test_strgetchar()
3720 CheckDefAndScriptFailure(['strgetchar(1, 1)'], ['E1013: Argument 1: type mismatch, expected string but got number', 'E1174: String required for argument 1']) 3726 v9.CheckDefAndScriptFailure(['strgetchar(1, 1)'], ['E1013: Argument 1: type mismatch, expected string but got number', 'E1174: String required for argument 1'])
3721 CheckDefAndScriptFailure(['strgetchar("a", "x")'], ['E1013: Argument 2: type mismatch, expected number but got string', 'E1210: Number required for argument 2']) 3727 v9.CheckDefAndScriptFailure(['strgetchar("a", "x")'], ['E1013: Argument 2: type mismatch, expected number but got string', 'E1210: Number required for argument 2'])
3722 strgetchar('', 0)->assert_equal(-1) 3728 strgetchar('', 0)->assert_equal(-1)
3723 strgetchar('', 1)->assert_equal(-1) 3729 strgetchar('', 1)->assert_equal(-1)
3724 enddef 3730 enddef
3725 3731
3726 def Test_stridx() 3732 def Test_stridx()
3727 CheckDefAndScriptFailure(['stridx([1], "b")'], ['E1013: Argument 1: type mismatch, expected string but got list<number>', 'E1174: String required for argument 1']) 3733 v9.CheckDefAndScriptFailure(['stridx([1], "b")'], ['E1013: Argument 1: type mismatch, expected string but got list<number>', 'E1174: String required for argument 1'])
3728 CheckDefAndScriptFailure(['stridx("a", {})'], ['E1013: Argument 2: type mismatch, expected string but got dict<unknown>', 'E1174: String required for argument 2']) 3734 v9.CheckDefAndScriptFailure(['stridx("a", {})'], ['E1013: Argument 2: type mismatch, expected string but got dict<unknown>', 'E1174: String required for argument 2'])
3729 CheckDefAndScriptFailure(['stridx("a", "b", "c")'], ['E1013: Argument 3: type mismatch, expected number but got string', 'E1210: Number required for argument 3']) 3735 v9.CheckDefAndScriptFailure(['stridx("a", "b", "c")'], ['E1013: Argument 3: type mismatch, expected number but got string', 'E1210: Number required for argument 3'])
3730 stridx('', '')->assert_equal(0) 3736 stridx('', '')->assert_equal(0)
3731 stridx('', 'a')->assert_equal(-1) 3737 stridx('', 'a')->assert_equal(-1)
3732 stridx('a', '')->assert_equal(0) 3738 stridx('a', '')->assert_equal(0)
3733 enddef 3739 enddef
3734 3740
3735 def Test_strlen() 3741 def Test_strlen()
3736 CheckDefAndScriptFailure(['strlen([])'], ['E1013: Argument 1: type mismatch, expected string but got list<unknown>', 'E1220: String or Number required for argument 1']) 3742 v9.CheckDefAndScriptFailure(['strlen([])'], ['E1013: Argument 1: type mismatch, expected string but got list<unknown>', 'E1220: String or Number required for argument 1'])
3737 "abc"->strlen()->assert_equal(3) 3743 "abc"->strlen()->assert_equal(3)
3738 strlen(99)->assert_equal(2) 3744 strlen(99)->assert_equal(2)
3739 enddef 3745 enddef
3740 3746
3741 def Test_strpart() 3747 def Test_strpart()
3742 CheckDefAndScriptFailure(['strpart(1, 2)'], ['E1013: Argument 1: type mismatch, expected string but got number', 'E1174: String required for argument 1']) 3748 v9.CheckDefAndScriptFailure(['strpart(1, 2)'], ['E1013: Argument 1: type mismatch, expected string but got number', 'E1174: String required for argument 1'])
3743 CheckDefAndScriptFailure(['strpart("a", "b")'], ['E1013: Argument 2: type mismatch, expected number but got string', 'E1210: Number required for argument 2']) 3749 v9.CheckDefAndScriptFailure(['strpart("a", "b")'], ['E1013: Argument 2: type mismatch, expected number but got string', 'E1210: Number required for argument 2'])
3744 CheckDefAndScriptFailure(['strpart("a", 1, "c")'], ['E1013: Argument 3: type mismatch, expected number but got string', 'E1210: Number required for argument 3']) 3750 v9.CheckDefAndScriptFailure(['strpart("a", 1, "c")'], ['E1013: Argument 3: type mismatch, expected number but got string', 'E1210: Number required for argument 3'])
3745 CheckDefAndScriptFailure(['strpart("a", 1, 1, 2)'], ['E1013: Argument 4: type mismatch, expected bool but got number', 'E1212: Bool required for argument 4']) 3751 v9.CheckDefAndScriptFailure(['strpart("a", 1, 1, 2)'], ['E1013: Argument 4: type mismatch, expected bool but got number', 'E1212: Bool required for argument 4'])
3746 strpart('', 0)->assert_equal('') 3752 strpart('', 0)->assert_equal('')
3747 enddef 3753 enddef
3748 3754
3749 def Test_strptime() 3755 def Test_strptime()
3750 CheckFunction strptime 3756 CheckFunction strptime
3751 if exists_compiled('*strptime') 3757 if exists_compiled('*strptime')
3752 CheckDefAndScriptFailure(['strptime(10, "2021")'], ['E1013: Argument 1: type mismatch, expected string but got number', 'E1174: String required for argument 1']) 3758 v9.CheckDefAndScriptFailure(['strptime(10, "2021")'], ['E1013: Argument 1: type mismatch, expected string but got number', 'E1174: String required for argument 1'])
3753 CheckDefAndScriptFailure(['strptime("%Y", 2021)'], ['E1013: Argument 2: type mismatch, expected string but got number', 'E1174: String required for argument 2']) 3759 v9.CheckDefAndScriptFailure(['strptime("%Y", 2021)'], ['E1013: Argument 2: type mismatch, expected string but got number', 'E1174: String required for argument 2'])
3754 assert_true(strptime('%Y', '2021') != 0) 3760 assert_true(strptime('%Y', '2021') != 0)
3755 assert_true(strptime('%Y', '') == 0) 3761 assert_true(strptime('%Y', '') == 0)
3756 endif 3762 endif
3757 enddef 3763 enddef
3758 3764
3759 def Test_strridx() 3765 def Test_strridx()
3760 CheckDefAndScriptFailure(['strridx([1], "b")'], ['E1013: Argument 1: type mismatch, expected string but got list<number>', 'E1174: String required for argument 1']) 3766 v9.CheckDefAndScriptFailure(['strridx([1], "b")'], ['E1013: Argument 1: type mismatch, expected string but got list<number>', 'E1174: String required for argument 1'])
3761 CheckDefAndScriptFailure(['strridx("a", {})'], ['E1013: Argument 2: type mismatch, expected string but got dict<unknown>', 'E1174: String required for argument 2']) 3767 v9.CheckDefAndScriptFailure(['strridx("a", {})'], ['E1013: Argument 2: type mismatch, expected string but got dict<unknown>', 'E1174: String required for argument 2'])
3762 CheckDefAndScriptFailure(['strridx("a", "b", "c")'], ['E1013: Argument 3: type mismatch, expected number but got string', 'E1210: Number required for argument 3']) 3768 v9.CheckDefAndScriptFailure(['strridx("a", "b", "c")'], ['E1013: Argument 3: type mismatch, expected number but got string', 'E1210: Number required for argument 3'])
3763 strridx('', '')->assert_equal(0) 3769 strridx('', '')->assert_equal(0)
3764 strridx('', 'a')->assert_equal(-1) 3770 strridx('', 'a')->assert_equal(-1)
3765 strridx('a', '')->assert_equal(1) 3771 strridx('a', '')->assert_equal(1)
3766 enddef 3772 enddef
3767 3773
3768 def Test_strtrans() 3774 def Test_strtrans()
3769 CheckDefAndScriptFailure(['strtrans(20)'], ['E1013: Argument 1: type mismatch, expected string but got number', 'E1174: String required for argument 1']) 3775 v9.CheckDefAndScriptFailure(['strtrans(20)'], ['E1013: Argument 1: type mismatch, expected string but got number', 'E1174: String required for argument 1'])
3770 assert_equal('abc', strtrans('abc')) 3776 assert_equal('abc', strtrans('abc'))
3771 strtrans('')->assert_equal('') 3777 strtrans('')->assert_equal('')
3772 enddef 3778 enddef
3773 3779
3774 def Test_strwidth() 3780 def Test_strwidth()
3775 CheckDefAndScriptFailure(['strwidth(10)'], ['E1013: Argument 1: type mismatch, expected string but got number', 'E1174: String required for argument 1']) 3781 v9.CheckDefAndScriptFailure(['strwidth(10)'], ['E1013: Argument 1: type mismatch, expected string but got number', 'E1174: String required for argument 1'])
3776 assert_equal(4, strwidth('abcd')) 3782 assert_equal(4, strwidth('abcd'))
3777 strwidth('')->assert_equal(0) 3783 strwidth('')->assert_equal(0)
3778 enddef 3784 enddef
3779 3785
3780 def Test_submatch() 3786 def Test_submatch()
3781 var pat = 'A\(.\)\(.\)\(.\)\(.\)\(.\)\(.\)\(.\)\(.\)\(.\)' 3787 var pat = 'A\(.\)\(.\)\(.\)\(.\)\(.\)\(.\)\(.\)\(.\)\(.\)'
3782 var Rep = () => range(10)->mapnew((_, v) => submatch(v, true))->string() 3788 var Rep = () => range(10)->mapnew((_, v) => submatch(v, true))->string()
3783 var actual = substitute('A123456789', pat, Rep, '') 3789 var actual = substitute('A123456789', pat, Rep, '')
3784 var expected = "[['A123456789'], ['1'], ['2'], ['3'], ['4'], ['5'], ['6'], ['7'], ['8'], ['9']]" 3790 var expected = "[['A123456789'], ['1'], ['2'], ['3'], ['4'], ['5'], ['6'], ['7'], ['8'], ['9']]"
3785 actual->assert_equal(expected) 3791 actual->assert_equal(expected)
3786 CheckDefAndScriptFailure(['submatch("x")'], ['E1013: Argument 1: type mismatch, expected number but got string', 'E1210: Number required for argument 1']) 3792 v9.CheckDefAndScriptFailure(['submatch("x")'], ['E1013: Argument 1: type mismatch, expected number but got string', 'E1210: Number required for argument 1'])
3787 CheckDefAndScriptFailure(['submatch(1, "a")'], ['E1013: Argument 2: type mismatch, expected bool but got string', 'E1212: Bool required for argument 2']) 3793 v9.CheckDefAndScriptFailure(['submatch(1, "a")'], ['E1013: Argument 2: type mismatch, expected bool but got string', 'E1212: Bool required for argument 2'])
3788 enddef 3794 enddef
3789 3795
3790 def Test_substitute() 3796 def Test_substitute()
3791 var res = substitute('A1234', '\d', 'X', '') 3797 var res = substitute('A1234', '\d', 'X', '')
3792 assert_equal('AX234', res) 3798 assert_equal('AX234', res)
3793 3799
3794 if has('job') 3800 if has('job')
3795 assert_fails('"text"->substitute(".*", () => test_null_job(), "")', 'E908: using an invalid value as a String: job') 3801 assert_fails('"text"->substitute(".*", () => test_null_job(), "")', 'E908: using an invalid value as a String: job')
3796 assert_fails('"text"->substitute(".*", () => test_null_channel(), "")', 'E908: using an invalid value as a String: channel') 3802 assert_fails('"text"->substitute(".*", () => test_null_channel(), "")', 'E908: using an invalid value as a String: channel')
3797 endif 3803 endif
3798 CheckDefAndScriptFailure(['substitute(1, "b", "1", "d")'], ['E1013: Argument 1: type mismatch, expected string but got number', 'E1174: String required for argument 1']) 3804 v9.CheckDefAndScriptFailure(['substitute(1, "b", "1", "d")'], ['E1013: Argument 1: type mismatch, expected string but got number', 'E1174: String required for argument 1'])
3799 CheckDefAndScriptFailure(['substitute("a", 2, "1", "d")'], ['E1013: Argument 2: type mismatch, expected string but got number', 'E1174: String required for argument 2']) 3805 v9.CheckDefAndScriptFailure(['substitute("a", 2, "1", "d")'], ['E1013: Argument 2: type mismatch, expected string but got number', 'E1174: String required for argument 2'])
3800 CheckDefAndScriptFailure(['substitute("a", "b", "1", 4)'], ['E1013: Argument 4: type mismatch, expected string but got number', 'E1174: String required for argument 4']) 3806 v9.CheckDefAndScriptFailure(['substitute("a", "b", "1", 4)'], ['E1013: Argument 4: type mismatch, expected string but got number', 'E1174: String required for argument 4'])
3801 substitute('', '', '', '')->assert_equal('') 3807 substitute('', '', '', '')->assert_equal('')
3802 enddef 3808 enddef
3803 3809
3804 def Test_swapinfo() 3810 def Test_swapinfo()
3805 CheckDefAndScriptFailure(['swapinfo({})'], ['E1013: Argument 1: type mismatch, expected string but got dict<unknown>', 'E1174: String required for argument 1']) 3811 v9.CheckDefAndScriptFailure(['swapinfo({})'], ['E1013: Argument 1: type mismatch, expected string but got dict<unknown>', 'E1174: String required for argument 1'])
3806 call swapinfo('x')->assert_equal({error: 'Cannot open file'}) 3812 call swapinfo('x')->assert_equal({error: 'Cannot open file'})
3807 call swapinfo('')->assert_equal({error: 'Cannot open file'}) 3813 call swapinfo('')->assert_equal({error: 'Cannot open file'})
3808 enddef 3814 enddef
3809 3815
3810 def Test_swapname() 3816 def Test_swapname()
3811 CheckDefAndScriptFailure(['swapname([])'], ['E1013: Argument 1: type mismatch, expected string but got list<unknown>', 'E1220: String or Number required for argument 1']) 3817 v9.CheckDefAndScriptFailure(['swapname([])'], ['E1013: Argument 1: type mismatch, expected string but got list<unknown>', 'E1220: String or Number required for argument 1'])
3812 assert_fails('swapname("NonExistingBuf")', 'E94:') 3818 assert_fails('swapname("NonExistingBuf")', 'E94:')
3813 enddef 3819 enddef
3814 3820
3815 def Test_synID() 3821 def Test_synID()
3816 new 3822 new
3817 setline(1, "text") 3823 setline(1, "text")
3818 synID(1, 1, true)->assert_equal(0) 3824 synID(1, 1, true)->assert_equal(0)
3819 bwipe! 3825 bwipe!
3820 CheckDefAndScriptFailure(['synID(0z10, 1, true)'], ['E1013: Argument 1: type mismatch, expected string but got blob', 'E1220: String or Number required for argument 1']) 3826 v9.CheckDefAndScriptFailure(['synID(0z10, 1, true)'], ['E1013: Argument 1: type mismatch, expected string but got blob', 'E1220: String or Number required for argument 1'])
3821 CheckDefAndScriptFailure(['synID("a", true, false)'], ['E1013: Argument 2: type mismatch, expected number but got bool', 'E1210: Number required for argument 2']) 3827 v9.CheckDefAndScriptFailure(['synID("a", true, false)'], ['E1013: Argument 2: type mismatch, expected number but got bool', 'E1210: Number required for argument 2'])
3822 CheckDefAndScriptFailure(['synID(1, 1, 2)'], ['E1013: Argument 3: type mismatch, expected bool but got number', 'E1212: Bool required for argument 3']) 3828 v9.CheckDefAndScriptFailure(['synID(1, 1, 2)'], ['E1013: Argument 3: type mismatch, expected bool but got number', 'E1212: Bool required for argument 3'])
3823 CheckDefExecAndScriptFailure(['synID("", 10, true)'], 'E1209: Invalid value for a line number') 3829 v9.CheckDefExecAndScriptFailure(['synID("", 10, true)'], 'E1209: Invalid value for a line number')
3824 enddef 3830 enddef
3825 3831
3826 def Test_synIDattr() 3832 def Test_synIDattr()
3827 CheckDefAndScriptFailure(['synIDattr("a", "b")'], ['E1013: Argument 1: type mismatch, expected number but got string', 'E1210: Number required for argument 1']) 3833 v9.CheckDefAndScriptFailure(['synIDattr("a", "b")'], ['E1013: Argument 1: type mismatch, expected number but got string', 'E1210: Number required for argument 1'])
3828 CheckDefAndScriptFailure(['synIDattr(1, 2)'], ['E1013: Argument 2: type mismatch, expected string but got number', 'E1174: String required for argument 2']) 3834 v9.CheckDefAndScriptFailure(['synIDattr(1, 2)'], ['E1013: Argument 2: type mismatch, expected string but got number', 'E1174: String required for argument 2'])
3829 CheckDefAndScriptFailure(['synIDattr(1, "b", 3)'], ['E1013: Argument 3: type mismatch, expected string but got number', 'E1174: String required for argument 3']) 3835 v9.CheckDefAndScriptFailure(['synIDattr(1, "b", 3)'], ['E1013: Argument 3: type mismatch, expected string but got number', 'E1174: String required for argument 3'])
3830 synIDattr(1, '', '')->assert_equal('') 3836 synIDattr(1, '', '')->assert_equal('')
3831 enddef 3837 enddef
3832 3838
3833 def Test_synIDtrans() 3839 def Test_synIDtrans()
3834 CheckDefAndScriptFailure(['synIDtrans("a")'], ['E1013: Argument 1: type mismatch, expected number but got string', 'E1210: Number required for argument 1']) 3840 v9.CheckDefAndScriptFailure(['synIDtrans("a")'], ['E1013: Argument 1: type mismatch, expected number but got string', 'E1210: Number required for argument 1'])
3835 enddef 3841 enddef
3836 3842
3837 def Test_synconcealed() 3843 def Test_synconcealed()
3838 CheckDefAndScriptFailure(['synconcealed(0z10, 1)'], ['E1013: Argument 1: type mismatch, expected string but got blob', 'E1220: String or Number required for argument 1']) 3844 v9.CheckDefAndScriptFailure(['synconcealed(0z10, 1)'], ['E1013: Argument 1: type mismatch, expected string but got blob', 'E1220: String or Number required for argument 1'])
3839 CheckDefAndScriptFailure(['synconcealed(1, "a")'], ['E1013: Argument 2: type mismatch, expected number but got string', 'E1210: Number required for argument 2']) 3845 v9.CheckDefAndScriptFailure(['synconcealed(1, "a")'], ['E1013: Argument 2: type mismatch, expected number but got string', 'E1210: Number required for argument 2'])
3840 if has('conceal') 3846 if has('conceal')
3841 CheckDefExecAndScriptFailure(['synconcealed("", 4)'], 'E1209: Invalid value for a line number') 3847 v9.CheckDefExecAndScriptFailure(['synconcealed("", 4)'], 'E1209: Invalid value for a line number')
3842 endif 3848 endif
3843 enddef 3849 enddef
3844 3850
3845 def Test_synstack() 3851 def Test_synstack()
3846 CheckDefAndScriptFailure(['synstack(0z10, 1)'], ['E1013: Argument 1: type mismatch, expected string but got blob', 'E1220: String or Number required for argument 1']) 3852 v9.CheckDefAndScriptFailure(['synstack(0z10, 1)'], ['E1013: Argument 1: type mismatch, expected string but got blob', 'E1220: String or Number required for argument 1'])
3847 CheckDefAndScriptFailure(['synstack(1, "a")'], ['E1013: Argument 2: type mismatch, expected number but got string', 'E1210: Number required for argument 2']) 3853 v9.CheckDefAndScriptFailure(['synstack(1, "a")'], ['E1013: Argument 2: type mismatch, expected number but got string', 'E1210: Number required for argument 2'])
3848 CheckDefExecAndScriptFailure(['synstack("", 4)'], 'E1209: Invalid value for a line number') 3854 v9.CheckDefExecAndScriptFailure(['synstack("", 4)'], 'E1209: Invalid value for a line number')
3849 enddef 3855 enddef
3850 3856
3851 def Test_system() 3857 def Test_system()
3852 CheckDefAndScriptFailure(['system(1)'], ['E1013: Argument 1: type mismatch, expected string but got number', 'E1174: String required for argument 1']) 3858 v9.CheckDefAndScriptFailure(['system(1)'], ['E1013: Argument 1: type mismatch, expected string but got number', 'E1174: String required for argument 1'])
3853 CheckDefAndScriptFailure(['system("a", {})'], ['E1013: Argument 2: type mismatch, expected string but got dict<unknown>', 'E1224: String, Number or List required for argument 2']) 3859 v9.CheckDefAndScriptFailure(['system("a", {})'], ['E1013: Argument 2: type mismatch, expected string but got dict<unknown>', 'E1224: String, Number or List required for argument 2'])
3854 assert_equal("123\n", system('echo 123')) 3860 assert_equal("123\n", system('echo 123'))
3855 enddef 3861 enddef
3856 3862
3857 def Test_systemlist() 3863 def Test_systemlist()
3858 CheckDefAndScriptFailure(['systemlist(1)'], ['E1013: Argument 1: type mismatch, expected string but got number', 'E1174: String required for argument 1']) 3864 v9.CheckDefAndScriptFailure(['systemlist(1)'], ['E1013: Argument 1: type mismatch, expected string but got number', 'E1174: String required for argument 1'])
3859 CheckDefAndScriptFailure(['systemlist("a", {})'], ['E1013: Argument 2: type mismatch, expected string but got dict<unknown>', 'E1224: String, Number or List required for argument 2']) 3865 v9.CheckDefAndScriptFailure(['systemlist("a", {})'], ['E1013: Argument 2: type mismatch, expected string but got dict<unknown>', 'E1224: String, Number or List required for argument 2'])
3860 if has('win32') 3866 if has('win32')
3861 call assert_equal(["123\r"], systemlist('echo 123')) 3867 call assert_equal(["123\r"], systemlist('echo 123'))
3862 else 3868 else
3863 call assert_equal(['123'], systemlist('echo 123')) 3869 call assert_equal(['123'], systemlist('echo 123'))
3864 endif 3870 endif
3865 enddef 3871 enddef
3866 3872
3867 def Test_tabpagebuflist() 3873 def Test_tabpagebuflist()
3868 CheckDefAndScriptFailure(['tabpagebuflist("t")'], ['E1013: Argument 1: type mismatch, expected number but got string', 'E1210: Number required for argument 1']) 3874 v9.CheckDefAndScriptFailure(['tabpagebuflist("t")'], ['E1013: Argument 1: type mismatch, expected number but got string', 'E1210: Number required for argument 1'])
3869 assert_equal([bufnr('')], tabpagebuflist()) 3875 assert_equal([bufnr('')], tabpagebuflist())
3870 assert_equal([bufnr('')], tabpagebuflist(1)) 3876 assert_equal([bufnr('')], tabpagebuflist(1))
3871 enddef 3877 enddef
3872 3878
3873 def Test_tabpagenr() 3879 def Test_tabpagenr()
3874 CheckDefAndScriptFailure(['tabpagenr(1)'], ['E1013: Argument 1: type mismatch, expected string but got number', 'E1174: String required for argument 1']) 3880 v9.CheckDefAndScriptFailure(['tabpagenr(1)'], ['E1013: Argument 1: type mismatch, expected string but got number', 'E1174: String required for argument 1'])
3875 CheckDefExecAndScriptFailure(['tabpagenr("")'], 'E15: Invalid expression') 3881 v9.CheckDefExecAndScriptFailure(['tabpagenr("")'], 'E15: Invalid expression')
3876 assert_equal(1, tabpagenr('$')) 3882 assert_equal(1, tabpagenr('$'))
3877 assert_equal(1, tabpagenr()) 3883 assert_equal(1, tabpagenr())
3878 enddef 3884 enddef
3879 3885
3880 def Test_tabpagewinnr() 3886 def Test_tabpagewinnr()
3881 CheckDefAndScriptFailure(['tabpagewinnr("x")'], ['E1013: Argument 1: type mismatch, expected number but got string', 'E1210: Number required for argument 1']) 3887 v9.CheckDefAndScriptFailure(['tabpagewinnr("x")'], ['E1013: Argument 1: type mismatch, expected number but got string', 'E1210: Number required for argument 1'])
3882 CheckDefAndScriptFailure(['tabpagewinnr(1, 2)'], ['E1013: Argument 2: type mismatch, expected string but got number', 'E1174: String required for argument 2']) 3888 v9.CheckDefAndScriptFailure(['tabpagewinnr(1, 2)'], ['E1013: Argument 2: type mismatch, expected string but got number', 'E1174: String required for argument 2'])
3883 CheckDefExecAndScriptFailure(['tabpagewinnr(1, "")'], 'E15: Invalid expression') 3889 v9.CheckDefExecAndScriptFailure(['tabpagewinnr(1, "")'], 'E15: Invalid expression')
3884 enddef 3890 enddef
3885 3891
3886 def Test_taglist() 3892 def Test_taglist()
3887 CheckDefAndScriptFailure(['taglist([1])'], ['E1013: Argument 1: type mismatch, expected string but got list<number>', 'E1174: String required for argument 1']) 3893 v9.CheckDefAndScriptFailure(['taglist([1])'], ['E1013: Argument 1: type mismatch, expected string but got list<number>', 'E1174: String required for argument 1'])
3888 CheckDefAndScriptFailure(['taglist("a", [2])'], ['E1013: Argument 2: type mismatch, expected string but got list<number>', 'E1174: String required for argument 2']) 3894 v9.CheckDefAndScriptFailure(['taglist("a", [2])'], ['E1013: Argument 2: type mismatch, expected string but got list<number>', 'E1174: String required for argument 2'])
3889 taglist('')->assert_equal(0) 3895 taglist('')->assert_equal(0)
3890 taglist('', '')->assert_equal(0) 3896 taglist('', '')->assert_equal(0)
3891 enddef 3897 enddef
3892 3898
3893 def Test_term_dumpload() 3899 def Test_term_dumpload()
3894 CheckRunVimInTerminal 3900 CheckRunVimInTerminal
3895 CheckDefAndScriptFailure(['term_dumpload({"a": 10})'], ['E1013: Argument 1: type mismatch, expected string but got dict<number>', 'E1174: String required for argument 1']) 3901 v9.CheckDefAndScriptFailure(['term_dumpload({"a": 10})'], ['E1013: Argument 1: type mismatch, expected string but got dict<number>', 'E1174: String required for argument 1'])
3896 CheckDefAndScriptFailure(['term_dumpload({"a": 10}, "b")'], ['E1013: Argument 1: type mismatch, expected string but got dict<number>', 'E1174: String required for argument 1']) 3902 v9.CheckDefAndScriptFailure(['term_dumpload({"a": 10}, "b")'], ['E1013: Argument 1: type mismatch, expected string but got dict<number>', 'E1174: String required for argument 1'])
3897 CheckDefAndScriptFailure(['term_dumpload("a", ["b"])'], ['E1013: Argument 2: type mismatch, expected dict<any> but got list<string>', 'E1206: Dictionary required for argument 2']) 3903 v9.CheckDefAndScriptFailure(['term_dumpload("a", ["b"])'], ['E1013: Argument 2: type mismatch, expected dict<any> but got list<string>', 'E1206: Dictionary required for argument 2'])
3898 CheckDefExecAndScriptFailure(['term_dumpload("")'], 'E485: Can''t read file') 3904 v9.CheckDefExecAndScriptFailure(['term_dumpload("")'], 'E485: Can''t read file')
3899 enddef 3905 enddef
3900 3906
3901 def Test_term_dumpdiff() 3907 def Test_term_dumpdiff()
3902 CheckRunVimInTerminal 3908 CheckRunVimInTerminal
3903 CheckDefAndScriptFailure(['term_dumpdiff(1, "b")'], ['E1013: Argument 1: type mismatch, expected string but got number', 'E1174: String required for argument 1']) 3909 v9.CheckDefAndScriptFailure(['term_dumpdiff(1, "b")'], ['E1013: Argument 1: type mismatch, expected string but got number', 'E1174: String required for argument 1'])
3904 CheckDefAndScriptFailure(['term_dumpdiff("a", 2)'], ['E1013: Argument 2: type mismatch, expected string but got number', 'E1174: String required for argument 2']) 3910 v9.CheckDefAndScriptFailure(['term_dumpdiff("a", 2)'], ['E1013: Argument 2: type mismatch, expected string but got number', 'E1174: String required for argument 2'])
3905 CheckDefAndScriptFailure(['term_dumpdiff("a", "b", [1])'], ['E1013: Argument 3: type mismatch, expected dict<any> but got list<number>', 'E1206: Dictionary required for argument 3']) 3911 v9.CheckDefAndScriptFailure(['term_dumpdiff("a", "b", [1])'], ['E1013: Argument 3: type mismatch, expected dict<any> but got list<number>', 'E1206: Dictionary required for argument 3'])
3906 CheckDefExecAndScriptFailure(['term_dumpdiff("", "")'], 'E485: Can''t read file') 3912 v9.CheckDefExecAndScriptFailure(['term_dumpdiff("", "")'], 'E485: Can''t read file')
3907 enddef 3913 enddef
3908 3914
3909 def Test_term_dumpwrite() 3915 def Test_term_dumpwrite()
3910 CheckRunVimInTerminal 3916 CheckRunVimInTerminal
3911 CheckDefAndScriptFailure(['term_dumpwrite(true, "b")'], ['E1013: Argument 1: type mismatch, expected string but got bool', 'E1220: String or Number required for argument 1']) 3917 v9.CheckDefAndScriptFailure(['term_dumpwrite(true, "b")'], ['E1013: Argument 1: type mismatch, expected string but got bool', 'E1220: String or Number required for argument 1'])
3912 CheckDefAndScriptFailure(['term_dumpwrite(1, 2)'], ['E1013: Argument 2: type mismatch, expected string but got number', 'E1174: String required for argument 2']) 3918 v9.CheckDefAndScriptFailure(['term_dumpwrite(1, 2)'], ['E1013: Argument 2: type mismatch, expected string but got number', 'E1174: String required for argument 2'])
3913 CheckDefAndScriptFailure(['term_dumpwrite("a", "b", [1])'], ['E1013: Argument 3: type mismatch, expected dict<any> but got list<number>', 'E1206: Dictionary required for argument 3']) 3919 v9.CheckDefAndScriptFailure(['term_dumpwrite("a", "b", [1])'], ['E1013: Argument 3: type mismatch, expected dict<any> but got list<number>', 'E1206: Dictionary required for argument 3'])
3914 enddef 3920 enddef
3915 3921
3916 def Test_term_getaltscreen() 3922 def Test_term_getaltscreen()
3917 CheckRunVimInTerminal 3923 CheckRunVimInTerminal
3918 CheckDefAndScriptFailure(['term_getaltscreen(true)'], ['E1013: Argument 1: type mismatch, expected string but got bool', 'E1220: String or Number required for argument 1']) 3924 v9.CheckDefAndScriptFailure(['term_getaltscreen(true)'], ['E1013: Argument 1: type mismatch, expected string but got bool', 'E1220: String or Number required for argument 1'])
3919 enddef 3925 enddef
3920 3926
3921 def Test_term_getansicolors() 3927 def Test_term_getansicolors()
3922 CheckRunVimInTerminal 3928 CheckRunVimInTerminal
3923 CheckFeature termguicolors 3929 CheckFeature termguicolors
3924 CheckDefAndScriptFailure(['term_getansicolors(["a"])'], ['E1013: Argument 1: type mismatch, expected string but got list<string>', 'E1220: String or Number required for argument 1']) 3930 v9.CheckDefAndScriptFailure(['term_getansicolors(["a"])'], ['E1013: Argument 1: type mismatch, expected string but got list<string>', 'E1220: String or Number required for argument 1'])
3925 enddef 3931 enddef
3926 3932
3927 def Test_term_getattr() 3933 def Test_term_getattr()
3928 CheckRunVimInTerminal 3934 CheckRunVimInTerminal
3929 CheckDefAndScriptFailure(['term_getattr("x", "a")'], ['E1013: Argument 1: type mismatch, expected number but got string', 'E1210: Number required for argument 1']) 3935 v9.CheckDefAndScriptFailure(['term_getattr("x", "a")'], ['E1013: Argument 1: type mismatch, expected number but got string', 'E1210: Number required for argument 1'])
3930 CheckDefAndScriptFailure(['term_getattr(1, 2)'], ['E1013: Argument 2: type mismatch, expected string but got number', 'E1174: String required for argument 2']) 3936 v9.CheckDefAndScriptFailure(['term_getattr(1, 2)'], ['E1013: Argument 2: type mismatch, expected string but got number', 'E1174: String required for argument 2'])
3931 enddef 3937 enddef
3932 3938
3933 def Test_term_getcursor() 3939 def Test_term_getcursor()
3934 CheckRunVimInTerminal 3940 CheckRunVimInTerminal
3935 CheckDefAndScriptFailure(['term_getcursor({"a": 10})'], ['E1013: Argument 1: type mismatch, expected string but got dict<number>', 'E1220: String or Number required for argument 1']) 3941 v9.CheckDefAndScriptFailure(['term_getcursor({"a": 10})'], ['E1013: Argument 1: type mismatch, expected string but got dict<number>', 'E1220: String or Number required for argument 1'])
3936 enddef 3942 enddef
3937 3943
3938 def Test_term_getjob() 3944 def Test_term_getjob()
3939 CheckRunVimInTerminal 3945 CheckRunVimInTerminal
3940 CheckDefAndScriptFailure(['term_getjob(0z10)'], ['E1013: Argument 1: type mismatch, expected string but got blob', 'E1220: String or Number required for argument 1']) 3946 v9.CheckDefAndScriptFailure(['term_getjob(0z10)'], ['E1013: Argument 1: type mismatch, expected string but got blob', 'E1220: String or Number required for argument 1'])
3941 enddef 3947 enddef
3942 3948
3943 def Test_term_getline() 3949 def Test_term_getline()
3944 CheckRunVimInTerminal 3950 CheckRunVimInTerminal
3945 CheckDefAndScriptFailure(['term_getline(1.1, 1)'], ['E1013: Argument 1: type mismatch, expected string but got float', 'E1220: String or Number required for argument 1']) 3951 v9.CheckDefAndScriptFailure(['term_getline(1.1, 1)'], ['E1013: Argument 1: type mismatch, expected string but got float', 'E1220: String or Number required for argument 1'])
3946 CheckDefAndScriptFailure(['term_getline(1, 1.1)'], ['E1013: Argument 2: type mismatch, expected string but got float', 'E1220: String or Number required for argument 2']) 3952 v9.CheckDefAndScriptFailure(['term_getline(1, 1.1)'], ['E1013: Argument 2: type mismatch, expected string but got float', 'E1220: String or Number required for argument 2'])
3947 enddef 3953 enddef
3948 3954
3949 def Test_term_getscrolled() 3955 def Test_term_getscrolled()
3950 CheckRunVimInTerminal 3956 CheckRunVimInTerminal
3951 CheckDefAndScriptFailure(['term_getscrolled(1.1)'], ['E1013: Argument 1: type mismatch, expected string but got float', 'E1220: String or Number required for argument 1']) 3957 v9.CheckDefAndScriptFailure(['term_getscrolled(1.1)'], ['E1013: Argument 1: type mismatch, expected string but got float', 'E1220: String or Number required for argument 1'])
3952 enddef 3958 enddef
3953 3959
3954 def Test_term_getsize() 3960 def Test_term_getsize()
3955 CheckRunVimInTerminal 3961 CheckRunVimInTerminal
3956 CheckDefAndScriptFailure(['term_getsize(1.1)'], ['E1013: Argument 1: type mismatch, expected string but got float', 'E1220: String or Number required for argument 1']) 3962 v9.CheckDefAndScriptFailure(['term_getsize(1.1)'], ['E1013: Argument 1: type mismatch, expected string but got float', 'E1220: String or Number required for argument 1'])
3957 enddef 3963 enddef
3958 3964
3959 def Test_term_getstatus() 3965 def Test_term_getstatus()
3960 CheckRunVimInTerminal 3966 CheckRunVimInTerminal
3961 CheckDefAndScriptFailure(['term_getstatus(1.1)'], ['E1013: Argument 1: type mismatch, expected string but got float', 'E1220: String or Number required for argument 1']) 3967 v9.CheckDefAndScriptFailure(['term_getstatus(1.1)'], ['E1013: Argument 1: type mismatch, expected string but got float', 'E1220: String or Number required for argument 1'])
3962 enddef 3968 enddef
3963 3969
3964 def Test_term_gettitle() 3970 def Test_term_gettitle()
3965 CheckRunVimInTerminal 3971 CheckRunVimInTerminal
3966 CheckDefAndScriptFailure(['term_gettitle(1.1)'], ['E1013: Argument 1: type mismatch, expected string but got float', 'E1220: String or Number required for argument 1']) 3972 v9.CheckDefAndScriptFailure(['term_gettitle(1.1)'], ['E1013: Argument 1: type mismatch, expected string but got float', 'E1220: String or Number required for argument 1'])
3967 enddef 3973 enddef
3968 3974
3969 def Test_term_gettty() 3975 def Test_term_gettty()
3970 if !has('terminal') 3976 if !has('terminal')
3971 CheckFeature terminal 3977 CheckFeature terminal
3972 else 3978 else
3973 var buf = Run_shell_in_terminal({}) 3979 var buf = g:Run_shell_in_terminal({})
3974 term_gettty(buf, true)->assert_notequal('') 3980 term_gettty(buf, true)->assert_notequal('')
3975 StopShellInTerminal(buf) 3981 g:StopShellInTerminal(buf)
3976 endif 3982 endif
3977 CheckDefAndScriptFailure(['term_gettty([1])'], ['E1013: Argument 1: type mismatch, expected string but got list<number>', 'E1220: String or Number required for argument 1']) 3983 v9.CheckDefAndScriptFailure(['term_gettty([1])'], ['E1013: Argument 1: type mismatch, expected string but got list<number>', 'E1220: String or Number required for argument 1'])
3978 CheckDefAndScriptFailure(['term_gettty(1, 2)'], ['E1013: Argument 2: type mismatch, expected bool but got number', 'E1212: Bool required for argument 2']) 3984 v9.CheckDefAndScriptFailure(['term_gettty(1, 2)'], ['E1013: Argument 2: type mismatch, expected bool but got number', 'E1212: Bool required for argument 2'])
3979 enddef 3985 enddef
3980 3986
3981 def Test_term_scrape() 3987 def Test_term_scrape()
3982 CheckRunVimInTerminal 3988 CheckRunVimInTerminal
3983 CheckDefAndScriptFailure(['term_scrape(1.1, 1)'], ['E1013: Argument 1: type mismatch, expected string but got float', 'E1220: String or Number required for argument 1']) 3989 v9.CheckDefAndScriptFailure(['term_scrape(1.1, 1)'], ['E1013: Argument 1: type mismatch, expected string but got float', 'E1220: String or Number required for argument 1'])
3984 CheckDefAndScriptFailure(['term_scrape(1, 1.1)'], ['E1013: Argument 2: type mismatch, expected string but got float', 'E1220: String or Number required for argument 2']) 3990 v9.CheckDefAndScriptFailure(['term_scrape(1, 1.1)'], ['E1013: Argument 2: type mismatch, expected string but got float', 'E1220: String or Number required for argument 2'])
3985 enddef 3991 enddef
3986 3992
3987 def Test_term_sendkeys() 3993 def Test_term_sendkeys()
3988 CheckRunVimInTerminal 3994 CheckRunVimInTerminal
3989 CheckDefAndScriptFailure(['term_sendkeys([], "p")'], ['E1013: Argument 1: type mismatch, expected string but got list<unknown>', 'E1220: String or Number required for argument 1']) 3995 v9.CheckDefAndScriptFailure(['term_sendkeys([], "p")'], ['E1013: Argument 1: type mismatch, expected string but got list<unknown>', 'E1220: String or Number required for argument 1'])
3990 CheckDefAndScriptFailure(['term_sendkeys(1, [])'], ['E1013: Argument 2: type mismatch, expected string but got list<unknown>', 'E1174: String required for argument 2']) 3996 v9.CheckDefAndScriptFailure(['term_sendkeys(1, [])'], ['E1013: Argument 2: type mismatch, expected string but got list<unknown>', 'E1174: String required for argument 2'])
3991 enddef 3997 enddef
3992 3998
3993 def Test_term_setansicolors() 3999 def Test_term_setansicolors()
3994 CheckRunVimInTerminal 4000 CheckRunVimInTerminal
3995 4001
3996 if has('termguicolors') || has('gui') 4002 if has('termguicolors') || has('gui')
3997 CheckDefAndScriptFailure(['term_setansicolors([], "p")'], ['E1013: Argument 1: type mismatch, expected string but got list<unknown>', 'E1220: String or Number required for argument 1']) 4003 v9.CheckDefAndScriptFailure(['term_setansicolors([], "p")'], ['E1013: Argument 1: type mismatch, expected string but got list<unknown>', 'E1220: String or Number required for argument 1'])
3998 CheckDefAndScriptFailure(['term_setansicolors(10, {})'], ['E1013: Argument 2: type mismatch, expected list<any> but got dict<unknown>', 'E1211: List required for argument 2']) 4004 v9.CheckDefAndScriptFailure(['term_setansicolors(10, {})'], ['E1013: Argument 2: type mismatch, expected list<any> but got dict<unknown>', 'E1211: List required for argument 2'])
3999 else 4005 else
4000 throw 'Skipped: Only works with termguicolors or gui feature' 4006 throw 'Skipped: Only works with termguicolors or gui feature'
4001 endif 4007 endif
4002 enddef 4008 enddef
4003 4009
4004 def Test_term_setapi() 4010 def Test_term_setapi()
4005 CheckRunVimInTerminal 4011 CheckRunVimInTerminal
4006 CheckDefAndScriptFailure(['term_setapi([], "p")'], ['E1013: Argument 1: type mismatch, expected string but got list<unknown>', 'E1220: String or Number required for argument 1']) 4012 v9.CheckDefAndScriptFailure(['term_setapi([], "p")'], ['E1013: Argument 1: type mismatch, expected string but got list<unknown>', 'E1220: String or Number required for argument 1'])
4007 CheckDefAndScriptFailure(['term_setapi(1, [])'], ['E1013: Argument 2: type mismatch, expected string but got list<unknown>', 'E1174: String required for argument 2']) 4013 v9.CheckDefAndScriptFailure(['term_setapi(1, [])'], ['E1013: Argument 2: type mismatch, expected string but got list<unknown>', 'E1174: String required for argument 2'])
4008 enddef 4014 enddef
4009 4015
4010 def Test_term_setkill() 4016 def Test_term_setkill()
4011 CheckRunVimInTerminal 4017 CheckRunVimInTerminal
4012 CheckDefAndScriptFailure(['term_setkill([], "p")'], ['E1013: Argument 1: type mismatch, expected string but got list<unknown>', 'E1220: String or Number required for argument 1']) 4018 v9.CheckDefAndScriptFailure(['term_setkill([], "p")'], ['E1013: Argument 1: type mismatch, expected string but got list<unknown>', 'E1220: String or Number required for argument 1'])
4013 CheckDefAndScriptFailure(['term_setkill(1, [])'], ['E1013: Argument 2: type mismatch, expected string but got list<unknown>', 'E1174: String required for argument 2']) 4019 v9.CheckDefAndScriptFailure(['term_setkill(1, [])'], ['E1013: Argument 2: type mismatch, expected string but got list<unknown>', 'E1174: String required for argument 2'])
4014 enddef 4020 enddef
4015 4021
4016 def Test_term_setrestore() 4022 def Test_term_setrestore()
4017 CheckRunVimInTerminal 4023 CheckRunVimInTerminal
4018 CheckDefAndScriptFailure(['term_setrestore([], "p")'], ['E1013: Argument 1: type mismatch, expected string but got list<unknown>', 'E1220: String or Number required for argument 1']) 4024 v9.CheckDefAndScriptFailure(['term_setrestore([], "p")'], ['E1013: Argument 1: type mismatch, expected string but got list<unknown>', 'E1220: String or Number required for argument 1'])
4019 CheckDefAndScriptFailure(['term_setrestore(1, [])'], ['E1013: Argument 2: type mismatch, expected string but got list<unknown>', 'E1174: String required for argument 2']) 4025 v9.CheckDefAndScriptFailure(['term_setrestore(1, [])'], ['E1013: Argument 2: type mismatch, expected string but got list<unknown>', 'E1174: String required for argument 2'])
4020 enddef 4026 enddef
4021 4027
4022 def Test_term_setsize() 4028 def Test_term_setsize()
4023 CheckRunVimInTerminal 4029 CheckRunVimInTerminal
4024 CheckDefAndScriptFailure(['term_setsize(1.1, 2, 3)'], ['E1013: Argument 1: type mismatch, expected string but got float', 'E1220: String or Number required for argument 1']) 4030 v9.CheckDefAndScriptFailure(['term_setsize(1.1, 2, 3)'], ['E1013: Argument 1: type mismatch, expected string but got float', 'E1220: String or Number required for argument 1'])
4025 CheckDefAndScriptFailure(['term_setsize(1, "2", 3)'], ['E1013: Argument 2: type mismatch, expected number but got string', 'E1210: Number required for argument 2']) 4031 v9.CheckDefAndScriptFailure(['term_setsize(1, "2", 3)'], ['E1013: Argument 2: type mismatch, expected number but got string', 'E1210: Number required for argument 2'])
4026 CheckDefAndScriptFailure(['term_setsize(1, 2, "3")'], ['E1013: Argument 3: type mismatch, expected number but got string', 'E1210: Number required for argument 3']) 4032 v9.CheckDefAndScriptFailure(['term_setsize(1, 2, "3")'], ['E1013: Argument 3: type mismatch, expected number but got string', 'E1210: Number required for argument 3'])
4027 enddef 4033 enddef
4028 4034
4029 def Test_term_start() 4035 def Test_term_start()
4030 if !has('terminal') 4036 if !has('terminal')
4031 CheckFeature terminal 4037 CheckFeature terminal
4034 var winnr = winnr() 4040 var winnr = winnr()
4035 term_start(&shell, {curwin: true}) 4041 term_start(&shell, {curwin: true})
4036 winnr()->assert_equal(winnr) 4042 winnr()->assert_equal(winnr)
4037 bwipe! 4043 bwipe!
4038 endif 4044 endif
4039 CheckDefAndScriptFailure(['term_start({})'], ['E1013: Argument 1: type mismatch, expected string but got dict<unknown>', 'E1222: String or List required for argument 1']) 4045 v9.CheckDefAndScriptFailure(['term_start({})'], ['E1013: Argument 1: type mismatch, expected string but got dict<unknown>', 'E1222: String or List required for argument 1'])
4040 CheckDefAndScriptFailure(['term_start([], [])'], ['E1013: Argument 2: type mismatch, expected dict<any> but got list<unknown>', 'E1206: Dictionary required for argument 2']) 4046 v9.CheckDefAndScriptFailure(['term_start([], [])'], ['E1013: Argument 2: type mismatch, expected dict<any> but got list<unknown>', 'E1206: Dictionary required for argument 2'])
4041 CheckDefAndScriptFailure(['term_start("", "")'], ['E1013: Argument 2: type mismatch, expected dict<any> but got string', 'E1206: Dictionary required for argument 2']) 4047 v9.CheckDefAndScriptFailure(['term_start("", "")'], ['E1013: Argument 2: type mismatch, expected dict<any> but got string', 'E1206: Dictionary required for argument 2'])
4042 CheckDefExecAndScriptFailure(['term_start("")'], 'E474: Invalid argument') 4048 v9.CheckDefExecAndScriptFailure(['term_start("")'], 'E474: Invalid argument')
4043 enddef 4049 enddef
4044 4050
4045 def Test_term_wait() 4051 def Test_term_wait()
4046 CheckRunVimInTerminal 4052 CheckRunVimInTerminal
4047 CheckDefAndScriptFailure(['term_wait(0z10, 1)'], ['E1013: Argument 1: type mismatch, expected string but got blob', 'E1220: String or Number required for argument 1']) 4053 v9.CheckDefAndScriptFailure(['term_wait(0z10, 1)'], ['E1013: Argument 1: type mismatch, expected string but got blob', 'E1220: String or Number required for argument 1'])
4048 CheckDefAndScriptFailure(['term_wait(1, "a")'], ['E1013: Argument 2: type mismatch, expected number but got string', 'E1210: Number required for argument 2']) 4054 v9.CheckDefAndScriptFailure(['term_wait(1, "a")'], ['E1013: Argument 2: type mismatch, expected number but got string', 'E1210: Number required for argument 2'])
4049 enddef 4055 enddef
4050 4056
4051 def Test_test_alloc_fail() 4057 def Test_test_alloc_fail()
4052 CheckDefAndScriptFailure(['test_alloc_fail("a", 10, 20)'], ['E1013: Argument 1: type mismatch, expected number but got string', 'E1210: Number required for argument 1']) 4058 v9.CheckDefAndScriptFailure(['test_alloc_fail("a", 10, 20)'], ['E1013: Argument 1: type mismatch, expected number but got string', 'E1210: Number required for argument 1'])
4053 CheckDefAndScriptFailure(['test_alloc_fail(10, "b", 20)'], ['E1013: Argument 2: type mismatch, expected number but got string', 'E1210: Number required for argument 2']) 4059 v9.CheckDefAndScriptFailure(['test_alloc_fail(10, "b", 20)'], ['E1013: Argument 2: type mismatch, expected number but got string', 'E1210: Number required for argument 2'])
4054 CheckDefAndScriptFailure(['test_alloc_fail(10, 20, "c")'], ['E1013: Argument 3: type mismatch, expected number but got string', 'E1210: Number required for argument 3']) 4060 v9.CheckDefAndScriptFailure(['test_alloc_fail(10, 20, "c")'], ['E1013: Argument 3: type mismatch, expected number but got string', 'E1210: Number required for argument 3'])
4055 enddef 4061 enddef
4056 4062
4057 def Test_test_feedinput() 4063 def Test_test_feedinput()
4058 CheckDefAndScriptFailure(['test_feedinput(test_void())'], ['E1013: Argument 1: type mismatch, expected string but got void', 'E1174: String required for argument 1']) 4064 v9.CheckDefAndScriptFailure(['test_feedinput(test_void())'], ['E1013: Argument 1: type mismatch, expected string but got void', 'E1174: String required for argument 1'])
4059 CheckDefAndScriptFailure(['test_feedinput(["a"])'], ['E1013: Argument 1: type mismatch, expected string but got list<string>', 'E1174: String required for argument 1']) 4065 v9.CheckDefAndScriptFailure(['test_feedinput(["a"])'], ['E1013: Argument 1: type mismatch, expected string but got list<string>', 'E1174: String required for argument 1'])
4060 enddef 4066 enddef
4061 4067
4062 def Test_test_getvalue() 4068 def Test_test_getvalue()
4063 CheckDefAndScriptFailure(['test_getvalue(1.1)'], ['E1013: Argument 1: type mismatch, expected string but got float', 'E1174: String required for argument 1']) 4069 v9.CheckDefAndScriptFailure(['test_getvalue(1.1)'], ['E1013: Argument 1: type mismatch, expected string but got float', 'E1174: String required for argument 1'])
4064 enddef 4070 enddef
4065 4071
4066 def Test_test_gui_drop_files() 4072 def Test_test_gui_drop_files()
4067 CheckGui 4073 CheckGui
4068 CheckDefAndScriptFailure(['test_gui_drop_files("a", 1, 1, 0)'], ['E1013: Argument 1: type mismatch, expected list<string> but got string', 'E1211: List required for argument 1']) 4074 v9.CheckDefAndScriptFailure(['test_gui_drop_files("a", 1, 1, 0)'], ['E1013: Argument 1: type mismatch, expected list<string> but got string', 'E1211: List required for argument 1'])
4069 CheckDefAndScriptFailure(['test_gui_drop_files(["x"], "", 1, 0)'], ['E1013: Argument 2: type mismatch, expected number but got string', 'E1210: Number required for argument 2']) 4075 v9.CheckDefAndScriptFailure(['test_gui_drop_files(["x"], "", 1, 0)'], ['E1013: Argument 2: type mismatch, expected number but got string', 'E1210: Number required for argument 2'])
4070 CheckDefAndScriptFailure(['test_gui_drop_files(["x"], 1, "", 0)'], ['E1013: Argument 3: type mismatch, expected number but got string', 'E1210: Number required for argument 3']) 4076 v9.CheckDefAndScriptFailure(['test_gui_drop_files(["x"], 1, "", 0)'], ['E1013: Argument 3: type mismatch, expected number but got string', 'E1210: Number required for argument 3'])
4071 CheckDefAndScriptFailure(['test_gui_drop_files(["x"], 1, 1, "")'], ['E1013: Argument 4: type mismatch, expected number but got string', 'E1210: Number required for argument 4']) 4077 v9.CheckDefAndScriptFailure(['test_gui_drop_files(["x"], 1, 1, "")'], ['E1013: Argument 4: type mismatch, expected number but got string', 'E1210: Number required for argument 4'])
4072 enddef 4078 enddef
4073 4079
4074 def Test_test_gui_mouse_event() 4080 def Test_test_gui_mouse_event()
4075 CheckGui 4081 CheckGui
4076 CheckDefAndScriptFailure(['test_gui_mouse_event(1.1, 1, 1, 1, 1)'], ['E1013: Argument 1: type mismatch, expected number but got float', 'E1210: Number required for argument 1']) 4082 v9.CheckDefAndScriptFailure(['test_gui_mouse_event(1.1, 1, 1, 1, 1)'], ['E1013: Argument 1: type mismatch, expected number but got float', 'E1210: Number required for argument 1'])
4077 CheckDefAndScriptFailure(['test_gui_mouse_event(1, "1", 1, 1, 1)'], ['E1013: Argument 2: type mismatch, expected number but got string', 'E1210: Number required for argument 2']) 4083 v9.CheckDefAndScriptFailure(['test_gui_mouse_event(1, "1", 1, 1, 1)'], ['E1013: Argument 2: type mismatch, expected number but got string', 'E1210: Number required for argument 2'])
4078 CheckDefAndScriptFailure(['test_gui_mouse_event(1, 1, "1", 1, 1)'], ['E1013: Argument 3: type mismatch, expected number but got string', 'E1210: Number required for argument 3']) 4084 v9.CheckDefAndScriptFailure(['test_gui_mouse_event(1, 1, "1", 1, 1)'], ['E1013: Argument 3: type mismatch, expected number but got string', 'E1210: Number required for argument 3'])
4079 CheckDefAndScriptFailure(['test_gui_mouse_event(1, 1, 1, "1", 1)'], ['E1013: Argument 4: type mismatch, expected number but got string', 'E1210: Number required for argument 4']) 4085 v9.CheckDefAndScriptFailure(['test_gui_mouse_event(1, 1, 1, "1", 1)'], ['E1013: Argument 4: type mismatch, expected number but got string', 'E1210: Number required for argument 4'])
4080 CheckDefAndScriptFailure(['test_gui_mouse_event(1, 1, 1, 1, "1")'], ['E1013: Argument 5: type mismatch, expected number but got string', 'E1210: Number required for argument 5']) 4086 v9.CheckDefAndScriptFailure(['test_gui_mouse_event(1, 1, 1, 1, "1")'], ['E1013: Argument 5: type mismatch, expected number but got string', 'E1210: Number required for argument 5'])
4081 enddef 4087 enddef
4082 4088
4083 def Test_test_ignore_error() 4089 def Test_test_ignore_error()
4084 CheckDefAndScriptFailure(['test_ignore_error([])'], ['E1013: Argument 1: type mismatch, expected string but got list<unknown>', 'E1174: String required for argument 1']) 4090 v9.CheckDefAndScriptFailure(['test_ignore_error([])'], ['E1013: Argument 1: type mismatch, expected string but got list<unknown>', 'E1174: String required for argument 1'])
4085 test_ignore_error('RESET') 4091 test_ignore_error('RESET')
4086 enddef 4092 enddef
4087 4093
4088 def Test_test_option_not_set() 4094 def Test_test_option_not_set()
4089 CheckDefAndScriptFailure(['test_option_not_set([])'], ['E1013: Argument 1: type mismatch, expected string but got list<unknown>', 'E1174: String required for argument 1']) 4095 v9.CheckDefAndScriptFailure(['test_option_not_set([])'], ['E1013: Argument 1: type mismatch, expected string but got list<unknown>', 'E1174: String required for argument 1'])
4090 enddef 4096 enddef
4091 4097
4092 def Test_test_override() 4098 def Test_test_override()
4093 CheckDefAndScriptFailure(['test_override(1, 1)'], ['E1013: Argument 1: type mismatch, expected string but got number', 'E1174: String required for argument 1']) 4099 v9.CheckDefAndScriptFailure(['test_override(1, 1)'], ['E1013: Argument 1: type mismatch, expected string but got number', 'E1174: String required for argument 1'])
4094 CheckDefAndScriptFailure(['test_override("a", "x")'], ['E1013: Argument 2: type mismatch, expected number but got string', 'E1210: Number required for argument 2']) 4100 v9.CheckDefAndScriptFailure(['test_override("a", "x")'], ['E1013: Argument 2: type mismatch, expected number but got string', 'E1210: Number required for argument 2'])
4095 enddef 4101 enddef
4096 4102
4097 def Test_test_scrollbar() 4103 def Test_test_scrollbar()
4098 CheckGui 4104 CheckGui
4099 CheckDefAndScriptFailure(['test_scrollbar(1, 2, 3)'], ['E1013: Argument 1: type mismatch, expected string but got number', 'E1174: String required for argument 1']) 4105 v9.CheckDefAndScriptFailure(['test_scrollbar(1, 2, 3)'], ['E1013: Argument 1: type mismatch, expected string but got number', 'E1174: String required for argument 1'])
4100 CheckDefAndScriptFailure(['test_scrollbar("a", "b", 3)'], ['E1013: Argument 2: type mismatch, expected number but got string', 'E1210: Number required for argument 2']) 4106 v9.CheckDefAndScriptFailure(['test_scrollbar("a", "b", 3)'], ['E1013: Argument 2: type mismatch, expected number but got string', 'E1210: Number required for argument 2'])
4101 CheckDefAndScriptFailure(['test_scrollbar("a", 2, "c")'], ['E1013: Argument 3: type mismatch, expected number but got string', 'E1210: Number required for argument 3']) 4107 v9.CheckDefAndScriptFailure(['test_scrollbar("a", 2, "c")'], ['E1013: Argument 3: type mismatch, expected number but got string', 'E1210: Number required for argument 3'])
4102 enddef 4108 enddef
4103 4109
4104 def Test_test_setmouse() 4110 def Test_test_setmouse()
4105 CheckDefAndScriptFailure(['test_setmouse("a", 10)'], ['E1013: Argument 1: type mismatch, expected number but got string', 'E1210: Number required for argument 1']) 4111 v9.CheckDefAndScriptFailure(['test_setmouse("a", 10)'], ['E1013: Argument 1: type mismatch, expected number but got string', 'E1210: Number required for argument 1'])
4106 CheckDefAndScriptFailure(['test_setmouse(10, "b")'], ['E1013: Argument 2: type mismatch, expected number but got string', 'E1210: Number required for argument 2']) 4112 v9.CheckDefAndScriptFailure(['test_setmouse(10, "b")'], ['E1013: Argument 2: type mismatch, expected number but got string', 'E1210: Number required for argument 2'])
4107 enddef 4113 enddef
4108 4114
4109 def Test_test_settime() 4115 def Test_test_settime()
4110 CheckDefAndScriptFailure(['test_settime([1])'], ['E1013: Argument 1: type mismatch, expected number but got list<number>', 'E1210: Number required for argument 1']) 4116 v9.CheckDefAndScriptFailure(['test_settime([1])'], ['E1013: Argument 1: type mismatch, expected number but got list<number>', 'E1210: Number required for argument 1'])
4111 enddef 4117 enddef
4112 4118
4113 def Test_test_srand_seed() 4119 def Test_test_srand_seed()
4114 CheckDefAndScriptFailure(['test_srand_seed([1])'], ['E1013: Argument 1: type mismatch, expected number but got list<number>', 'E1210: Number required for argument 1']) 4120 v9.CheckDefAndScriptFailure(['test_srand_seed([1])'], ['E1013: Argument 1: type mismatch, expected number but got list<number>', 'E1210: Number required for argument 1'])
4115 CheckDefAndScriptFailure(['test_srand_seed("10")'], ['E1013: Argument 1: type mismatch, expected number but got string', 'E1210: Number required for argument 1']) 4121 v9.CheckDefAndScriptFailure(['test_srand_seed("10")'], ['E1013: Argument 1: type mismatch, expected number but got string', 'E1210: Number required for argument 1'])
4116 enddef 4122 enddef
4117 4123
4118 def Test_timer_info() 4124 def Test_timer_info()
4119 CheckDefAndScriptFailure(['timer_info("id")'], ['E1013: Argument 1: type mismatch, expected number but got string', 'E1210: Number required for argument 1']) 4125 v9.CheckDefAndScriptFailure(['timer_info("id")'], ['E1013: Argument 1: type mismatch, expected number but got string', 'E1210: Number required for argument 1'])
4120 assert_equal([], timer_info(100)) 4126 assert_equal([], timer_info(100))
4121 assert_equal([], timer_info()) 4127 assert_equal([], timer_info())
4122 enddef 4128 enddef
4123 4129
4124 def Test_timer_pause() 4130 def Test_timer_pause()
4125 CheckDefAndScriptFailure(['timer_pause("x", 1)'], ['E1013: Argument 1: type mismatch, expected number but got string', 'E1210: Number required for argument 1']) 4131 v9.CheckDefAndScriptFailure(['timer_pause("x", 1)'], ['E1013: Argument 1: type mismatch, expected number but got string', 'E1210: Number required for argument 1'])
4126 CheckDefAndScriptFailure(['timer_pause(1, "a")'], ['E1013: Argument 2: type mismatch, expected bool but got string', 'E1212: Bool required for argument 2']) 4132 v9.CheckDefAndScriptFailure(['timer_pause(1, "a")'], ['E1013: Argument 2: type mismatch, expected bool but got string', 'E1212: Bool required for argument 2'])
4127 enddef 4133 enddef
4128 4134
4129 def Test_timer_paused() 4135 def Test_timer_paused()
4130 var id = timer_start(50, () => 0) 4136 var id = timer_start(50, () => 0)
4131 timer_pause(id, true) 4137 timer_pause(id, true)
4133 info[0]['paused']->assert_equal(1) 4139 info[0]['paused']->assert_equal(1)
4134 timer_stop(id) 4140 timer_stop(id)
4135 enddef 4141 enddef
4136 4142
4137 def Test_timer_start() 4143 def Test_timer_start()
4138 CheckDefAndScriptFailure(['timer_start("a", "1")'], ['E1013: Argument 1: type mismatch, expected number but got string', 'E1210: Number required for argument 1']) 4144 v9.CheckDefAndScriptFailure(['timer_start("a", "1")'], ['E1013: Argument 1: type mismatch, expected number but got string', 'E1210: Number required for argument 1'])
4139 CheckDefAndScriptFailure(['timer_start(1, "1", [1])'], ['E1013: Argument 3: type mismatch, expected dict<any> but got list<number>', 'E1206: Dictionary required for argument 3']) 4145 v9.CheckDefAndScriptFailure(['timer_start(1, "1", [1])'], ['E1013: Argument 3: type mismatch, expected dict<any> but got list<number>', 'E1206: Dictionary required for argument 3'])
4140 CheckDefExecAndScriptFailure(['timer_start(100, 0)'], 'E921:') 4146 v9.CheckDefExecAndScriptFailure(['timer_start(100, 0)'], 'E921:')
4141 CheckDefExecAndScriptFailure(['timer_start(100, "")'], 'E921:') 4147 v9.CheckDefExecAndScriptFailure(['timer_start(100, "")'], 'E921:')
4142 enddef 4148 enddef
4143 4149
4144 def Test_timer_stop() 4150 def Test_timer_stop()
4145 CheckDefAndScriptFailure(['timer_stop("x")'], ['E1013: Argument 1: type mismatch, expected number but got string', 'E1210: Number required for argument 1']) 4151 v9.CheckDefAndScriptFailure(['timer_stop("x")'], ['E1013: Argument 1: type mismatch, expected number but got string', 'E1210: Number required for argument 1'])
4146 assert_equal(0, timer_stop(100)) 4152 assert_equal(0, timer_stop(100))
4147 enddef 4153 enddef
4148 4154
4149 def Test_tolower() 4155 def Test_tolower()
4150 CheckDefAndScriptFailure(['tolower(1)'], ['E1013: Argument 1: type mismatch, expected string but got number', 'E1174: String required for argument 1']) 4156 v9.CheckDefAndScriptFailure(['tolower(1)'], ['E1013: Argument 1: type mismatch, expected string but got number', 'E1174: String required for argument 1'])
4151 tolower('')->assert_equal('') 4157 tolower('')->assert_equal('')
4152 enddef 4158 enddef
4153 4159
4154 def Test_toupper() 4160 def Test_toupper()
4155 CheckDefAndScriptFailure(['toupper(1)'], ['E1013: Argument 1: type mismatch, expected string but got number', 'E1174: String required for argument 1']) 4161 v9.CheckDefAndScriptFailure(['toupper(1)'], ['E1013: Argument 1: type mismatch, expected string but got number', 'E1174: String required for argument 1'])
4156 toupper('')->assert_equal('') 4162 toupper('')->assert_equal('')
4157 enddef 4163 enddef
4158 4164
4159 def Test_tr() 4165 def Test_tr()
4160 CheckDefAndScriptFailure(['tr(1, "a", "b")'], ['E1013: Argument 1: type mismatch, expected string but got number', 'E1174: String required for argument 1']) 4166 v9.CheckDefAndScriptFailure(['tr(1, "a", "b")'], ['E1013: Argument 1: type mismatch, expected string but got number', 'E1174: String required for argument 1'])
4161 CheckDefAndScriptFailure(['tr("a", 1, "b")'], ['E1013: Argument 2: type mismatch, expected string but got number', 'E1174: String required for argument 2']) 4167 v9.CheckDefAndScriptFailure(['tr("a", 1, "b")'], ['E1013: Argument 2: type mismatch, expected string but got number', 'E1174: String required for argument 2'])
4162 CheckDefAndScriptFailure(['tr("a", "a", 1)'], ['E1013: Argument 3: type mismatch, expected string but got number', 'E1174: String required for argument 3']) 4168 v9.CheckDefAndScriptFailure(['tr("a", "a", 1)'], ['E1013: Argument 3: type mismatch, expected string but got number', 'E1174: String required for argument 3'])
4163 tr('', '', '')->assert_equal('') 4169 tr('', '', '')->assert_equal('')
4164 tr('ab', '', '')->assert_equal('ab') 4170 tr('ab', '', '')->assert_equal('ab')
4165 assert_fails("tr('ab', 'ab', '')", 'E475:') 4171 assert_fails("tr('ab', 'ab', '')", 'E475:')
4166 assert_fails("tr('ab', '', 'AB')", 'E475:') 4172 assert_fails("tr('ab', '', 'AB')", 'E475:')
4167 enddef 4173 enddef
4168 4174
4169 def Test_trim() 4175 def Test_trim()
4170 CheckDefAndScriptFailure(['trim(["a"])'], ['E1013: Argument 1: type mismatch, expected string but got list<string>', 'E1174: String required for argument 1']) 4176 v9.CheckDefAndScriptFailure(['trim(["a"])'], ['E1013: Argument 1: type mismatch, expected string but got list<string>', 'E1174: String required for argument 1'])
4171 CheckDefAndScriptFailure(['trim("a", ["b"])'], ['E1013: Argument 2: type mismatch, expected string but got list<string>', 'E1174: String required for argument 2']) 4177 v9.CheckDefAndScriptFailure(['trim("a", ["b"])'], ['E1013: Argument 2: type mismatch, expected string but got list<string>', 'E1174: String required for argument 2'])
4172 CheckDefAndScriptFailure(['trim("a", "b", "c")'], ['E1013: Argument 3: type mismatch, expected number but got string', 'E1210: Number required for argument 3']) 4178 v9.CheckDefAndScriptFailure(['trim("a", "b", "c")'], ['E1013: Argument 3: type mismatch, expected number but got string', 'E1210: Number required for argument 3'])
4173 trim('')->assert_equal('') 4179 trim('')->assert_equal('')
4174 trim('', '')->assert_equal('') 4180 trim('', '')->assert_equal('')
4175 enddef 4181 enddef
4176 4182
4177 def Test_typename() 4183 def Test_typename()
4188 assert_equal('channel', test_null_channel()->typename()) 4194 assert_equal('channel', test_null_channel()->typename())
4189 endif 4195 endif
4190 enddef 4196 enddef
4191 4197
4192 def Test_undofile() 4198 def Test_undofile()
4193 CheckDefAndScriptFailure(['undofile(10)'], ['E1013: Argument 1: type mismatch, expected string but got number', 'E1174: String required for argument 1']) 4199 v9.CheckDefAndScriptFailure(['undofile(10)'], ['E1013: Argument 1: type mismatch, expected string but got number', 'E1174: String required for argument 1'])
4194 assert_equal('.abc.un~', fnamemodify(undofile('abc'), ':t')) 4200 assert_equal('.abc.un~', fnamemodify(undofile('abc'), ':t'))
4195 undofile('')->assert_equal('') 4201 undofile('')->assert_equal('')
4196 enddef 4202 enddef
4197 4203
4198 def Test_uniq() 4204 def Test_uniq()
4199 CheckDefAndScriptFailure(['uniq("a")'], ['E1013: Argument 1: type mismatch, expected list<any> but got string', 'E1211: List required for argument 1']) 4205 v9.CheckDefAndScriptFailure(['uniq("a")'], ['E1013: Argument 1: type mismatch, expected list<any> but got string', 'E1211: List required for argument 1'])
4200 CheckDefAndScriptFailure(['uniq([1], "", [1])'], ['E1013: Argument 3: type mismatch, expected dict<any> but got list<number>', 'E1206: Dictionary required for argument 3']) 4206 v9.CheckDefAndScriptFailure(['uniq([1], "", [1])'], ['E1013: Argument 3: type mismatch, expected dict<any> but got list<number>', 'E1206: Dictionary required for argument 3'])
4201 4207
4202 CheckDefFailure(['var l: list<number> = uniq(["a", "b"])'], 'E1012: Type mismatch; expected list<number> but got list<string>') 4208 v9.CheckDefFailure(['var l: list<number> = uniq(["a", "b"])'], 'E1012: Type mismatch; expected list<number> but got list<string>')
4203 enddef 4209 enddef
4204 4210
4205 def Test_values() 4211 def Test_values()
4206 CheckDefAndScriptFailure(['values([])'], ['E1013: Argument 1: type mismatch, expected dict<any> but got list<unknown>', 'E1206: Dictionary required for argument 1']) 4212 v9.CheckDefAndScriptFailure(['values([])'], ['E1013: Argument 1: type mismatch, expected dict<any> but got list<unknown>', 'E1206: Dictionary required for argument 1'])
4207 assert_equal([], {}->values()) 4213 assert_equal([], {}->values())
4208 assert_equal(['sun'], {star: 'sun'}->values()) 4214 assert_equal(['sun'], {star: 'sun'}->values())
4209 enddef 4215 enddef
4210 4216
4211 def Test_virtcol() 4217 def Test_virtcol()
4212 CheckDefAndScriptFailure(['virtcol(1.1)'], ['E1013: Argument 1: type mismatch, expected string but got float', 'E1222: String or List required for argument 1']) 4218 v9.CheckDefAndScriptFailure(['virtcol(1.1)'], ['E1013: Argument 1: type mismatch, expected string but got float', 'E1222: String or List required for argument 1'])
4213 CheckDefExecAndScriptFailure(['virtcol("")'], 'E1209: Invalid value for a line number') 4219 v9.CheckDefExecAndScriptFailure(['virtcol("")'], 'E1209: Invalid value for a line number')
4214 new 4220 new
4215 setline(1, ['abcdefgh']) 4221 setline(1, ['abcdefgh'])
4216 cursor(1, 4) 4222 cursor(1, 4)
4217 assert_equal(4, virtcol('.')) 4223 assert_equal(4, virtcol('.'))
4218 assert_equal(4, virtcol([1, 4])) 4224 assert_equal(4, virtcol([1, 4]))
4220 assert_equal(0, virtcol([10, '$'])) 4226 assert_equal(0, virtcol([10, '$']))
4221 bw! 4227 bw!
4222 enddef 4228 enddef
4223 4229
4224 def Test_visualmode() 4230 def Test_visualmode()
4225 CheckDefAndScriptFailure(['visualmode("1")'], ['E1013: Argument 1: type mismatch, expected bool but got string', 'E1212: Bool required for argument 1']) 4231 v9.CheckDefAndScriptFailure(['visualmode("1")'], ['E1013: Argument 1: type mismatch, expected bool but got string', 'E1212: Bool required for argument 1'])
4226 CheckDefAndScriptFailure(['visualmode(2)'], ['E1013: Argument 1: type mismatch, expected bool but got number', 'E1212: Bool required for argument 1']) 4232 v9.CheckDefAndScriptFailure(['visualmode(2)'], ['E1013: Argument 1: type mismatch, expected bool but got number', 'E1212: Bool required for argument 1'])
4227 enddef 4233 enddef
4228 4234
4229 def Test_win_execute() 4235 def Test_win_execute()
4230 assert_equal("\n" .. winnr(), win_execute(win_getid(), 'echo winnr()')) 4236 assert_equal("\n" .. winnr(), win_execute(win_getid(), 'echo winnr()'))
4231 assert_equal("\n" .. winnr(), 'echo winnr()'->win_execute(win_getid())) 4237 assert_equal("\n" .. winnr(), 'echo winnr()'->win_execute(win_getid()))
4232 assert_equal("\n" .. winnr(), win_execute(win_getid(), 'echo winnr()', 'silent')) 4238 assert_equal("\n" .. winnr(), win_execute(win_getid(), 'echo winnr()', 'silent'))
4233 assert_equal('', win_execute(342343, 'echo winnr()')) 4239 assert_equal('', win_execute(342343, 'echo winnr()'))
4234 CheckDefAndScriptFailure(['win_execute("a", "b", "c")'], ['E1013: Argument 1: type mismatch, expected number but got string', 'E1210: Number required for argument 1']) 4240 v9.CheckDefAndScriptFailure(['win_execute("a", "b", "c")'], ['E1013: Argument 1: type mismatch, expected number but got string', 'E1210: Number required for argument 1'])
4235 CheckDefAndScriptFailure(['win_execute(1, 2, "c")'], ['E1013: Argument 2: type mismatch, expected string but got number', 'E1222: String or List required for argument 2']) 4241 v9.CheckDefAndScriptFailure(['win_execute(1, 2, "c")'], ['E1013: Argument 2: type mismatch, expected string but got number', 'E1222: String or List required for argument 2'])
4236 CheckDefAndScriptFailure(['win_execute(1, "b", 3)'], ['E1013: Argument 3: type mismatch, expected string but got number', 'E1174: String required for argument 3']) 4242 v9.CheckDefAndScriptFailure(['win_execute(1, "b", 3)'], ['E1013: Argument 3: type mismatch, expected string but got number', 'E1174: String required for argument 3'])
4237 enddef 4243 enddef
4238 4244
4239 def Test_win_findbuf() 4245 def Test_win_findbuf()
4240 CheckDefAndScriptFailure(['win_findbuf("a")'], ['E1013: Argument 1: type mismatch, expected number but got string', 'E1210: Number required for argument 1']) 4246 v9.CheckDefAndScriptFailure(['win_findbuf("a")'], ['E1013: Argument 1: type mismatch, expected number but got string', 'E1210: Number required for argument 1'])
4241 assert_equal([], win_findbuf(1000)) 4247 assert_equal([], win_findbuf(1000))
4242 assert_equal([win_getid()], win_findbuf(bufnr(''))) 4248 assert_equal([win_getid()], win_findbuf(bufnr('')))
4243 enddef 4249 enddef
4244 4250
4245 def Test_win_getid() 4251 def Test_win_getid()
4246 CheckDefAndScriptFailure(['win_getid(".")'], ['E1013: Argument 1: type mismatch, expected number but got string', 'E1210: Number required for argument 1']) 4252 v9.CheckDefAndScriptFailure(['win_getid(".")'], ['E1013: Argument 1: type mismatch, expected number but got string', 'E1210: Number required for argument 1'])
4247 CheckDefAndScriptFailure(['win_getid(1, ".")'], ['E1013: Argument 2: type mismatch, expected number but got string', 'E1210: Number required for argument 2']) 4253 v9.CheckDefAndScriptFailure(['win_getid(1, ".")'], ['E1013: Argument 2: type mismatch, expected number but got string', 'E1210: Number required for argument 2'])
4248 assert_equal(win_getid(), win_getid(1, 1)) 4254 assert_equal(win_getid(), win_getid(1, 1))
4249 enddef 4255 enddef
4250 4256
4251 def Test_win_gettype() 4257 def Test_win_gettype()
4252 CheckDefAndScriptFailure(['win_gettype("x")'], ['E1013: Argument 1: type mismatch, expected number but got string', 'E1210: Number required for argument 1']) 4258 v9.CheckDefAndScriptFailure(['win_gettype("x")'], ['E1013: Argument 1: type mismatch, expected number but got string', 'E1210: Number required for argument 1'])
4253 enddef 4259 enddef
4254 4260
4255 def Test_win_gotoid() 4261 def Test_win_gotoid()
4256 CheckDefAndScriptFailure(['win_gotoid("x")'], ['E1013: Argument 1: type mismatch, expected number but got string', 'E1210: Number required for argument 1']) 4262 v9.CheckDefAndScriptFailure(['win_gotoid("x")'], ['E1013: Argument 1: type mismatch, expected number but got string', 'E1210: Number required for argument 1'])
4257 enddef 4263 enddef
4258 4264
4259 def Test_win_id2tabwin() 4265 def Test_win_id2tabwin()
4260 CheckDefAndScriptFailure(['win_id2tabwin("x")'], ['E1013: Argument 1: type mismatch, expected number but got string', 'E1210: Number required for argument 1']) 4266 v9.CheckDefAndScriptFailure(['win_id2tabwin("x")'], ['E1013: Argument 1: type mismatch, expected number but got string', 'E1210: Number required for argument 1'])
4261 enddef 4267 enddef
4262 4268
4263 def Test_win_id2win() 4269 def Test_win_id2win()
4264 CheckDefAndScriptFailure(['win_id2win("x")'], ['E1013: Argument 1: type mismatch, expected number but got string', 'E1210: Number required for argument 1']) 4270 v9.CheckDefAndScriptFailure(['win_id2win("x")'], ['E1013: Argument 1: type mismatch, expected number but got string', 'E1210: Number required for argument 1'])
4265 enddef 4271 enddef
4266 4272
4267 def Test_win_screenpos() 4273 def Test_win_screenpos()
4268 CheckDefAndScriptFailure(['win_screenpos("x")'], ['E1013: Argument 1: type mismatch, expected number but got string', 'E1210: Number required for argument 1']) 4274 v9.CheckDefAndScriptFailure(['win_screenpos("x")'], ['E1013: Argument 1: type mismatch, expected number but got string', 'E1210: Number required for argument 1'])
4269 enddef 4275 enddef
4270 4276
4271 def Test_win_splitmove() 4277 def Test_win_splitmove()
4272 split 4278 split
4273 win_splitmove(1, 2, {vertical: true, rightbelow: true}) 4279 win_splitmove(1, 2, {vertical: true, rightbelow: true})
4274 close 4280 close
4275 CheckDefAndScriptFailure(['win_splitmove("a", 2)'], ['E1013: Argument 1: type mismatch, expected number but got string', 'E1210: Number required for argument 1']) 4281 v9.CheckDefAndScriptFailure(['win_splitmove("a", 2)'], ['E1013: Argument 1: type mismatch, expected number but got string', 'E1210: Number required for argument 1'])
4276 CheckDefAndScriptFailure(['win_splitmove(1, "b")'], ['E1013: Argument 2: type mismatch, expected number but got string', 'E1210: Number required for argument 2']) 4282 v9.CheckDefAndScriptFailure(['win_splitmove(1, "b")'], ['E1013: Argument 2: type mismatch, expected number but got string', 'E1210: Number required for argument 2'])
4277 CheckDefAndScriptFailure(['win_splitmove(1, 2, [])'], ['E1013: Argument 3: type mismatch, expected dict<any> but got list<unknown>', 'E1206: Dictionary required for argument 3']) 4283 v9.CheckDefAndScriptFailure(['win_splitmove(1, 2, [])'], ['E1013: Argument 3: type mismatch, expected dict<any> but got list<unknown>', 'E1206: Dictionary required for argument 3'])
4278 enddef 4284 enddef
4279 4285
4280 def Test_winbufnr() 4286 def Test_winbufnr()
4281 CheckDefAndScriptFailure(['winbufnr("x")'], ['E1013: Argument 1: type mismatch, expected number but got string', 'E1210: Number required for argument 1']) 4287 v9.CheckDefAndScriptFailure(['winbufnr("x")'], ['E1013: Argument 1: type mismatch, expected number but got string', 'E1210: Number required for argument 1'])
4282 enddef 4288 enddef
4283 4289
4284 def Test_winheight() 4290 def Test_winheight()
4285 CheckDefAndScriptFailure(['winheight("x")'], ['E1013: Argument 1: type mismatch, expected number but got string', 'E1210: Number required for argument 1']) 4291 v9.CheckDefAndScriptFailure(['winheight("x")'], ['E1013: Argument 1: type mismatch, expected number but got string', 'E1210: Number required for argument 1'])
4286 enddef 4292 enddef
4287 4293
4288 def Test_winlayout() 4294 def Test_winlayout()
4289 CheckDefAndScriptFailure(['winlayout("x")'], ['E1013: Argument 1: type mismatch, expected number but got string', 'E1210: Number required for argument 1']) 4295 v9.CheckDefAndScriptFailure(['winlayout("x")'], ['E1013: Argument 1: type mismatch, expected number but got string', 'E1210: Number required for argument 1'])
4290 enddef 4296 enddef
4291 4297
4292 def Test_winnr() 4298 def Test_winnr()
4293 CheckDefAndScriptFailure(['winnr([])'], ['E1013: Argument 1: type mismatch, expected string but got list<unknown>', 'E1174: String required for argument 1']) 4299 v9.CheckDefAndScriptFailure(['winnr([])'], ['E1013: Argument 1: type mismatch, expected string but got list<unknown>', 'E1174: String required for argument 1'])
4294 CheckDefExecAndScriptFailure(['winnr("")'], 'E15: Invalid expression') 4300 v9.CheckDefExecAndScriptFailure(['winnr("")'], 'E15: Invalid expression')
4295 assert_equal(1, winnr()) 4301 assert_equal(1, winnr())
4296 assert_equal(1, winnr('$')) 4302 assert_equal(1, winnr('$'))
4297 enddef 4303 enddef
4298 4304
4299 def Test_winrestcmd() 4305 def Test_winrestcmd()
4304 assert_equal(cmd, winrestcmd()) 4310 assert_equal(cmd, winrestcmd())
4305 close 4311 close
4306 enddef 4312 enddef
4307 4313
4308 def Test_winrestview() 4314 def Test_winrestview()
4309 CheckDefAndScriptFailure(['winrestview([])'], ['E1013: Argument 1: type mismatch, expected dict<any> but got list<unknown>', 'E1206: Dictionary required for argument 1']) 4315 v9.CheckDefAndScriptFailure(['winrestview([])'], ['E1013: Argument 1: type mismatch, expected dict<any> but got list<unknown>', 'E1206: Dictionary required for argument 1'])
4310 :%d _ 4316 :%d _
4311 setline(1, 'Hello World') 4317 setline(1, 'Hello World')
4312 winrestview({lnum: 1, col: 6}) 4318 winrestview({lnum: 1, col: 6})
4313 assert_equal([1, 7], [line('.'), col('.')]) 4319 assert_equal([1, 7], [line('.'), col('.')])
4314 enddef 4320 enddef
4317 var view: dict<number> = winsaveview() 4323 var view: dict<number> = winsaveview()
4318 4324
4319 var lines =<< trim END 4325 var lines =<< trim END
4320 var view: list<number> = winsaveview() 4326 var view: list<number> = winsaveview()
4321 END 4327 END
4322 CheckDefAndScriptFailure(lines, 'E1012: Type mismatch; expected list<number> but got dict<number>', 1) 4328 v9.CheckDefAndScriptFailure(lines, 'E1012: Type mismatch; expected list<number> but got dict<number>', 1)
4323 enddef 4329 enddef
4324 4330
4325 def Test_winwidth() 4331 def Test_winwidth()
4326 CheckDefAndScriptFailure(['winwidth("x")'], ['E1013: Argument 1: type mismatch, expected number but got string', 'E1210: Number required for argument 1']) 4332 v9.CheckDefAndScriptFailure(['winwidth("x")'], ['E1013: Argument 1: type mismatch, expected number but got string', 'E1210: Number required for argument 1'])
4327 enddef 4333 enddef
4328 4334
4329 def Test_xor() 4335 def Test_xor()
4330 CheckDefAndScriptFailure(['xor("x", 0x2)'], ['E1013: Argument 1: type mismatch, expected number but got string', 'E1210: Number required for argument 1']) 4336 v9.CheckDefAndScriptFailure(['xor("x", 0x2)'], ['E1013: Argument 1: type mismatch, expected number but got string', 'E1210: Number required for argument 1'])
4331 CheckDefAndScriptFailure(['xor(0x1, "x")'], ['E1013: Argument 2: type mismatch, expected number but got string', 'E1210: Number required for argument 2']) 4337 v9.CheckDefAndScriptFailure(['xor(0x1, "x")'], ['E1013: Argument 2: type mismatch, expected number but got string', 'E1210: Number required for argument 2'])
4332 enddef 4338 enddef
4333 4339
4334 def Test_writefile() 4340 def Test_writefile()
4335 CheckDefExecAndScriptFailure(['writefile(["a"], "")'], 'E482: Can''t create file <empty>') 4341 v9.CheckDefExecAndScriptFailure(['writefile(["a"], "")'], 'E482: Can''t create file <empty>')
4336 enddef 4342 enddef
4337 4343
4338 " vim: ts=8 sw=2 sts=2 expandtab tw=80 fdm=marker 4344 " vim: ts=8 sw=2 sts=2 expandtab tw=80 fdm=marker