Mercurial > vim
comparison src/testdir/test_vim9_disassemble.vim @ 26729:b969fdb8cd46 v8.2.3893
patch 8.2.3893: Vim9: many local variables are initialized with an instruction
Commit: https://github.com/vim/vim/commit/5cd647935d0834b3064aa36384b8f6730fadadd6
Author: Bram Moolenaar <Bram@vim.org>
Date: Sat Dec 25 18:23:24 2021 +0000
patch 8.2.3893: Vim9: many local variables are initialized with an instruction
Problem: Vim9: many local variables are initialized with an instruction.
Solution: Initialize local variables to zero to avoid the instructions.
author | Bram Moolenaar <Bram@vim.org> |
---|---|
date | Sat, 25 Dec 2021 19:30:03 +0100 |
parents | e16806237a70 |
children | 47ad45fb433a |
comparison
equal
deleted
inserted
replaced
26728:71ae885c1426 | 26729:b969fdb8cd46 |
---|---|
1771 enddef | 1771 enddef |
1772 | 1772 |
1773 def ReturnBool(): bool | 1773 def ReturnBool(): bool |
1774 var one = 1 | 1774 var one = 1 |
1775 var zero = 0 | 1775 var zero = 0 |
1776 var none: number | |
1776 var name: bool = one && zero || one | 1777 var name: bool = one && zero || one |
1777 return name | 1778 return name |
1778 enddef | 1779 enddef |
1779 | 1780 |
1780 def Test_disassemble_return_bool() | 1781 def Test_disassemble_return_bool() |
1781 var instr = execute('disassemble ReturnBool') | 1782 var instr = execute('disassemble ReturnBool') |
1782 assert_match('ReturnBool\_s*' .. | 1783 assert_match('ReturnBool\_s*' .. |
1783 'var one = 1\_s*' .. | 1784 'var one = 1\_s*' .. |
1784 '0 STORE 1 in $0\_s*' .. | 1785 '0 STORE 1 in $0\_s*' .. |
1785 'var zero = 0\_s*' .. | 1786 'var zero = 0\_s*' .. |
1786 '1 STORE 0 in $1\_s*' .. | 1787 'var none: number\_s*' .. |
1787 'var name: bool = one && zero || one\_s*' .. | 1788 'var name: bool = one && zero || one\_s*' .. |
1788 '2 LOAD $0\_s*' .. | 1789 '1 LOAD $0\_s*' .. |
1789 '3 COND2BOOL\_s*' .. | 1790 '2 COND2BOOL\_s*' .. |
1790 '4 JUMP_IF_COND_FALSE -> 7\_s*' .. | 1791 '3 JUMP_IF_COND_FALSE -> 6\_s*' .. |
1791 '5 LOAD $1\_s*' .. | 1792 '4 LOAD $1\_s*' .. |
1792 '6 COND2BOOL\_s*' .. | 1793 '5 COND2BOOL\_s*' .. |
1793 '7 JUMP_IF_COND_TRUE -> 10\_s*' .. | 1794 '6 JUMP_IF_COND_TRUE -> 9\_s*' .. |
1794 '8 LOAD $0\_s*' .. | 1795 '7 LOAD $0\_s*' .. |
1795 '9 COND2BOOL\_s*' .. | 1796 '8 COND2BOOL\_s*' .. |
1796 '10 STORE $2\_s*' .. | 1797 '9 STORE $3\_s*' .. |
1797 'return name\_s*' .. | 1798 'return name\_s*' .. |
1798 '\d\+ LOAD $2\_s*' .. | 1799 '\d\+ LOAD $3\_s*' .. |
1799 '\d\+ RETURN', | 1800 '\d\+ RETURN', |
1800 instr) | 1801 instr) |
1801 assert_equal(true, InvertBool()) | 1802 assert_equal(true, InvertBool()) |
1802 enddef | 1803 enddef |
1803 | 1804 |