summaryrefslogtreecommitdiff
path: root/src/testdir/test_vim9_script.vim
diff options
context:
space:
mode:
authorrbtnn <naru123456789@gmail.com>2021-08-21 17:26:50 +0200
committerBram Moolenaar <Bram@vim.org>2021-08-21 17:26:50 +0200
commitbebf06954e1c801870b57e06ab03151c2654d079 (patch)
treeb6b7aedc49e45774e11ac47f73efdda6944a06f6 /src/testdir/test_vim9_script.vim
parentb8bd2e6ebab03baf2672067067a599df69a278c0 (diff)
downloadvim-git-bebf06954e1c801870b57e06ab03151c2654d079.tar.gz
patch 8.2.3364: Vim9: crash when :for is skippedv8.2.3364
Problem: Vim9: crash when :for is skipped. Solution: Skip more code generation. (Naruhiko Nishino, closes #8777)
Diffstat (limited to 'src/testdir/test_vim9_script.vim')
-rw-r--r--src/testdir/test_vim9_script.vim64
1 files changed, 64 insertions, 0 deletions
diff --git a/src/testdir/test_vim9_script.vim b/src/testdir/test_vim9_script.vim
index fd93c3a8b..cdbf914ab 100644
--- a/src/testdir/test_vim9_script.vim
+++ b/src/testdir/test_vim9_script.vim
@@ -2552,6 +2552,70 @@ def Test_for_outside_of_function()
delete('Xvim9for.vim')
enddef
+def Test_for_skipped_block()
+ # test skipped blocks at outside of function
+ var lines =<< trim END
+ var result = []
+ if true
+ for n in [1, 2]
+ result += [n]
+ endfor
+ else
+ for n in [3, 4]
+ result += [n]
+ endfor
+ endif
+ assert_equal([1, 2], result)
+
+ result = []
+ if false
+ for n in [1, 2]
+ result += [n]
+ endfor
+ else
+ for n in [3, 4]
+ result += [n]
+ endfor
+ endif
+ assert_equal([3, 4], result)
+ END
+ CheckDefAndScriptSuccess(lines)
+
+ # test skipped blocks at inside of function
+ lines =<< trim END
+ def DefTrue()
+ var result = []
+ if true
+ for n in [1, 2]
+ result += [n]
+ endfor
+ else
+ for n in [3, 4]
+ result += [n]
+ endfor
+ endif
+ assert_equal([1, 2], result)
+ enddef
+ DefTrue()
+
+ def DefFalse()
+ var result = []
+ if false
+ for n in [1, 2]
+ result += [n]
+ endfor
+ else
+ for n in [3, 4]
+ result += [n]
+ endfor
+ endif
+ assert_equal([3, 4], result)
+ enddef
+ DefFalse()
+ END
+ CheckDefAndScriptSuccess(lines)
+enddef
+
def Test_for_loop()
var lines =<< trim END
var result = ''