Mercurial > vim
annotate src/testdir/test_vim9_disassemble.vim @ 19342:8ff84bc1c89b v8.2.0229
patch 8.2.0229: compare instructions not tested
Commit: https://github.com/vim/vim/commit/f2460a3aec89e70d4bab8d2369ee3f78cc43f09a
Author: Bram Moolenaar <Bram@vim.org>
Date: Fri Feb 7 22:09:54 2020 +0100
patch 8.2.0229: compare instructions not tested
Problem: Compare instructions not tested.
Solution: Add test cases. Fix disassemble with line continuation.
author | Bram Moolenaar <Bram@vim.org> |
---|---|
date | Fri, 07 Feb 2020 22:15:03 +0100 |
parents | ef432264b88a |
children | e4b326c9424a |
rev | line source |
---|---|
19330
9c8b803fe598
patch 8.2.0223: some instructions not yet tested
Bram Moolenaar <Bram@vim.org>
parents:
diff
changeset
|
1 " Test the :disassemble command, and compilation as a side effect |
9c8b803fe598
patch 8.2.0223: some instructions not yet tested
Bram Moolenaar <Bram@vim.org>
parents:
diff
changeset
|
2 |
9c8b803fe598
patch 8.2.0223: some instructions not yet tested
Bram Moolenaar <Bram@vim.org>
parents:
diff
changeset
|
3 func NotCompiled() |
9c8b803fe598
patch 8.2.0223: some instructions not yet tested
Bram Moolenaar <Bram@vim.org>
parents:
diff
changeset
|
4 echo "not" |
9c8b803fe598
patch 8.2.0223: some instructions not yet tested
Bram Moolenaar <Bram@vim.org>
parents:
diff
changeset
|
5 endfunc |
9c8b803fe598
patch 8.2.0223: some instructions not yet tested
Bram Moolenaar <Bram@vim.org>
parents:
diff
changeset
|
6 |
9c8b803fe598
patch 8.2.0223: some instructions not yet tested
Bram Moolenaar <Bram@vim.org>
parents:
diff
changeset
|
7 let s:scriptvar = 4 |
9c8b803fe598
patch 8.2.0223: some instructions not yet tested
Bram Moolenaar <Bram@vim.org>
parents:
diff
changeset
|
8 let g:globalvar = 'g' |
9c8b803fe598
patch 8.2.0223: some instructions not yet tested
Bram Moolenaar <Bram@vim.org>
parents:
diff
changeset
|
9 |
9c8b803fe598
patch 8.2.0223: some instructions not yet tested
Bram Moolenaar <Bram@vim.org>
parents:
diff
changeset
|
10 def s:ScriptFuncLoad(arg: string) |
9c8b803fe598
patch 8.2.0223: some instructions not yet tested
Bram Moolenaar <Bram@vim.org>
parents:
diff
changeset
|
11 let local = 1 |
9c8b803fe598
patch 8.2.0223: some instructions not yet tested
Bram Moolenaar <Bram@vim.org>
parents:
diff
changeset
|
12 buffers |
9c8b803fe598
patch 8.2.0223: some instructions not yet tested
Bram Moolenaar <Bram@vim.org>
parents:
diff
changeset
|
13 echo arg |
9c8b803fe598
patch 8.2.0223: some instructions not yet tested
Bram Moolenaar <Bram@vim.org>
parents:
diff
changeset
|
14 echo local |
9c8b803fe598
patch 8.2.0223: some instructions not yet tested
Bram Moolenaar <Bram@vim.org>
parents:
diff
changeset
|
15 echo v:version |
9c8b803fe598
patch 8.2.0223: some instructions not yet tested
Bram Moolenaar <Bram@vim.org>
parents:
diff
changeset
|
16 echo s:scriptvar |
9c8b803fe598
patch 8.2.0223: some instructions not yet tested
Bram Moolenaar <Bram@vim.org>
parents:
diff
changeset
|
17 echo g:globalvar |
9c8b803fe598
patch 8.2.0223: some instructions not yet tested
Bram Moolenaar <Bram@vim.org>
parents:
diff
changeset
|
18 echo &tabstop |
9c8b803fe598
patch 8.2.0223: some instructions not yet tested
Bram Moolenaar <Bram@vim.org>
parents:
diff
changeset
|
19 echo $ENVVAR |
9c8b803fe598
patch 8.2.0223: some instructions not yet tested
Bram Moolenaar <Bram@vim.org>
parents:
diff
changeset
|
20 echo @z |
9c8b803fe598
patch 8.2.0223: some instructions not yet tested
Bram Moolenaar <Bram@vim.org>
parents:
diff
changeset
|
21 enddef |
9c8b803fe598
patch 8.2.0223: some instructions not yet tested
Bram Moolenaar <Bram@vim.org>
parents:
diff
changeset
|
22 |
19342
8ff84bc1c89b
patch 8.2.0229: compare instructions not tested
Bram Moolenaar <Bram@vim.org>
parents:
19338
diff
changeset
|
23 def Test_disassemble_load() |
19330
9c8b803fe598
patch 8.2.0223: some instructions not yet tested
Bram Moolenaar <Bram@vim.org>
parents:
diff
changeset
|
24 assert_fails('disass NoFunc', 'E1061:') |
9c8b803fe598
patch 8.2.0223: some instructions not yet tested
Bram Moolenaar <Bram@vim.org>
parents:
diff
changeset
|
25 assert_fails('disass NotCompiled', 'E1062:') |
9c8b803fe598
patch 8.2.0223: some instructions not yet tested
Bram Moolenaar <Bram@vim.org>
parents:
diff
changeset
|
26 |
9c8b803fe598
patch 8.2.0223: some instructions not yet tested
Bram Moolenaar <Bram@vim.org>
parents:
diff
changeset
|
27 let res = execute('disass s:ScriptFuncLoad') |
9c8b803fe598
patch 8.2.0223: some instructions not yet tested
Bram Moolenaar <Bram@vim.org>
parents:
diff
changeset
|
28 assert_match('<SNR>\d*_ScriptFuncLoad.*' |
9c8b803fe598
patch 8.2.0223: some instructions not yet tested
Bram Moolenaar <Bram@vim.org>
parents:
diff
changeset
|
29 \ .. 'buffers.*' |
9c8b803fe598
patch 8.2.0223: some instructions not yet tested
Bram Moolenaar <Bram@vim.org>
parents:
diff
changeset
|
30 \ .. ' EXEC \+buffers.*' |
9c8b803fe598
patch 8.2.0223: some instructions not yet tested
Bram Moolenaar <Bram@vim.org>
parents:
diff
changeset
|
31 \ .. ' LOAD arg\[-1\].*' |
9c8b803fe598
patch 8.2.0223: some instructions not yet tested
Bram Moolenaar <Bram@vim.org>
parents:
diff
changeset
|
32 \ .. ' LOAD $0.*' |
9c8b803fe598
patch 8.2.0223: some instructions not yet tested
Bram Moolenaar <Bram@vim.org>
parents:
diff
changeset
|
33 \ .. ' LOADV v:version.*' |
9c8b803fe598
patch 8.2.0223: some instructions not yet tested
Bram Moolenaar <Bram@vim.org>
parents:
diff
changeset
|
34 \ .. ' LOADS s:scriptvar from .*test_vim9_disassemble.vim.*' |
9c8b803fe598
patch 8.2.0223: some instructions not yet tested
Bram Moolenaar <Bram@vim.org>
parents:
diff
changeset
|
35 \ .. ' LOADG g:globalvar.*' |
9c8b803fe598
patch 8.2.0223: some instructions not yet tested
Bram Moolenaar <Bram@vim.org>
parents:
diff
changeset
|
36 \ .. ' LOADENV $ENVVAR.*' |
9c8b803fe598
patch 8.2.0223: some instructions not yet tested
Bram Moolenaar <Bram@vim.org>
parents:
diff
changeset
|
37 \ .. ' LOADREG @z.*' |
9c8b803fe598
patch 8.2.0223: some instructions not yet tested
Bram Moolenaar <Bram@vim.org>
parents:
diff
changeset
|
38 \, res) |
9c8b803fe598
patch 8.2.0223: some instructions not yet tested
Bram Moolenaar <Bram@vim.org>
parents:
diff
changeset
|
39 enddef |
9c8b803fe598
patch 8.2.0223: some instructions not yet tested
Bram Moolenaar <Bram@vim.org>
parents:
diff
changeset
|
40 |
9c8b803fe598
patch 8.2.0223: some instructions not yet tested
Bram Moolenaar <Bram@vim.org>
parents:
diff
changeset
|
41 def s:ScriptFuncPush() |
9c8b803fe598
patch 8.2.0223: some instructions not yet tested
Bram Moolenaar <Bram@vim.org>
parents:
diff
changeset
|
42 let localbool = true |
9c8b803fe598
patch 8.2.0223: some instructions not yet tested
Bram Moolenaar <Bram@vim.org>
parents:
diff
changeset
|
43 let localspec = v:none |
9c8b803fe598
patch 8.2.0223: some instructions not yet tested
Bram Moolenaar <Bram@vim.org>
parents:
diff
changeset
|
44 let localblob = 0z1234 |
9c8b803fe598
patch 8.2.0223: some instructions not yet tested
Bram Moolenaar <Bram@vim.org>
parents:
diff
changeset
|
45 if has('float') |
9c8b803fe598
patch 8.2.0223: some instructions not yet tested
Bram Moolenaar <Bram@vim.org>
parents:
diff
changeset
|
46 let localfloat = 1.234 |
9c8b803fe598
patch 8.2.0223: some instructions not yet tested
Bram Moolenaar <Bram@vim.org>
parents:
diff
changeset
|
47 endif |
9c8b803fe598
patch 8.2.0223: some instructions not yet tested
Bram Moolenaar <Bram@vim.org>
parents:
diff
changeset
|
48 enddef |
9c8b803fe598
patch 8.2.0223: some instructions not yet tested
Bram Moolenaar <Bram@vim.org>
parents:
diff
changeset
|
49 |
19342
8ff84bc1c89b
patch 8.2.0229: compare instructions not tested
Bram Moolenaar <Bram@vim.org>
parents:
19338
diff
changeset
|
50 def Test_disassemble_push() |
19330
9c8b803fe598
patch 8.2.0223: some instructions not yet tested
Bram Moolenaar <Bram@vim.org>
parents:
diff
changeset
|
51 let res = execute('disass s:ScriptFuncPush') |
9c8b803fe598
patch 8.2.0223: some instructions not yet tested
Bram Moolenaar <Bram@vim.org>
parents:
diff
changeset
|
52 assert_match('<SNR>\d*_ScriptFuncPush.*' |
9c8b803fe598
patch 8.2.0223: some instructions not yet tested
Bram Moolenaar <Bram@vim.org>
parents:
diff
changeset
|
53 \ .. 'localbool = true.*' |
9c8b803fe598
patch 8.2.0223: some instructions not yet tested
Bram Moolenaar <Bram@vim.org>
parents:
diff
changeset
|
54 \ .. ' PUSH v:true.*' |
9c8b803fe598
patch 8.2.0223: some instructions not yet tested
Bram Moolenaar <Bram@vim.org>
parents:
diff
changeset
|
55 \ .. 'localspec = v:none.*' |
9c8b803fe598
patch 8.2.0223: some instructions not yet tested
Bram Moolenaar <Bram@vim.org>
parents:
diff
changeset
|
56 \ .. ' PUSH v:none.*' |
9c8b803fe598
patch 8.2.0223: some instructions not yet tested
Bram Moolenaar <Bram@vim.org>
parents:
diff
changeset
|
57 \ .. 'localblob = 0z1234.*' |
9c8b803fe598
patch 8.2.0223: some instructions not yet tested
Bram Moolenaar <Bram@vim.org>
parents:
diff
changeset
|
58 \ .. ' PUSHBLOB 0z1234.*' |
9c8b803fe598
patch 8.2.0223: some instructions not yet tested
Bram Moolenaar <Bram@vim.org>
parents:
diff
changeset
|
59 \, res) |
9c8b803fe598
patch 8.2.0223: some instructions not yet tested
Bram Moolenaar <Bram@vim.org>
parents:
diff
changeset
|
60 if has('float') |
9c8b803fe598
patch 8.2.0223: some instructions not yet tested
Bram Moolenaar <Bram@vim.org>
parents:
diff
changeset
|
61 assert_match('<SNR>\d*_ScriptFuncPush.*' |
9c8b803fe598
patch 8.2.0223: some instructions not yet tested
Bram Moolenaar <Bram@vim.org>
parents:
diff
changeset
|
62 \ .. 'localfloat = 1.234.*' |
9c8b803fe598
patch 8.2.0223: some instructions not yet tested
Bram Moolenaar <Bram@vim.org>
parents:
diff
changeset
|
63 \ .. ' PUSHF 1.234.*' |
9c8b803fe598
patch 8.2.0223: some instructions not yet tested
Bram Moolenaar <Bram@vim.org>
parents:
diff
changeset
|
64 \, res) |
9c8b803fe598
patch 8.2.0223: some instructions not yet tested
Bram Moolenaar <Bram@vim.org>
parents:
diff
changeset
|
65 endif |
9c8b803fe598
patch 8.2.0223: some instructions not yet tested
Bram Moolenaar <Bram@vim.org>
parents:
diff
changeset
|
66 enddef |
9c8b803fe598
patch 8.2.0223: some instructions not yet tested
Bram Moolenaar <Bram@vim.org>
parents:
diff
changeset
|
67 |
9c8b803fe598
patch 8.2.0223: some instructions not yet tested
Bram Moolenaar <Bram@vim.org>
parents:
diff
changeset
|
68 def s:ScriptFuncStore() |
9c8b803fe598
patch 8.2.0223: some instructions not yet tested
Bram Moolenaar <Bram@vim.org>
parents:
diff
changeset
|
69 let localnr = 1 |
9c8b803fe598
patch 8.2.0223: some instructions not yet tested
Bram Moolenaar <Bram@vim.org>
parents:
diff
changeset
|
70 localnr = 2 |
9c8b803fe598
patch 8.2.0223: some instructions not yet tested
Bram Moolenaar <Bram@vim.org>
parents:
diff
changeset
|
71 let localstr = 'abc' |
9c8b803fe598
patch 8.2.0223: some instructions not yet tested
Bram Moolenaar <Bram@vim.org>
parents:
diff
changeset
|
72 localstr = 'xyz' |
9c8b803fe598
patch 8.2.0223: some instructions not yet tested
Bram Moolenaar <Bram@vim.org>
parents:
diff
changeset
|
73 v:char = 'abc' |
9c8b803fe598
patch 8.2.0223: some instructions not yet tested
Bram Moolenaar <Bram@vim.org>
parents:
diff
changeset
|
74 s:scriptvar = 'sv' |
9c8b803fe598
patch 8.2.0223: some instructions not yet tested
Bram Moolenaar <Bram@vim.org>
parents:
diff
changeset
|
75 g:globalvar = 'gv' |
9c8b803fe598
patch 8.2.0223: some instructions not yet tested
Bram Moolenaar <Bram@vim.org>
parents:
diff
changeset
|
76 &tabstop = 8 |
9c8b803fe598
patch 8.2.0223: some instructions not yet tested
Bram Moolenaar <Bram@vim.org>
parents:
diff
changeset
|
77 $ENVVAR = 'ev' |
9c8b803fe598
patch 8.2.0223: some instructions not yet tested
Bram Moolenaar <Bram@vim.org>
parents:
diff
changeset
|
78 @z = 'rv' |
9c8b803fe598
patch 8.2.0223: some instructions not yet tested
Bram Moolenaar <Bram@vim.org>
parents:
diff
changeset
|
79 enddef |
9c8b803fe598
patch 8.2.0223: some instructions not yet tested
Bram Moolenaar <Bram@vim.org>
parents:
diff
changeset
|
80 |
19342
8ff84bc1c89b
patch 8.2.0229: compare instructions not tested
Bram Moolenaar <Bram@vim.org>
parents:
19338
diff
changeset
|
81 def Test_disassemble_store() |
19330
9c8b803fe598
patch 8.2.0223: some instructions not yet tested
Bram Moolenaar <Bram@vim.org>
parents:
diff
changeset
|
82 let res = execute('disass s:ScriptFuncStore') |
9c8b803fe598
patch 8.2.0223: some instructions not yet tested
Bram Moolenaar <Bram@vim.org>
parents:
diff
changeset
|
83 assert_match('<SNR>\d*_ScriptFuncStore.*' |
9c8b803fe598
patch 8.2.0223: some instructions not yet tested
Bram Moolenaar <Bram@vim.org>
parents:
diff
changeset
|
84 \ .. 'localnr = 2.*' |
9c8b803fe598
patch 8.2.0223: some instructions not yet tested
Bram Moolenaar <Bram@vim.org>
parents:
diff
changeset
|
85 \ .. ' STORE 2 in $0.*' |
9c8b803fe598
patch 8.2.0223: some instructions not yet tested
Bram Moolenaar <Bram@vim.org>
parents:
diff
changeset
|
86 \ .. 'localstr = ''xyz''.*' |
9c8b803fe598
patch 8.2.0223: some instructions not yet tested
Bram Moolenaar <Bram@vim.org>
parents:
diff
changeset
|
87 \ .. ' STORE $1.*' |
9c8b803fe598
patch 8.2.0223: some instructions not yet tested
Bram Moolenaar <Bram@vim.org>
parents:
diff
changeset
|
88 \ .. 'v:char = ''abc''.*' |
9c8b803fe598
patch 8.2.0223: some instructions not yet tested
Bram Moolenaar <Bram@vim.org>
parents:
diff
changeset
|
89 \ .. 'STOREV v:char.*' |
9c8b803fe598
patch 8.2.0223: some instructions not yet tested
Bram Moolenaar <Bram@vim.org>
parents:
diff
changeset
|
90 \ .. 's:scriptvar = ''sv''.*' |
9c8b803fe598
patch 8.2.0223: some instructions not yet tested
Bram Moolenaar <Bram@vim.org>
parents:
diff
changeset
|
91 \ .. ' STORES s:scriptvar in .*test_vim9_disassemble.vim.*' |
9c8b803fe598
patch 8.2.0223: some instructions not yet tested
Bram Moolenaar <Bram@vim.org>
parents:
diff
changeset
|
92 \ .. 'g:globalvar = ''gv''.*' |
9c8b803fe598
patch 8.2.0223: some instructions not yet tested
Bram Moolenaar <Bram@vim.org>
parents:
diff
changeset
|
93 \ .. ' STOREG g:globalvar.*' |
9c8b803fe598
patch 8.2.0223: some instructions not yet tested
Bram Moolenaar <Bram@vim.org>
parents:
diff
changeset
|
94 \ .. '&tabstop = 8.*' |
9c8b803fe598
patch 8.2.0223: some instructions not yet tested
Bram Moolenaar <Bram@vim.org>
parents:
diff
changeset
|
95 \ .. ' STOREOPT &tabstop.*' |
9c8b803fe598
patch 8.2.0223: some instructions not yet tested
Bram Moolenaar <Bram@vim.org>
parents:
diff
changeset
|
96 \ .. '$ENVVAR = ''ev''.*' |
9c8b803fe598
patch 8.2.0223: some instructions not yet tested
Bram Moolenaar <Bram@vim.org>
parents:
diff
changeset
|
97 \ .. ' STOREENV $ENVVAR.*' |
9c8b803fe598
patch 8.2.0223: some instructions not yet tested
Bram Moolenaar <Bram@vim.org>
parents:
diff
changeset
|
98 \ .. '@z = ''rv''.*' |
9c8b803fe598
patch 8.2.0223: some instructions not yet tested
Bram Moolenaar <Bram@vim.org>
parents:
diff
changeset
|
99 \ .. ' STOREREG @z.*' |
9c8b803fe598
patch 8.2.0223: some instructions not yet tested
Bram Moolenaar <Bram@vim.org>
parents:
diff
changeset
|
100 \, res) |
9c8b803fe598
patch 8.2.0223: some instructions not yet tested
Bram Moolenaar <Bram@vim.org>
parents:
diff
changeset
|
101 enddef |
9c8b803fe598
patch 8.2.0223: some instructions not yet tested
Bram Moolenaar <Bram@vim.org>
parents:
diff
changeset
|
102 |
9c8b803fe598
patch 8.2.0223: some instructions not yet tested
Bram Moolenaar <Bram@vim.org>
parents:
diff
changeset
|
103 def s:ScriptFuncTry() |
9c8b803fe598
patch 8.2.0223: some instructions not yet tested
Bram Moolenaar <Bram@vim.org>
parents:
diff
changeset
|
104 try |
9c8b803fe598
patch 8.2.0223: some instructions not yet tested
Bram Moolenaar <Bram@vim.org>
parents:
diff
changeset
|
105 echo 'yes' |
9c8b803fe598
patch 8.2.0223: some instructions not yet tested
Bram Moolenaar <Bram@vim.org>
parents:
diff
changeset
|
106 catch /fail/ |
9c8b803fe598
patch 8.2.0223: some instructions not yet tested
Bram Moolenaar <Bram@vim.org>
parents:
diff
changeset
|
107 echo 'no' |
9c8b803fe598
patch 8.2.0223: some instructions not yet tested
Bram Moolenaar <Bram@vim.org>
parents:
diff
changeset
|
108 finally |
19338
ef432264b88a
patch 8.2.0227: compiling a few instructions not tested
Bram Moolenaar <Bram@vim.org>
parents:
19336
diff
changeset
|
109 throw 'end' |
19330
9c8b803fe598
patch 8.2.0223: some instructions not yet tested
Bram Moolenaar <Bram@vim.org>
parents:
diff
changeset
|
110 endtry |
9c8b803fe598
patch 8.2.0223: some instructions not yet tested
Bram Moolenaar <Bram@vim.org>
parents:
diff
changeset
|
111 enddef |
9c8b803fe598
patch 8.2.0223: some instructions not yet tested
Bram Moolenaar <Bram@vim.org>
parents:
diff
changeset
|
112 |
19342
8ff84bc1c89b
patch 8.2.0229: compare instructions not tested
Bram Moolenaar <Bram@vim.org>
parents:
19338
diff
changeset
|
113 def Test_disassemble_try() |
19330
9c8b803fe598
patch 8.2.0223: some instructions not yet tested
Bram Moolenaar <Bram@vim.org>
parents:
diff
changeset
|
114 let res = execute('disass s:ScriptFuncTry') |
9c8b803fe598
patch 8.2.0223: some instructions not yet tested
Bram Moolenaar <Bram@vim.org>
parents:
diff
changeset
|
115 assert_match('<SNR>\d*_ScriptFuncTry.*' |
9c8b803fe598
patch 8.2.0223: some instructions not yet tested
Bram Moolenaar <Bram@vim.org>
parents:
diff
changeset
|
116 \ .. 'try.*' |
9c8b803fe598
patch 8.2.0223: some instructions not yet tested
Bram Moolenaar <Bram@vim.org>
parents:
diff
changeset
|
117 \ .. 'TRY catch -> \d\+, finally -> \d\+.*' |
9c8b803fe598
patch 8.2.0223: some instructions not yet tested
Bram Moolenaar <Bram@vim.org>
parents:
diff
changeset
|
118 \ .. 'catch /fail/.*' |
9c8b803fe598
patch 8.2.0223: some instructions not yet tested
Bram Moolenaar <Bram@vim.org>
parents:
diff
changeset
|
119 \ .. ' JUMP -> \d\+.*' |
9c8b803fe598
patch 8.2.0223: some instructions not yet tested
Bram Moolenaar <Bram@vim.org>
parents:
diff
changeset
|
120 \ .. ' PUSH v:exception.*' |
9c8b803fe598
patch 8.2.0223: some instructions not yet tested
Bram Moolenaar <Bram@vim.org>
parents:
diff
changeset
|
121 \ .. ' PUSHS "fail".*' |
9c8b803fe598
patch 8.2.0223: some instructions not yet tested
Bram Moolenaar <Bram@vim.org>
parents:
diff
changeset
|
122 \ .. ' COMPARESTRING =\~.*' |
9c8b803fe598
patch 8.2.0223: some instructions not yet tested
Bram Moolenaar <Bram@vim.org>
parents:
diff
changeset
|
123 \ .. ' JUMP_IF_FALSE -> \d\+.*' |
9c8b803fe598
patch 8.2.0223: some instructions not yet tested
Bram Moolenaar <Bram@vim.org>
parents:
diff
changeset
|
124 \ .. ' CATCH.*' |
9c8b803fe598
patch 8.2.0223: some instructions not yet tested
Bram Moolenaar <Bram@vim.org>
parents:
diff
changeset
|
125 \ .. 'finally.*' |
9c8b803fe598
patch 8.2.0223: some instructions not yet tested
Bram Moolenaar <Bram@vim.org>
parents:
diff
changeset
|
126 \ .. ' PUSHS "end".*' |
19338
ef432264b88a
patch 8.2.0227: compiling a few instructions not tested
Bram Moolenaar <Bram@vim.org>
parents:
19336
diff
changeset
|
127 \ .. ' THROW.*' |
19330
9c8b803fe598
patch 8.2.0223: some instructions not yet tested
Bram Moolenaar <Bram@vim.org>
parents:
diff
changeset
|
128 \ .. 'endtry.*' |
9c8b803fe598
patch 8.2.0223: some instructions not yet tested
Bram Moolenaar <Bram@vim.org>
parents:
diff
changeset
|
129 \ .. ' ENDTRY.*' |
9c8b803fe598
patch 8.2.0223: some instructions not yet tested
Bram Moolenaar <Bram@vim.org>
parents:
diff
changeset
|
130 \, res) |
9c8b803fe598
patch 8.2.0223: some instructions not yet tested
Bram Moolenaar <Bram@vim.org>
parents:
diff
changeset
|
131 enddef |
9c8b803fe598
patch 8.2.0223: some instructions not yet tested
Bram Moolenaar <Bram@vim.org>
parents:
diff
changeset
|
132 |
9c8b803fe598
patch 8.2.0223: some instructions not yet tested
Bram Moolenaar <Bram@vim.org>
parents:
diff
changeset
|
133 def s:ScriptFuncNew() |
9c8b803fe598
patch 8.2.0223: some instructions not yet tested
Bram Moolenaar <Bram@vim.org>
parents:
diff
changeset
|
134 let ll = [1, "two", 333] |
9c8b803fe598
patch 8.2.0223: some instructions not yet tested
Bram Moolenaar <Bram@vim.org>
parents:
diff
changeset
|
135 let dd = #{one: 1, two: "val"} |
9c8b803fe598
patch 8.2.0223: some instructions not yet tested
Bram Moolenaar <Bram@vim.org>
parents:
diff
changeset
|
136 enddef |
9c8b803fe598
patch 8.2.0223: some instructions not yet tested
Bram Moolenaar <Bram@vim.org>
parents:
diff
changeset
|
137 |
19342
8ff84bc1c89b
patch 8.2.0229: compare instructions not tested
Bram Moolenaar <Bram@vim.org>
parents:
19338
diff
changeset
|
138 def Test_disassemble_new() |
19330
9c8b803fe598
patch 8.2.0223: some instructions not yet tested
Bram Moolenaar <Bram@vim.org>
parents:
diff
changeset
|
139 let res = execute('disass s:ScriptFuncNew') |
9c8b803fe598
patch 8.2.0223: some instructions not yet tested
Bram Moolenaar <Bram@vim.org>
parents:
diff
changeset
|
140 assert_match('<SNR>\d*_ScriptFuncNew.*' |
9c8b803fe598
patch 8.2.0223: some instructions not yet tested
Bram Moolenaar <Bram@vim.org>
parents:
diff
changeset
|
141 \ .. 'let ll = \[1, "two", 333].*' |
9c8b803fe598
patch 8.2.0223: some instructions not yet tested
Bram Moolenaar <Bram@vim.org>
parents:
diff
changeset
|
142 \ .. 'PUSHNR 1.*' |
9c8b803fe598
patch 8.2.0223: some instructions not yet tested
Bram Moolenaar <Bram@vim.org>
parents:
diff
changeset
|
143 \ .. 'PUSHS "two".*' |
9c8b803fe598
patch 8.2.0223: some instructions not yet tested
Bram Moolenaar <Bram@vim.org>
parents:
diff
changeset
|
144 \ .. 'PUSHNR 333.*' |
9c8b803fe598
patch 8.2.0223: some instructions not yet tested
Bram Moolenaar <Bram@vim.org>
parents:
diff
changeset
|
145 \ .. 'NEWLIST size 3.*' |
9c8b803fe598
patch 8.2.0223: some instructions not yet tested
Bram Moolenaar <Bram@vim.org>
parents:
diff
changeset
|
146 \ .. 'let dd = #{one: 1, two: "val"}.*' |
9c8b803fe598
patch 8.2.0223: some instructions not yet tested
Bram Moolenaar <Bram@vim.org>
parents:
diff
changeset
|
147 \ .. 'PUSHS "one".*' |
9c8b803fe598
patch 8.2.0223: some instructions not yet tested
Bram Moolenaar <Bram@vim.org>
parents:
diff
changeset
|
148 \ .. 'PUSHNR 1.*' |
9c8b803fe598
patch 8.2.0223: some instructions not yet tested
Bram Moolenaar <Bram@vim.org>
parents:
diff
changeset
|
149 \ .. 'PUSHS "two".*' |
9c8b803fe598
patch 8.2.0223: some instructions not yet tested
Bram Moolenaar <Bram@vim.org>
parents:
diff
changeset
|
150 \ .. 'PUSHS "val".*' |
9c8b803fe598
patch 8.2.0223: some instructions not yet tested
Bram Moolenaar <Bram@vim.org>
parents:
diff
changeset
|
151 \ .. 'NEWDICT size 2.*' |
9c8b803fe598
patch 8.2.0223: some instructions not yet tested
Bram Moolenaar <Bram@vim.org>
parents:
diff
changeset
|
152 \, res) |
9c8b803fe598
patch 8.2.0223: some instructions not yet tested
Bram Moolenaar <Bram@vim.org>
parents:
diff
changeset
|
153 enddef |
9c8b803fe598
patch 8.2.0223: some instructions not yet tested
Bram Moolenaar <Bram@vim.org>
parents:
diff
changeset
|
154 |
9c8b803fe598
patch 8.2.0223: some instructions not yet tested
Bram Moolenaar <Bram@vim.org>
parents:
diff
changeset
|
155 def FuncWithArg(arg) |
9c8b803fe598
patch 8.2.0223: some instructions not yet tested
Bram Moolenaar <Bram@vim.org>
parents:
diff
changeset
|
156 echo arg |
9c8b803fe598
patch 8.2.0223: some instructions not yet tested
Bram Moolenaar <Bram@vim.org>
parents:
diff
changeset
|
157 enddef |
9c8b803fe598
patch 8.2.0223: some instructions not yet tested
Bram Moolenaar <Bram@vim.org>
parents:
diff
changeset
|
158 |
9c8b803fe598
patch 8.2.0223: some instructions not yet tested
Bram Moolenaar <Bram@vim.org>
parents:
diff
changeset
|
159 func UserFunc() |
9c8b803fe598
patch 8.2.0223: some instructions not yet tested
Bram Moolenaar <Bram@vim.org>
parents:
diff
changeset
|
160 echo 'nothing' |
9c8b803fe598
patch 8.2.0223: some instructions not yet tested
Bram Moolenaar <Bram@vim.org>
parents:
diff
changeset
|
161 endfunc |
9c8b803fe598
patch 8.2.0223: some instructions not yet tested
Bram Moolenaar <Bram@vim.org>
parents:
diff
changeset
|
162 |
9c8b803fe598
patch 8.2.0223: some instructions not yet tested
Bram Moolenaar <Bram@vim.org>
parents:
diff
changeset
|
163 func UserFuncWithArg(arg) |
9c8b803fe598
patch 8.2.0223: some instructions not yet tested
Bram Moolenaar <Bram@vim.org>
parents:
diff
changeset
|
164 echo a:arg |
9c8b803fe598
patch 8.2.0223: some instructions not yet tested
Bram Moolenaar <Bram@vim.org>
parents:
diff
changeset
|
165 endfunc |
9c8b803fe598
patch 8.2.0223: some instructions not yet tested
Bram Moolenaar <Bram@vim.org>
parents:
diff
changeset
|
166 |
9c8b803fe598
patch 8.2.0223: some instructions not yet tested
Bram Moolenaar <Bram@vim.org>
parents:
diff
changeset
|
167 def s:ScriptFuncCall(): string |
9c8b803fe598
patch 8.2.0223: some instructions not yet tested
Bram Moolenaar <Bram@vim.org>
parents:
diff
changeset
|
168 changenr() |
9c8b803fe598
patch 8.2.0223: some instructions not yet tested
Bram Moolenaar <Bram@vim.org>
parents:
diff
changeset
|
169 char2nr("abc") |
19342
8ff84bc1c89b
patch 8.2.0229: compare instructions not tested
Bram Moolenaar <Bram@vim.org>
parents:
19338
diff
changeset
|
170 Test_disassemble_new() |
19330
9c8b803fe598
patch 8.2.0223: some instructions not yet tested
Bram Moolenaar <Bram@vim.org>
parents:
diff
changeset
|
171 FuncWithArg(343) |
9c8b803fe598
patch 8.2.0223: some instructions not yet tested
Bram Moolenaar <Bram@vim.org>
parents:
diff
changeset
|
172 ScriptFuncNew() |
9c8b803fe598
patch 8.2.0223: some instructions not yet tested
Bram Moolenaar <Bram@vim.org>
parents:
diff
changeset
|
173 s:ScriptFuncNew() |
9c8b803fe598
patch 8.2.0223: some instructions not yet tested
Bram Moolenaar <Bram@vim.org>
parents:
diff
changeset
|
174 UserFunc() |
9c8b803fe598
patch 8.2.0223: some instructions not yet tested
Bram Moolenaar <Bram@vim.org>
parents:
diff
changeset
|
175 UserFuncWithArg("foo") |
9c8b803fe598
patch 8.2.0223: some instructions not yet tested
Bram Moolenaar <Bram@vim.org>
parents:
diff
changeset
|
176 let FuncRef = function("UserFunc") |
9c8b803fe598
patch 8.2.0223: some instructions not yet tested
Bram Moolenaar <Bram@vim.org>
parents:
diff
changeset
|
177 FuncRef() |
9c8b803fe598
patch 8.2.0223: some instructions not yet tested
Bram Moolenaar <Bram@vim.org>
parents:
diff
changeset
|
178 let FuncRefWithArg = function("UserFuncWithArg") |
9c8b803fe598
patch 8.2.0223: some instructions not yet tested
Bram Moolenaar <Bram@vim.org>
parents:
diff
changeset
|
179 FuncRefWithArg("bar") |
9c8b803fe598
patch 8.2.0223: some instructions not yet tested
Bram Moolenaar <Bram@vim.org>
parents:
diff
changeset
|
180 return "yes" |
9c8b803fe598
patch 8.2.0223: some instructions not yet tested
Bram Moolenaar <Bram@vim.org>
parents:
diff
changeset
|
181 enddef |
9c8b803fe598
patch 8.2.0223: some instructions not yet tested
Bram Moolenaar <Bram@vim.org>
parents:
diff
changeset
|
182 |
19342
8ff84bc1c89b
patch 8.2.0229: compare instructions not tested
Bram Moolenaar <Bram@vim.org>
parents:
19338
diff
changeset
|
183 def Test_disassemble_call() |
19330
9c8b803fe598
patch 8.2.0223: some instructions not yet tested
Bram Moolenaar <Bram@vim.org>
parents:
diff
changeset
|
184 let res = execute('disass s:ScriptFuncCall') |
9c8b803fe598
patch 8.2.0223: some instructions not yet tested
Bram Moolenaar <Bram@vim.org>
parents:
diff
changeset
|
185 assert_match('<SNR>\d\+_ScriptFuncCall.*' |
9c8b803fe598
patch 8.2.0223: some instructions not yet tested
Bram Moolenaar <Bram@vim.org>
parents:
diff
changeset
|
186 \ .. 'changenr().*' |
9c8b803fe598
patch 8.2.0223: some instructions not yet tested
Bram Moolenaar <Bram@vim.org>
parents:
diff
changeset
|
187 \ .. ' BCALL changenr(argc 0).*' |
9c8b803fe598
patch 8.2.0223: some instructions not yet tested
Bram Moolenaar <Bram@vim.org>
parents:
diff
changeset
|
188 \ .. 'char2nr("abc").*' |
9c8b803fe598
patch 8.2.0223: some instructions not yet tested
Bram Moolenaar <Bram@vim.org>
parents:
diff
changeset
|
189 \ .. ' PUSHS "abc".*' |
9c8b803fe598
patch 8.2.0223: some instructions not yet tested
Bram Moolenaar <Bram@vim.org>
parents:
diff
changeset
|
190 \ .. ' BCALL char2nr(argc 1).*' |
19342
8ff84bc1c89b
patch 8.2.0229: compare instructions not tested
Bram Moolenaar <Bram@vim.org>
parents:
19338
diff
changeset
|
191 \ .. 'Test_disassemble_new().*' |
8ff84bc1c89b
patch 8.2.0229: compare instructions not tested
Bram Moolenaar <Bram@vim.org>
parents:
19338
diff
changeset
|
192 \ .. ' DCALL Test_disassemble_new(argc 0).*' |
19330
9c8b803fe598
patch 8.2.0223: some instructions not yet tested
Bram Moolenaar <Bram@vim.org>
parents:
diff
changeset
|
193 \ .. 'FuncWithArg(343).*' |
9c8b803fe598
patch 8.2.0223: some instructions not yet tested
Bram Moolenaar <Bram@vim.org>
parents:
diff
changeset
|
194 \ .. ' PUSHNR 343.*' |
9c8b803fe598
patch 8.2.0223: some instructions not yet tested
Bram Moolenaar <Bram@vim.org>
parents:
diff
changeset
|
195 \ .. ' DCALL FuncWithArg(argc 1).*' |
9c8b803fe598
patch 8.2.0223: some instructions not yet tested
Bram Moolenaar <Bram@vim.org>
parents:
diff
changeset
|
196 \ .. 'ScriptFuncNew().*' |
9c8b803fe598
patch 8.2.0223: some instructions not yet tested
Bram Moolenaar <Bram@vim.org>
parents:
diff
changeset
|
197 \ .. ' DCALL <SNR>\d\+_ScriptFuncNew(argc 0).*' |
9c8b803fe598
patch 8.2.0223: some instructions not yet tested
Bram Moolenaar <Bram@vim.org>
parents:
diff
changeset
|
198 \ .. 's:ScriptFuncNew().*' |
9c8b803fe598
patch 8.2.0223: some instructions not yet tested
Bram Moolenaar <Bram@vim.org>
parents:
diff
changeset
|
199 \ .. ' DCALL <SNR>\d\+_ScriptFuncNew(argc 0).*' |
9c8b803fe598
patch 8.2.0223: some instructions not yet tested
Bram Moolenaar <Bram@vim.org>
parents:
diff
changeset
|
200 \ .. 'UserFunc().*' |
9c8b803fe598
patch 8.2.0223: some instructions not yet tested
Bram Moolenaar <Bram@vim.org>
parents:
diff
changeset
|
201 \ .. ' UCALL UserFunc(argc 0).*' |
9c8b803fe598
patch 8.2.0223: some instructions not yet tested
Bram Moolenaar <Bram@vim.org>
parents:
diff
changeset
|
202 \ .. 'UserFuncWithArg("foo").*' |
9c8b803fe598
patch 8.2.0223: some instructions not yet tested
Bram Moolenaar <Bram@vim.org>
parents:
diff
changeset
|
203 \ .. ' PUSHS "foo".*' |
9c8b803fe598
patch 8.2.0223: some instructions not yet tested
Bram Moolenaar <Bram@vim.org>
parents:
diff
changeset
|
204 \ .. ' UCALL UserFuncWithArg(argc 1).*' |
9c8b803fe598
patch 8.2.0223: some instructions not yet tested
Bram Moolenaar <Bram@vim.org>
parents:
diff
changeset
|
205 \ .. 'let FuncRef = function("UserFunc").*' |
9c8b803fe598
patch 8.2.0223: some instructions not yet tested
Bram Moolenaar <Bram@vim.org>
parents:
diff
changeset
|
206 \ .. 'FuncRef().*' |
9c8b803fe598
patch 8.2.0223: some instructions not yet tested
Bram Moolenaar <Bram@vim.org>
parents:
diff
changeset
|
207 \ .. ' LOAD $\d.*' |
9c8b803fe598
patch 8.2.0223: some instructions not yet tested
Bram Moolenaar <Bram@vim.org>
parents:
diff
changeset
|
208 \ .. ' PCALL (argc 0).*' |
9c8b803fe598
patch 8.2.0223: some instructions not yet tested
Bram Moolenaar <Bram@vim.org>
parents:
diff
changeset
|
209 \ .. 'let FuncRefWithArg = function("UserFuncWithArg").*' |
9c8b803fe598
patch 8.2.0223: some instructions not yet tested
Bram Moolenaar <Bram@vim.org>
parents:
diff
changeset
|
210 \ .. 'FuncRefWithArg("bar").*' |
9c8b803fe598
patch 8.2.0223: some instructions not yet tested
Bram Moolenaar <Bram@vim.org>
parents:
diff
changeset
|
211 \ .. ' PUSHS "bar".*' |
9c8b803fe598
patch 8.2.0223: some instructions not yet tested
Bram Moolenaar <Bram@vim.org>
parents:
diff
changeset
|
212 \ .. ' LOAD $\d.*' |
9c8b803fe598
patch 8.2.0223: some instructions not yet tested
Bram Moolenaar <Bram@vim.org>
parents:
diff
changeset
|
213 \ .. ' PCALL (argc 1).*' |
9c8b803fe598
patch 8.2.0223: some instructions not yet tested
Bram Moolenaar <Bram@vim.org>
parents:
diff
changeset
|
214 \ .. 'return "yes".*' |
9c8b803fe598
patch 8.2.0223: some instructions not yet tested
Bram Moolenaar <Bram@vim.org>
parents:
diff
changeset
|
215 \ .. ' PUSHS "yes".*' |
9c8b803fe598
patch 8.2.0223: some instructions not yet tested
Bram Moolenaar <Bram@vim.org>
parents:
diff
changeset
|
216 \ .. ' RETURN.*' |
9c8b803fe598
patch 8.2.0223: some instructions not yet tested
Bram Moolenaar <Bram@vim.org>
parents:
diff
changeset
|
217 \, res) |
9c8b803fe598
patch 8.2.0223: some instructions not yet tested
Bram Moolenaar <Bram@vim.org>
parents:
diff
changeset
|
218 enddef |
9c8b803fe598
patch 8.2.0223: some instructions not yet tested
Bram Moolenaar <Bram@vim.org>
parents:
diff
changeset
|
219 |
19332
d6e8a9e80be4
patch 8.2.0224: compiling :elseif not tested yet
Bram Moolenaar <Bram@vim.org>
parents:
19330
diff
changeset
|
220 def HasEval() |
d6e8a9e80be4
patch 8.2.0224: compiling :elseif not tested yet
Bram Moolenaar <Bram@vim.org>
parents:
19330
diff
changeset
|
221 if has("eval") |
d6e8a9e80be4
patch 8.2.0224: compiling :elseif not tested yet
Bram Moolenaar <Bram@vim.org>
parents:
19330
diff
changeset
|
222 echo "yes" |
d6e8a9e80be4
patch 8.2.0224: compiling :elseif not tested yet
Bram Moolenaar <Bram@vim.org>
parents:
19330
diff
changeset
|
223 else |
d6e8a9e80be4
patch 8.2.0224: compiling :elseif not tested yet
Bram Moolenaar <Bram@vim.org>
parents:
19330
diff
changeset
|
224 echo "no" |
d6e8a9e80be4
patch 8.2.0224: compiling :elseif not tested yet
Bram Moolenaar <Bram@vim.org>
parents:
19330
diff
changeset
|
225 endif |
d6e8a9e80be4
patch 8.2.0224: compiling :elseif not tested yet
Bram Moolenaar <Bram@vim.org>
parents:
19330
diff
changeset
|
226 enddef |
d6e8a9e80be4
patch 8.2.0224: compiling :elseif not tested yet
Bram Moolenaar <Bram@vim.org>
parents:
19330
diff
changeset
|
227 |
d6e8a9e80be4
patch 8.2.0224: compiling :elseif not tested yet
Bram Moolenaar <Bram@vim.org>
parents:
19330
diff
changeset
|
228 def HasNothing() |
d6e8a9e80be4
patch 8.2.0224: compiling :elseif not tested yet
Bram Moolenaar <Bram@vim.org>
parents:
19330
diff
changeset
|
229 if has("nothing") |
d6e8a9e80be4
patch 8.2.0224: compiling :elseif not tested yet
Bram Moolenaar <Bram@vim.org>
parents:
19330
diff
changeset
|
230 echo "yes" |
d6e8a9e80be4
patch 8.2.0224: compiling :elseif not tested yet
Bram Moolenaar <Bram@vim.org>
parents:
19330
diff
changeset
|
231 else |
d6e8a9e80be4
patch 8.2.0224: compiling :elseif not tested yet
Bram Moolenaar <Bram@vim.org>
parents:
19330
diff
changeset
|
232 echo "no" |
d6e8a9e80be4
patch 8.2.0224: compiling :elseif not tested yet
Bram Moolenaar <Bram@vim.org>
parents:
19330
diff
changeset
|
233 endif |
d6e8a9e80be4
patch 8.2.0224: compiling :elseif not tested yet
Bram Moolenaar <Bram@vim.org>
parents:
19330
diff
changeset
|
234 enddef |
d6e8a9e80be4
patch 8.2.0224: compiling :elseif not tested yet
Bram Moolenaar <Bram@vim.org>
parents:
19330
diff
changeset
|
235 |
d6e8a9e80be4
patch 8.2.0224: compiling :elseif not tested yet
Bram Moolenaar <Bram@vim.org>
parents:
19330
diff
changeset
|
236 def HasSomething() |
d6e8a9e80be4
patch 8.2.0224: compiling :elseif not tested yet
Bram Moolenaar <Bram@vim.org>
parents:
19330
diff
changeset
|
237 if has("nothing") |
d6e8a9e80be4
patch 8.2.0224: compiling :elseif not tested yet
Bram Moolenaar <Bram@vim.org>
parents:
19330
diff
changeset
|
238 echo "nothing" |
d6e8a9e80be4
patch 8.2.0224: compiling :elseif not tested yet
Bram Moolenaar <Bram@vim.org>
parents:
19330
diff
changeset
|
239 elseif has("something") |
d6e8a9e80be4
patch 8.2.0224: compiling :elseif not tested yet
Bram Moolenaar <Bram@vim.org>
parents:
19330
diff
changeset
|
240 echo "something" |
d6e8a9e80be4
patch 8.2.0224: compiling :elseif not tested yet
Bram Moolenaar <Bram@vim.org>
parents:
19330
diff
changeset
|
241 elseif has("eval") |
d6e8a9e80be4
patch 8.2.0224: compiling :elseif not tested yet
Bram Moolenaar <Bram@vim.org>
parents:
19330
diff
changeset
|
242 echo "eval" |
d6e8a9e80be4
patch 8.2.0224: compiling :elseif not tested yet
Bram Moolenaar <Bram@vim.org>
parents:
19330
diff
changeset
|
243 elseif has("less") |
d6e8a9e80be4
patch 8.2.0224: compiling :elseif not tested yet
Bram Moolenaar <Bram@vim.org>
parents:
19330
diff
changeset
|
244 echo "less" |
d6e8a9e80be4
patch 8.2.0224: compiling :elseif not tested yet
Bram Moolenaar <Bram@vim.org>
parents:
19330
diff
changeset
|
245 endif |
d6e8a9e80be4
patch 8.2.0224: compiling :elseif not tested yet
Bram Moolenaar <Bram@vim.org>
parents:
19330
diff
changeset
|
246 enddef |
d6e8a9e80be4
patch 8.2.0224: compiling :elseif not tested yet
Bram Moolenaar <Bram@vim.org>
parents:
19330
diff
changeset
|
247 |
19342
8ff84bc1c89b
patch 8.2.0229: compare instructions not tested
Bram Moolenaar <Bram@vim.org>
parents:
19338
diff
changeset
|
248 def Test_disassemble_const_expr() |
19332
d6e8a9e80be4
patch 8.2.0224: compiling :elseif not tested yet
Bram Moolenaar <Bram@vim.org>
parents:
19330
diff
changeset
|
249 assert_equal("\nyes", execute('call HasEval()')) |
d6e8a9e80be4
patch 8.2.0224: compiling :elseif not tested yet
Bram Moolenaar <Bram@vim.org>
parents:
19330
diff
changeset
|
250 let instr = execute('disassemble HasEval') |
d6e8a9e80be4
patch 8.2.0224: compiling :elseif not tested yet
Bram Moolenaar <Bram@vim.org>
parents:
19330
diff
changeset
|
251 assert_match('HasEval.*' |
d6e8a9e80be4
patch 8.2.0224: compiling :elseif not tested yet
Bram Moolenaar <Bram@vim.org>
parents:
19330
diff
changeset
|
252 \ .. 'if has("eval").*' |
d6e8a9e80be4
patch 8.2.0224: compiling :elseif not tested yet
Bram Moolenaar <Bram@vim.org>
parents:
19330
diff
changeset
|
253 \ .. ' PUSHS "yes".*' |
d6e8a9e80be4
patch 8.2.0224: compiling :elseif not tested yet
Bram Moolenaar <Bram@vim.org>
parents:
19330
diff
changeset
|
254 \, instr) |
d6e8a9e80be4
patch 8.2.0224: compiling :elseif not tested yet
Bram Moolenaar <Bram@vim.org>
parents:
19330
diff
changeset
|
255 assert_notmatch('JUMP', instr) |
d6e8a9e80be4
patch 8.2.0224: compiling :elseif not tested yet
Bram Moolenaar <Bram@vim.org>
parents:
19330
diff
changeset
|
256 |
d6e8a9e80be4
patch 8.2.0224: compiling :elseif not tested yet
Bram Moolenaar <Bram@vim.org>
parents:
19330
diff
changeset
|
257 assert_equal("\nno", execute('call HasNothing()')) |
d6e8a9e80be4
patch 8.2.0224: compiling :elseif not tested yet
Bram Moolenaar <Bram@vim.org>
parents:
19330
diff
changeset
|
258 instr = execute('disassemble HasNothing') |
d6e8a9e80be4
patch 8.2.0224: compiling :elseif not tested yet
Bram Moolenaar <Bram@vim.org>
parents:
19330
diff
changeset
|
259 assert_match('HasNothing.*' |
d6e8a9e80be4
patch 8.2.0224: compiling :elseif not tested yet
Bram Moolenaar <Bram@vim.org>
parents:
19330
diff
changeset
|
260 \ .. 'if has("nothing").*' |
d6e8a9e80be4
patch 8.2.0224: compiling :elseif not tested yet
Bram Moolenaar <Bram@vim.org>
parents:
19330
diff
changeset
|
261 \ .. 'else.*' |
d6e8a9e80be4
patch 8.2.0224: compiling :elseif not tested yet
Bram Moolenaar <Bram@vim.org>
parents:
19330
diff
changeset
|
262 \ .. ' PUSHS "no".*' |
d6e8a9e80be4
patch 8.2.0224: compiling :elseif not tested yet
Bram Moolenaar <Bram@vim.org>
parents:
19330
diff
changeset
|
263 \, instr) |
d6e8a9e80be4
patch 8.2.0224: compiling :elseif not tested yet
Bram Moolenaar <Bram@vim.org>
parents:
19330
diff
changeset
|
264 assert_notmatch('PUSHS "yes"', instr) |
d6e8a9e80be4
patch 8.2.0224: compiling :elseif not tested yet
Bram Moolenaar <Bram@vim.org>
parents:
19330
diff
changeset
|
265 assert_notmatch('JUMP', instr) |
d6e8a9e80be4
patch 8.2.0224: compiling :elseif not tested yet
Bram Moolenaar <Bram@vim.org>
parents:
19330
diff
changeset
|
266 |
d6e8a9e80be4
patch 8.2.0224: compiling :elseif not tested yet
Bram Moolenaar <Bram@vim.org>
parents:
19330
diff
changeset
|
267 assert_equal("\neval", execute('call HasSomething()')) |
d6e8a9e80be4
patch 8.2.0224: compiling :elseif not tested yet
Bram Moolenaar <Bram@vim.org>
parents:
19330
diff
changeset
|
268 instr = execute('disassemble HasSomething') |
d6e8a9e80be4
patch 8.2.0224: compiling :elseif not tested yet
Bram Moolenaar <Bram@vim.org>
parents:
19330
diff
changeset
|
269 assert_match('HasSomething.*' |
d6e8a9e80be4
patch 8.2.0224: compiling :elseif not tested yet
Bram Moolenaar <Bram@vim.org>
parents:
19330
diff
changeset
|
270 \ .. 'if has("nothing").*' |
d6e8a9e80be4
patch 8.2.0224: compiling :elseif not tested yet
Bram Moolenaar <Bram@vim.org>
parents:
19330
diff
changeset
|
271 \ .. 'elseif has("something").*' |
d6e8a9e80be4
patch 8.2.0224: compiling :elseif not tested yet
Bram Moolenaar <Bram@vim.org>
parents:
19330
diff
changeset
|
272 \ .. 'elseif has("eval").*' |
d6e8a9e80be4
patch 8.2.0224: compiling :elseif not tested yet
Bram Moolenaar <Bram@vim.org>
parents:
19330
diff
changeset
|
273 \ .. ' PUSHS "eval".*' |
d6e8a9e80be4
patch 8.2.0224: compiling :elseif not tested yet
Bram Moolenaar <Bram@vim.org>
parents:
19330
diff
changeset
|
274 \ .. 'elseif has("less").*' |
d6e8a9e80be4
patch 8.2.0224: compiling :elseif not tested yet
Bram Moolenaar <Bram@vim.org>
parents:
19330
diff
changeset
|
275 \, instr) |
d6e8a9e80be4
patch 8.2.0224: compiling :elseif not tested yet
Bram Moolenaar <Bram@vim.org>
parents:
19330
diff
changeset
|
276 assert_notmatch('PUSHS "nothing"', instr) |
d6e8a9e80be4
patch 8.2.0224: compiling :elseif not tested yet
Bram Moolenaar <Bram@vim.org>
parents:
19330
diff
changeset
|
277 assert_notmatch('PUSHS "something"', instr) |
d6e8a9e80be4
patch 8.2.0224: compiling :elseif not tested yet
Bram Moolenaar <Bram@vim.org>
parents:
19330
diff
changeset
|
278 assert_notmatch('PUSHS "less"', instr) |
d6e8a9e80be4
patch 8.2.0224: compiling :elseif not tested yet
Bram Moolenaar <Bram@vim.org>
parents:
19330
diff
changeset
|
279 assert_notmatch('JUMP', instr) |
d6e8a9e80be4
patch 8.2.0224: compiling :elseif not tested yet
Bram Moolenaar <Bram@vim.org>
parents:
19330
diff
changeset
|
280 enddef |
d6e8a9e80be4
patch 8.2.0224: compiling :elseif not tested yet
Bram Moolenaar <Bram@vim.org>
parents:
19330
diff
changeset
|
281 |
19334
61646c189622
patch 8.2.0225: compiling lambda not tested yet
Bram Moolenaar <Bram@vim.org>
parents:
19332
diff
changeset
|
282 def WithLambda(): string |
61646c189622
patch 8.2.0225: compiling lambda not tested yet
Bram Moolenaar <Bram@vim.org>
parents:
19332
diff
changeset
|
283 let F = {a -> "X" .. a .. "X"} |
61646c189622
patch 8.2.0225: compiling lambda not tested yet
Bram Moolenaar <Bram@vim.org>
parents:
19332
diff
changeset
|
284 return F("x") |
61646c189622
patch 8.2.0225: compiling lambda not tested yet
Bram Moolenaar <Bram@vim.org>
parents:
19332
diff
changeset
|
285 enddef |
61646c189622
patch 8.2.0225: compiling lambda not tested yet
Bram Moolenaar <Bram@vim.org>
parents:
19332
diff
changeset
|
286 |
19342
8ff84bc1c89b
patch 8.2.0229: compare instructions not tested
Bram Moolenaar <Bram@vim.org>
parents:
19338
diff
changeset
|
287 def Test_disassemble_lambda() |
19334
61646c189622
patch 8.2.0225: compiling lambda not tested yet
Bram Moolenaar <Bram@vim.org>
parents:
19332
diff
changeset
|
288 assert_equal("XxX", WithLambda()) |
61646c189622
patch 8.2.0225: compiling lambda not tested yet
Bram Moolenaar <Bram@vim.org>
parents:
19332
diff
changeset
|
289 let instr = execute('disassemble WithLambda') |
61646c189622
patch 8.2.0225: compiling lambda not tested yet
Bram Moolenaar <Bram@vim.org>
parents:
19332
diff
changeset
|
290 assert_match('WithLambda.*' |
61646c189622
patch 8.2.0225: compiling lambda not tested yet
Bram Moolenaar <Bram@vim.org>
parents:
19332
diff
changeset
|
291 \ .. 'let F = {a -> "X" .. a .. "X"}.*' |
61646c189622
patch 8.2.0225: compiling lambda not tested yet
Bram Moolenaar <Bram@vim.org>
parents:
19332
diff
changeset
|
292 \ .. ' FUNCREF <lambda>\d\+.*' |
61646c189622
patch 8.2.0225: compiling lambda not tested yet
Bram Moolenaar <Bram@vim.org>
parents:
19332
diff
changeset
|
293 \ .. 'PUSHS "x".*' |
61646c189622
patch 8.2.0225: compiling lambda not tested yet
Bram Moolenaar <Bram@vim.org>
parents:
19332
diff
changeset
|
294 \ .. ' LOAD $0.*' |
61646c189622
patch 8.2.0225: compiling lambda not tested yet
Bram Moolenaar <Bram@vim.org>
parents:
19332
diff
changeset
|
295 \ .. ' PCALL (argc 1).*' |
61646c189622
patch 8.2.0225: compiling lambda not tested yet
Bram Moolenaar <Bram@vim.org>
parents:
19332
diff
changeset
|
296 \ .. ' CHECKTYPE string stack\[-1].*' |
61646c189622
patch 8.2.0225: compiling lambda not tested yet
Bram Moolenaar <Bram@vim.org>
parents:
19332
diff
changeset
|
297 \, instr) |
61646c189622
patch 8.2.0225: compiling lambda not tested yet
Bram Moolenaar <Bram@vim.org>
parents:
19332
diff
changeset
|
298 enddef |
61646c189622
patch 8.2.0225: compiling lambda not tested yet
Bram Moolenaar <Bram@vim.org>
parents:
19332
diff
changeset
|
299 |
61646c189622
patch 8.2.0225: compiling lambda not tested yet
Bram Moolenaar <Bram@vim.org>
parents:
19332
diff
changeset
|
300 def AndOr(arg): string |
61646c189622
patch 8.2.0225: compiling lambda not tested yet
Bram Moolenaar <Bram@vim.org>
parents:
19332
diff
changeset
|
301 if arg == 1 && arg != 2 || arg == 4 |
61646c189622
patch 8.2.0225: compiling lambda not tested yet
Bram Moolenaar <Bram@vim.org>
parents:
19332
diff
changeset
|
302 return 'yes' |
61646c189622
patch 8.2.0225: compiling lambda not tested yet
Bram Moolenaar <Bram@vim.org>
parents:
19332
diff
changeset
|
303 endif |
61646c189622
patch 8.2.0225: compiling lambda not tested yet
Bram Moolenaar <Bram@vim.org>
parents:
19332
diff
changeset
|
304 return 'no' |
61646c189622
patch 8.2.0225: compiling lambda not tested yet
Bram Moolenaar <Bram@vim.org>
parents:
19332
diff
changeset
|
305 enddef |
61646c189622
patch 8.2.0225: compiling lambda not tested yet
Bram Moolenaar <Bram@vim.org>
parents:
19332
diff
changeset
|
306 |
19342
8ff84bc1c89b
patch 8.2.0229: compare instructions not tested
Bram Moolenaar <Bram@vim.org>
parents:
19338
diff
changeset
|
307 def Test_disassemble_and_or() |
19334
61646c189622
patch 8.2.0225: compiling lambda not tested yet
Bram Moolenaar <Bram@vim.org>
parents:
19332
diff
changeset
|
308 assert_equal("yes", AndOr(1)) |
61646c189622
patch 8.2.0225: compiling lambda not tested yet
Bram Moolenaar <Bram@vim.org>
parents:
19332
diff
changeset
|
309 assert_equal("no", AndOr(2)) |
61646c189622
patch 8.2.0225: compiling lambda not tested yet
Bram Moolenaar <Bram@vim.org>
parents:
19332
diff
changeset
|
310 assert_equal("yes", AndOr(4)) |
61646c189622
patch 8.2.0225: compiling lambda not tested yet
Bram Moolenaar <Bram@vim.org>
parents:
19332
diff
changeset
|
311 let instr = execute('disassemble AndOr') |
61646c189622
patch 8.2.0225: compiling lambda not tested yet
Bram Moolenaar <Bram@vim.org>
parents:
19332
diff
changeset
|
312 assert_match('AndOr.*' |
61646c189622
patch 8.2.0225: compiling lambda not tested yet
Bram Moolenaar <Bram@vim.org>
parents:
19332
diff
changeset
|
313 \ .. 'if arg == 1 && arg != 2 || arg == 4.*' |
61646c189622
patch 8.2.0225: compiling lambda not tested yet
Bram Moolenaar <Bram@vim.org>
parents:
19332
diff
changeset
|
314 \ .. '\d LOAD arg\[-1].*' |
61646c189622
patch 8.2.0225: compiling lambda not tested yet
Bram Moolenaar <Bram@vim.org>
parents:
19332
diff
changeset
|
315 \ .. '\d PUSHNR 1.*' |
61646c189622
patch 8.2.0225: compiling lambda not tested yet
Bram Moolenaar <Bram@vim.org>
parents:
19332
diff
changeset
|
316 \ .. '\d COMPAREANY ==.*' |
61646c189622
patch 8.2.0225: compiling lambda not tested yet
Bram Moolenaar <Bram@vim.org>
parents:
19332
diff
changeset
|
317 \ .. '\d JUMP_AND_KEEP_IF_FALSE -> \d\+.*' |
61646c189622
patch 8.2.0225: compiling lambda not tested yet
Bram Moolenaar <Bram@vim.org>
parents:
19332
diff
changeset
|
318 \ .. '\d LOAD arg\[-1].*' |
61646c189622
patch 8.2.0225: compiling lambda not tested yet
Bram Moolenaar <Bram@vim.org>
parents:
19332
diff
changeset
|
319 \ .. '\d PUSHNR 2.*' |
61646c189622
patch 8.2.0225: compiling lambda not tested yet
Bram Moolenaar <Bram@vim.org>
parents:
19332
diff
changeset
|
320 \ .. '\d COMPAREANY !=.*' |
61646c189622
patch 8.2.0225: compiling lambda not tested yet
Bram Moolenaar <Bram@vim.org>
parents:
19332
diff
changeset
|
321 \ .. '\d JUMP_AND_KEEP_IF_TRUE -> \d\+.*' |
61646c189622
patch 8.2.0225: compiling lambda not tested yet
Bram Moolenaar <Bram@vim.org>
parents:
19332
diff
changeset
|
322 \ .. '\d LOAD arg\[-1].*' |
61646c189622
patch 8.2.0225: compiling lambda not tested yet
Bram Moolenaar <Bram@vim.org>
parents:
19332
diff
changeset
|
323 \ .. '\d PUSHNR 4.*' |
61646c189622
patch 8.2.0225: compiling lambda not tested yet
Bram Moolenaar <Bram@vim.org>
parents:
19332
diff
changeset
|
324 \ .. '\d COMPAREANY ==.*' |
61646c189622
patch 8.2.0225: compiling lambda not tested yet
Bram Moolenaar <Bram@vim.org>
parents:
19332
diff
changeset
|
325 \ .. '\d JUMP_IF_FALSE -> \d\+.*' |
61646c189622
patch 8.2.0225: compiling lambda not tested yet
Bram Moolenaar <Bram@vim.org>
parents:
19332
diff
changeset
|
326 \, instr) |
61646c189622
patch 8.2.0225: compiling lambda not tested yet
Bram Moolenaar <Bram@vim.org>
parents:
19332
diff
changeset
|
327 enddef |
61646c189622
patch 8.2.0225: compiling lambda not tested yet
Bram Moolenaar <Bram@vim.org>
parents:
19332
diff
changeset
|
328 |
19336
1cd6eab65ce0
patch 8.2.0226: compiling for loop not tested
Bram Moolenaar <Bram@vim.org>
parents:
19334
diff
changeset
|
329 def ForLoop(): list<number> |
1cd6eab65ce0
patch 8.2.0226: compiling for loop not tested
Bram Moolenaar <Bram@vim.org>
parents:
19334
diff
changeset
|
330 let res: list<number> |
1cd6eab65ce0
patch 8.2.0226: compiling for loop not tested
Bram Moolenaar <Bram@vim.org>
parents:
19334
diff
changeset
|
331 for i in range(3) |
1cd6eab65ce0
patch 8.2.0226: compiling for loop not tested
Bram Moolenaar <Bram@vim.org>
parents:
19334
diff
changeset
|
332 res->add(i) |
1cd6eab65ce0
patch 8.2.0226: compiling for loop not tested
Bram Moolenaar <Bram@vim.org>
parents:
19334
diff
changeset
|
333 endfor |
1cd6eab65ce0
patch 8.2.0226: compiling for loop not tested
Bram Moolenaar <Bram@vim.org>
parents:
19334
diff
changeset
|
334 return res |
1cd6eab65ce0
patch 8.2.0226: compiling for loop not tested
Bram Moolenaar <Bram@vim.org>
parents:
19334
diff
changeset
|
335 enddef |
1cd6eab65ce0
patch 8.2.0226: compiling for loop not tested
Bram Moolenaar <Bram@vim.org>
parents:
19334
diff
changeset
|
336 |
19342
8ff84bc1c89b
patch 8.2.0229: compare instructions not tested
Bram Moolenaar <Bram@vim.org>
parents:
19338
diff
changeset
|
337 def Test_disassemble_for_loop() |
19336
1cd6eab65ce0
patch 8.2.0226: compiling for loop not tested
Bram Moolenaar <Bram@vim.org>
parents:
19334
diff
changeset
|
338 assert_equal([0, 1, 2], ForLoop()) |
1cd6eab65ce0
patch 8.2.0226: compiling for loop not tested
Bram Moolenaar <Bram@vim.org>
parents:
19334
diff
changeset
|
339 let instr = execute('disassemble ForLoop') |
1cd6eab65ce0
patch 8.2.0226: compiling for loop not tested
Bram Moolenaar <Bram@vim.org>
parents:
19334
diff
changeset
|
340 assert_match('ForLoop.*' |
1cd6eab65ce0
patch 8.2.0226: compiling for loop not tested
Bram Moolenaar <Bram@vim.org>
parents:
19334
diff
changeset
|
341 \ .. 'let res: list<number>.*' |
1cd6eab65ce0
patch 8.2.0226: compiling for loop not tested
Bram Moolenaar <Bram@vim.org>
parents:
19334
diff
changeset
|
342 \ .. ' NEWLIST size 0.*' |
1cd6eab65ce0
patch 8.2.0226: compiling for loop not tested
Bram Moolenaar <Bram@vim.org>
parents:
19334
diff
changeset
|
343 \ .. '\d STORE $0.*' |
1cd6eab65ce0
patch 8.2.0226: compiling for loop not tested
Bram Moolenaar <Bram@vim.org>
parents:
19334
diff
changeset
|
344 \ .. 'for i in range(3).*' |
1cd6eab65ce0
patch 8.2.0226: compiling for loop not tested
Bram Moolenaar <Bram@vim.org>
parents:
19334
diff
changeset
|
345 \ .. '\d STORE -1 in $1.*' |
1cd6eab65ce0
patch 8.2.0226: compiling for loop not tested
Bram Moolenaar <Bram@vim.org>
parents:
19334
diff
changeset
|
346 \ .. '\d PUSHNR 3.*' |
1cd6eab65ce0
patch 8.2.0226: compiling for loop not tested
Bram Moolenaar <Bram@vim.org>
parents:
19334
diff
changeset
|
347 \ .. '\d BCALL range(argc 1).*' |
1cd6eab65ce0
patch 8.2.0226: compiling for loop not tested
Bram Moolenaar <Bram@vim.org>
parents:
19334
diff
changeset
|
348 \ .. '\d FOR $1 -> \d\+.*' |
1cd6eab65ce0
patch 8.2.0226: compiling for loop not tested
Bram Moolenaar <Bram@vim.org>
parents:
19334
diff
changeset
|
349 \ .. '\d STORE $2.*' |
1cd6eab65ce0
patch 8.2.0226: compiling for loop not tested
Bram Moolenaar <Bram@vim.org>
parents:
19334
diff
changeset
|
350 \ .. 'res->add(i).*' |
1cd6eab65ce0
patch 8.2.0226: compiling for loop not tested
Bram Moolenaar <Bram@vim.org>
parents:
19334
diff
changeset
|
351 \ .. '\d LOAD $0.*' |
1cd6eab65ce0
patch 8.2.0226: compiling for loop not tested
Bram Moolenaar <Bram@vim.org>
parents:
19334
diff
changeset
|
352 \ .. '\d LOAD $2.*' |
1cd6eab65ce0
patch 8.2.0226: compiling for loop not tested
Bram Moolenaar <Bram@vim.org>
parents:
19334
diff
changeset
|
353 \ .. '\d BCALL add(argc 2).*' |
1cd6eab65ce0
patch 8.2.0226: compiling for loop not tested
Bram Moolenaar <Bram@vim.org>
parents:
19334
diff
changeset
|
354 \ .. '\d DROP.*' |
1cd6eab65ce0
patch 8.2.0226: compiling for loop not tested
Bram Moolenaar <Bram@vim.org>
parents:
19334
diff
changeset
|
355 \ .. 'endfor.*' |
1cd6eab65ce0
patch 8.2.0226: compiling for loop not tested
Bram Moolenaar <Bram@vim.org>
parents:
19334
diff
changeset
|
356 \ .. '\d JUMP -> \d\+.*' |
1cd6eab65ce0
patch 8.2.0226: compiling for loop not tested
Bram Moolenaar <Bram@vim.org>
parents:
19334
diff
changeset
|
357 \ .. '\d DROP.*' |
1cd6eab65ce0
patch 8.2.0226: compiling for loop not tested
Bram Moolenaar <Bram@vim.org>
parents:
19334
diff
changeset
|
358 \, instr) |
1cd6eab65ce0
patch 8.2.0226: compiling for loop not tested
Bram Moolenaar <Bram@vim.org>
parents:
19334
diff
changeset
|
359 enddef |
1cd6eab65ce0
patch 8.2.0226: compiling for loop not tested
Bram Moolenaar <Bram@vim.org>
parents:
19334
diff
changeset
|
360 |
19338
ef432264b88a
patch 8.2.0227: compiling a few instructions not tested
Bram Moolenaar <Bram@vim.org>
parents:
19336
diff
changeset
|
361 let g:number = 42 |
ef432264b88a
patch 8.2.0227: compiling a few instructions not tested
Bram Moolenaar <Bram@vim.org>
parents:
19336
diff
changeset
|
362 |
ef432264b88a
patch 8.2.0227: compiling a few instructions not tested
Bram Moolenaar <Bram@vim.org>
parents:
19336
diff
changeset
|
363 def Computing() |
ef432264b88a
patch 8.2.0227: compiling a few instructions not tested
Bram Moolenaar <Bram@vim.org>
parents:
19336
diff
changeset
|
364 let nr = 3 |
ef432264b88a
patch 8.2.0227: compiling a few instructions not tested
Bram Moolenaar <Bram@vim.org>
parents:
19336
diff
changeset
|
365 let nrres = nr + 7 |
ef432264b88a
patch 8.2.0227: compiling a few instructions not tested
Bram Moolenaar <Bram@vim.org>
parents:
19336
diff
changeset
|
366 nrres = nr - 7 |
ef432264b88a
patch 8.2.0227: compiling a few instructions not tested
Bram Moolenaar <Bram@vim.org>
parents:
19336
diff
changeset
|
367 nrres = nr * 7 |
ef432264b88a
patch 8.2.0227: compiling a few instructions not tested
Bram Moolenaar <Bram@vim.org>
parents:
19336
diff
changeset
|
368 nrres = nr / 7 |
ef432264b88a
patch 8.2.0227: compiling a few instructions not tested
Bram Moolenaar <Bram@vim.org>
parents:
19336
diff
changeset
|
369 nrres = nr % 7 |
ef432264b88a
patch 8.2.0227: compiling a few instructions not tested
Bram Moolenaar <Bram@vim.org>
parents:
19336
diff
changeset
|
370 |
ef432264b88a
patch 8.2.0227: compiling a few instructions not tested
Bram Moolenaar <Bram@vim.org>
parents:
19336
diff
changeset
|
371 let anyres = g:number + 7 |
ef432264b88a
patch 8.2.0227: compiling a few instructions not tested
Bram Moolenaar <Bram@vim.org>
parents:
19336
diff
changeset
|
372 anyres = g:number - 7 |
ef432264b88a
patch 8.2.0227: compiling a few instructions not tested
Bram Moolenaar <Bram@vim.org>
parents:
19336
diff
changeset
|
373 anyres = g:number * 7 |
ef432264b88a
patch 8.2.0227: compiling a few instructions not tested
Bram Moolenaar <Bram@vim.org>
parents:
19336
diff
changeset
|
374 anyres = g:number / 7 |
ef432264b88a
patch 8.2.0227: compiling a few instructions not tested
Bram Moolenaar <Bram@vim.org>
parents:
19336
diff
changeset
|
375 anyres = g:number % 7 |
ef432264b88a
patch 8.2.0227: compiling a few instructions not tested
Bram Moolenaar <Bram@vim.org>
parents:
19336
diff
changeset
|
376 |
ef432264b88a
patch 8.2.0227: compiling a few instructions not tested
Bram Moolenaar <Bram@vim.org>
parents:
19336
diff
changeset
|
377 if has('float') |
ef432264b88a
patch 8.2.0227: compiling a few instructions not tested
Bram Moolenaar <Bram@vim.org>
parents:
19336
diff
changeset
|
378 let fl = 3.0 |
ef432264b88a
patch 8.2.0227: compiling a few instructions not tested
Bram Moolenaar <Bram@vim.org>
parents:
19336
diff
changeset
|
379 let flres = fl + 7.0 |
ef432264b88a
patch 8.2.0227: compiling a few instructions not tested
Bram Moolenaar <Bram@vim.org>
parents:
19336
diff
changeset
|
380 flres = fl - 7.0 |
ef432264b88a
patch 8.2.0227: compiling a few instructions not tested
Bram Moolenaar <Bram@vim.org>
parents:
19336
diff
changeset
|
381 flres = fl * 7.0 |
ef432264b88a
patch 8.2.0227: compiling a few instructions not tested
Bram Moolenaar <Bram@vim.org>
parents:
19336
diff
changeset
|
382 flres = fl / 7.0 |
ef432264b88a
patch 8.2.0227: compiling a few instructions not tested
Bram Moolenaar <Bram@vim.org>
parents:
19336
diff
changeset
|
383 endif |
ef432264b88a
patch 8.2.0227: compiling a few instructions not tested
Bram Moolenaar <Bram@vim.org>
parents:
19336
diff
changeset
|
384 enddef |
ef432264b88a
patch 8.2.0227: compiling a few instructions not tested
Bram Moolenaar <Bram@vim.org>
parents:
19336
diff
changeset
|
385 |
19342
8ff84bc1c89b
patch 8.2.0229: compare instructions not tested
Bram Moolenaar <Bram@vim.org>
parents:
19338
diff
changeset
|
386 def Test_disassemble_computing() |
19338
ef432264b88a
patch 8.2.0227: compiling a few instructions not tested
Bram Moolenaar <Bram@vim.org>
parents:
19336
diff
changeset
|
387 let instr = execute('disassemble Computing') |
ef432264b88a
patch 8.2.0227: compiling a few instructions not tested
Bram Moolenaar <Bram@vim.org>
parents:
19336
diff
changeset
|
388 assert_match('Computing.*' |
ef432264b88a
patch 8.2.0227: compiling a few instructions not tested
Bram Moolenaar <Bram@vim.org>
parents:
19336
diff
changeset
|
389 \ .. 'let nr = 3.*' |
ef432264b88a
patch 8.2.0227: compiling a few instructions not tested
Bram Moolenaar <Bram@vim.org>
parents:
19336
diff
changeset
|
390 \ .. '\d STORE 3 in $0.*' |
ef432264b88a
patch 8.2.0227: compiling a few instructions not tested
Bram Moolenaar <Bram@vim.org>
parents:
19336
diff
changeset
|
391 \ .. 'let nrres = nr + 7.*' |
ef432264b88a
patch 8.2.0227: compiling a few instructions not tested
Bram Moolenaar <Bram@vim.org>
parents:
19336
diff
changeset
|
392 \ .. '\d LOAD $0.*' |
ef432264b88a
patch 8.2.0227: compiling a few instructions not tested
Bram Moolenaar <Bram@vim.org>
parents:
19336
diff
changeset
|
393 \ .. '\d PUSHNR 7.*' |
ef432264b88a
patch 8.2.0227: compiling a few instructions not tested
Bram Moolenaar <Bram@vim.org>
parents:
19336
diff
changeset
|
394 \ .. '\d OPNR +.*' |
ef432264b88a
patch 8.2.0227: compiling a few instructions not tested
Bram Moolenaar <Bram@vim.org>
parents:
19336
diff
changeset
|
395 \ .. '\d STORE $1.*' |
ef432264b88a
patch 8.2.0227: compiling a few instructions not tested
Bram Moolenaar <Bram@vim.org>
parents:
19336
diff
changeset
|
396 \ .. 'nrres = nr - 7.*' |
ef432264b88a
patch 8.2.0227: compiling a few instructions not tested
Bram Moolenaar <Bram@vim.org>
parents:
19336
diff
changeset
|
397 \ .. '\d OPNR -.*' |
ef432264b88a
patch 8.2.0227: compiling a few instructions not tested
Bram Moolenaar <Bram@vim.org>
parents:
19336
diff
changeset
|
398 \ .. 'nrres = nr \* 7.*' |
ef432264b88a
patch 8.2.0227: compiling a few instructions not tested
Bram Moolenaar <Bram@vim.org>
parents:
19336
diff
changeset
|
399 \ .. '\d OPNR \*.*' |
ef432264b88a
patch 8.2.0227: compiling a few instructions not tested
Bram Moolenaar <Bram@vim.org>
parents:
19336
diff
changeset
|
400 \ .. 'nrres = nr / 7.*' |
ef432264b88a
patch 8.2.0227: compiling a few instructions not tested
Bram Moolenaar <Bram@vim.org>
parents:
19336
diff
changeset
|
401 \ .. '\d OPNR /.*' |
ef432264b88a
patch 8.2.0227: compiling a few instructions not tested
Bram Moolenaar <Bram@vim.org>
parents:
19336
diff
changeset
|
402 \ .. 'nrres = nr % 7.*' |
ef432264b88a
patch 8.2.0227: compiling a few instructions not tested
Bram Moolenaar <Bram@vim.org>
parents:
19336
diff
changeset
|
403 \ .. '\d OPNR %.*' |
ef432264b88a
patch 8.2.0227: compiling a few instructions not tested
Bram Moolenaar <Bram@vim.org>
parents:
19336
diff
changeset
|
404 \ .. 'let anyres = g:number + 7.*' |
ef432264b88a
patch 8.2.0227: compiling a few instructions not tested
Bram Moolenaar <Bram@vim.org>
parents:
19336
diff
changeset
|
405 \ .. '\d LOADG g:number.*' |
ef432264b88a
patch 8.2.0227: compiling a few instructions not tested
Bram Moolenaar <Bram@vim.org>
parents:
19336
diff
changeset
|
406 \ .. '\d PUSHNR 7.*' |
ef432264b88a
patch 8.2.0227: compiling a few instructions not tested
Bram Moolenaar <Bram@vim.org>
parents:
19336
diff
changeset
|
407 \ .. '\d OPANY +.*' |
ef432264b88a
patch 8.2.0227: compiling a few instructions not tested
Bram Moolenaar <Bram@vim.org>
parents:
19336
diff
changeset
|
408 \ .. '\d STORE $2.*' |
ef432264b88a
patch 8.2.0227: compiling a few instructions not tested
Bram Moolenaar <Bram@vim.org>
parents:
19336
diff
changeset
|
409 \ .. 'anyres = g:number - 7.*' |
ef432264b88a
patch 8.2.0227: compiling a few instructions not tested
Bram Moolenaar <Bram@vim.org>
parents:
19336
diff
changeset
|
410 \ .. '\d OPANY -.*' |
ef432264b88a
patch 8.2.0227: compiling a few instructions not tested
Bram Moolenaar <Bram@vim.org>
parents:
19336
diff
changeset
|
411 \ .. 'anyres = g:number \* 7.*' |
ef432264b88a
patch 8.2.0227: compiling a few instructions not tested
Bram Moolenaar <Bram@vim.org>
parents:
19336
diff
changeset
|
412 \ .. '\d OPANY \*.*' |
ef432264b88a
patch 8.2.0227: compiling a few instructions not tested
Bram Moolenaar <Bram@vim.org>
parents:
19336
diff
changeset
|
413 \ .. 'anyres = g:number / 7.*' |
ef432264b88a
patch 8.2.0227: compiling a few instructions not tested
Bram Moolenaar <Bram@vim.org>
parents:
19336
diff
changeset
|
414 \ .. '\d OPANY /.*' |
ef432264b88a
patch 8.2.0227: compiling a few instructions not tested
Bram Moolenaar <Bram@vim.org>
parents:
19336
diff
changeset
|
415 \ .. 'anyres = g:number % 7.*' |
ef432264b88a
patch 8.2.0227: compiling a few instructions not tested
Bram Moolenaar <Bram@vim.org>
parents:
19336
diff
changeset
|
416 \ .. '\d OPANY %.*' |
ef432264b88a
patch 8.2.0227: compiling a few instructions not tested
Bram Moolenaar <Bram@vim.org>
parents:
19336
diff
changeset
|
417 \, instr) |
ef432264b88a
patch 8.2.0227: compiling a few instructions not tested
Bram Moolenaar <Bram@vim.org>
parents:
19336
diff
changeset
|
418 if has('float') |
ef432264b88a
patch 8.2.0227: compiling a few instructions not tested
Bram Moolenaar <Bram@vim.org>
parents:
19336
diff
changeset
|
419 assert_match('Computing.*' |
ef432264b88a
patch 8.2.0227: compiling a few instructions not tested
Bram Moolenaar <Bram@vim.org>
parents:
19336
diff
changeset
|
420 \ .. 'let fl = 3.0.*' |
ef432264b88a
patch 8.2.0227: compiling a few instructions not tested
Bram Moolenaar <Bram@vim.org>
parents:
19336
diff
changeset
|
421 \ .. '\d PUSHF 3.0.*' |
ef432264b88a
patch 8.2.0227: compiling a few instructions not tested
Bram Moolenaar <Bram@vim.org>
parents:
19336
diff
changeset
|
422 \ .. '\d STORE $3.*' |
ef432264b88a
patch 8.2.0227: compiling a few instructions not tested
Bram Moolenaar <Bram@vim.org>
parents:
19336
diff
changeset
|
423 \ .. 'let flres = fl + 7.0.*' |
ef432264b88a
patch 8.2.0227: compiling a few instructions not tested
Bram Moolenaar <Bram@vim.org>
parents:
19336
diff
changeset
|
424 \ .. '\d LOAD $3.*' |
ef432264b88a
patch 8.2.0227: compiling a few instructions not tested
Bram Moolenaar <Bram@vim.org>
parents:
19336
diff
changeset
|
425 \ .. '\d PUSHF 7.0.*' |
ef432264b88a
patch 8.2.0227: compiling a few instructions not tested
Bram Moolenaar <Bram@vim.org>
parents:
19336
diff
changeset
|
426 \ .. '\d OPFLOAT +.*' |
ef432264b88a
patch 8.2.0227: compiling a few instructions not tested
Bram Moolenaar <Bram@vim.org>
parents:
19336
diff
changeset
|
427 \ .. '\d STORE $4.*' |
ef432264b88a
patch 8.2.0227: compiling a few instructions not tested
Bram Moolenaar <Bram@vim.org>
parents:
19336
diff
changeset
|
428 \ .. 'flres = fl - 7.0.*' |
ef432264b88a
patch 8.2.0227: compiling a few instructions not tested
Bram Moolenaar <Bram@vim.org>
parents:
19336
diff
changeset
|
429 \ .. '\d OPFLOAT -.*' |
ef432264b88a
patch 8.2.0227: compiling a few instructions not tested
Bram Moolenaar <Bram@vim.org>
parents:
19336
diff
changeset
|
430 \ .. 'flres = fl \* 7.0.*' |
ef432264b88a
patch 8.2.0227: compiling a few instructions not tested
Bram Moolenaar <Bram@vim.org>
parents:
19336
diff
changeset
|
431 \ .. '\d OPFLOAT \*.*' |
ef432264b88a
patch 8.2.0227: compiling a few instructions not tested
Bram Moolenaar <Bram@vim.org>
parents:
19336
diff
changeset
|
432 \ .. 'flres = fl / 7.0.*' |
ef432264b88a
patch 8.2.0227: compiling a few instructions not tested
Bram Moolenaar <Bram@vim.org>
parents:
19336
diff
changeset
|
433 \ .. '\d OPFLOAT /.*' |
ef432264b88a
patch 8.2.0227: compiling a few instructions not tested
Bram Moolenaar <Bram@vim.org>
parents:
19336
diff
changeset
|
434 \, instr) |
ef432264b88a
patch 8.2.0227: compiling a few instructions not tested
Bram Moolenaar <Bram@vim.org>
parents:
19336
diff
changeset
|
435 endif |
ef432264b88a
patch 8.2.0227: compiling a few instructions not tested
Bram Moolenaar <Bram@vim.org>
parents:
19336
diff
changeset
|
436 enddef |
19330
9c8b803fe598
patch 8.2.0223: some instructions not yet tested
Bram Moolenaar <Bram@vim.org>
parents:
diff
changeset
|
437 |
19342
8ff84bc1c89b
patch 8.2.0229: compare instructions not tested
Bram Moolenaar <Bram@vim.org>
parents:
19338
diff
changeset
|
438 def Test_disassemble_compare() |
8ff84bc1c89b
patch 8.2.0229: compare instructions not tested
Bram Moolenaar <Bram@vim.org>
parents:
19338
diff
changeset
|
439 " TODO: COMPAREFUNC |
8ff84bc1c89b
patch 8.2.0229: compare instructions not tested
Bram Moolenaar <Bram@vim.org>
parents:
19338
diff
changeset
|
440 let cases = [ |
8ff84bc1c89b
patch 8.2.0229: compare instructions not tested
Bram Moolenaar <Bram@vim.org>
parents:
19338
diff
changeset
|
441 \ ['true == false', 'COMPAREBOOL =='], |
8ff84bc1c89b
patch 8.2.0229: compare instructions not tested
Bram Moolenaar <Bram@vim.org>
parents:
19338
diff
changeset
|
442 \ ['true != false', 'COMPAREBOOL !='], |
8ff84bc1c89b
patch 8.2.0229: compare instructions not tested
Bram Moolenaar <Bram@vim.org>
parents:
19338
diff
changeset
|
443 \ ['v:none == v:null', 'COMPARESPECIAL =='], |
8ff84bc1c89b
patch 8.2.0229: compare instructions not tested
Bram Moolenaar <Bram@vim.org>
parents:
19338
diff
changeset
|
444 \ ['v:none != v:null', 'COMPARESPECIAL !='], |
8ff84bc1c89b
patch 8.2.0229: compare instructions not tested
Bram Moolenaar <Bram@vim.org>
parents:
19338
diff
changeset
|
445 \ |
8ff84bc1c89b
patch 8.2.0229: compare instructions not tested
Bram Moolenaar <Bram@vim.org>
parents:
19338
diff
changeset
|
446 \ ['111 == 222', 'COMPARENR =='], |
8ff84bc1c89b
patch 8.2.0229: compare instructions not tested
Bram Moolenaar <Bram@vim.org>
parents:
19338
diff
changeset
|
447 \ ['111 != 222', 'COMPARENR !='], |
8ff84bc1c89b
patch 8.2.0229: compare instructions not tested
Bram Moolenaar <Bram@vim.org>
parents:
19338
diff
changeset
|
448 \ ['111 > 222', 'COMPARENR >'], |
8ff84bc1c89b
patch 8.2.0229: compare instructions not tested
Bram Moolenaar <Bram@vim.org>
parents:
19338
diff
changeset
|
449 \ ['111 < 222', 'COMPARENR <'], |
8ff84bc1c89b
patch 8.2.0229: compare instructions not tested
Bram Moolenaar <Bram@vim.org>
parents:
19338
diff
changeset
|
450 \ ['111 >= 222', 'COMPARENR >='], |
8ff84bc1c89b
patch 8.2.0229: compare instructions not tested
Bram Moolenaar <Bram@vim.org>
parents:
19338
diff
changeset
|
451 \ ['111 <= 222', 'COMPARENR <='], |
8ff84bc1c89b
patch 8.2.0229: compare instructions not tested
Bram Moolenaar <Bram@vim.org>
parents:
19338
diff
changeset
|
452 \ ['111 =~ 222', 'COMPARENR =\~'], |
8ff84bc1c89b
patch 8.2.0229: compare instructions not tested
Bram Moolenaar <Bram@vim.org>
parents:
19338
diff
changeset
|
453 \ ['111 !~ 222', 'COMPARENR !\~'], |
8ff84bc1c89b
patch 8.2.0229: compare instructions not tested
Bram Moolenaar <Bram@vim.org>
parents:
19338
diff
changeset
|
454 \ |
8ff84bc1c89b
patch 8.2.0229: compare instructions not tested
Bram Moolenaar <Bram@vim.org>
parents:
19338
diff
changeset
|
455 \ ['"xx" == "yy"', 'COMPARESTRING =='], |
8ff84bc1c89b
patch 8.2.0229: compare instructions not tested
Bram Moolenaar <Bram@vim.org>
parents:
19338
diff
changeset
|
456 \ ['"xx" != "yy"', 'COMPARESTRING !='], |
8ff84bc1c89b
patch 8.2.0229: compare instructions not tested
Bram Moolenaar <Bram@vim.org>
parents:
19338
diff
changeset
|
457 \ ['"xx" > "yy"', 'COMPARESTRING >'], |
8ff84bc1c89b
patch 8.2.0229: compare instructions not tested
Bram Moolenaar <Bram@vim.org>
parents:
19338
diff
changeset
|
458 \ ['"xx" < "yy"', 'COMPARESTRING <'], |
8ff84bc1c89b
patch 8.2.0229: compare instructions not tested
Bram Moolenaar <Bram@vim.org>
parents:
19338
diff
changeset
|
459 \ ['"xx" >= "yy"', 'COMPARESTRING >='], |
8ff84bc1c89b
patch 8.2.0229: compare instructions not tested
Bram Moolenaar <Bram@vim.org>
parents:
19338
diff
changeset
|
460 \ ['"xx" <= "yy"', 'COMPARESTRING <='], |
8ff84bc1c89b
patch 8.2.0229: compare instructions not tested
Bram Moolenaar <Bram@vim.org>
parents:
19338
diff
changeset
|
461 \ ['"xx" =~ "yy"', 'COMPARESTRING =\~'], |
8ff84bc1c89b
patch 8.2.0229: compare instructions not tested
Bram Moolenaar <Bram@vim.org>
parents:
19338
diff
changeset
|
462 \ ['"xx" !~ "yy"', 'COMPARESTRING !\~'], |
8ff84bc1c89b
patch 8.2.0229: compare instructions not tested
Bram Moolenaar <Bram@vim.org>
parents:
19338
diff
changeset
|
463 \ ['"xx" is "yy"', 'COMPARESTRING is'], |
8ff84bc1c89b
patch 8.2.0229: compare instructions not tested
Bram Moolenaar <Bram@vim.org>
parents:
19338
diff
changeset
|
464 \ ['"xx" isnot "yy"', 'COMPARESTRING isnot'], |
8ff84bc1c89b
patch 8.2.0229: compare instructions not tested
Bram Moolenaar <Bram@vim.org>
parents:
19338
diff
changeset
|
465 \ |
8ff84bc1c89b
patch 8.2.0229: compare instructions not tested
Bram Moolenaar <Bram@vim.org>
parents:
19338
diff
changeset
|
466 \ ['0z11 == 0z22', 'COMPAREBLOB =='], |
8ff84bc1c89b
patch 8.2.0229: compare instructions not tested
Bram Moolenaar <Bram@vim.org>
parents:
19338
diff
changeset
|
467 \ ['0z11 != 0z22', 'COMPAREBLOB !='], |
8ff84bc1c89b
patch 8.2.0229: compare instructions not tested
Bram Moolenaar <Bram@vim.org>
parents:
19338
diff
changeset
|
468 \ ['0z11 is 0z22', 'COMPAREBLOB is'], |
8ff84bc1c89b
patch 8.2.0229: compare instructions not tested
Bram Moolenaar <Bram@vim.org>
parents:
19338
diff
changeset
|
469 \ ['0z11 isnot 0z22', 'COMPAREBLOB isnot'], |
8ff84bc1c89b
patch 8.2.0229: compare instructions not tested
Bram Moolenaar <Bram@vim.org>
parents:
19338
diff
changeset
|
470 \ |
8ff84bc1c89b
patch 8.2.0229: compare instructions not tested
Bram Moolenaar <Bram@vim.org>
parents:
19338
diff
changeset
|
471 \ ['[1,2] == [3,4]', 'COMPARELIST =='], |
8ff84bc1c89b
patch 8.2.0229: compare instructions not tested
Bram Moolenaar <Bram@vim.org>
parents:
19338
diff
changeset
|
472 \ ['[1,2] != [3,4]', 'COMPARELIST !='], |
8ff84bc1c89b
patch 8.2.0229: compare instructions not tested
Bram Moolenaar <Bram@vim.org>
parents:
19338
diff
changeset
|
473 \ ['[1,2] is [3,4]', 'COMPARELIST is'], |
8ff84bc1c89b
patch 8.2.0229: compare instructions not tested
Bram Moolenaar <Bram@vim.org>
parents:
19338
diff
changeset
|
474 \ ['[1,2] isnot [3,4]', 'COMPARELIST isnot'], |
8ff84bc1c89b
patch 8.2.0229: compare instructions not tested
Bram Moolenaar <Bram@vim.org>
parents:
19338
diff
changeset
|
475 \ |
8ff84bc1c89b
patch 8.2.0229: compare instructions not tested
Bram Moolenaar <Bram@vim.org>
parents:
19338
diff
changeset
|
476 \ ['#{a:1} == #{x:2}', 'COMPAREDICT =='], |
8ff84bc1c89b
patch 8.2.0229: compare instructions not tested
Bram Moolenaar <Bram@vim.org>
parents:
19338
diff
changeset
|
477 \ ['#{a:1} != #{x:2}', 'COMPAREDICT !='], |
8ff84bc1c89b
patch 8.2.0229: compare instructions not tested
Bram Moolenaar <Bram@vim.org>
parents:
19338
diff
changeset
|
478 \ ['#{a:1} is #{x:2}', 'COMPAREDICT is'], |
8ff84bc1c89b
patch 8.2.0229: compare instructions not tested
Bram Moolenaar <Bram@vim.org>
parents:
19338
diff
changeset
|
479 \ ['#{a:1} isnot #{x:2}', 'COMPAREDICT isnot'], |
8ff84bc1c89b
patch 8.2.0229: compare instructions not tested
Bram Moolenaar <Bram@vim.org>
parents:
19338
diff
changeset
|
480 \ |
8ff84bc1c89b
patch 8.2.0229: compare instructions not tested
Bram Moolenaar <Bram@vim.org>
parents:
19338
diff
changeset
|
481 \ ['{->33} == {->44}', 'COMPAREPARTIAL =='], |
8ff84bc1c89b
patch 8.2.0229: compare instructions not tested
Bram Moolenaar <Bram@vim.org>
parents:
19338
diff
changeset
|
482 \ ['{->33} != {->44}', 'COMPAREPARTIAL !='], |
8ff84bc1c89b
patch 8.2.0229: compare instructions not tested
Bram Moolenaar <Bram@vim.org>
parents:
19338
diff
changeset
|
483 \ ['{->33} is {->44}', 'COMPAREPARTIAL is'], |
8ff84bc1c89b
patch 8.2.0229: compare instructions not tested
Bram Moolenaar <Bram@vim.org>
parents:
19338
diff
changeset
|
484 \ ['{->33} isnot {->44}', 'COMPAREPARTIAL isnot'], |
8ff84bc1c89b
patch 8.2.0229: compare instructions not tested
Bram Moolenaar <Bram@vim.org>
parents:
19338
diff
changeset
|
485 \ |
8ff84bc1c89b
patch 8.2.0229: compare instructions not tested
Bram Moolenaar <Bram@vim.org>
parents:
19338
diff
changeset
|
486 \ ['77 == g:xx', 'COMPAREANY =='], |
8ff84bc1c89b
patch 8.2.0229: compare instructions not tested
Bram Moolenaar <Bram@vim.org>
parents:
19338
diff
changeset
|
487 \ ['77 != g:xx', 'COMPAREANY !='], |
8ff84bc1c89b
patch 8.2.0229: compare instructions not tested
Bram Moolenaar <Bram@vim.org>
parents:
19338
diff
changeset
|
488 \ ['77 > g:xx', 'COMPAREANY >'], |
8ff84bc1c89b
patch 8.2.0229: compare instructions not tested
Bram Moolenaar <Bram@vim.org>
parents:
19338
diff
changeset
|
489 \ ['77 < g:xx', 'COMPAREANY <'], |
8ff84bc1c89b
patch 8.2.0229: compare instructions not tested
Bram Moolenaar <Bram@vim.org>
parents:
19338
diff
changeset
|
490 \ ['77 >= g:xx', 'COMPAREANY >='], |
8ff84bc1c89b
patch 8.2.0229: compare instructions not tested
Bram Moolenaar <Bram@vim.org>
parents:
19338
diff
changeset
|
491 \ ['77 <= g:xx', 'COMPAREANY <='], |
8ff84bc1c89b
patch 8.2.0229: compare instructions not tested
Bram Moolenaar <Bram@vim.org>
parents:
19338
diff
changeset
|
492 \ ['77 =~ g:xx', 'COMPAREANY =\~'], |
8ff84bc1c89b
patch 8.2.0229: compare instructions not tested
Bram Moolenaar <Bram@vim.org>
parents:
19338
diff
changeset
|
493 \ ['77 !~ g:xx', 'COMPAREANY !\~'], |
8ff84bc1c89b
patch 8.2.0229: compare instructions not tested
Bram Moolenaar <Bram@vim.org>
parents:
19338
diff
changeset
|
494 \ ['77 is g:xx', 'COMPAREANY is'], |
8ff84bc1c89b
patch 8.2.0229: compare instructions not tested
Bram Moolenaar <Bram@vim.org>
parents:
19338
diff
changeset
|
495 \ ['77 isnot g:xx', 'COMPAREANY isnot'], |
8ff84bc1c89b
patch 8.2.0229: compare instructions not tested
Bram Moolenaar <Bram@vim.org>
parents:
19338
diff
changeset
|
496 \ ] |
8ff84bc1c89b
patch 8.2.0229: compare instructions not tested
Bram Moolenaar <Bram@vim.org>
parents:
19338
diff
changeset
|
497 if has('float') |
8ff84bc1c89b
patch 8.2.0229: compare instructions not tested
Bram Moolenaar <Bram@vim.org>
parents:
19338
diff
changeset
|
498 cases->extend([ |
8ff84bc1c89b
patch 8.2.0229: compare instructions not tested
Bram Moolenaar <Bram@vim.org>
parents:
19338
diff
changeset
|
499 \ ['1.1 == 2.2', 'COMPAREFLOAT =='], |
8ff84bc1c89b
patch 8.2.0229: compare instructions not tested
Bram Moolenaar <Bram@vim.org>
parents:
19338
diff
changeset
|
500 \ ['1.1 != 2.2', 'COMPAREFLOAT !='], |
8ff84bc1c89b
patch 8.2.0229: compare instructions not tested
Bram Moolenaar <Bram@vim.org>
parents:
19338
diff
changeset
|
501 \ ['1.1 > 2.2', 'COMPAREFLOAT >'], |
8ff84bc1c89b
patch 8.2.0229: compare instructions not tested
Bram Moolenaar <Bram@vim.org>
parents:
19338
diff
changeset
|
502 \ ['1.1 < 2.2', 'COMPAREFLOAT <'], |
8ff84bc1c89b
patch 8.2.0229: compare instructions not tested
Bram Moolenaar <Bram@vim.org>
parents:
19338
diff
changeset
|
503 \ ['1.1 >= 2.2', 'COMPAREFLOAT >='], |
8ff84bc1c89b
patch 8.2.0229: compare instructions not tested
Bram Moolenaar <Bram@vim.org>
parents:
19338
diff
changeset
|
504 \ ['1.1 <= 2.2', 'COMPAREFLOAT <='], |
8ff84bc1c89b
patch 8.2.0229: compare instructions not tested
Bram Moolenaar <Bram@vim.org>
parents:
19338
diff
changeset
|
505 \ ['1.1 =~ 2.2', 'COMPAREFLOAT =\~'], |
8ff84bc1c89b
patch 8.2.0229: compare instructions not tested
Bram Moolenaar <Bram@vim.org>
parents:
19338
diff
changeset
|
506 \ ['1.1 !~ 2.2', 'COMPAREFLOAT !\~'], |
8ff84bc1c89b
patch 8.2.0229: compare instructions not tested
Bram Moolenaar <Bram@vim.org>
parents:
19338
diff
changeset
|
507 \ ]) |
8ff84bc1c89b
patch 8.2.0229: compare instructions not tested
Bram Moolenaar <Bram@vim.org>
parents:
19338
diff
changeset
|
508 endif |
8ff84bc1c89b
patch 8.2.0229: compare instructions not tested
Bram Moolenaar <Bram@vim.org>
parents:
19338
diff
changeset
|
509 |
8ff84bc1c89b
patch 8.2.0229: compare instructions not tested
Bram Moolenaar <Bram@vim.org>
parents:
19338
diff
changeset
|
510 let nr = 1 |
8ff84bc1c89b
patch 8.2.0229: compare instructions not tested
Bram Moolenaar <Bram@vim.org>
parents:
19338
diff
changeset
|
511 for case in cases |
8ff84bc1c89b
patch 8.2.0229: compare instructions not tested
Bram Moolenaar <Bram@vim.org>
parents:
19338
diff
changeset
|
512 writefile(['def TestCase' .. nr .. '()', |
8ff84bc1c89b
patch 8.2.0229: compare instructions not tested
Bram Moolenaar <Bram@vim.org>
parents:
19338
diff
changeset
|
513 \ ' if ' .. case[0], |
8ff84bc1c89b
patch 8.2.0229: compare instructions not tested
Bram Moolenaar <Bram@vim.org>
parents:
19338
diff
changeset
|
514 \ ' echo 42' |
8ff84bc1c89b
patch 8.2.0229: compare instructions not tested
Bram Moolenaar <Bram@vim.org>
parents:
19338
diff
changeset
|
515 \ ' endif', |
8ff84bc1c89b
patch 8.2.0229: compare instructions not tested
Bram Moolenaar <Bram@vim.org>
parents:
19338
diff
changeset
|
516 \ 'enddef'], 'Xdisassemble') |
8ff84bc1c89b
patch 8.2.0229: compare instructions not tested
Bram Moolenaar <Bram@vim.org>
parents:
19338
diff
changeset
|
517 source Xdisassemble |
8ff84bc1c89b
patch 8.2.0229: compare instructions not tested
Bram Moolenaar <Bram@vim.org>
parents:
19338
diff
changeset
|
518 let instr = execute('disassemble TestCase' .. nr) |
8ff84bc1c89b
patch 8.2.0229: compare instructions not tested
Bram Moolenaar <Bram@vim.org>
parents:
19338
diff
changeset
|
519 assert_match('TestCase' .. nr .. '.*' |
8ff84bc1c89b
patch 8.2.0229: compare instructions not tested
Bram Moolenaar <Bram@vim.org>
parents:
19338
diff
changeset
|
520 \ .. 'if ' .. substitute(case[0], '[[~]', '\\\0', 'g') .. '.*' |
8ff84bc1c89b
patch 8.2.0229: compare instructions not tested
Bram Moolenaar <Bram@vim.org>
parents:
19338
diff
changeset
|
521 \ .. '\d \(PUSH\|FUNCREF\).*' |
8ff84bc1c89b
patch 8.2.0229: compare instructions not tested
Bram Moolenaar <Bram@vim.org>
parents:
19338
diff
changeset
|
522 \ .. '\d \(PUSH\|FUNCREF\|LOADG\).*' |
8ff84bc1c89b
patch 8.2.0229: compare instructions not tested
Bram Moolenaar <Bram@vim.org>
parents:
19338
diff
changeset
|
523 \ .. '\d ' .. case[1] .. '.*' |
8ff84bc1c89b
patch 8.2.0229: compare instructions not tested
Bram Moolenaar <Bram@vim.org>
parents:
19338
diff
changeset
|
524 \ .. '\d JUMP_IF_FALSE -> \d\+.*' |
8ff84bc1c89b
patch 8.2.0229: compare instructions not tested
Bram Moolenaar <Bram@vim.org>
parents:
19338
diff
changeset
|
525 \, instr) |
8ff84bc1c89b
patch 8.2.0229: compare instructions not tested
Bram Moolenaar <Bram@vim.org>
parents:
19338
diff
changeset
|
526 |
8ff84bc1c89b
patch 8.2.0229: compare instructions not tested
Bram Moolenaar <Bram@vim.org>
parents:
19338
diff
changeset
|
527 nr += 1 |
8ff84bc1c89b
patch 8.2.0229: compare instructions not tested
Bram Moolenaar <Bram@vim.org>
parents:
19338
diff
changeset
|
528 endfor |
8ff84bc1c89b
patch 8.2.0229: compare instructions not tested
Bram Moolenaar <Bram@vim.org>
parents:
19338
diff
changeset
|
529 |
8ff84bc1c89b
patch 8.2.0229: compare instructions not tested
Bram Moolenaar <Bram@vim.org>
parents:
19338
diff
changeset
|
530 " delete('Xdisassemble') |
8ff84bc1c89b
patch 8.2.0229: compare instructions not tested
Bram Moolenaar <Bram@vim.org>
parents:
19338
diff
changeset
|
531 enddef |
8ff84bc1c89b
patch 8.2.0229: compare instructions not tested
Bram Moolenaar <Bram@vim.org>
parents:
19338
diff
changeset
|
532 |
19330
9c8b803fe598
patch 8.2.0223: some instructions not yet tested
Bram Moolenaar <Bram@vim.org>
parents:
diff
changeset
|
533 " vim: ts=8 sw=2 sts=2 expandtab tw=80 fdm=marker |