patch 9.0.2172: Vim9: compiling :defer may fail
Problem: Vim9: compiling :defer may fail
Solution: compile defer, when ctx_skip is not SKIP_YES
compiling defer fails in an if statement with false condition,
so check the ctx_skip value when compiling :defer
fixes: #13698
closes: #13702
Signed-off-by: Yegappan Lakshmanan <yegappan@yahoo.com>
Signed-off-by: Christian Brabandt <cb@256bit.org>
diff --git a/src/testdir/test_vim9_script.vim b/src/testdir/test_vim9_script.vim
index b64f05e..2aca20a 100644
--- a/src/testdir/test_vim9_script.vim
+++ b/src/testdir/test_vim9_script.vim
@@ -4783,6 +4783,19 @@
v9.CheckSourceSuccess(lines)
enddef
+" Test for using ":defer" inside an if statement with a false condition
+def Test_defer_skipped()
+ var lines =<< trim END
+ def Foo()
+ if false
+ defer execute('echow "hello"', "")
+ endif
+ enddef
+ defcompile
+ END
+ v9.CheckSourceSuccess(lines)
+enddef
+
" Keep this last, it messes up highlighting.
def Test_substitute_cmd()
new