diff src/testdir/test_vim9_script.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 88fa56e88cd7
children 31fb1a760ad6
line wrap: on
line diff
--- a/src/testdir/test_vim9_script.vim
+++ b/src/testdir/test_vim9_script.vim
@@ -4686,6 +4686,35 @@ def Test_refer_funcref_instr_after_reall
   v9.CheckScriptSuccess(lines)
 enddef
 
+" Test for calling a deferred function after an exception
+def Test_defer_after_exception()
+  var lines =<< trim END
+    vim9script
+
+    var callTrace: list<string> = []
+    def Defer()
+      callTrace += ['a']
+      callTrace += ['b']
+      callTrace += ['c']
+      callTrace += ['d']
+    enddef
+
+    def Foo()
+      defer Defer()
+      throw "TestException"
+    enddef
+
+    try
+      Foo()
+    catch /TestException/
+      callTrace += ['e']
+    endtry
+
+    assert_equal(['a', 'b', 'c', 'd', 'e'], callTrace)
+  END
+  v9.CheckScriptSuccess(lines)
+enddef
+
 " Keep this last, it messes up highlighting.
 def Test_substitute_cmd()
   new