diff src/testdir/test_vim9_func.vim @ 25344:d1fcd9c14a93 v8.2.3209

patch 8.2.3209: Vim9: lambda doesn't find block-local variable Commit: https://github.com/vim/vim/commit/88421d6dc812a2f3b0eab34740f174c9558cb734 Author: Bram Moolenaar <Bram@vim.org> Date: Sat Jul 24 14:14:52 2021 +0200 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 https://github.com/vim/vim/issues/8614)
author Bram Moolenaar <Bram@vim.org>
date Sat, 24 Jul 2021 14:15:04 +0200
parents 0716cc2e4a8b
children d52504ef26ed
line wrap: on
line diff
--- a/src/testdir/test_vim9_func.vim
+++ b/src/testdir/test_vim9_func.vim
@@ -2352,6 +2352,42 @@ def Test_list_lambda()
   assert_match('def <lambda>\d\+(_: any): number\n1  return 0\n   enddef', body)
 enddef
 
+def Test_lamba_block_variable()
+  var lines =<< trim END
+      vim9script
+      var flist: list<func>
+      for i in range(10)
+          var inloop = i
+          flist[i] = () => inloop
+      endfor
+  END
+  CheckScriptSuccess(lines)
+
+  lines =<< trim END
+      vim9script
+      if true
+        var outloop = 5
+        var flist: list<func>
+        for i in range(10)
+          flist[i] = () => outloop
+        endfor
+      endif
+  END
+  CheckScriptSuccess(lines)
+
+  lines =<< trim END
+      vim9script
+      if true
+        var outloop = 5
+      endif
+      var flist: list<func>
+      for i in range(10)
+        flist[i] = () => outloop
+      endfor
+  END
+  CheckScriptFailure(lines, 'E1001: Variable not found: outloop', 1)
+enddef
+
 def Test_legacy_lambda()
   legacy echo {x -> 'hello ' .. x}('foo')