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 vim/vim#8842)
36f691f5f1
This commit is contained in:
Sean Dewar 2021-10-09 01:25:11 +01:00 committed by zeertzjq
parent 4dc09f38ee
commit b6026337f2
2 changed files with 25 additions and 1 deletions

View File

@ -3018,7 +3018,7 @@ void ex_call(exarg_T *eap)
} }
// When inside :try we need to check for following "| catch". // 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. // Check for trailing illegal characters and a following command.
if (!ends_excmd(*arg)) { if (!ends_excmd(*arg)) {
if (!failed) { if (!failed) {

View File

@ -1996,5 +1996,29 @@ func Test_reload_in_try_catch()
call delete('Xreload') call delete('Xreload')
endfunc 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 " Modeline {{{1
" vim: ts=8 sw=2 sts=2 expandtab tw=80 fdm=marker " vim: ts=8 sw=2 sts=2 expandtab tw=80 fdm=marker