mirror of
https://github.com/vim/vim.git
synced 2025-09-23 03:43:49 -04:00
patch 8.2.3222: Vim9: cannot used loop variable later as lambda argument
Problem: Vim9: cannot used loop variable later as lambda argument. Solution: When not in function context check the current block ID. (closes #8637)
This commit is contained in:
@@ -355,10 +355,23 @@ find_script_var(char_u *name, size_t len, cctx_T *cctx)
|
||||
return NULL;
|
||||
|
||||
sav = HI2SAV(hi);
|
||||
if (sav->sav_block_id == 0 || cctx == NULL)
|
||||
// variable defined in the script scope or not in a function.
|
||||
if (sav->sav_block_id == 0)
|
||||
// variable defined in the top script scope is always visible
|
||||
return sav;
|
||||
|
||||
if (cctx == NULL)
|
||||
{
|
||||
// Not in a function scope, find variable with block id equal to or
|
||||
// smaller than the current block id.
|
||||
while (sav != NULL)
|
||||
{
|
||||
if (sav->sav_block_id <= si->sn_current_block_id)
|
||||
break;
|
||||
sav = sav->sav_next;
|
||||
}
|
||||
return sav;
|
||||
}
|
||||
|
||||
// Go over the variables with this name and find one that was visible
|
||||
// from the function.
|
||||
ufunc = cctx->ctx_ufunc;
|
||||
|
Reference in New Issue
Block a user