patch 8.2.3055: strange error for assigning to "x.key" on non-dictionary
Problem: Strange error for assigning to "x.key" on non-dictionary.
Solution: Add a specific error message. (closes #8451)
diff --git a/src/testdir/test_let.vim b/src/testdir/test_let.vim
index c05a4cb..d001d05 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', 'E18:')
+ call assert_fails('let {s}.1 = 2', 'E1203:')
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 8351acb..96debd6 100644
--- a/src/testdir/test_listdict.vim
+++ b/src/testdir/test_listdict.vim
@@ -294,6 +294,9 @@
let d.1 = 1
let d._ = 2
call assert_equal({'1': 1, '_': 2}, d)
+
+ let n = 0
+ call assert_fails('let n.key = 3', 'E1203: Dot can only be used on a dictionary: n.key = 3')
endfunc
" Function in script-local List or Dict
diff --git a/src/testdir/test_vim9_assign.vim b/src/testdir/test_vim9_assign.vim
index 8541d11..230ddc5 100644
--- a/src/testdir/test_vim9_assign.vim
+++ b/src/testdir/test_vim9_assign.vim
@@ -787,6 +787,12 @@
d.dd[0] = 0
END
CheckDefExecFailure(lines, 'E1148:', 2)
+
+ lines =<< trim END
+ var n: any
+ n.key = 5
+ END
+ CheckDefExecAndScriptFailure2(lines, 'E1148:', 'E1203: Dot can only be used on a dictionary: n.key = 5', 2)
enddef
def Test_assignment_local()