summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorBram Moolenaar <Bram@vim.org>2022-05-27 13:52:08 +0100
committerBram Moolenaar <Bram@vim.org>2022-05-27 13:52:08 +0100
commitbf79a4e48d09a5ae08645592885d54230fed30b8 (patch)
treec8f23736de29ca47b761ce2a6df2968b354548d1
parent31d9948e3a2529c2f619d56bdb48291dc261233d (diff)
patch 8.2.5027: error for missing :endif when an exception was thrownv8.2.5027
Problem: Error for missing :endif when an exception was thrown. (Dani Dickstein) Solution: Do not give an error when aborting. (closes #10490)
-rw-r--r--src/ex_docmd.c3
-rw-r--r--src/testdir/test_trycatch.vim17
-rw-r--r--src/version.c2
3 files changed, 21 insertions, 1 deletions
diff --git a/src/ex_docmd.c b/src/ex_docmd.c
index 048c224362..cbf75059e8 100644
--- a/src/ex_docmd.c
+++ b/src/ex_docmd.c
@@ -1204,7 +1204,8 @@ do_cmdline(
* In Vim9 script do not give a second error, executing aborts after
* the first one.
*/
- if (!got_int && !did_throw && !(did_emsg && in_vim9script())
+ if (!got_int && !did_throw && !aborting()
+ && !(did_emsg && in_vim9script())
&& ((getline_equal(fgetline, cookie, getsourceline)
&& !source_finished(fgetline, cookie))
|| (getline_equal(fgetline, cookie, get_func_line)
diff --git a/src/testdir/test_trycatch.vim b/src/testdir/test_trycatch.vim
index 69c7db01eb..aa42205a1b 100644
--- a/src/testdir/test_trycatch.vim
+++ b/src/testdir/test_trycatch.vim
@@ -2247,6 +2247,23 @@ func Test_user_command_throw_in_function_call()
unlet g:caught
endfunc
+" Test that after reporting an uncaught exception there is no error for a
+" missing :endif
+func Test_after_exception_no_endif_error()
+ function Throw()
+ throw "Failure"
+ endfunction
+
+ function Foo()
+ if 1
+ call Throw()
+ endif
+ endfunction
+ call assert_fails('call Foo()', ['E605:', 'E605:'])
+ delfunc Throw
+ delfunc Foo
+endfunc
+
" Test for using throw in a called function with following endtry {{{1
func Test_user_command_function_call_with_endtry()
let lines =<< trim END
diff --git a/src/version.c b/src/version.c
index 47eaf6b2ab..3cc224eef2 100644
--- a/src/version.c
+++ b/src/version.c
@@ -735,6 +735,8 @@ static char *(features[]) =
static int included_patches[] =
{ /* Add new patch number below this line */
/**/
+ 5027,
+/**/
5026,
/**/
5025,