Mercurial > vim
diff src/testdir/test_vim9_disassemble.vim @ 25800:fe8d153cb268 v8.2.3435
patch 8.2.3435: Vim9: dict is not passed to dict function
Commit: https://github.com/vim/vim/commit/b1b6f4de2b0edc3b6622912132ddb8994ec52709
Author: Bram Moolenaar <Bram@vim.org>
Date: Mon Sep 13 18:25:54 2021 +0200
patch 8.2.3435: Vim9: dict is not passed to dict function
Problem: Vim9: dict is not passed to dict function.
Solution: Keep the dict used until a function call.
author | Bram Moolenaar <Bram@vim.org> |
---|---|
date | Mon, 13 Sep 2021 18:30:04 +0200 |
parents | 7b80b25a5c2b |
children | dd4e86558836 |
line wrap: on
line diff
--- a/src/testdir/test_vim9_disassemble.vim +++ b/src/testdir/test_vim9_disassemble.vim @@ -412,7 +412,8 @@ def Test_disassemble_store_index() '\d PUSHNR 0\_s*' .. '\d LOAD $0\_s*' .. '\d MEMBER dd\_s*' .. - '\d STOREINDEX any\_s*' .. + '\d\+ USEDICT\_s*' .. + '\d\+ STOREINDEX any\_s*' .. '\d\+ RETURN void', res) enddef @@ -1625,11 +1626,13 @@ def Test_disassemble_dict_member() 'var res = d.item\_s*' .. '\d\+ LOAD $0\_s*' .. '\d\+ MEMBER item\_s*' .. + '\d\+ USEDICT\_s*' .. '\d\+ STORE $1\_s*' .. 'res = d\["item"\]\_s*' .. '\d\+ LOAD $0\_s*' .. '\d\+ PUSHS "item"\_s*' .. '\d\+ MEMBER\_s*' .. + '\d\+ USEDICT\_s*' .. '\d\+ STORE $1\_s*', instr) assert_equal(1, DictMember()) @@ -2302,6 +2305,35 @@ def Test_debug_elseif() res) enddef +func Legacy() dict + echo 'legacy' +endfunc + +def s:UseMember() + var d = {func: Legacy} + var v = d.func() +enddef + +def Test_disassemble_dict_stack() + var res = execute('disass s:UseMember') + assert_match('<SNR>\d*_UseMember\_s*' .. + 'var d = {func: Legacy}\_s*' .. + '\d PUSHS "func"\_s*' .. + '\d PUSHFUNC "Legacy"\_s*' .. + '\d NEWDICT size 1\_s*' .. + '\d STORE $0\_s*' .. + + 'var v = d.func()\_s*' .. + '\d LOAD $0\_s*' .. + '\d MEMBER func\_s*' .. + '\d PCALL top (argc 0)\_s*' .. + '\d PCALL end\_s*' .. + '\d CLEARDICT\_s*' .. + '\d\+ STORE $1\_s*' .. + '\d\+ RETURN void*', + res) +enddef + def s:EchoMessages() echohl ErrorMsg | echom v:exception | echohl NONE enddef @@ -2363,4 +2395,5 @@ def Test_disassemble_after_reload() enddef + " vim: ts=8 sw=2 sts=2 expandtab tw=80 fdm=marker