Mercurial > vim
comparison src/testdir/test_let.vim @ 20156:49694eceaa55 v8.2.0633
patch 8.2.0633: crash when using null partial in filter()
Commit: https://github.com/vim/vim/commit/9d8d0b5c644ea53364d04403740b3f23e57c1497
Author: Bram Moolenaar <Bram@vim.org>
Date: Fri Apr 24 22:47:31 2020 +0200
patch 8.2.0633: crash when using null partial in filter()
Problem: Crash when using null partial in filter().
Solution: Fix crash. Add more tests. (Yegappan Lakshmanan, closes https://github.com/vim/vim/issues/5976)
author | Bram Moolenaar <Bram@vim.org> |
---|---|
date | Fri, 24 Apr 2020 23:00:04 +0200 |
parents | 0b35a7ffceb2 |
children | 6a4806e326dd |
comparison
equal
deleted
inserted
replaced
20155:f413c0207fd1 | 20156:49694eceaa55 |
---|---|
79 unlet s:Test_Script_Var | 79 unlet s:Test_Script_Var |
80 | 80 |
81 let l:Test_Local_Var = {'k' : 5} | 81 let l:Test_Local_Var = {'k' : 5} |
82 call assert_match("\nl:Test_Local_Var {'k': 5}", execute('let l:')) | 82 call assert_match("\nl:Test_Local_Var {'k': 5}", execute('let l:')) |
83 call assert_match("v:errors []", execute('let v:')) | 83 call assert_match("v:errors []", execute('let v:')) |
84 | |
85 " Test for assigning multiple list items | |
86 let l = [1, 2, 3] | |
87 let [l[0], l[1]] = [10, 20] | |
88 call assert_equal([10, 20, 3], l) | |
89 | |
90 " Test for errors in conditional expression | |
91 call assert_fails('let val = [] ? 1 : 2', 'E745:') | |
92 call assert_fails('let val = 1 ? 5+ : 6', 'E121:') | |
93 call assert_fails('let val = 1 ? 0 : 5+', 'E15:') | |
94 call assert_false(exists('val')) | |
95 | |
96 " Test for errors in logical operators | |
97 let @a = 'if [] || 0 | let val = 2 | endif' | |
98 call assert_fails('exe @a', 'E745:') | |
99 call assert_fails('call feedkeys(":let val = 0 || []\<cr>", "xt")', 'E745:') | |
100 call assert_fails('exe "let val = [] && 5"', 'E745:') | |
101 call assert_fails('exe "let val = 6 && []"', 'E745:') | |
84 endfunc | 102 endfunc |
85 | 103 |
86 func s:set_arg1(a) abort | 104 func s:set_arg1(a) abort |
87 let a:a = 1 | 105 let a:a = 1 |
88 endfunction | 106 endfunction |
280 let l = [[1,2]] | 298 let l = [[1,2]] |
281 call assert_fails('let l[:][0] = [5]', 'E708:') | 299 call assert_fails('let l[:][0] = [5]', 'E708:') |
282 let d = {'k' : 4} | 300 let d = {'k' : 4} |
283 call assert_fails('let d.# = 5', 'E713:') | 301 call assert_fails('let d.# = 5', 'E713:') |
284 call assert_fails('let d.m += 5', 'E734:') | 302 call assert_fails('let d.m += 5', 'E734:') |
303 call assert_fails('let m = d[{]', 'E15:') | |
285 let l = [1, 2] | 304 let l = [1, 2] |
286 call assert_fails('let l[2] = 0', 'E684:') | 305 call assert_fails('let l[2] = 0', 'E684:') |
287 call assert_fails('let l[0:1] = [1, 2, 3]', 'E710:') | 306 call assert_fails('let l[0:1] = [1, 2, 3]', 'E710:') |
288 call assert_fails('let l[-2:-3] = [3, 4]', 'E684:') | 307 call assert_fails('let l[-2:-3] = [3, 4]', 'E684:') |
289 call assert_fails('let l[0:4] = [5, 6]', 'E711:') | 308 call assert_fails('let l[0:4] = [5, 6]', 'E711:') |
309 call assert_fails('let l -= 2', 'E734:') | |
310 call assert_fails('let l += 2', 'E734:') | |
290 call assert_fails('let g:["a;b"] = 10', 'E461:') | 311 call assert_fails('let g:["a;b"] = 10', 'E461:') |
291 call assert_fails('let g:.min = function("max")', 'E704:') | 312 call assert_fails('let g:.min = function("max")', 'E704:') |
313 if has('channel') | |
314 let ch = test_null_channel() | |
315 call assert_fails('let ch += 1', 'E734:') | |
316 endif | |
292 | 317 |
293 " This test works only when the language is English | 318 " This test works only when the language is English |
294 if v:lang == "C" || v:lang =~ '^[Ee]n' | 319 if v:lang == "C" || v:lang =~ '^[Ee]n' |
295 call assert_fails('let [a ; b;] = [10, 20]', | 320 call assert_fails('let [a ; b;] = [10, 20]', |
296 \ 'Double ; in list of variables') | 321 \ 'Double ; in list of variables') |