patch 8.2.0703: Vim9: closure cannot store value in outer context
Problem: Vim9: closure cannot store value in outer context.
Solution: Make storing value in outer context work. Make :disassemble
accept a function reference.
diff --git a/src/testdir/test_vim9_func.vim b/src/testdir/test_vim9_func.vim
index 49dc2f2..83cef67 100644
--- a/src/testdir/test_vim9_func.vim
+++ b/src/testdir/test_vim9_func.vim
@@ -738,6 +738,32 @@
unlet g:UseVararg
enddef
+def MakeGetAndAppendRefs()
+ let local = 'a'
+
+ def Append(arg: string)
+ local ..= arg
+ enddef
+ g:Append = Append
+
+ def Get(): string
+ return local
+ enddef
+ g:Get = Get
+enddef
+
+def Test_closure_append_get()
+ MakeGetAndAppendRefs()
+ assert_equal('a', g:Get())
+ g:Append('-b')
+ assert_equal('a-b', g:Get())
+ g:Append('-c')
+ assert_equal('a-b-c', g:Get())
+
+ unlet g:Append
+ unlet g:Get
+enddef
+
def Test_nested_closure()
let local = 'text'
def Closure(arg: string): string