diff options
Diffstat (limited to 'src/testdir/test_vim9_disassemble.vim')
| -rw-r--r-- | src/testdir/test_vim9_disassemble.vim | 36 |
1 files changed, 36 insertions, 0 deletions
diff --git a/src/testdir/test_vim9_disassemble.vim b/src/testdir/test_vim9_disassemble.vim index 4e2caf09f..11703416d 100644 --- a/src/testdir/test_vim9_disassemble.vim +++ b/src/testdir/test_vim9_disassemble.vim @@ -291,6 +291,42 @@ def Test_disassemble_call() res) enddef +def s:CreateRefs() + let local = 'a' + def Append(arg: string) + local ..= arg + enddef + g:Append = Append + def Get(): string + return local + enddef + g:Get = Get +enddef + +def Test_disassemble_closure() + CreateRefs() + let res = execute('disass g:Append') + assert_match('<lambda>\d.*' .. + 'local ..= arg.*' .. + '\d LOADOUTER $0.*' .. + '\d LOAD arg\[-1\].*' .. + '\d CONCAT.*' .. + '\d STOREOUTER $0.*' .. + '\d PUSHNR 0.*' .. + '\d RETURN.*', + res) + + res = execute('disass g:Get') + assert_match('<lambda>\d.*' .. + 'return local.*' .. + '\d LOADOUTER $0.*' .. + '\d RETURN.*', + res) + + unlet g:Append + unlet g:Get +enddef + def EchoArg(arg: string): string return arg |
