comparison src/testdir/test_vim9_builtin.vim @ 26775:2df40c348c70 v8.2.3916

patch 8.2.3916: no error for passing an invalid line number to append() Commit: https://github.com/vim/vim/commit/8dac2acd6a79d571ff5409d9c90b4c9e73237eb4 Author: Bram Moolenaar <Bram@vim.org> Date: Mon Dec 27 20:57:06 2021 +0000 patch 8.2.3916: no error for passing an invalid line number to append() Problem: No error for passing an invalid line number to append(). Solution: In Vim9 script check for a non-negative number. (closes https://github.com/vim/vim/issues/9417)
author Bram Moolenaar <Bram@vim.org>
date Mon, 27 Dec 2021 22:00:04 +0100
parents e5fdd48c442b
children b7b82279426f
comparison
equal deleted inserted replaced
26774:73cedd119ce2 26775:2df40c348c70
180 assert_equal("{'a': 10}", getline(1)) 180 assert_equal("{'a': 10}", getline(1))
181 append(0, function('min')) 181 append(0, function('min'))
182 assert_equal("function('min')", getline(1)) 182 assert_equal("function('min')", getline(1))
183 CheckDefAndScriptFailure(['append([1], "x")'], ['E1013: Argument 1: type mismatch, expected string but got list<number>', 'E1220: String or Number required for argument 1']) 183 CheckDefAndScriptFailure(['append([1], "x")'], ['E1013: Argument 1: type mismatch, expected string but got list<number>', 'E1220: String or Number required for argument 1'])
184 CheckDefExecAndScriptFailure(['append("", "x")'], 'E1209: Invalid value for a line number') 184 CheckDefExecAndScriptFailure(['append("", "x")'], 'E1209: Invalid value for a line number')
185 CheckDefExecAndScriptFailure(['append(".a", "x")'], 'E1209: Invalid value for a line number')
186 CheckDefExecAndScriptFailure(['append("''aa", "x")'], 'E1209: Invalid value for a line number')
187 CheckDefExecAndScriptFailure(['append(-1, "x")'], 'E966: Invalid line number: -1')
185 bwipe! 188 bwipe!
186 enddef 189 enddef
187 190
188 def Test_appendbufline() 191 def Test_appendbufline()
189 new 192 new
197 assert_equal(['0', 'one', '1', 'two', '2', ''], getbufline(bnum, 1, '$')) 200 assert_equal(['0', 'one', '1', 'two', '2', ''], getbufline(bnum, 1, '$'))
198 appendbufline(bnum, 0, 'zero') 201 appendbufline(bnum, 0, 'zero')
199 assert_equal(['zero'], getbufline(bnum, 1)) 202 assert_equal(['zero'], getbufline(bnum, 1))
200 CheckDefAndScriptFailure(['appendbufline([1], 1, "x")'], ['E1013: Argument 1: type mismatch, expected string but got list<number>', 'E1220: String or Number required for argument 1']) 203 CheckDefAndScriptFailure(['appendbufline([1], 1, "x")'], ['E1013: Argument 1: type mismatch, expected string but got list<number>', 'E1220: String or Number required for argument 1'])
201 CheckDefAndScriptFailure(['appendbufline(1, [1], "x")'], ['E1013: Argument 2: type mismatch, expected string but got list<number>', 'E1220: String or Number required for argument 2']) 204 CheckDefAndScriptFailure(['appendbufline(1, [1], "x")'], ['E1013: Argument 2: type mismatch, expected string but got list<number>', 'E1220: String or Number required for argument 2'])
205 CheckDefExecAndScriptFailure(['appendbufline(' .. bnum .. ', -1, "x")'], 'E966: Invalid line number: -1')
202 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']) 206 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'])
203 bnum->bufwinid()->win_gotoid() 207 bnum->bufwinid()->win_gotoid()
204 appendbufline('', 0, 'numbers') 208 appendbufline('', 0, 'numbers')
205 getline(1)->assert_equal('numbers') 209 getline(1)->assert_equal('numbers')
206 bwipe! 210 bwipe!
1832 1836
1833 def Test_indent() 1837 def Test_indent()
1834 CheckDefAndScriptFailure(['indent([1])'], ['E1013: Argument 1: type mismatch, expected string but got list<number>', 'E1220: String or Number required for argument 1']) 1838 CheckDefAndScriptFailure(['indent([1])'], ['E1013: Argument 1: type mismatch, expected string but got list<number>', 'E1220: String or Number required for argument 1'])
1835 CheckDefAndScriptFailure(['indent(true)'], ['E1013: Argument 1: type mismatch, expected string but got bool', 'E1220: String or Number required for argument 1']) 1839 CheckDefAndScriptFailure(['indent(true)'], ['E1013: Argument 1: type mismatch, expected string but got bool', 'E1220: String or Number required for argument 1'])
1836 CheckDefExecAndScriptFailure(['indent("")'], 'E1209: Invalid value for a line number') 1840 CheckDefExecAndScriptFailure(['indent("")'], 'E1209: Invalid value for a line number')
1841 CheckDefExecAndScriptFailure(['indent(-1)'], 'E966: Invalid line number: -1')
1837 assert_equal(0, indent(1)) 1842 assert_equal(0, indent(1))
1838 enddef 1843 enddef
1839 1844
1840 def Test_index() 1845 def Test_index()
1841 index(['a', 'b', 'a', 'B'], 'b', 2, true)->assert_equal(3) 1846 index(['a', 'b', 'a', 'B'], 'b', 2, true)->assert_equal(3)
2059 enddef 2064 enddef
2060 2065
2061 def Test_lispindent() 2066 def Test_lispindent()
2062 CheckDefAndScriptFailure(['lispindent({})'], ['E1013: Argument 1: type mismatch, expected string but got dict<unknown>', 'E1220: String or Number required for argument 1']) 2067 CheckDefAndScriptFailure(['lispindent({})'], ['E1013: Argument 1: type mismatch, expected string but got dict<unknown>', 'E1220: String or Number required for argument 1'])
2063 CheckDefExecAndScriptFailure(['lispindent("")'], 'E1209: Invalid value for a line number') 2068 CheckDefExecAndScriptFailure(['lispindent("")'], 'E1209: Invalid value for a line number')
2069 CheckDefExecAndScriptFailure(['lispindent(-1)'], 'E966: Invalid line number: -1')
2064 assert_equal(0, lispindent(1)) 2070 assert_equal(0, lispindent(1))
2065 enddef 2071 enddef
2066 2072
2067 def Test_list2blob() 2073 def Test_list2blob()
2068 CheckDefAndScriptFailure(['list2blob(10)'], ['E1013: Argument 1: type mismatch, expected list<number> but got number', 'E1211: List required for argument 1']) 2074 CheckDefAndScriptFailure(['list2blob(10)'], ['E1013: Argument 1: type mismatch, expected list<number> but got number', 'E1211: List required for argument 1'])
3237 setbufline(bnum, 5, 10) 3243 setbufline(bnum, 5, 10)
3238 setbufline(bnum, 6, ['two', 11]) 3244 setbufline(bnum, 6, ['two', 11])
3239 assert_equal(['1', '2', '3', 'one', '10', 'two', '11'], getbufline(bnum, 1, '$')) 3245 assert_equal(['1', '2', '3', 'one', '10', 'two', '11'], getbufline(bnum, 1, '$'))
3240 CheckDefAndScriptFailure(['setbufline([1], 1, "x")'], ['E1013: Argument 1: type mismatch, expected string but got list<number>', 'E1220: String or Number required for argument 1']) 3246 CheckDefAndScriptFailure(['setbufline([1], 1, "x")'], ['E1013: Argument 1: type mismatch, expected string but got list<number>', 'E1220: String or Number required for argument 1'])
3241 CheckDefAndScriptFailure(['setbufline(1, [1], "x")'], ['E1013: Argument 2: type mismatch, expected string but got list<number>', 'E1220: String or Number required for argument 2']) 3247 CheckDefAndScriptFailure(['setbufline(1, [1], "x")'], ['E1013: Argument 2: type mismatch, expected string but got list<number>', 'E1220: String or Number required for argument 2'])
3248 CheckDefExecAndScriptFailure(['setbufline(' .. bnum .. ', -1, "x")'], 'E966: Invalid line number: -1')
3242 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']) 3249 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'])
3243 bnum->bufwinid()->win_gotoid() 3250 bnum->bufwinid()->win_gotoid()
3244 setbufline('', 1, 'nombres') 3251 setbufline('', 1, 'nombres')
3245 getline(1)->assert_equal('nombres') 3252 getline(1)->assert_equal('nombres')
3246 bw! 3253 bw!
3301 assert_equal(['one', 'b', 'c', 'd'], getline(1, '$')) 3308 assert_equal(['one', 'b', 'c', 'd'], getline(1, '$'))
3302 setline(1, 10) 3309 setline(1, 10)
3303 assert_equal(['10', 'b', 'c', 'd'], getline(1, '$')) 3310 assert_equal(['10', 'b', 'c', 'd'], getline(1, '$'))
3304 CheckDefAndScriptFailure(['setline([1], "x")'], ['E1013: Argument 1: type mismatch, expected string but got list<number>', 'E1220: String or Number required for argument 1']) 3311 CheckDefAndScriptFailure(['setline([1], "x")'], ['E1013: Argument 1: type mismatch, expected string but got list<number>', 'E1220: String or Number required for argument 1'])
3305 CheckDefExecAndScriptFailure(['setline("", "x")'], 'E1209: Invalid value for a line number') 3312 CheckDefExecAndScriptFailure(['setline("", "x")'], 'E1209: Invalid value for a line number')
3313 CheckDefExecAndScriptFailure(['setline(-1, "x")'], 'E966: Invalid line number: -1')
3306 bw! 3314 bw!
3307 enddef 3315 enddef
3308 3316
3309 def Test_setloclist() 3317 def Test_setloclist()
3310 var items = [{filename: '/tmp/file', lnum: 1, valid: true}] 3318 var items = [{filename: '/tmp/file', lnum: 1, valid: true}]