mirror of
https://github.com/neovim/neovim.git
synced 2025-02-25 18:55:25 -06:00
vim-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 vim/vim#2483)
fabaf753e2
This commit is contained in:
parent
f4b2b66661
commit
c2e7f39528
@ -21800,6 +21800,9 @@ void ex_return(exarg_T *eap)
|
|||||||
}
|
}
|
||||||
/* It's safer to return also on error. */
|
/* It's safer to return also on error. */
|
||||||
else if (!eap->skip) {
|
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
|
* Return unless the expression evaluation has been cancelled due to an
|
||||||
* aborting error, an interrupt, or an exception.
|
* aborting error, an interrupt, or an exception.
|
||||||
|
13
src/nvim/testdir/test_eval_stuff.vim
Normal file
13
src/nvim/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
|
Loading…
Reference in New Issue
Block a user