patch 8.2.2543: Vim9: a return inside try/catch does not restore properly
Problem: Vim9: a return inside try/catch does not restore exception state
properly.
Solution: When there is no ":finally" jump to ":endtry". (closes #7882)
diff --git a/src/testdir/test_vim9_script.vim b/src/testdir/test_vim9_script.vim
index 0fb09fd..a262bcb 100644
--- a/src/testdir/test_vim9_script.vim
+++ b/src/testdir/test_vim9_script.vim
@@ -589,6 +589,18 @@
assert_equal(4, ReturnInFinally())
enddef
+def Test_nocatch_return_in_try()
+ # return in try block returns normally
+ def ReturnInTry(): string
+ try
+ return '"some message"'
+ catch
+ endtry
+ return 'not reached'
+ enddef
+ exe 'echoerr ' .. ReturnInTry()
+enddef
+
def Test_cnext_works_in_catch()
var lines =<< trim END
vim9script