patch 8.2.2336: Vim9: not possible to extend dictionary with different type
Problem: Vim9: it is not possible to extend a dictionary with different
item types.
Solution: Add extendnew(). (closes #7666)
diff --git a/src/testdir/test_listdict.vim b/src/testdir/test_listdict.vim
index 762a517..051a37c 100644
--- a/src/testdir/test_listdict.vim
+++ b/src/testdir/test_listdict.vim
@@ -864,6 +864,18 @@
call assert_fails("call extend(g:, {'-!' : 10})", 'E461:')
endfunc
+func Test_listdict_extendnew()
+ " Test extendnew() with lists
+ let l = [1, 2, 3]
+ call assert_equal([1, 2, 3, 4, 5], extendnew(l, [4, 5]))
+ call assert_equal([1, 2, 3], l)
+
+ " Test extend() with dictionaries.
+ let d = {'a': {'b': 'B'}}
+ call assert_equal({'a': {'b': 'B'}, 'c': 'cc'}, extendnew(d, {'c': 'cc'}))
+ call assert_equal({'a': {'b': 'B'}}, d)
+endfunc
+
func s:check_scope_dict(x, fixed)
func s:gen_cmd(cmd, x)
return substitute(a:cmd, '\<x\ze:', a:x, 'g')