@@ -44,30 +44,33 @@ func TestCompile(t *testing.T) {
44
44
`65535` ,
45
45
vm.Program {
46
46
Constants : []interface {}{
47
- int ( math .MaxUint16 ) ,
47
+ math .MaxUint16 ,
48
48
},
49
49
Bytecode : []vm.Opcode {
50
- vm .OpPush , 0 ,
50
+ vm .OpPush ,
51
51
},
52
+ Arguments : []int {0 },
52
53
},
53
54
},
54
55
{
55
56
`.5` ,
56
57
vm.Program {
57
58
Constants : []interface {}{
58
- float64 ( .5 ) ,
59
+ .5 ,
59
60
},
60
61
Bytecode : []vm.Opcode {
61
- vm .OpPush , 0 ,
62
+ vm .OpPush ,
62
63
},
64
+ Arguments : []int {0 },
63
65
},
64
66
},
65
67
{
66
68
`true` ,
67
69
vm.Program {
68
70
Bytecode : []vm.Opcode {
69
- vm .OpTrue , 0 ,
71
+ vm .OpTrue ,
70
72
},
73
+ Arguments : []int {0 },
71
74
},
72
75
},
73
76
{
@@ -77,8 +80,9 @@ func TestCompile(t *testing.T) {
77
80
"string" ,
78
81
},
79
82
Bytecode : []vm.Opcode {
80
- vm .OpPush , 0 ,
83
+ vm .OpPush ,
81
84
},
85
+ Arguments : []int {0 },
82
86
},
83
87
},
84
88
{
@@ -88,10 +92,11 @@ func TestCompile(t *testing.T) {
88
92
"string" ,
89
93
},
90
94
Bytecode : []vm.Opcode {
91
- vm .OpPush , 0 ,
92
- vm .OpPush , 0 ,
93
- vm .OpEqualString , 0 ,
95
+ vm .OpPush ,
96
+ vm .OpPush ,
97
+ vm .OpEqualString ,
94
98
},
99
+ Arguments : []int {0 , 0 , 0 },
95
100
},
96
101
},
97
102
{
@@ -101,33 +106,51 @@ func TestCompile(t *testing.T) {
101
106
int64 (1000000 ),
102
107
},
103
108
Bytecode : []vm.Opcode {
104
- vm .OpPush , 0 ,
105
- vm .OpPush , 0 ,
106
- vm .OpEqualInt , 0 ,
109
+ vm .OpPush ,
110
+ vm .OpPush ,
111
+ vm .OpEqualInt ,
107
112
},
113
+ Arguments : []int {0 , 0 , 0 },
108
114
},
109
115
},
110
116
{
111
117
`-1` ,
112
118
vm.Program {
113
119
Constants : []interface {}{- 1 },
114
120
Bytecode : []vm.Opcode {
115
- vm .OpPush , 0 ,
121
+ vm .OpPush ,
116
122
},
123
+ Arguments : []int {0 },
117
124
},
118
125
},
119
126
{
120
127
`true && true || true` ,
121
128
vm.Program {
122
129
Bytecode : []vm.Opcode {
123
- vm .OpTrue , 0 ,
124
- vm .OpJumpIfFalse , 4 ,
125
- vm .OpPop , 0 ,
126
- vm .OpTrue , 0 ,
127
- vm .OpJumpIfTrue , 4 ,
128
- vm .OpPop , 0 ,
129
- vm .OpTrue , 0 ,
130
+ vm .OpTrue ,
131
+ vm .OpJumpIfFalse ,
132
+ vm .OpPop ,
133
+ vm .OpTrue ,
134
+ vm .OpJumpIfTrue ,
135
+ vm .OpPop ,
136
+ vm .OpTrue ,
130
137
},
138
+ Arguments : []int {0 , 2 , 0 , 0 , 2 , 0 , 0 },
139
+ },
140
+ },
141
+ {
142
+ `true && (true || true)` ,
143
+ vm.Program {
144
+ Bytecode : []vm.Opcode {
145
+ vm .OpTrue ,
146
+ vm .OpJumpIfFalse ,
147
+ vm .OpPop ,
148
+ vm .OpTrue ,
149
+ vm .OpJumpIfTrue ,
150
+ vm .OpPop ,
151
+ vm .OpTrue ,
152
+ },
153
+ Arguments : []int {0 , 5 , 0 , 0 , 2 , 0 , 0 },
131
154
},
132
155
},
133
156
{
@@ -140,8 +163,9 @@ func TestCompile(t *testing.T) {
140
163
},
141
164
},
142
165
Bytecode : []vm.Opcode {
143
- vm .OpFetchEnvField , 0 ,
166
+ vm .OpFetchEnvField ,
144
167
},
168
+ Arguments : []int {0 },
145
169
},
146
170
},
147
171
{
@@ -158,10 +182,11 @@ func TestCompile(t *testing.T) {
158
182
},
159
183
},
160
184
Bytecode : []vm.Opcode {
161
- vm .OpFetchEnvField , 0 ,
162
- vm .OpJumpIfNil , 2 ,
163
- vm .OpFetchField , 1 ,
185
+ vm .OpFetchEnvField ,
186
+ vm .OpJumpIfNil ,
187
+ vm .OpFetchField ,
164
188
},
189
+ Arguments : []int {0 , 1 , 1 },
165
190
},
166
191
},
167
192
{
@@ -178,10 +203,11 @@ func TestCompile(t *testing.T) {
178
203
},
179
204
},
180
205
Bytecode : []vm.Opcode {
181
- vm .OpFetchEnvField , 0 ,
182
- vm .OpJumpIfNil , 2 ,
183
- vm .OpFetchField , 1 ,
206
+ vm .OpFetchEnvField ,
207
+ vm .OpJumpIfNil ,
208
+ vm .OpFetchField ,
184
209
},
210
+ Arguments : []int {0 , 1 , 1 },
185
211
},
186
212
},
187
213
{
@@ -199,11 +225,12 @@ func TestCompile(t *testing.T) {
199
225
},
200
226
},
201
227
Bytecode : []vm.Opcode {
202
- vm .OpFetchEnvField , 0 ,
203
- vm .OpPush , 1 ,
204
- vm .OpFetch , 0 ,
205
- vm .OpFetchField , 2 ,
228
+ vm .OpFetchEnvField ,
229
+ vm .OpPush ,
230
+ vm .OpFetch ,
231
+ vm .OpFetchField ,
206
232
},
233
+ Arguments : []int {0 , 1 , 0 , 2 },
207
234
},
208
235
},
209
236
}
@@ -223,9 +250,10 @@ func TestCompile_cast(t *testing.T) {
223
250
1 ,
224
251
},
225
252
Bytecode : []vm.Opcode {
226
- vm .OpPush , 0 ,
227
- vm .OpCast , 1 ,
253
+ vm .OpPush ,
254
+ vm .OpCast ,
228
255
},
256
+ Arguments : []int {0 , 1 },
229
257
}
230
258
231
259
tree , err := parser .Parse (input )
0 commit comments