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