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. */
|
||||
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.
|
||||
|
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