Mercurial > vim
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}] |