patch 8.2.4612: Vim9: cannot use a recursive call in a nested function
Problem: Vim9: cannot use a recursive call in a nested function. (Sergey
Vlasov)
Solution: Define the funcref before compiling the function. (closes #9989)
diff --git a/src/testdir/test_vim9_func.vim b/src/testdir/test_vim9_func.vim
index e884f0e..06168e4 100644
--- a/src/testdir/test_vim9_func.vim
+++ b/src/testdir/test_vim9_func.vim
@@ -876,6 +876,25 @@
END
v9.CheckScriptSuccess(lines)
+ # nested function with recursive call
+ lines =<< trim END
+ vim9script
+
+ def MyFunc(): number
+ def Fib(n: number): number
+ if n < 2
+ return 1
+ endif
+ return Fib(n - 2) + Fib(n - 1)
+ enddef
+
+ return Fib(5)
+ enddef
+
+ assert_equal(8, MyFunc())
+ END
+ v9.CheckScriptSuccess(lines)
+
lines =<< trim END
vim9script
def Outer()