@@ -506,6 +506,15 @@ func Test_dict_lock_extend()
506506 call assert_equal ({' a' : 99 , ' b' : 100 }, d )
507507endfunc
508508
509+ " Cannot use += with a locked dict
510+ func Test_dict_lock_operator ()
511+ unlet ! d
512+ let d = {}
513+ lockvar d
514+ call assert_fails (" let d += {'k' : 10}" , ' E741:' )
515+ unlockvar d
516+ endfunc
517+
509518" No remove() of write-protected scope-level variable
510519func ! Tfunc (this_is_a_long_parameter_name)
511520 call assert_fails (" call remove(a:, 'this_is_a_long_parameter_name')" , ' E742' )
@@ -709,6 +718,23 @@ func Test_listdict_extend()
709718
710719 call assert_fails (" call extend([1, 2], 1)" , ' E712:' )
711720 call assert_fails (" call extend([1, 2], {})" , ' E712:' )
721+
722+ " Extend g: dictionary with an invalid variable name
723+ call assert_fails (" call extend(g:, {'-!' : 10})" , ' E461:' )
724+
725+ " Extend a list with itself.
726+ let l = [1 , 5 , 7 ]
727+ call extend (l , l , 0 )
728+ call assert_equal ([1 , 5 , 7 , 1 , 5 , 7 ], l )
729+ let l = [1 , 5 , 7 ]
730+ call extend (l , l , 1 )
731+ call assert_equal ([1 , 1 , 5 , 7 , 5 , 7 ], l )
732+ let l = [1 , 5 , 7 ]
733+ call extend (l , l , 2 )
734+ call assert_equal ([1 , 5 , 1 , 5 , 7 , 7 ], l )
735+ let l = [1 , 5 , 7 ]
736+ call extend (l , l , 3 )
737+ call assert_equal ([1 , 5 , 7 , 1 , 5 , 7 ], l )
712738endfunc
713739
714740func s: check_scope_dict (x , fixed)
@@ -782,3 +808,40 @@ func Test_scope_dict()
782808 " Test for v:
783809 call s: check_scope_dict (' v' , v: true )
784810endfunc
811+
812+ " Test for a null list
813+ func Test_null_list ()
814+ let l = v: _null_list
815+ call assert_equal (' ' , join (l ))
816+ call assert_equal (0 , len (l ))
817+ call assert_equal (1 , empty (l ))
818+ call assert_fails (' let s = join([1, 2], [])' , ' E730:' )
819+ call assert_equal ([], split (v: _null_string ))
820+ call assert_equal ([], l [:2 ])
821+ call assert_true ([] == l )
822+ call assert_equal (' []' , string (l ))
823+ " call assert_equal(0, sort(l))
824+ " call assert_equal(0, sort(l))
825+ " call assert_equal(0, uniq(l))
826+ let k = [] + l
827+ call assert_equal ([], k )
828+ let k = l + []
829+ call assert_equal ([], k )
830+ call assert_equal (0 , len (copy (l )))
831+ call assert_equal (0 , count (l , 5 ))
832+ call assert_equal ([], deepcopy (l ))
833+ call assert_equal (5 , get (l , 2 , 5 ))
834+ call assert_equal (-1 , index (l , 2 , 5 ))
835+ " call assert_equal(0, insert(l, 2, -1))
836+ call assert_equal (0 , min (l ))
837+ call assert_equal (0 , max (l ))
838+ " call assert_equal(0, remove(l, 0, 2))
839+ call assert_equal ([], repeat (l , 2 ))
840+ " call assert_equal(0, reverse(l))
841+ " call assert_equal(0, sort(l))
842+ call assert_equal (' []' , string (l ))
843+ " call assert_equal(0, extend(l, l, 0))
844+ lockvar l
845+ call assert_equal (1 , islocked (' l' ))
846+ unlockvar l
847+ endfunc
0 commit comments