diff options
author | Bram Moolenaar <Bram@vim.org> | 2022-09-14 00:30:51 +0100 |
---|---|---|
committer | Bram Moolenaar <Bram@vim.org> | 2022-09-14 00:30:51 +0100 |
commit | 766ae5b252eaa6ee2bff70f1913d1cbfb51101bd (patch) | |
tree | c8e34f8e495b00c7e36e9310ab5becb5f9924ecc /src/testdir/test_vim9_script.vim | |
parent | 353b68a99189875a8460124d44fc33eae6def74e (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.vim | 14 |
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 |