summaryrefslogtreecommitdiff
path: root/src/testdir/test_vim9_disassemble.vim
diff options
context:
space:
mode:
Diffstat (limited to 'src/testdir/test_vim9_disassemble.vim')
-rw-r--r--src/testdir/test_vim9_disassemble.vim36
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