comparison src/testdir/test_vim9_assign.vim @ 23266:00f7cd9b6033 v8.2.2179

patch 8.2.2179: Vim9: crash when indexing a dict with a number Commit: https://github.com/vim/vim/commit/4f5e39775616795ac7d1c01bf15a1bd316feb387 Author: Bram Moolenaar <Bram@vim.org> Date: Mon Dec 21 17:30:50 2020 +0100 patch 8.2.2179: Vim9: crash when indexing a dict with a number Problem: Vim9: crash when indexing a dict with a number. Solution: Add ISN_STOREINDEX. (closes https://github.com/vim/vim/issues/7513)
author Bram Moolenaar <Bram@vim.org>
date Mon, 21 Dec 2020 17:45:04 +0100
parents ac934fbacc0e
children 40f1d3f0c53e
comparison
equal deleted inserted replaced
23265:684de8fd484a 23266:00f7cd9b6033
531 CheckDefExecFailure(['var ll = [1, 2, 3]', 'll[-4] = 6'], 'E684:') 531 CheckDefExecFailure(['var ll = [1, 2, 3]', 'll[-4] = 6'], 'E684:')
532 CheckDefExecFailure(['var [v1, v2] = [1, 2]'], 'E1092:') 532 CheckDefExecFailure(['var [v1, v2] = [1, 2]'], 'E1092:')
533 533
534 # type becomes list<any> 534 # type becomes list<any>
535 var somelist = rand() > 0 ? [1, 2, 3] : ['a', 'b', 'c'] 535 var somelist = rand() > 0 ? [1, 2, 3] : ['a', 'b', 'c']
536
537 var lines =<< trim END
538 var d = {dd: test_null_list()}
539 d.dd[0] = 0
540 END
541 CheckDefExecFailure(lines, 'E1147:', 2)
536 enddef 542 enddef
537 543
538 def Test_assignment_list_vim9script() 544 def Test_assignment_list_vim9script()
539 var lines =<< trim END 545 var lines =<< trim END
540 vim9script 546 vim9script
565 anydict.nest['this'] = 123 571 anydict.nest['this'] = 123
566 anydict.nest.that = 456 572 anydict.nest.that = 456
567 assert_equal({nest: {this: 123, that: 456}, nr: 0}, anydict) 573 assert_equal({nest: {this: 123, that: 456}, nr: 0}, anydict)
568 574
569 var lines =<< trim END 575 var lines =<< trim END
570 vim9script
571 var dd = {} 576 var dd = {}
572 dd.two = 2 577 dd.two = 2
573 assert_equal({two: 2}, dd) 578 assert_equal({two: 2}, dd)
574 END 579 END
575 CheckScriptSuccess(lines) 580 CheckDefAndScriptSuccess(lines)
581
582 lines =<< trim END
583 var d = {dd: {}}
584 d.dd[0] = 2
585 d.dd['x'] = 3
586 d.dd.y = 4
587 assert_equal({dd: {0: 2, x: 3, y: 4}}, d)
588 END
589 CheckDefAndScriptSuccess(lines)
576 590
577 lines =<< trim END 591 lines =<< trim END
578 var dd = {one: 1} 592 var dd = {one: 1}
579 dd.one) = 2 593 dd.one) = 2
580 END 594 END
639 return b:test 653 return b:test
640 enddef 654 enddef
641 assert_equal({a: 43}, FillDict()) 655 assert_equal({a: 43}, FillDict())
642 END 656 END
643 CheckScriptSuccess(lines) 657 CheckScriptSuccess(lines)
658
659 lines =<< trim END
660 var d = {dd: test_null_dict()}
661 d.dd[0] = 0
662 END
663 CheckDefExecFailure(lines, 'E1103:', 2)
664
665 lines =<< trim END
666 var d = {dd: 'string'}
667 d.dd[0] = 0
668 END
669 CheckDefExecFailure(lines, 'E1148:', 2)
644 enddef 670 enddef
645 671
646 def Test_assignment_local() 672 def Test_assignment_local()
647 # Test in a separated file in order not to the current buffer/window/tab is 673 # Test in a separated file in order not to the current buffer/window/tab is
648 # changed. 674 # changed.