Mercurial > vim
diff src/testdir/test_timers.vim @ 12375:ab0d827151a1 v8.0.1067
patch 8.0.1067: try/catch in timer does not prevent it from being stopped
commit https://github.com/vim/vim/commit/e723c42836d971180d1bf9f98916966c5543fff1
Author: Bram Moolenaar <Bram@vim.org>
Date: Wed Sep 6 23:40:10 2017 +0200
patch 8.0.1067: try/catch in timer does not prevent it from being stopped
Problem: Using try/catch in timer does not prevent it from being stopped.
Solution: Reset the exception context and use did_emsg instead of
called_emsg.
author | Christian Brabandt <cb@256bit.org> |
---|---|
date | Wed, 06 Sep 2017 23:45:04 +0200 |
parents | 4e61b77cd96f |
children | 937356f8f8d6 |
line wrap: on
line diff
--- a/src/testdir/test_timers.vim +++ b/src/testdir/test_timers.vim @@ -208,6 +208,24 @@ func Test_timer_errors() call assert_equal(3, g:call_count) endfunc +func FuncWithCaughtError(timer) + let g:call_count += 1 + try + doesnotexist + catch + " nop + endtry +endfunc + +func Test_timer_catch_error() + let g:call_count = 0 + let timer = timer_start(10, 'FuncWithCaughtError', {'repeat': 4}) + " Timer will not be stopped. + call WaitFor('g:call_count == 4') + sleep 50m + call assert_equal(4, g:call_count) +endfunc + func FeedAndPeek(timer) call test_feedinput('a') call getchar(1)