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 #6441)
diff --git a/src/testdir/test_vim9_func.vim b/src/testdir/test_vim9_func.vim
index 99b2a11..8214675 100644
--- a/src/testdir/test_vim9_func.vim
+++ b/src/testdir/test_vim9_func.vim
@@ -1019,5 +1019,24 @@
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