1
0
forked from aniani/vim

patch 8.2.3416: second error is reported while exception is being thrown

Problem:    Second error is reported while exception is being thrown.
Solution:   Do not check for trailing characters when already aborting.
            (closes #8842)
This commit is contained in:
Bram Moolenaar
2021-09-08 15:33:30 +02:00
parent fc3b775055
commit 36f691f5f1
3 changed files with 27 additions and 1 deletions

View File

@@ -2224,5 +2224,29 @@ func Test_user_command_try_catch()
unlet g:caught
endfunc
" Test for using throw in a called function with following error {{{1
func Test_user_command_throw_in_function_call()
let lines =<< trim END
function s:get_dict() abort
throw 'my_error'
endfunction
try
call s:get_dict().foo()
catch /my_error/
let caught = 'yes'
catch
let caught = 'no'
endtry
call assert_equal('yes', caught)
END
call writefile(lines, 'XtestThrow')
source XtestThrow
call delete('XtestThrow')
unlet g:caught
endfunc
" Modeline {{{1
" vim: ts=8 sw=2 sts=2 expandtab tw=80 fdm=marker

View File

@@ -5012,7 +5012,7 @@ ex_call(exarg_T *eap)
clear_evalarg(&evalarg, eap);
// When inside :try we need to check for following "| catch".
if (!failed || eap->cstack->cs_trylevel > 0)
if (!aborting() && (!failed || eap->cstack->cs_trylevel > 0))
{
// Check for trailing illegal characters and a following command.
arg = skipwhite(arg);

View File

@@ -755,6 +755,8 @@ static char *(features[]) =
static int included_patches[] =
{ /* Add new patch number below this line */
/**/
3416,
/**/
3415,
/**/