diff options
author | Bram Moolenaar <Bram@vim.org> | 2019-07-10 22:04:48 +0200 |
---|---|---|
committer | Bram Moolenaar <Bram@vim.org> | 2019-07-10 22:04:48 +0200 |
commit | 7780e5c1c5485a979ab6e3914a43e17912e213a8 (patch) | |
tree | a3aa3d74492df6bd48ae4dec09ca3469d2e95977 | |
parent | b05caa782dbab51db8de60940eff7992f8cfd882 (diff) | |
download | vim-git-7780e5c1c5485a979ab6e3914a43e17912e213a8.tar.gz |
patch 8.1.1660: assert_fails() does not fail inside try/catchv8.1.1660
Problem: Assert_fails() does not fail inside try/catch.
Solution: Set trylevel to zero. (Ozaki Kiichi, closes #4639)
-rw-r--r-- | src/eval.c | 7 | ||||
-rw-r--r-- | src/testdir/test_assert.vim | 6 | ||||
-rw-r--r-- | src/version.c | 2 |
3 files changed, 14 insertions, 1 deletions
diff --git a/src/eval.c b/src/eval.c index 26fad0c5f..d89093cb3 100644 --- a/src/eval.c +++ b/src/eval.c @@ -9910,10 +9910,14 @@ assert_fails(typval_T *argvars) char_u *cmd = tv_get_string_chk(&argvars[0]); garray_T ga; int ret = 0; + int save_trylevel = trylevel; + // trylevel must be zero for a ":throw" command to be considered failed + trylevel = 0; called_emsg = FALSE; suppress_errthrow = TRUE; emsg_silent = TRUE; + do_cmdline_cmd(cmd); if (!called_emsg) { @@ -9939,10 +9943,11 @@ assert_fails(typval_T *argvars) assert_append_cmd_or_arg(&ga, argvars, cmd); assert_error(&ga); ga_clear(&ga); - ret = 1; + ret = 1; } } + trylevel = save_trylevel; called_emsg = FALSE; suppress_errthrow = FALSE; emsg_silent = FALSE; diff --git a/src/testdir/test_assert.vim b/src/testdir/test_assert.vim index 0d59a43a2..900710b89 100644 --- a/src/testdir/test_assert.vim +++ b/src/testdir/test_assert.vim @@ -166,6 +166,12 @@ func Test_assert_fail_fails() call remove(v:errors, 0) endfunc +func Test_assert_fails_in_try_block() + try + call assert_equal(0, assert_fails('throw "error"')) + endtry +endfunc + func Test_assert_beeps() new call assert_equal(0, assert_beeps('normal h')) diff --git a/src/version.c b/src/version.c index 5e83159ed..6af9abaaa 100644 --- a/src/version.c +++ b/src/version.c @@ -778,6 +778,8 @@ static char *(features[]) = static int included_patches[] = { /* Add new patch number below this line */ /**/ + 1660, +/**/ 1659, /**/ 1658, |