# HG changeset patch # User Bram Moolenaar # Date 1637618403 -3600 # Node ID 640b62dbf6cb0dd0d0b1a9c2902a07e145dc9b81 # Parent 5187470e768ce43a38f7448875c65d1c721d66e1 patch 8.2.3651: Vim9: no error for :lock or :unlock with unknown variable Commit: https://github.com/vim/vim/commit/04b568b38f848293e1ae0e680685280151acb386 Author: Bram Moolenaar Date: Mon Nov 22 21:58:41 2021 +0000 patch 8.2.3651: Vim9: no error for :lock or :unlock with unknown variable Problem: Vim9: no error for :lock or :unlock with unknown variable. Solution: Give an error. (closes https://github.com/vim/vim/issues/9188) diff --git a/src/errors.h b/src/errors.h --- a/src/errors.h +++ b/src/errors.h @@ -686,3 +686,5 @@ EXTERN char e_bad_color_string_str[] INIT(= N_("E1244: Bad color string: %s")); EXTERN char e_cannot_expand_sfile_in_vim9_function[] INIT(= N_("E1245: Cannot expand in a Vim9 function")); +EXTERN char e_cannot_find_variable_to_unlock_str[] + INIT(= N_("E1246: Cannot find variable to (un)lock: %s")); diff --git a/src/evalvars.c b/src/evalvars.c --- a/src/evalvars.c +++ b/src/evalvars.c @@ -1827,7 +1827,12 @@ do_lock_var( // Normal name or expanded name. di = find_var(lp->ll_name, NULL, TRUE); if (di == NULL) + { + if (in_vim9script()) + semsg(_(e_cannot_find_variable_to_unlock_str), + lp->ll_name); ret = FAIL; + } else if ((di->di_flags & DI_FLAGS_FIX) && di->di_tv.v_type != VAR_DICT && di->di_tv.v_type != VAR_LIST) diff --git a/src/testdir/test_vim9_cmd.vim b/src/testdir/test_vim9_cmd.vim --- a/src/testdir/test_vim9_cmd.vim +++ b/src/testdir/test_vim9_cmd.vim @@ -1370,6 +1370,23 @@ def Test_lockvar() unlockvar theList END CheckDefFailure(lines, 'E1178', 2) + + lines =<< trim END + vim9script + var name = 'john' + lockvar nameX + END + CheckScriptFailure(lines, 'E1246', 3) + + lines =<< trim END + vim9script + var name = 'john' + def LockIt() + lockvar nameX + enddef + LockIt() + END + CheckScriptFailure(lines, 'E1246', 1) enddef def Test_substitute_expr() diff --git a/src/version.c b/src/version.c --- a/src/version.c +++ b/src/version.c @@ -758,6 +758,8 @@ static char *(features[]) = static int included_patches[] = { /* Add new patch number below this line */ /**/ + 3651, +/**/ 3650, /**/ 3649,