mirror of
https://github.com/vim/vim.git
synced 2025-09-26 04:04:07 -04:00
patch 8.2.2693: Vim9: locked script variable can be changed
Problem: Vim9: locked script variable can be changed. Solution: Check legacy script variable for being locked. (issue #8031)
This commit is contained in:
@@ -1355,7 +1355,17 @@ def Test_var_declaration_fails()
|
|||||||
enddef
|
enddef
|
||||||
SetLocked()
|
SetLocked()
|
||||||
END
|
END
|
||||||
CheckScriptFailure(lines, 'E741: Value is locked: name')
|
CheckScriptFailure(lines, 'E741: Value is locked: name', 1)
|
||||||
|
|
||||||
|
lines =<< trim END
|
||||||
|
let s:legacy = 'one'
|
||||||
|
lockvar s:legacy
|
||||||
|
def SetLocked()
|
||||||
|
s:legacy = 'two'
|
||||||
|
enddef
|
||||||
|
call SetLocked()
|
||||||
|
END
|
||||||
|
CheckScriptFailure(lines, 'E741: Value is locked: s:legacy', 1)
|
||||||
|
|
||||||
lines =<< trim END
|
lines =<< trim END
|
||||||
vim9script
|
vim9script
|
||||||
@@ -1365,7 +1375,7 @@ def Test_var_declaration_fails()
|
|||||||
SetGlobalConst()
|
SetGlobalConst()
|
||||||
g:globConst = 234
|
g:globConst = 234
|
||||||
END
|
END
|
||||||
CheckScriptFailure(lines, 'E741: Value is locked: globConst')
|
CheckScriptFailure(lines, 'E741: Value is locked: globConst', 1)
|
||||||
unlet g:globConst
|
unlet g:globConst
|
||||||
|
|
||||||
lines =<< trim END
|
lines =<< trim END
|
||||||
|
@@ -750,6 +750,8 @@ static char *(features[]) =
|
|||||||
|
|
||||||
static int included_patches[] =
|
static int included_patches[] =
|
||||||
{ /* Add new patch number below this line */
|
{ /* Add new patch number below this line */
|
||||||
|
/**/
|
||||||
|
2693,
|
||||||
/**/
|
/**/
|
||||||
2692,
|
2692,
|
||||||
/**/
|
/**/
|
||||||
|
@@ -1942,6 +1942,9 @@ call_def_function(
|
|||||||
store_var(name, STACK_TV_BOT(0));
|
store_var(name, STACK_TV_BOT(0));
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
|
SOURCING_LNUM = iptr->isn_lnum;
|
||||||
|
if (var_check_permission(di, name) == FAIL)
|
||||||
|
goto on_error;
|
||||||
clear_tv(&di->di_tv);
|
clear_tv(&di->di_tv);
|
||||||
di->di_tv = *STACK_TV_BOT(0);
|
di->di_tv = *STACK_TV_BOT(0);
|
||||||
}
|
}
|
||||||
|
Reference in New Issue
Block a user