patch 8.2.3351: Vim9: using a function by name may delete it
Problem: Vim9: using a function by name may delete it. (Naohiro Ono)
Solution: Increment the reference count when using a function by name.
(closes #8760)
diff --git a/src/testdir/test_vim9_func.vim b/src/testdir/test_vim9_func.vim
index cc7132a..c42188e 100644
--- a/src/testdir/test_vim9_func.vim
+++ b/src/testdir/test_vim9_func.vim
@@ -3089,6 +3089,23 @@
call CheckDefAndScriptSuccess(lines)
enddef
+func CreateMydict()
+ let g:mydict = {}
+ func g:mydict.afunc()
+ let g:result = self.key
+ endfunc
+endfunc
+
+def Test_numbered_function_reference()
+ CreateMydict()
+ var output = execute('legacy func g:mydict.afunc')
+ var funcName = 'g:' .. substitute(output, '.*function \(\d\+\).*', '\1', '')
+ execute 'function(' .. funcName .. ', [], {key: 42})()'
+ # check that the function still exists
+ assert_equal(output, execute('legacy func g:mydict.afunc'))
+ unlet g:mydict
+enddef
+
if has('python3')
def Test_python3_heredoc()
py3 << trim EOF