patch 8.2.2195: failing tests for :const
Problem: Failing tests for :const.
Solution: Add missing check for ASSIGN_FINAL.
diff --git a/src/eval.c b/src/eval.c
index f08ae57..e4149ab 100644
--- a/src/eval.c
+++ b/src/eval.c
@@ -1334,7 +1334,7 @@
{
typval_T tv;
- if (flags & ASSIGN_CONST)
+ if (flags & (ASSIGN_CONST | ASSIGN_FINAL))
{
emsg(_(e_cannot_mod));
*endp = cc;
@@ -1372,7 +1372,7 @@
listitem_T *ll_li = lp->ll_li;
int ll_n1 = lp->ll_n1;
- if (flags & ASSIGN_CONST)
+ if (flags & (ASSIGN_CONST | ASSIGN_FINAL))
{
emsg(_("E996: Cannot lock a range"));
return;
@@ -1431,7 +1431,7 @@
/*
* Assign to a List or Dictionary item.
*/
- if (flags & ASSIGN_CONST)
+ if (flags & (ASSIGN_CONST | ASSIGN_FINAL))
{
emsg(_("E996: Cannot lock a list or dict"));
return;
diff --git a/src/evalvars.c b/src/evalvars.c
index 7c4cc7a..e671b87 100644
--- a/src/evalvars.c
+++ b/src/evalvars.c
@@ -752,9 +752,6 @@
emsg(_(e_cannot_use_let_in_vim9_script));
return;
}
- if (eap->cmdidx == CMD_const && !vim9script && !eap->forceit)
- // In legacy Vim script ":const" works like ":final".
- eap->cmdidx = CMD_final;
if (eap->cmdidx == CMD_const)
flags |= ASSIGN_CONST;
@@ -3231,7 +3228,8 @@
init_tv(tv);
}
- // ":const var = val" locks the value
+ // ":const var = value" locks the value
+ // ":final var = value" locks "var"
if (flags & ASSIGN_CONST)
// Like :lockvar! name: lock the value and what it contains, but only
// if the reference count is up to one. That locks only literal
diff --git a/src/testdir/test_vim9_func.vim b/src/testdir/test_vim9_func.vim
index 749b8e8..bdced02 100644
--- a/src/testdir/test_vim9_func.vim
+++ b/src/testdir/test_vim9_func.vim
@@ -1032,7 +1032,7 @@
call Change()
unlet g:Aconst
END
- CheckScriptFailure(lines, 'E1122: Variable is locked: Aconst', 2)
+ CheckScriptFailure(lines, 'E741: Value is locked: Aconst', 2)
enddef
" Test that inside :function a Python function can be defined, :def is not
diff --git a/src/version.c b/src/version.c
index d4ca3c4..45b69bd 100644
--- a/src/version.c
+++ b/src/version.c
@@ -751,6 +751,8 @@
static int included_patches[] =
{ /* Add new patch number below this line */
/**/
+ 2195,
+/**/
2194,
/**/
2193,