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