mirror of
https://github.com/vim/vim.git
synced 2025-09-26 04:04:07 -04:00
patch 8.0.1423: error in return not caught by try/catch
Problem: Error in return not caught by try/catch. Solution: Call update_force_abort(). (Yasuhiro Matsomoto, closes #2483)
This commit is contained in:
@@ -2147,6 +2147,7 @@ test_arglist \
|
||||
test_edit \
|
||||
test_erasebackword \
|
||||
test_escaped_glob \
|
||||
test_eval_stuff \
|
||||
test_ex_undo \
|
||||
test_ex_z \
|
||||
test_exec_while_if \
|
||||
|
@@ -94,6 +94,7 @@ NEW_TESTS = test_arabic.res \
|
||||
test_edit.res \
|
||||
test_erasebackword.res \
|
||||
test_escaped_glob.res \
|
||||
test_eval_stuff.res \
|
||||
test_exec_while_if.res \
|
||||
test_exists.res \
|
||||
test_exists_autocmd.res \
|
||||
|
@@ -1,5 +1,7 @@
|
||||
Test for various eval features. vim: set ft=vim :
|
||||
|
||||
NOTE: Do not add more here, use new style test test_eval_stuff.vim
|
||||
|
||||
Note: system clipboard is saved, changed and restored.
|
||||
|
||||
clipboard contents
|
||||
@@ -134,10 +136,10 @@ if has('clipboard')
|
||||
let _clipreg = ['*', getreg('*'), getregtype('*')]
|
||||
let _clipopt = &cb
|
||||
let &cb='unnamed'
|
||||
5y
|
||||
7y
|
||||
AR *
|
||||
tabdo :windo :echo "hi"
|
||||
6y
|
||||
8y
|
||||
AR *
|
||||
let &cb=_clipopt
|
||||
call call('setreg', _clipreg)
|
||||
|
13
src/testdir/test_eval_stuff.vim
Normal file
13
src/testdir/test_eval_stuff.vim
Normal file
@@ -0,0 +1,13 @@
|
||||
" Tests for various eval things.
|
||||
|
||||
function s:foo() abort
|
||||
try
|
||||
return [] == 0
|
||||
catch
|
||||
return 1
|
||||
endtry
|
||||
endfunction
|
||||
|
||||
func Test_catch_return_with_error()
|
||||
call assert_equal(1, s:foo())
|
||||
endfunc
|
@@ -2972,6 +2972,9 @@ ex_return(exarg_T *eap)
|
||||
/* It's safer to return also on error. */
|
||||
else if (!eap->skip)
|
||||
{
|
||||
/* In return statement, cause_abort should be force_abort. */
|
||||
update_force_abort();
|
||||
|
||||
/*
|
||||
* Return unless the expression evaluation has been cancelled due to an
|
||||
* aborting error, an interrupt, or an exception.
|
||||
|
@@ -771,6 +771,8 @@ static char *(features[]) =
|
||||
|
||||
static int included_patches[] =
|
||||
{ /* Add new patch number below this line */
|
||||
/**/
|
||||
1423,
|
||||
/**/
|
||||
1422,
|
||||
/**/
|
||||
|
Reference in New Issue
Block a user