patch 8.2.1306: checking for first character of dict key is inconsistent
Problem: Checking for first character of dict key is inconsistent.
Solution: Add eval_isdictc(). (closes #6546)
diff --git a/src/testdir/test_let.vim b/src/testdir/test_let.vim
index 9a399e8..017b2a4 100644
--- a/src/testdir/test_let.vim
+++ b/src/testdir/test_let.vim
@@ -293,7 +293,7 @@
let s = "var"
let var = 1
call assert_fails('let var += [1,2]', 'E734:')
- call assert_fails('let {s}.1 = 2', 'E15:')
+ call assert_fails('let {s}.1 = 2', 'E18:')
call assert_fails('let a[1] = 5', 'E121:')
let l = [[1,2]]
call assert_fails('let l[:][0] = [5]', 'E708:')
diff --git a/src/testdir/test_listdict.vim b/src/testdir/test_listdict.vim
index b064846..beeda2f 100644
--- a/src/testdir/test_listdict.vim
+++ b/src/testdir/test_listdict.vim
@@ -282,6 +282,13 @@
call assert_equal('xxx3', Fn('xxx'))
endfunc
+func Test_dict_assign()
+ let d = {}
+ let d.1 = 1
+ let d._ = 2
+ call assert_equal({'1': 1, '_': 2}, d)
+endfunc
+
" Function in script-local List or Dict
func Test_script_local_dict_func()
let g:dict = {}
diff --git a/src/testdir/test_vim9_expr.vim b/src/testdir/test_vim9_expr.vim
index d7072f3..5b46c32 100644
--- a/src/testdir/test_vim9_expr.vim
+++ b/src/testdir/test_vim9_expr.vim
@@ -1310,6 +1310,11 @@
])
assert_equal(1, d
.one)
+ d = {'1': 1, '_': 2}
+ assert_equal(1, d
+ .1)
+ assert_equal(2, d
+ ._)
# getting the one member should clear the dict after getting the item
assert_equal('one', #{one: 'one'}.one)
@@ -1330,10 +1335,16 @@
vim9script
let d = #{one:
'one',
- two: 'two'}
+ two: 'two',
+ 1: 1,
+ _: 2}
assert_equal('one', d.one)
assert_equal('one', d
.one)
+ assert_equal(1, d
+ .1)
+ assert_equal(2, d
+ ._)
assert_equal('one', d[
'one'
])