patch 8.2.3366: Vim9: debugging elseif does not stop before condition
Problem: Vim9: debugging elseif does not stop before condition.
Solution: Move debug statement to after the jump. (closes #8781)
diff --git a/src/testdir/test_vim9_disassemble.vim b/src/testdir/test_vim9_disassemble.vim
index 710c8ee..e7c5746 100644
--- a/src/testdir/test_vim9_disassemble.vim
+++ b/src/testdir/test_vim9_disassemble.vim
@@ -2255,6 +2255,53 @@
res)
enddef
+def s:DebugElseif()
+ var b = false
+ if b
+ eval 1 + 0
+ silent elseif !b
+ eval 2 + 0
+ endif
+enddef
+
+def Test_debug_elseif()
+ var res = execute('disass debug s:DebugElseif')
+ assert_match('<SNR>\d*_DebugElseif\_s*' ..
+ 'var b = false\_s*' ..
+ '0 DEBUG line 1-1 varcount 0\_s*' ..
+ '1 PUSH false\_s*' ..
+ '2 STORE $0\_s*' ..
+
+ 'if b\_s*' ..
+ '3 DEBUG line 2-2 varcount 1\_s*' ..
+ '4 LOAD $0\_s*' ..
+ '5 JUMP_IF_FALSE -> 10\_s*' ..
+
+ 'eval 1 + 0\_s*' ..
+ '6 DEBUG line 3-3 varcount 1\_s*' ..
+ '7 PUSHNR 1\_s*' ..
+ '8 DROP\_s*' ..
+
+ 'silent elseif !b\_s*' ..
+ '9 JUMP -> 20\_s*' ..
+ '10 CMDMOD silent\_s*' ..
+ '11 DEBUG line 4-4 varcount 1\_s*' ..
+ '12 LOAD $0\_s*' ..
+ '13 INVERT -1 (!val)\_s*' ..
+ '14 CMDMOD_REV\_s*' ..
+ '15 JUMP_IF_FALSE -> 20\_s*' ..
+
+ 'eval 2 + 0\_s*' ..
+ '16 DEBUG line 5-5 varcount 1\_s*' ..
+ '17 PUSHNR 2\_s*' ..
+ '18 DROP\_s*' ..
+
+ 'endif\_s*' ..
+ '19 DEBUG line 6-6 varcount 1\_s*' ..
+ '20 RETURN void*',
+ res)
+enddef
+
def s:EchoMessages()
echohl ErrorMsg | echom v:exception | echohl NONE
enddef