patch 8.2.3151: Vim9: profiling fails if nested function is also profiled
Problem: Vim9: profiling fails if nested function is also profiled.
Solution: Use the compile type from the outer function. (closes #8543)
diff --git a/src/testdir/test_vim9_script.vim b/src/testdir/test_vim9_script.vim
index 10f41c7..b4107e9 100644
--- a/src/testdir/test_vim9_script.vim
+++ b/src/testdir/test_vim9_script.vim
@@ -4190,6 +4190,14 @@
Nested()
enddef
+def ProfiledNestedProfiled()
+ var x = 0
+ def Nested(): any
+ return x
+ enddef
+ Nested()
+enddef
+
" Execute this near the end, profiling doesn't stop until Vim exists.
" This only tests that it works, not the profiling output.
def Test_xx_profile_with_lambda()
@@ -4198,8 +4206,17 @@
profile start Xprofile.log
profile func ProfiledWithLambda
ProfiledWithLambda()
+
profile func ProfiledNested
ProfiledNested()
+
+ # Also profile the nested function. Use a different function, although the
+ # contents is the same, to make sure it was not already compiled.
+ profile func *
+ ProfiledNestedProfiled()
+
+ profdel func *
+ profile pause
enddef
" Keep this last, it messes up highlighting.