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)
diff --git a/src/testdir/test_vim9_func.vim b/src/testdir/test_vim9_func.vim
index e8df8a7..144797e 100644
--- a/src/testdir/test_vim9_func.vim
+++ b/src/testdir/test_vim9_func.vim
@@ -2352,7 +2352,7 @@
assert_match('def <lambda>\d\+(_: any): number\n1 return 0\n enddef', body)
enddef
-def Test_lamba_block_variable()
+def Test_lambda_block_variable()
var lines =<< trim END
vim9script
var flist: list<func>
@@ -2386,6 +2386,15 @@
endfor
END
CheckScriptFailure(lines, 'E1001: Variable not found: outloop', 1)
+
+ lines =<< trim END
+ vim9script
+ for i in range(10)
+ var Ref = () => 0
+ endfor
+ assert_equal(0, ((i) => 0)(0))
+ END
+ CheckScriptSuccess(lines)
enddef
def Test_legacy_lambda()