Mercurial > vim
diff src/testdir/test_vim9_disassemble.vim @ 19336:1cd6eab65ce0 v8.2.0226
patch 8.2.0226: compiling for loop not tested
Commit: https://github.com/vim/vim/commit/04d0522046e79d0e13c1317ad34bf228722ec728
Author: Bram Moolenaar <Bram@vim.org>
Date: Thu Feb 6 22:06:54 2020 +0100
patch 8.2.0226: compiling for loop not tested
Problem: Compiling for loop not tested.
Solution: Add a test. Make variable initialization work for more types.
author | Bram Moolenaar <Bram@vim.org> |
---|---|
date | Thu, 06 Feb 2020 22:15:03 +0100 |
parents | 61646c189622 |
children | ef432264b88a |
line wrap: on
line diff
--- a/src/testdir/test_vim9_disassemble.vim +++ b/src/testdir/test_vim9_disassemble.vim @@ -325,5 +325,37 @@ def Test_compile_and_or() \, instr) enddef +def ForLoop(): list<number> + let res: list<number> + for i in range(3) + res->add(i) + endfor + return res +enddef + +def Test_compile_for_loop() + assert_equal([0, 1, 2], ForLoop()) + let instr = execute('disassemble ForLoop') + assert_match('ForLoop.*' + \ .. 'let res: list<number>.*' + \ .. ' NEWLIST size 0.*' + \ .. '\d STORE $0.*' + \ .. 'for i in range(3).*' + \ .. '\d STORE -1 in $1.*' + \ .. '\d PUSHNR 3.*' + \ .. '\d BCALL range(argc 1).*' + \ .. '\d FOR $1 -> \d\+.*' + \ .. '\d STORE $2.*' + \ .. 'res->add(i).*' + \ .. '\d LOAD $0.*' + \ .. '\d LOAD $2.*' + \ .. '\d BCALL add(argc 2).*' + \ .. '\d DROP.*' + \ .. 'endfor.*' + \ .. '\d JUMP -> \d\+.*' + \ .. '\d DROP.*' + \, instr) +enddef + " vim: ts=8 sw=2 sts=2 expandtab tw=80 fdm=marker