diff src/testdir/test_vim9_func.vim @ 21303:7c50dfe302f8 v8.2.1202

patch 8.2.1202: Vim9: crash when calling a closure from a builtin function Commit: https://github.com/vim/vim/commit/08f7a41b0a280e5901eb4ee4bbfe682113863492 Author: Bram Moolenaar <Bram@vim.org> Date: Mon Jul 13 20:41:08 2020 +0200 patch 8.2.1202: Vim9: crash when calling a closure from a builtin function Problem: Vim9: crash when calling a closure from a builtin function. Solution: Use the current execution context. (closes https://github.com/vim/vim/issues/6441)
author Bram Moolenaar <Bram@vim.org>
date Mon, 13 Jul 2020 20:45:04 +0200
parents 60011b87aae1
children af3663df42bf
line wrap: on
line diff
--- a/src/testdir/test_vim9_func.vim
+++ b/src/testdir/test_vim9_func.vim
@@ -1019,5 +1019,24 @@ def Test_recursive_call()
   assert_equal(6765, Fibonacci(20))
 enddef
 
+def TreeWalk(dir: string): list<any>
+  return readdir(dir)->map({_, val ->
+            fnamemodify(dir .. '/' .. val, ':p')->isdirectory()
+               ? {val : TreeWalk(dir .. '/' .. val)}
+               : val
+             })
+enddef
+
+def Test_closure_in_map()
+  mkdir('XclosureDir/tdir', 'p')
+  writefile(['111'], 'XclosureDir/file1')
+  writefile(['222'], 'XclosureDir/file2')
+  writefile(['333'], 'XclosureDir/tdir/file3')
+
+  assert_equal(['file1', 'file2', {'tdir': ['file3']}], TreeWalk('XclosureDir'))
+
+  delete('XclosureDir', 'rf')
+enddef
+
 
 " vim: ts=8 sw=2 sts=2 expandtab tw=80 fdm=marker