Mercurial > vim
diff src/userfunc.c @ 25826:5040fae521f6 v8.2.3448
patch 8.2.3448: :endtry after function call that throws not found
Commit: https://github.com/vim/vim/commit/1d34189ecb99fa76363c06e1aa815c1075675a1c
Author: Bram Moolenaar <Bram@vim.org>
Date: Sat Sep 18 15:25:52 2021 +0200
patch 8.2.3448: :endtry after function call that throws not found
Problem: :endtry after function call that throws not found.
Solution: Do check for following :endtry if an exception is being thrown.
(closes #8889)
author | Bram Moolenaar <Bram@vim.org> |
---|---|
date | Sat, 18 Sep 2021 15:30:04 +0200 |
parents | e855eba4ac39 |
children | f773ef3c641d |
line wrap: on
line diff
--- a/src/userfunc.c +++ b/src/userfunc.c @@ -5011,14 +5011,16 @@ ex_call(exarg_T *eap) --emsg_skip; clear_evalarg(&evalarg, eap); - // When inside :try we need to check for following "| catch". - if (!aborting() && (!failed || eap->cstack->cs_trylevel > 0)) + // When inside :try we need to check for following "| catch" or "| endtry". + // Not when there was an error, but do check if an exception was thrown. + if ((!aborting() || did_throw) + && (!failed || eap->cstack->cs_trylevel > 0)) { // Check for trailing illegal characters and a following command. arg = skipwhite(arg); if (!ends_excmd2(eap->arg, arg)) { - if (!failed) + if (!failed && !aborting()) { emsg_severe = TRUE; semsg(_(e_trailing_arg), arg);