Mercurial > vim
diff src/testdir/test_vim9_disassemble.vim @ 26352:f209f28ad898 v8.2.3707
patch 8.2.3707: Vim9: constant expression of elseif not recognized
Commit: https://github.com/vim/vim/commit/90770b746ea2e72954c536d8acf41d241ca2f37e
Author: Bram Moolenaar <Bram@vim.org>
Date: Tue Nov 30 20:57:38 2021 +0000
patch 8.2.3707: Vim9: constant expression of elseif not recognized
Problem: Vim9: constant expression of elseif not recognized.
Solution: Set instruction count before generating the expression.
author | Bram Moolenaar <Bram@vim.org> |
---|---|
date | Tue, 30 Nov 2021 22:00:04 +0100 |
parents | dd4e86558836 |
children | a3a0885d9dd8 |
line wrap: on
line diff
--- a/src/testdir/test_vim9_disassemble.vim +++ b/src/testdir/test_vim9_disassemble.vim @@ -2296,6 +2296,38 @@ def Test_debugged() res) enddef +def s:ElseifConstant() + if g:value + echo "one" + elseif true + echo "true" + elseif false + echo "false" + endif +enddef + +def Test_debug_elseif_constant() + var res = execute('disass s:ElseifConstant') + assert_match('<SNR>\d*_ElseifConstant\_s*' .. + 'if g:value\_s*' .. + '0 LOADG g:value\_s*' .. + '1 COND2BOOL\_s*' .. + '2 JUMP_IF_FALSE -> 6\_s*' .. + 'echo "one"\_s*' .. + '3 PUSHS "one"\_s*' .. + '4 ECHO 1\_s*' .. + 'elseif true\_s*' .. + '5 JUMP -> 8\_s*' .. + 'echo "true"\_s*' .. + '6 PUSHS "true"\_s*' .. + '7 ECHO 1\_s*' .. + 'elseif false\_s*' .. + 'echo "false"\_s*' .. + 'endif\_s*' .. + '\d RETURN void*', + res) +enddef + def s:DebugElseif() var b = false if b