patch 8.2.0287: Vim9: return in try block not tested; catch not tested
Problem: Vim9: return in try block not tested; catch with pattern not
tested.
Solution: Add tests. Make it work.
diff --git a/src/testdir/test_vim9_script.vim b/src/testdir/test_vim9_script.vim
index ac721a8..3212c3d 100644
--- a/src/testdir/test_vim9_script.vim
+++ b/src/testdir/test_vim9_script.vim
@@ -236,12 +236,40 @@
endtry
enddef
+def ReturnFinally(): string
+ try
+ return 'intry'
+ finally
+ g:in_finally = 'finally'
+ endtry
+ return 'end'
+enddef
+
def Test_try_catch_nested()
CatchInFunc()
assert_equal('getout', g:thrown_func)
CatchInDef()
assert_equal('getout', g:thrown_def)
+
+ assert_equal('intry', ReturnFinally())
+ assert_equal('finally', g:in_finally)
+enddef
+
+def Test_try_catch_match()
+ let seq = 'a'
+ try
+ throw 'something'
+ catch /nothing/
+ seq ..= 'x'
+ catch /some/
+ seq ..= 'b'
+ catch /asdf/
+ seq ..= 'x'
+ finally
+ seq ..= 'c'
+ endtry
+ assert_equal('abc', seq)
enddef
let s:export_script_lines =<< trim END