Mercurial > vim
comparison src/testdir/test_user_func.vim @ 33601:28605af12602 v9.0.2044
patch 9.0.2044: Vim9: exceptions confuse defered functions
Commit: https://github.com/vim/vim/commit/0672595fd50e9ae668676a40e28ebf66d7f52392
Author: Yegappan Lakshmanan <yegappan@yahoo.com>
Date: Wed Oct 18 11:47:37 2023 +0200
patch 9.0.2044: Vim9: exceptions confuse defered functions
Problem: Vim9: exceptions confuse defered functions
Solution: save and restore exception state when calling defered
functions
closes: #13364
closes: #13372
Signed-off-by: Christian Brabandt <cb@256bit.org>
Co-authored-by: Yegappan Lakshmanan <yegappan@yahoo.com>
author | Christian Brabandt <cb@256bit.org> |
---|---|
date | Wed, 18 Oct 2023 12:00:05 +0200 |
parents | f59ad8692734 |
children | 31fb1a760ad6 |
comparison
equal
deleted
inserted
replaced
33600:b59496c2797b | 33601:28605af12602 |
---|---|
868 defcompile | 868 defcompile |
869 END | 869 END |
870 call v9.CheckScriptFailure(lines, 'E1013: Argument 1: type mismatch, expected string but got number') | 870 call v9.CheckScriptFailure(lines, 'E1013: Argument 1: type mismatch, expected string but got number') |
871 endfunc | 871 endfunc |
872 | 872 |
873 " Test for calling a deferred function after an exception | |
874 func Test_defer_after_exception() | |
875 let g:callTrace = [] | |
876 func Defer() | |
877 let g:callTrace += ['a'] | |
878 let g:callTrace += ['b'] | |
879 let g:callTrace += ['c'] | |
880 let g:callTrace += ['d'] | |
881 endfunc | |
882 | |
883 func Foo() | |
884 defer Defer() | |
885 throw "TestException" | |
886 endfunc | |
887 | |
888 try | |
889 call Foo() | |
890 catch /TestException/ | |
891 let g:callTrace += ['e'] | |
892 endtry | |
893 call assert_equal(['a', 'b', 'c', 'd', 'e'], g:callTrace) | |
894 | |
895 delfunc Defer | |
896 delfunc Foo | |
897 unlet g:callTrace | |
898 endfunc | |
873 | 899 |
874 " vim: shiftwidth=2 sts=2 expandtab | 900 " vim: shiftwidth=2 sts=2 expandtab |