summaryrefslogtreecommitdiffstats
path: root/src/testdir/test_vim9_script.vim
diff options
context:
space:
mode:
authorBram Moolenaar <Bram@vim.org>2022-09-14 00:30:51 +0100
committerBram Moolenaar <Bram@vim.org>2022-09-14 00:30:51 +0100
commit766ae5b252eaa6ee2bff70f1913d1cbfb51101bd (patch)
treec8e34f8e495b00c7e36e9310ab5becb5f9924ecc /src/testdir/test_vim9_script.vim
parent353b68a99189875a8460124d44fc33eae6def74e (diff)
patch 9.0.0460: loop variable can't be foundv9.0.0460
Problem: Loop variable can't be found. Solution: Adjust block_id of the loop variable each round.
Diffstat (limited to 'src/testdir/test_vim9_script.vim')
-rw-r--r--src/testdir/test_vim9_script.vim14
1 files changed, 14 insertions, 0 deletions
diff --git a/src/testdir/test_vim9_script.vim b/src/testdir/test_vim9_script.vim
index fa9bb0cc20..0f462e3243 100644
--- a/src/testdir/test_vim9_script.vim
+++ b/src/testdir/test_vim9_script.vim
@@ -2259,9 +2259,23 @@ def Test_for_loop()
enddef
def Test_for_loop_with_closure()
+ # using the loop variable in a closure results in the last used value
var lines =<< trim END
var flist: list<func>
for i in range(5)
+ flist[i] = () => i
+ endfor
+ for i in range(5)
+ assert_equal(4, flist[i]())
+ endfor
+ END
+ v9.CheckDefAndScriptSuccess(lines)
+
+ # using a local variable set to the loop variable in a closure results in the
+ # value at that moment
+ lines =<< trim END
+ var flist: list<func>
+ for i in range(5)
var inloop = i
flist[i] = () => inloop
endfor