patch 8.2.2331: Vim9: wrong error when modifying dict declared with :final
Problem: Vim9: wrong error when modifying dict declared with :final.
Solution: Do not check for writable variable when an index follows.
(closes #7657)
diff --git a/src/testdir/test_vim9_assign.vim b/src/testdir/test_vim9_assign.vim
index 2148063..8dadb2c 100644
--- a/src/testdir/test_vim9_assign.vim
+++ b/src/testdir/test_vim9_assign.vim
@@ -1225,6 +1225,12 @@
g:dict_val = s:dict[key]
enddef
GetDictVal('a')
+
+ final adict: dict<string> = {}
+ def ChangeAdict()
+ adict.foo = 'foo'
+ enddef
+ ChangeAdict()
END
CheckScriptSuccess(lines)
assert_equal('', g:var_uninit)
@@ -1262,6 +1268,16 @@
lines =<< trim END
vim9script
+ const cdict: dict<string> = {}
+ def Change()
+ cdict.foo = 'foo'
+ enddef
+ defcompile
+ END
+ CheckScriptFailure(lines, 'E46:')
+
+ lines =<< trim END
+ vim9script
final w:finalvar = [9]
w:finalvar = [8]
END