comparison src/testdir/test_listdict.vim @ 22298:07e48ee8c3bb v8.2.1698

patch 8.2.1698: cannot lock a variable in legacy Vim script like in Vim9 Commit: https://github.com/vim/vim/commit/a187c43cfe8863d48b2159d695fedcb71f8525c1 Author: Bram Moolenaar <Bram@vim.org> Date: Wed Sep 16 21:08:28 2020 +0200 patch 8.2.1698: cannot lock a variable in legacy Vim script like in Vim9 Problem: Cannot lock a variable in legacy Vim script like in Vim9. Solution: Make ":lockvar 0" work.
author Bram Moolenaar <Bram@vim.org>
date Wed, 16 Sep 2020 21:15:05 +0200
parents 0ee66f232839
children 595ea7f099cd
comparison
equal deleted inserted replaced
22297:3d2dc70119a7 22298:07e48ee8c3bb
352 endfunc 352 endfunc
353 353
354 " Locked variables 354 " Locked variables
355 func Test_list_locked_var() 355 func Test_list_locked_var()
356 let expected = [ 356 let expected = [
357 \ [['0000-000', 'ppppppp'], 357 \ [['1000-000', 'ppppppF'],
358 \ ['0000-000', 'ppppppp'], 358 \ ['0000-000', 'ppppppp'],
359 \ ['0000-000', 'ppppppp']], 359 \ ['0000-000', 'ppppppp']],
360 \ [['1000-000', 'ppppppF'], 360 \ [['1000-000', 'ppppppF'],
361 \ ['0000-000', 'ppppppp'], 361 \ ['0000-000', 'ppppppp'],
362 \ ['0000-000', 'ppppppp']], 362 \ ['0000-000', 'ppppppp']],
379 exe "unlockvar l" 379 exe "unlockvar l"
380 elseif u == 2 380 elseif u == 2
381 exe "unlockvar " . depth . " l" 381 exe "unlockvar " . depth . " l"
382 endif 382 endif
383 let ps = islocked("l").islocked("l[1]").islocked("l[1][1]").islocked("l[1][1][0]").'-'.islocked("l[2]").islocked("l[2]['6']").islocked("l[2]['6'][7]") 383 let ps = islocked("l").islocked("l[1]").islocked("l[1][1]").islocked("l[1][1][0]").'-'.islocked("l[2]").islocked("l[2]['6']").islocked("l[2]['6'][7]")
384 call assert_equal(expected[depth][u][0], ps) 384 call assert_equal(expected[depth][u][0], ps, 'depth: ' .. depth)
385 let ps = '' 385 let ps = ''
386 try 386 try
387 let l[1][1][0] = 99 387 let l[1][1][0] = 99
388 let ps .= 'p' 388 let ps .= 'p'
389 catch 389 catch
423 let l = [99] 423 let l = [99]
424 let ps .= 'p' 424 let ps .= 'p'
425 catch 425 catch
426 let ps .= 'F' 426 let ps .= 'F'
427 endtry 427 endtry
428 call assert_equal(expected[depth][u][1], ps) 428 call assert_equal(expected[depth][u][1], ps, 'depth: ' .. depth)
429 endfor 429 endfor
430 endfor 430 endfor
431 call assert_fails("let x=islocked('a b')", 'E488:') 431 call assert_fails("let x=islocked('a b')", 'E488:')
432 let mylist = [1, 2, 3] 432 let mylist = [1, 2, 3]
433 call assert_fails("let x = islocked('mylist[1:2]')", 'E786:') 433 call assert_fails("let x = islocked('mylist[1:2]')", 'E786:')
436 endfunc 436 endfunc
437 437
438 " Unletting locked variables 438 " Unletting locked variables
439 func Test_list_locked_var_unlet() 439 func Test_list_locked_var_unlet()
440 let expected = [ 440 let expected = [
441 \ [['0000-000', 'ppppppp'], 441 \ [['1000-000', 'ppppppp'],
442 \ ['0000-000', 'ppppppp'], 442 \ ['0000-000', 'ppppppp'],
443 \ ['0000-000', 'ppppppp']], 443 \ ['0000-000', 'ppppppp']],
444 \ [['1000-000', 'ppFppFp'], 444 \ [['1000-000', 'ppFppFp'],
445 \ ['0000-000', 'ppppppp'], 445 \ ['0000-000', 'ppppppp'],
446 \ ['0000-000', 'ppppppp']], 446 \ ['0000-000', 'ppppppp']],
464 exe "unlockvar l" 464 exe "unlockvar l"
465 elseif u == 2 465 elseif u == 2
466 exe "unlockvar " . depth . " l" 466 exe "unlockvar " . depth . " l"
467 endif 467 endif
468 let ps = islocked("l").islocked("l[1]").islocked("l[1][1]").islocked("l[1][1][0]").'-'.islocked("l[2]").islocked("l[2]['6']").islocked("l[2]['6'][7]") 468 let ps = islocked("l").islocked("l[1]").islocked("l[1][1]").islocked("l[1][1][0]").'-'.islocked("l[2]").islocked("l[2]['6']").islocked("l[2]['6'][7]")
469 call assert_equal(expected[depth][u][0], ps) 469 call assert_equal(expected[depth][u][0], ps, 'depth: ' .. depth)
470 let ps = '' 470 let ps = ''
471 try 471 try
472 unlet l[2]['6'][7] 472 unlet l[2]['6'][7]
473 let ps .= 'p' 473 let ps .= 'p'
474 catch 474 catch
662 call assert_equal([1, 2, [3, 9, 5, 6], {'a': 12, '5': 8}], a:000) 662 call assert_equal([1, 2, [3, 9, 5, 6], {'a': 12, '5': 8}], a:000)
663 endfunc 663 endfunc
664 664
665 func Test_func_arg_list() 665 func Test_func_arg_list()
666 call s:arg_list_test(1, 2, [3, 4], {5: 6}) 666 call s:arg_list_test(1, 2, [3, 4], {5: 6})
667 endfunc
668
669 func Test_dict_item_locked()
667 endfunc 670 endfunc
668 671
669 " Tests for reverse(), sort(), uniq() 672 " Tests for reverse(), sort(), uniq()
670 func Test_reverse_sort_uniq() 673 func Test_reverse_sort_uniq()
671 let l = ['-0', 'A11', 2, 2, 'xaaa', 4, 'foo', 'foo6', 'foo', [0, 1, 2], 'x8', [0, 1, 2], 1.5] 674 let l = ['-0', 'A11', 2, 2, 'xaaa', 4, 'foo', 'foo6', 'foo', [0, 1, 2], 'x8', [0, 1, 2], 1.5]