Mercurial > vim
diff src/testdir/test_vim9_script.vim @ 25656:fe7f45e2895e v8.2.3364
patch 8.2.3364: Vim9: crash when :for is skipped
Commit: https://github.com/vim/vim/commit/bebf06954e1c801870b57e06ab03151c2654d079
Author: rbtnn <naru123456789@gmail.com>
Date: Sat Aug 21 17:26:50 2021 +0200
patch 8.2.3364: Vim9: crash when :for is skipped
Problem: Vim9: crash when :for is skipped.
Solution: Skip more code generation. (Naruhiko Nishino, closes https://github.com/vim/vim/issues/8777)
author | Bram Moolenaar <Bram@vim.org> |
---|---|
date | Sat, 21 Aug 2021 17:30:03 +0200 |
parents | ef38fc02faaa |
children | fc8046209eaa |
line wrap: on
line diff
--- 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 = ''