Problem: Vim9: try/catch causes wrong value to be returned.
Solution: Reset tcd_return. (closes #6964)
assert_equal('finally', g:in_finally)
enddef
+def TryOne(): number
+ try
+ return 0
+ catch
+ endtry
+ return 0
+enddef
+
+def TryTwo(n: number): string
+ try
+ let x = {}
+ catch
+ endtry
+ return 'text'
+enddef
+
+def Test_try_catch_twice()
+ assert_equal('text', TryOne()->TryTwo())
+enddef
+
def Test_try_catch_match()
let seq = 'a'
try
static int included_patches[] =
{ /* Add new patch number below this line */
+/**/
+ 1700,
/**/
1699,
/**/
trycmd->tcd_catch_idx = iptr->isn_arg.try.try_catch;
trycmd->tcd_finally_idx = iptr->isn_arg.try.try_finally;
trycmd->tcd_caught = FALSE;
+ trycmd->tcd_return = FALSE;
}
break;