patch 8.2.3209: Vim9: lambda doesn't find block-local variable
Problem: Vim9: lambda doesn't find block-local variable.
Solution: Adjust how a script-local variable is found. (closes #8614)
diff --git a/src/vim9compile.c b/src/vim9compile.c
index 06098d8..5ec3b3d 100644
--- a/src/vim9compile.c
+++ b/src/vim9compile.c
@@ -339,6 +339,7 @@
hashitem_T *hi;
int cc;
sallvar_T *sav;
+ sallvar_T *found_sav;
ufunc_T *ufunc;
// Find the list of all script variables with the right name.
@@ -361,6 +362,7 @@
// Go over the variables with this name and find one that was visible
// from the function.
ufunc = cctx->ctx_ufunc;
+ found_sav = sav;
while (sav != NULL)
{
int idx;
@@ -373,7 +375,8 @@
sav = sav->sav_next;
}
- return NULL;
+ // Not found, assume variable at script level was visible.
+ return found_sav;
}
/*