patch 8.2.0730: Vim9: Assignment to dict member does not work
Problem: Vim9: Assignment to dict member does not work.
Solution: Parse dict assignment. Implement getting dict member.
diff --git a/src/testdir/test_vim9_cmd.vim b/src/testdir/test_vim9_cmd.vim
index 70437b9..12260c3 100644
--- a/src/testdir/test_vim9_cmd.vim
+++ b/src/testdir/test_vim9_cmd.vim
@@ -44,5 +44,27 @@
delete('Xthemine.vim')
enddef
+def Test_assign_list()
+ let l: list<string> = []
+ l[0] = 'value'
+ assert_equal('value', l[0])
+
+ l[1] = 'asdf'
+ assert_equal('value', l[0])
+ assert_equal('asdf', l[1])
+ assert_equal('asdf', l[-1])
+ assert_equal('value', l[-2])
+enddef
+
+def Test_assign_dict()
+ let d: dict<string> = {}
+ d['key'] = 'value'
+ assert_equal('value', d['key'])
+
+ d[123] = 'qwerty'
+ assert_equal('qwerty', d[123])
+ assert_equal('qwerty', d['123'])
+enddef
+
" vim: ts=8 sw=2 sts=2 expandtab tw=80 fdm=marker
diff --git a/src/testdir/test_vim9_expr.vim b/src/testdir/test_vim9_expr.vim
index 86d1715..6e82788 100644
--- a/src/testdir/test_vim9_expr.vim
+++ b/src/testdir/test_vim9_expr.vim
@@ -644,9 +644,9 @@
call CheckDefFailure(["let x = #{one: 1} / #{two: 2}"], 'E1036:')
call CheckDefFailure(["let x = #{one: 1} % #{two: 2}"], 'E1035:')
- call CheckDefFailure(["let x = 0xff[1]"], 'E714:')
+ call CheckDefFailure(["let x = 0xff[1]"], 'E1090:')
if has('float')
- call CheckDefFailure(["let x = 0.7[1]"], 'E714:')
+ call CheckDefFailure(["let x = 0.7[1]"], 'E1090:')
endif
endfunc
diff --git a/src/testdir/test_vim9_script.vim b/src/testdir/test_vim9_script.vim
index d1cc1f9..0b99eec 100644
--- a/src/testdir/test_vim9_script.vim
+++ b/src/testdir/test_vim9_script.vim
@@ -38,7 +38,7 @@
call CheckDefFailure(['let x:string'], 'E1069:')
call CheckDefFailure(['let x:string = "x"'], 'E1069:')
- call CheckDefFailure(['let a:string = "x"'], 'E1082:')
+ call CheckDefFailure(['let a:string = "x"'], 'E1069:')
let a: number = 6
assert_equal(6, a)