diff options
Diffstat (limited to 'src/testdir/test_vim9_func.vim')
-rw-r--r-- | src/testdir/test_vim9_func.vim | 43 |
1 files changed, 42 insertions, 1 deletions
diff --git a/src/testdir/test_vim9_func.vim b/src/testdir/test_vim9_func.vim index 18864cfd1..4e8ee888d 100644 --- a/src/testdir/test_vim9_func.vim +++ b/src/testdir/test_vim9_func.vim @@ -1784,6 +1784,22 @@ def Test_reset_did_emsg() delfunc! g:Func enddef +def Test_continues_with_silent_error() + var lines =<< trim END + vim9script + g:result = 'none' + def Func() + silent! g:result += 3 + g:result = 'yes' + enddef + # error is silenced, function does not abort + Func() + assert_equal('yes', g:result) + unlet g:result + END + CheckScriptSuccess(lines) +enddef + def Test_abort_even_with_silent() var lines =<< trim END vim9script @@ -1792,13 +1808,38 @@ def Test_abort_even_with_silent() eval {-> ''}() .. '' .. {}['X'] g:result = 'yes' enddef - sil! Func() + silent! Func() assert_equal('none', g:result) unlet g:result END CheckScriptSuccess(lines) enddef +def Test_cmdmod_silent_restored() + var lines =<< trim END + vim9script + def Func() + g:result = 'none' + silent! g:result += 3 + g:result = 'none' + g:result += 3 + enddef + Func() + END + # can't use CheckScriptFailure, it ignores the :silent! + var fname = 'Xdefsilent' + writefile(lines, fname) + var caught = 'no' + try + exe 'source ' .. fname + catch /E1030:/ + caught = 'yes' + assert_match('Func, line 4', v:throwpoint) + endtry + assert_equal('yes', caught) + delete(fname) +enddef + def Test_dict_member_with_silent() var lines =<< trim END vim9script |