Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(100)

Side by Side Diff: pkg/analyzer2dart/test/sexpr_data.dart

Issue 1021813002: Redo "Use an explicit 'this' parameter instead of 'This' nodes." (Closed) Base URL: https://dart.googlecode.com/svn/branches/bleeding_edge/dart
Patch Set: Created 5 years, 9 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View unified diff | Download patch | Annotate | Revision Log
« no previous file with comments | « pkg/analyzer2dart/lib/src/modely.dart ('k') | pkg/compiler/lib/src/cps_ir/cps_ir_builder.dart » ('j') | no next file with comments »
Toggle Intra-line Diffs ('i') | Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
OLDNEW
1 // Copyright (c) 2014, the Dart project authors. Please see the AUTHORS file 1 // Copyright (c) 2014, the Dart project authors. Please see the AUTHORS file
2 // for details. All rights reserved. Use of this source code is governed by a 2 // for details. All rights reserved. Use of this source code is governed by a
3 // BSD-style license that can be found in the LICENSE file. 3 // BSD-style license that can be found in the LICENSE file.
4 4
5 /// Test data for sexpr_test. 5 /// Test data for sexpr_test.
6 library test.sexpr.data; 6 library test.sexpr.data;
7 7
8 import 'test_helper.dart'; 8 import 'test_helper.dart';
9 9
10 class TestSpec extends TestSpecBase { 10 class TestSpec extends TestSpecBase {
11 // A [String] or a [Map<String, String>]. 11 // A [String] or a [Map<String, String>].
12 final output; 12 final output;
13 13
14 /// True if the test should be skipped when testing analyzer2dart. 14 /// True if the test should be skipped when testing analyzer2dart.
15 final bool skipInAnalyzerFrontend; 15 final bool skipInAnalyzerFrontend;
16 16
17 const TestSpec(String input, this.output, 17 const TestSpec(String input, this.output,
18 {this.skipInAnalyzerFrontend: false}) : super(input); 18 {this.skipInAnalyzerFrontend: false}) : super(input);
19 } 19 }
20 20
21 const List<Group> TEST_DATA = const [ 21 const List<Group> TEST_DATA = const [
22 const Group('Empty main', const [ 22 const Group('Empty main', const [
23 const TestSpec(''' 23 const TestSpec('''
24 main() {} 24 main() {}
25 ''', ''' 25 ''', '''
26 (FunctionDefinition main () return 26 (FunctionDefinition main () () return
27 (LetPrim (v0 (Constant (Null))) 27 (LetPrim (v0 (Constant (Null)))
28 (InvokeContinuation return (v0)))) 28 (InvokeContinuation return (v0))))
29 '''), 29 '''),
30 30
31 const TestSpec(''' 31 const TestSpec('''
32 foo() {} 32 foo() {}
33 main() { 33 main() {
34 foo(); 34 foo();
35 } 35 }
36 ''', ''' 36 ''', '''
37 (FunctionDefinition main () return 37 (FunctionDefinition main () () return
38 (LetCont ((k0 (v0) 38 (LetCont ((k0 (v0)
39 (LetPrim (v1 (Constant (Null))) 39 (LetPrim (v1 (Constant (Null)))
40 (InvokeContinuation return (v1))))) 40 (InvokeContinuation return (v1)))))
41 (InvokeStatic foo () k0))) 41 (InvokeStatic foo () k0)))
42 ''') 42 ''')
43 ]), 43 ]),
44 44
45 const Group('Literals', const [ 45 const Group('Literals', const [
46 const TestSpec(''' 46 const TestSpec('''
47 main() { 47 main() {
48 return 0; 48 return 0;
49 } 49 }
50 ''', ''' 50 ''', '''
51 (FunctionDefinition main () return 51 (FunctionDefinition main () () return
52 (LetPrim (v0 (Constant (Int 0))) 52 (LetPrim (v0 (Constant (Int 0)))
53 (InvokeContinuation return (v0)))) 53 (InvokeContinuation return (v0))))
54 '''), 54 '''),
55 55
56 const TestSpec(''' 56 const TestSpec('''
57 main() { 57 main() {
58 return 1.5; 58 return 1.5;
59 } 59 }
60 ''', ''' 60 ''', '''
61 (FunctionDefinition main () return 61 (FunctionDefinition main () () return
62 (LetPrim (v0 (Constant (Double 1.5))) 62 (LetPrim (v0 (Constant (Double 1.5)))
63 (InvokeContinuation return (v0)))) 63 (InvokeContinuation return (v0))))
64 '''), 64 '''),
65 65
66 const TestSpec(''' 66 const TestSpec('''
67 main() { 67 main() {
68 return true; 68 return true;
69 } 69 }
70 ''', ''' 70 ''', '''
71 (FunctionDefinition main () return 71 (FunctionDefinition main () () return
72 (LetPrim (v0 (Constant (Bool true))) 72 (LetPrim (v0 (Constant (Bool true)))
73 (InvokeContinuation return (v0)))) 73 (InvokeContinuation return (v0))))
74 '''), 74 '''),
75 75
76 const TestSpec(''' 76 const TestSpec('''
77 main() { 77 main() {
78 return false; 78 return false;
79 } 79 }
80 ''', ''' 80 ''', '''
81 (FunctionDefinition main () return 81 (FunctionDefinition main () () return
82 (LetPrim (v0 (Constant (Bool false))) 82 (LetPrim (v0 (Constant (Bool false)))
83 (InvokeContinuation return (v0)))) 83 (InvokeContinuation return (v0))))
84 '''), 84 '''),
85 85
86 const TestSpec(''' 86 const TestSpec('''
87 main() { 87 main() {
88 return "a"; 88 return "a";
89 } 89 }
90 ''', ''' 90 ''', '''
91 (FunctionDefinition main () return 91 (FunctionDefinition main () () return
92 (LetPrim (v0 (Constant (String "a"))) 92 (LetPrim (v0 (Constant (String "a")))
93 (InvokeContinuation return (v0)))) 93 (InvokeContinuation return (v0))))
94 '''), 94 '''),
95 ]), 95 ]),
96 96
97 const Group('Parameters', const [ 97 const Group('Parameters', const [
98 const TestSpec(''' 98 const TestSpec('''
99 main(args) {} 99 main(args) {}
100 ''', ''' 100 ''', '''
101 (FunctionDefinition main (args) return 101 (FunctionDefinition main () (args) return
102 (LetPrim (v0 (Constant (Null))) 102 (LetPrim (v0 (Constant (Null)))
103 (InvokeContinuation return (v0)))) 103 (InvokeContinuation return (v0))))
104 '''), 104 '''),
105 105
106 const TestSpec(''' 106 const TestSpec('''
107 main(a, b) {} 107 main(a, b) {}
108 ''', ''' 108 ''', '''
109 (FunctionDefinition main (a b) return 109 (FunctionDefinition main () (a b) return
110 (LetPrim (v0 (Constant (Null))) 110 (LetPrim (v0 (Constant (Null)))
111 (InvokeContinuation return (v0)))) 111 (InvokeContinuation return (v0))))
112 '''), 112 '''),
113 ]), 113 ]),
114 114
115 const Group('Pass arguments', const [ 115 const Group('Pass arguments', const [
116 const TestSpec(''' 116 const TestSpec('''
117 foo(a) {} 117 foo(a) {}
118 main() { 118 main() {
119 foo(null); 119 foo(null);
120 } 120 }
121 ''', ''' 121 ''', '''
122 (FunctionDefinition main () return 122 (FunctionDefinition main () () return
123 (LetPrim (v0 (Constant (Null))) 123 (LetPrim (v0 (Constant (Null)))
124 (LetCont ((k0 (v1) 124 (LetCont ((k0 (v1)
125 (LetPrim (v2 (Constant (Null))) 125 (LetPrim (v2 (Constant (Null)))
126 (InvokeContinuation return (v2))))) 126 (InvokeContinuation return (v2)))))
127 (InvokeStatic foo (v0) k0)))) 127 (InvokeStatic foo (v0) k0))))
128 '''), 128 '''),
129 129
130 const TestSpec(''' 130 const TestSpec('''
131 bar(b, c) {} 131 bar(b, c) {}
132 foo(a) {} 132 foo(a) {}
133 main() { 133 main() {
134 foo(null); 134 foo(null);
135 bar(0, ""); 135 bar(0, "");
136 } 136 }
137 ''', ''' 137 ''', '''
138 (FunctionDefinition main () return 138 (FunctionDefinition main () () return
139 (LetPrim (v0 (Constant (Null))) 139 (LetPrim (v0 (Constant (Null)))
140 (LetCont ((k0 (v1) 140 (LetCont ((k0 (v1)
141 (LetPrim (v2 (Constant (Int 0))) 141 (LetPrim (v2 (Constant (Int 0)))
142 (LetPrim (v3 (Constant (String ""))) 142 (LetPrim (v3 (Constant (String "")))
143 (LetCont ((k1 (v4) 143 (LetCont ((k1 (v4)
144 (LetPrim (v5 (Constant (Null))) 144 (LetPrim (v5 (Constant (Null)))
145 (InvokeContinuation return (v5))))) 145 (InvokeContinuation return (v5)))))
146 (InvokeStatic bar (v2 v3) k1)))))) 146 (InvokeStatic bar (v2 v3) k1))))))
147 (InvokeStatic foo (v0) k0)))) 147 (InvokeStatic foo (v0) k0))))
148 '''), 148 '''),
149 149
150 const TestSpec(''' 150 const TestSpec('''
151 foo(a) {} 151 foo(a) {}
152 main() { 152 main() {
153 return foo(null); 153 return foo(null);
154 } 154 }
155 ''', ''' 155 ''', '''
156 (FunctionDefinition main () return 156 (FunctionDefinition main () () return
157 (LetPrim (v0 (Constant (Null))) 157 (LetPrim (v0 (Constant (Null)))
158 (LetCont ((k0 (v1) 158 (LetCont ((k0 (v1)
159 (InvokeContinuation return (v1)))) 159 (InvokeContinuation return (v1))))
160 (InvokeStatic foo (v0) k0)))) 160 (InvokeStatic foo (v0) k0))))
161 '''), 161 '''),
162 ]), 162 ]),
163 163
164 const Group('Local variables', const [ 164 const Group('Local variables', const [
165 const TestSpec(''' 165 const TestSpec('''
166 main() { 166 main() {
167 var a; 167 var a;
168 return a; 168 return a;
169 } 169 }
170 ''', ''' 170 ''', '''
171 (FunctionDefinition main () return 171 (FunctionDefinition main () () return
172 (LetPrim (v0 (Constant (Null))) 172 (LetPrim (v0 (Constant (Null)))
173 (InvokeContinuation return (v0)))) 173 (InvokeContinuation return (v0))))
174 '''), 174 '''),
175 175
176 const TestSpec(''' 176 const TestSpec('''
177 main() { 177 main() {
178 var a = 0; 178 var a = 0;
179 return a; 179 return a;
180 } 180 }
181 ''', ''' 181 ''', '''
182 (FunctionDefinition main () return 182 (FunctionDefinition main () () return
183 (LetPrim (v0 (Constant (Int 0))) 183 (LetPrim (v0 (Constant (Int 0)))
184 (InvokeContinuation return (v0)))) 184 (InvokeContinuation return (v0))))
185 '''), 185 '''),
186 186
187 const TestSpec(''' 187 const TestSpec('''
188 main(a) { 188 main(a) {
189 return a; 189 return a;
190 } 190 }
191 ''', ''' 191 ''', '''
192 (FunctionDefinition main (a) return 192 (FunctionDefinition main () (a) return
193 (InvokeContinuation return (a))) 193 (InvokeContinuation return (a)))
194 '''), 194 '''),
195 ]), 195 ]),
196 196
197 const Group('Local variable writes', const <TestSpec>[ 197 const Group('Local variable writes', const <TestSpec>[
198 const TestSpec(''' 198 const TestSpec('''
199 main() { 199 main() {
200 var a; 200 var a;
201 a = 10; 201 a = 10;
202 return a; 202 return a;
203 } 203 }
204 ''', ''' 204 ''', '''
205 (FunctionDefinition main () return 205 (FunctionDefinition main () () return
206 (LetPrim (v0 (Constant (Null))) 206 (LetPrim (v0 (Constant (Null)))
207 (LetPrim (v1 (Constant (Int 10))) 207 (LetPrim (v1 (Constant (Int 10)))
208 (InvokeContinuation return (v1))))) 208 (InvokeContinuation return (v1)))))
209 '''), 209 '''),
210 210
211 const TestSpec(''' 211 const TestSpec('''
212 main() { 212 main() {
213 var a = 0; 213 var a = 0;
214 a = 10; 214 a = 10;
215 return a; 215 return a;
216 } 216 }
217 ''', ''' 217 ''', '''
218 (FunctionDefinition main () return 218 (FunctionDefinition main () () return
219 (LetPrim (v0 (Constant (Int 0))) 219 (LetPrim (v0 (Constant (Int 0)))
220 (LetPrim (v1 (Constant (Int 10))) 220 (LetPrim (v1 (Constant (Int 10)))
221 (InvokeContinuation return (v1))))) 221 (InvokeContinuation return (v1)))))
222 '''), 222 '''),
223 223
224 const TestSpec(''' 224 const TestSpec('''
225 main() { 225 main() {
226 var a = 0; 226 var a = 0;
227 print(a); 227 print(a);
228 a = ""; 228 a = "";
229 print(a); 229 print(a);
230 return a; 230 return a;
231 } 231 }
232 ''', ''' 232 ''', '''
233 (FunctionDefinition main () return 233 (FunctionDefinition main () () return
234 (LetPrim (v0 (Constant (Int 0))) 234 (LetPrim (v0 (Constant (Int 0)))
235 (LetCont ((k0 (v1) 235 (LetCont ((k0 (v1)
236 (LetPrim (v2 (Constant (String ""))) 236 (LetPrim (v2 (Constant (String "")))
237 (LetCont ((k1 (v3) 237 (LetCont ((k1 (v3)
238 (InvokeContinuation return (v2)))) 238 (InvokeContinuation return (v2))))
239 (InvokeStatic print (v2) k1))))) 239 (InvokeStatic print (v2) k1)))))
240 (InvokeStatic print (v0) k0)))) 240 (InvokeStatic print (v0) k0))))
241 '''), 241 '''),
242 242
243 const TestSpec(''' 243 const TestSpec('''
244 main(a) { 244 main(a) {
245 print(a); 245 print(a);
246 a = ""; 246 a = "";
247 print(a); 247 print(a);
248 return a; 248 return a;
249 } 249 }
250 ''', ''' 250 ''', '''
251 (FunctionDefinition main (a) return 251 (FunctionDefinition main () (a) return
252 (LetCont ((k0 (v0) 252 (LetCont ((k0 (v0)
253 (LetPrim (v1 (Constant (String ""))) 253 (LetPrim (v1 (Constant (String "")))
254 (LetCont ((k1 (v2) 254 (LetCont ((k1 (v2)
255 (InvokeContinuation return (v1)))) 255 (InvokeContinuation return (v1))))
256 (InvokeStatic print (v1) k1))))) 256 (InvokeStatic print (v1) k1)))))
257 (InvokeStatic print (a) k0))) 257 (InvokeStatic print (a) k0)))
258 '''), 258 '''),
259 259
260 const TestSpec(''' 260 const TestSpec('''
261 main(a) { 261 main(a) {
262 if (a) { 262 if (a) {
263 a = ""; 263 a = "";
264 } 264 }
265 print(a); 265 print(a);
266 return a; 266 return a;
267 } 267 }
268 ''', ''' 268 ''', '''
269 (FunctionDefinition main (a) return 269 (FunctionDefinition main () (a) return
270 (LetCont ((k0 (v0) 270 (LetCont ((k0 (v0)
271 (LetCont ((k1 (v1) 271 (LetCont ((k1 (v1)
272 (InvokeContinuation return (v0)))) 272 (InvokeContinuation return (v0))))
273 (InvokeStatic print (v0) k1)))) 273 (InvokeStatic print (v0) k1))))
274 (LetCont ((k2 () 274 (LetCont ((k2 ()
275 (LetPrim (v2 (Constant (String ""))) 275 (LetPrim (v2 (Constant (String "")))
276 (InvokeContinuation k0 (v2)))) 276 (InvokeContinuation k0 (v2))))
277 (k3 () 277 (k3 ()
278 (InvokeContinuation k0 (a)))) 278 (InvokeContinuation k0 (a))))
279 (Branch (IsTrue a) k2 k3)))) 279 (Branch (IsTrue a) k2 k3))))
280 '''), 280 '''),
281 ]), 281 ]),
282 282
283 const Group('Dynamic access', const [ 283 const Group('Dynamic access', const [
284 const TestSpec(''' 284 const TestSpec('''
285 main(a) { 285 main(a) {
286 return a.foo; 286 return a.foo;
287 } 287 }
288 ''', ''' 288 ''', '''
289 (FunctionDefinition main (a) return 289 (FunctionDefinition main () (a) return
290 (LetCont ((k0 (v0) 290 (LetCont ((k0 (v0)
291 (InvokeContinuation return (v0)))) 291 (InvokeContinuation return (v0))))
292 (InvokeMethod a foo () k0))) 292 (InvokeMethod a foo () k0)))
293 '''), 293 '''),
294 294
295 const TestSpec(''' 295 const TestSpec('''
296 main() { 296 main() {
297 var a = ""; 297 var a = "";
298 return a.foo; 298 return a.foo;
299 } 299 }
300 ''', ''' 300 ''', '''
301 (FunctionDefinition main () return 301 (FunctionDefinition main () () return
302 (LetPrim (v0 (Constant (String ""))) 302 (LetPrim (v0 (Constant (String "")))
303 (LetCont ((k0 (v1) 303 (LetCont ((k0 (v1)
304 (InvokeContinuation return (v1)))) 304 (InvokeContinuation return (v1))))
305 (InvokeMethod v0 foo () k0)))) 305 (InvokeMethod v0 foo () k0))))
306 '''), 306 '''),
307 ]), 307 ]),
308 308
309 const Group('Dynamic invocation', const [ 309 const Group('Dynamic invocation', const [
310 const TestSpec(''' 310 const TestSpec('''
311 main(a) { 311 main(a) {
312 return a.foo(0); 312 return a.foo(0);
313 } 313 }
314 ''', ''' 314 ''', '''
315 (FunctionDefinition main (a) return 315 (FunctionDefinition main () (a) return
316 (LetPrim (v0 (Constant (Int 0))) 316 (LetPrim (v0 (Constant (Int 0)))
317 (LetCont ((k0 (v1) 317 (LetCont ((k0 (v1)
318 (InvokeContinuation return (v1)))) 318 (InvokeContinuation return (v1))))
319 (InvokeMethod a foo (v0) k0)))) 319 (InvokeMethod a foo (v0) k0))))
320 '''), 320 '''),
321 321
322 const TestSpec(''' 322 const TestSpec('''
323 main() { 323 main() {
324 var a = ""; 324 var a = "";
325 return a.foo(0, 1); 325 return a.foo(0, 1);
326 } 326 }
327 ''', ''' 327 ''', '''
328 (FunctionDefinition main () return 328 (FunctionDefinition main () () return
329 (LetPrim (v0 (Constant (String ""))) 329 (LetPrim (v0 (Constant (String "")))
330 (LetPrim (v1 (Constant (Int 0))) 330 (LetPrim (v1 (Constant (Int 0)))
331 (LetPrim (v2 (Constant (Int 1))) 331 (LetPrim (v2 (Constant (Int 1)))
332 (LetCont ((k0 (v3) 332 (LetCont ((k0 (v3)
333 (InvokeContinuation return (v3)))) 333 (InvokeContinuation return (v3))))
334 (InvokeMethod v0 foo (v1 v2) k0)))))) 334 (InvokeMethod v0 foo (v1 v2) k0))))))
335 '''), 335 '''),
336 ]), 336 ]),
337 337
338 const Group('Binary expressions', const [ 338 const Group('Binary expressions', const [
339 const TestSpec(''' 339 const TestSpec('''
340 main() { 340 main() {
341 return 0 + ""; 341 return 0 + "";
342 } 342 }
343 ''', ''' 343 ''', '''
344 (FunctionDefinition main () return 344 (FunctionDefinition main () () return
345 (LetPrim (v0 (Constant (Int 0))) 345 (LetPrim (v0 (Constant (Int 0)))
346 (LetPrim (v1 (Constant (String ""))) 346 (LetPrim (v1 (Constant (String "")))
347 (LetCont ((k0 (v2) 347 (LetCont ((k0 (v2)
348 (InvokeContinuation return (v2)))) 348 (InvokeContinuation return (v2))))
349 (InvokeMethod v0 + (v1) k0))))) 349 (InvokeMethod v0 + (v1) k0)))))
350 '''), 350 '''),
351 351
352 const TestSpec(''' 352 const TestSpec('''
353 main() { 353 main() {
354 return 0 - ""; 354 return 0 - "";
355 } 355 }
356 ''', ''' 356 ''', '''
357 (FunctionDefinition main () return 357 (FunctionDefinition main () () return
358 (LetPrim (v0 (Constant (Int 0))) 358 (LetPrim (v0 (Constant (Int 0)))
359 (LetPrim (v1 (Constant (String ""))) 359 (LetPrim (v1 (Constant (String "")))
360 (LetCont ((k0 (v2) 360 (LetCont ((k0 (v2)
361 (InvokeContinuation return (v2)))) 361 (InvokeContinuation return (v2))))
362 (InvokeMethod v0 - (v1) k0))))) 362 (InvokeMethod v0 - (v1) k0)))))
363 '''), 363 '''),
364 364
365 const TestSpec(''' 365 const TestSpec('''
366 main() { 366 main() {
367 return 0 * ""; 367 return 0 * "";
368 } 368 }
369 ''', ''' 369 ''', '''
370 (FunctionDefinition main () return 370 (FunctionDefinition main () () return
371 (LetPrim (v0 (Constant (Int 0))) 371 (LetPrim (v0 (Constant (Int 0)))
372 (LetPrim (v1 (Constant (String ""))) 372 (LetPrim (v1 (Constant (String "")))
373 (LetCont ((k0 (v2) 373 (LetCont ((k0 (v2)
374 (InvokeContinuation return (v2)))) 374 (InvokeContinuation return (v2))))
375 (InvokeMethod v0 * (v1) k0))))) 375 (InvokeMethod v0 * (v1) k0)))))
376 '''), 376 '''),
377 377
378 const TestSpec(''' 378 const TestSpec('''
379 main() { 379 main() {
380 return 0 / ""; 380 return 0 / "";
381 } 381 }
382 ''', ''' 382 ''', '''
383 (FunctionDefinition main () return 383 (FunctionDefinition main () () return
384 (LetPrim (v0 (Constant (Int 0))) 384 (LetPrim (v0 (Constant (Int 0)))
385 (LetPrim (v1 (Constant (String ""))) 385 (LetPrim (v1 (Constant (String "")))
386 (LetCont ((k0 (v2) 386 (LetCont ((k0 (v2)
387 (InvokeContinuation return (v2)))) 387 (InvokeContinuation return (v2))))
388 (InvokeMethod v0 / (v1) k0))))) 388 (InvokeMethod v0 / (v1) k0)))))
389 '''), 389 '''),
390 390
391 const TestSpec(''' 391 const TestSpec('''
392 main() { 392 main() {
393 return 0 ~/ ""; 393 return 0 ~/ "";
394 } 394 }
395 ''', ''' 395 ''', '''
396 (FunctionDefinition main () return 396 (FunctionDefinition main () () return
397 (LetPrim (v0 (Constant (Int 0))) 397 (LetPrim (v0 (Constant (Int 0)))
398 (LetPrim (v1 (Constant (String ""))) 398 (LetPrim (v1 (Constant (String "")))
399 (LetCont ((k0 (v2) 399 (LetCont ((k0 (v2)
400 (InvokeContinuation return (v2)))) 400 (InvokeContinuation return (v2))))
401 (InvokeMethod v0 ~/ (v1) k0))))) 401 (InvokeMethod v0 ~/ (v1) k0)))))
402 '''), 402 '''),
403 403
404 const TestSpec(''' 404 const TestSpec('''
405 main() { 405 main() {
406 return 0 < ""; 406 return 0 < "";
407 } 407 }
408 ''', ''' 408 ''', '''
409 (FunctionDefinition main () return 409 (FunctionDefinition main () () return
410 (LetPrim (v0 (Constant (Int 0))) 410 (LetPrim (v0 (Constant (Int 0)))
411 (LetPrim (v1 (Constant (String ""))) 411 (LetPrim (v1 (Constant (String "")))
412 (LetCont ((k0 (v2) 412 (LetCont ((k0 (v2)
413 (InvokeContinuation return (v2)))) 413 (InvokeContinuation return (v2))))
414 (InvokeMethod v0 < (v1) k0))))) 414 (InvokeMethod v0 < (v1) k0)))))
415 '''), 415 '''),
416 416
417 const TestSpec(''' 417 const TestSpec('''
418 main() { 418 main() {
419 return 0 <= ""; 419 return 0 <= "";
420 } 420 }
421 ''', ''' 421 ''', '''
422 (FunctionDefinition main () return 422 (FunctionDefinition main () () return
423 (LetPrim (v0 (Constant (Int 0))) 423 (LetPrim (v0 (Constant (Int 0)))
424 (LetPrim (v1 (Constant (String ""))) 424 (LetPrim (v1 (Constant (String "")))
425 (LetCont ((k0 (v2) 425 (LetCont ((k0 (v2)
426 (InvokeContinuation return (v2)))) 426 (InvokeContinuation return (v2))))
427 (InvokeMethod v0 <= (v1) k0))))) 427 (InvokeMethod v0 <= (v1) k0)))))
428 '''), 428 '''),
429 429
430 const TestSpec(''' 430 const TestSpec('''
431 main() { 431 main() {
432 return 0 > ""; 432 return 0 > "";
433 } 433 }
434 ''', ''' 434 ''', '''
435 (FunctionDefinition main () return 435 (FunctionDefinition main () () return
436 (LetPrim (v0 (Constant (Int 0))) 436 (LetPrim (v0 (Constant (Int 0)))
437 (LetPrim (v1 (Constant (String ""))) 437 (LetPrim (v1 (Constant (String "")))
438 (LetCont ((k0 (v2) 438 (LetCont ((k0 (v2)
439 (InvokeContinuation return (v2)))) 439 (InvokeContinuation return (v2))))
440 (InvokeMethod v0 > (v1) k0))))) 440 (InvokeMethod v0 > (v1) k0)))))
441 '''), 441 '''),
442 442
443 const TestSpec(''' 443 const TestSpec('''
444 main() { 444 main() {
445 return 0 >= ""; 445 return 0 >= "";
446 } 446 }
447 ''', ''' 447 ''', '''
448 (FunctionDefinition main () return 448 (FunctionDefinition main () () return
449 (LetPrim (v0 (Constant (Int 0))) 449 (LetPrim (v0 (Constant (Int 0)))
450 (LetPrim (v1 (Constant (String ""))) 450 (LetPrim (v1 (Constant (String "")))
451 (LetCont ((k0 (v2) 451 (LetCont ((k0 (v2)
452 (InvokeContinuation return (v2)))) 452 (InvokeContinuation return (v2))))
453 (InvokeMethod v0 >= (v1) k0))))) 453 (InvokeMethod v0 >= (v1) k0)))))
454 '''), 454 '''),
455 455
456 const TestSpec(''' 456 const TestSpec('''
457 main() { 457 main() {
458 return 0 << ""; 458 return 0 << "";
459 } 459 }
460 ''', ''' 460 ''', '''
461 (FunctionDefinition main () return 461 (FunctionDefinition main () () return
462 (LetPrim (v0 (Constant (Int 0))) 462 (LetPrim (v0 (Constant (Int 0)))
463 (LetPrim (v1 (Constant (String ""))) 463 (LetPrim (v1 (Constant (String "")))
464 (LetCont ((k0 (v2) 464 (LetCont ((k0 (v2)
465 (InvokeContinuation return (v2)))) 465 (InvokeContinuation return (v2))))
466 (InvokeMethod v0 << (v1) k0))))) 466 (InvokeMethod v0 << (v1) k0)))))
467 '''), 467 '''),
468 468
469 const TestSpec(''' 469 const TestSpec('''
470 main() { 470 main() {
471 return 0 >> ""; 471 return 0 >> "";
472 } 472 }
473 ''', ''' 473 ''', '''
474 (FunctionDefinition main () return 474 (FunctionDefinition main () () return
475 (LetPrim (v0 (Constant (Int 0))) 475 (LetPrim (v0 (Constant (Int 0)))
476 (LetPrim (v1 (Constant (String ""))) 476 (LetPrim (v1 (Constant (String "")))
477 (LetCont ((k0 (v2) 477 (LetCont ((k0 (v2)
478 (InvokeContinuation return (v2)))) 478 (InvokeContinuation return (v2))))
479 (InvokeMethod v0 >> (v1) k0))))) 479 (InvokeMethod v0 >> (v1) k0)))))
480 '''), 480 '''),
481 481
482 const TestSpec(''' 482 const TestSpec('''
483 main() { 483 main() {
484 return 0 & ""; 484 return 0 & "";
485 } 485 }
486 ''', ''' 486 ''', '''
487 (FunctionDefinition main () return 487 (FunctionDefinition main () () return
488 (LetPrim (v0 (Constant (Int 0))) 488 (LetPrim (v0 (Constant (Int 0)))
489 (LetPrim (v1 (Constant (String ""))) 489 (LetPrim (v1 (Constant (String "")))
490 (LetCont ((k0 (v2) 490 (LetCont ((k0 (v2)
491 (InvokeContinuation return (v2)))) 491 (InvokeContinuation return (v2))))
492 (InvokeMethod v0 & (v1) k0))))) 492 (InvokeMethod v0 & (v1) k0)))))
493 '''), 493 '''),
494 494
495 const TestSpec(''' 495 const TestSpec('''
496 main() { 496 main() {
497 return 0 | ""; 497 return 0 | "";
498 } 498 }
499 ''', ''' 499 ''', '''
500 (FunctionDefinition main () return 500 (FunctionDefinition main () () return
501 (LetPrim (v0 (Constant (Int 0))) 501 (LetPrim (v0 (Constant (Int 0)))
502 (LetPrim (v1 (Constant (String ""))) 502 (LetPrim (v1 (Constant (String "")))
503 (LetCont ((k0 (v2) 503 (LetCont ((k0 (v2)
504 (InvokeContinuation return (v2)))) 504 (InvokeContinuation return (v2))))
505 (InvokeMethod v0 | (v1) k0))))) 505 (InvokeMethod v0 | (v1) k0)))))
506 '''), 506 '''),
507 507
508 const TestSpec(''' 508 const TestSpec('''
509 main() { 509 main() {
510 return 0 ^ ""; 510 return 0 ^ "";
511 } 511 }
512 ''', ''' 512 ''', '''
513 (FunctionDefinition main () return 513 (FunctionDefinition main () () return
514 (LetPrim (v0 (Constant (Int 0))) 514 (LetPrim (v0 (Constant (Int 0)))
515 (LetPrim (v1 (Constant (String ""))) 515 (LetPrim (v1 (Constant (String "")))
516 (LetCont ((k0 (v2) 516 (LetCont ((k0 (v2)
517 (InvokeContinuation return (v2)))) 517 (InvokeContinuation return (v2))))
518 (InvokeMethod v0 ^ (v1) k0))))) 518 (InvokeMethod v0 ^ (v1) k0)))))
519 '''), 519 '''),
520 520
521 const TestSpec(''' 521 const TestSpec('''
522 main() { 522 main() {
523 return 0 == ""; 523 return 0 == "";
524 } 524 }
525 ''', ''' 525 ''', '''
526 (FunctionDefinition main () return 526 (FunctionDefinition main () () return
527 (LetPrim (v0 (Constant (Int 0))) 527 (LetPrim (v0 (Constant (Int 0)))
528 (LetPrim (v1 (Constant (String ""))) 528 (LetPrim (v1 (Constant (String "")))
529 (LetCont ((k0 (v2) 529 (LetCont ((k0 (v2)
530 (InvokeContinuation return (v2)))) 530 (InvokeContinuation return (v2))))
531 (InvokeMethod v0 == (v1) k0))))) 531 (InvokeMethod v0 == (v1) k0)))))
532 '''), 532 '''),
533 533
534 const TestSpec(''' 534 const TestSpec('''
535 main() { 535 main() {
536 return 0 != ""; 536 return 0 != "";
537 } 537 }
538 ''', ''' 538 ''', '''
539 (FunctionDefinition main () return 539 (FunctionDefinition main () () return
540 (LetPrim (v0 (Constant (Int 0))) 540 (LetPrim (v0 (Constant (Int 0)))
541 (LetPrim (v1 (Constant (String ""))) 541 (LetPrim (v1 (Constant (String "")))
542 (LetCont ((k0 (v2) 542 (LetCont ((k0 (v2)
543 (LetCont ((k1 (v3) 543 (LetCont ((k1 (v3)
544 (InvokeContinuation return (v3)))) 544 (InvokeContinuation return (v3))))
545 (LetCont ((k2 () 545 (LetCont ((k2 ()
546 (LetPrim (v4 (Constant (Bool false))) 546 (LetPrim (v4 (Constant (Bool false)))
547 (InvokeContinuation k1 (v4)))) 547 (InvokeContinuation k1 (v4))))
548 (k3 () 548 (k3 ()
549 (LetPrim (v5 (Constant (Bool true))) 549 (LetPrim (v5 (Constant (Bool true)))
550 (InvokeContinuation k1 (v5))))) 550 (InvokeContinuation k1 (v5)))))
551 (Branch (IsTrue v2) k2 k3))))) 551 (Branch (IsTrue v2) k2 k3)))))
552 (InvokeMethod v0 == (v1) k0))))) 552 (InvokeMethod v0 == (v1) k0)))))
553 '''), 553 '''),
554 554
555 const TestSpec(''' 555 const TestSpec('''
556 main() { 556 main() {
557 return 0 && ""; 557 return 0 && "";
558 } 558 }
559 ''', ''' 559 ''', '''
560 (FunctionDefinition main () return 560 (FunctionDefinition main () () return
561 (LetPrim (v0 (Constant (Int 0))) 561 (LetPrim (v0 (Constant (Int 0)))
562 (LetCont ((k0 (v1) 562 (LetCont ((k0 (v1)
563 (InvokeContinuation return (v1)))) 563 (InvokeContinuation return (v1))))
564 (LetCont ((k1 () 564 (LetCont ((k1 ()
565 (LetPrim (v2 (Constant (String ""))) 565 (LetPrim (v2 (Constant (String "")))
566 (LetCont ((k2 () 566 (LetCont ((k2 ()
567 (LetPrim (v3 (Constant (Bool true))) 567 (LetPrim (v3 (Constant (Bool true)))
568 (InvokeContinuation k0 (v3)))) 568 (InvokeContinuation k0 (v3))))
569 (k3 () 569 (k3 ()
570 (LetPrim (v4 (Constant (Bool false))) 570 (LetPrim (v4 (Constant (Bool false)))
571 (InvokeContinuation k0 (v4))))) 571 (InvokeContinuation k0 (v4)))))
572 (Branch (IsTrue v2) k2 k3)))) 572 (Branch (IsTrue v2) k2 k3))))
573 (k4 () 573 (k4 ()
574 (LetPrim (v5 (Constant (Bool false))) 574 (LetPrim (v5 (Constant (Bool false)))
575 (InvokeContinuation k0 (v5))))) 575 (InvokeContinuation k0 (v5)))))
576 (Branch (IsTrue v0) k1 k4))))) 576 (Branch (IsTrue v0) k1 k4)))))
577 '''), 577 '''),
578 578
579 const TestSpec(''' 579 const TestSpec('''
580 main() { 580 main() {
581 return 0 || ""; 581 return 0 || "";
582 } 582 }
583 ''', ''' 583 ''', '''
584 (FunctionDefinition main () return 584 (FunctionDefinition main () () return
585 (LetPrim (v0 (Constant (Int 0))) 585 (LetPrim (v0 (Constant (Int 0)))
586 (LetCont ((k0 (v1) 586 (LetCont ((k0 (v1)
587 (InvokeContinuation return (v1)))) 587 (InvokeContinuation return (v1))))
588 (LetCont ((k1 () 588 (LetCont ((k1 ()
589 (LetPrim (v2 (Constant (Bool true))) 589 (LetPrim (v2 (Constant (Bool true)))
590 (InvokeContinuation k0 (v2)))) 590 (InvokeContinuation k0 (v2))))
591 (k2 () 591 (k2 ()
592 (LetPrim (v3 (Constant (String ""))) 592 (LetPrim (v3 (Constant (String "")))
593 (LetCont ((k3 () 593 (LetCont ((k3 ()
594 (LetPrim (v4 (Constant (Bool true))) 594 (LetPrim (v4 (Constant (Bool true)))
595 (InvokeContinuation k0 (v4)))) 595 (InvokeContinuation k0 (v4))))
596 (k4 () 596 (k4 ()
597 (LetPrim (v5 (Constant (Bool false))) 597 (LetPrim (v5 (Constant (Bool false)))
598 (InvokeContinuation k0 (v5))))) 598 (InvokeContinuation k0 (v5)))))
599 (Branch (IsTrue v3) k3 k4))))) 599 (Branch (IsTrue v3) k3 k4)))))
600 (Branch (IsTrue v0) k1 k2))))) 600 (Branch (IsTrue v0) k1 k2)))))
601 '''), 601 '''),
602 602
603 const TestSpec(''' 603 const TestSpec('''
604 main() { 604 main() {
605 return 0 + "" * 2; 605 return 0 + "" * 2;
606 } 606 }
607 ''', ''' 607 ''', '''
608 (FunctionDefinition main () return 608 (FunctionDefinition main () () return
609 (LetPrim (v0 (Constant (Int 0))) 609 (LetPrim (v0 (Constant (Int 0)))
610 (LetPrim (v1 (Constant (String ""))) 610 (LetPrim (v1 (Constant (String "")))
611 (LetPrim (v2 (Constant (Int 2))) 611 (LetPrim (v2 (Constant (Int 2)))
612 (LetCont ((k0 (v3) 612 (LetCont ((k0 (v3)
613 (LetCont ((k1 (v4) 613 (LetCont ((k1 (v4)
614 (InvokeContinuation return (v4)))) 614 (InvokeContinuation return (v4))))
615 (InvokeMethod v0 + (v3) k1)))) 615 (InvokeMethod v0 + (v3) k1))))
616 (InvokeMethod v1 * (v2) k0)))))) 616 (InvokeMethod v1 * (v2) k0))))))
617 '''), 617 '''),
618 618
619 const TestSpec(''' 619 const TestSpec('''
620 main() { 620 main() {
621 return 0 * "" + 2; 621 return 0 * "" + 2;
622 } 622 }
623 ''', ''' 623 ''', '''
624 (FunctionDefinition main () return 624 (FunctionDefinition main () () return
625 (LetPrim (v0 (Constant (Int 0))) 625 (LetPrim (v0 (Constant (Int 0)))
626 (LetPrim (v1 (Constant (String ""))) 626 (LetPrim (v1 (Constant (String "")))
627 (LetCont ((k0 (v2) 627 (LetCont ((k0 (v2)
628 (LetPrim (v3 (Constant (Int 2))) 628 (LetPrim (v3 (Constant (Int 2)))
629 (LetCont ((k1 (v4) 629 (LetCont ((k1 (v4)
630 (InvokeContinuation return (v4)))) 630 (InvokeContinuation return (v4))))
631 (InvokeMethod v2 + (v3) k1))))) 631 (InvokeMethod v2 + (v3) k1)))))
632 (InvokeMethod v0 * (v1) k0))))) 632 (InvokeMethod v0 * (v1) k0)))))
633 '''), 633 '''),
634 ]), 634 ]),
635 635
636 const Group('If statement', const [ 636 const Group('If statement', const [
637 const TestSpec(''' 637 const TestSpec('''
638 main(a) { 638 main(a) {
639 if (a) { 639 if (a) {
640 print(0); 640 print(0);
641 } 641 }
642 } 642 }
643 ''', ''' 643 ''', '''
644 (FunctionDefinition main (a) return 644 (FunctionDefinition main () (a) return
645 (LetCont ((k0 () 645 (LetCont ((k0 ()
646 (LetPrim (v0 (Constant (Null))) 646 (LetPrim (v0 (Constant (Null)))
647 (InvokeContinuation return (v0))))) 647 (InvokeContinuation return (v0)))))
648 (LetCont ((k1 () 648 (LetCont ((k1 ()
649 (LetPrim (v1 (Constant (Int 0))) 649 (LetPrim (v1 (Constant (Int 0)))
650 (LetCont ((k2 (v2) 650 (LetCont ((k2 (v2)
651 (InvokeContinuation k0 ()))) 651 (InvokeContinuation k0 ())))
652 (InvokeStatic print (v1) k2)))) 652 (InvokeStatic print (v1) k2))))
653 (k3 () 653 (k3 ()
654 (InvokeContinuation k0 ()))) 654 (InvokeContinuation k0 ())))
655 (Branch (IsTrue a) k1 k3)))) 655 (Branch (IsTrue a) k1 k3))))
656 '''), 656 '''),
657 657
658 const TestSpec(''' 658 const TestSpec('''
659 main(a) { 659 main(a) {
660 if (a) { 660 if (a) {
661 print(0); 661 print(0);
662 } else { 662 } else {
663 print(1); 663 print(1);
664 } 664 }
665 } 665 }
666 ''', ''' 666 ''', '''
667 (FunctionDefinition main (a) return 667 (FunctionDefinition main () (a) return
668 (LetCont ((k0 () 668 (LetCont ((k0 ()
669 (LetPrim (v0 (Constant (Null))) 669 (LetPrim (v0 (Constant (Null)))
670 (InvokeContinuation return (v0))))) 670 (InvokeContinuation return (v0)))))
671 (LetCont ((k1 () 671 (LetCont ((k1 ()
672 (LetPrim (v1 (Constant (Int 0))) 672 (LetPrim (v1 (Constant (Int 0)))
673 (LetCont ((k2 (v2) 673 (LetCont ((k2 (v2)
674 (InvokeContinuation k0 ()))) 674 (InvokeContinuation k0 ())))
675 (InvokeStatic print (v1) k2)))) 675 (InvokeStatic print (v1) k2))))
676 (k3 () 676 (k3 ()
677 (LetPrim (v3 (Constant (Int 1))) 677 (LetPrim (v3 (Constant (Int 1)))
678 (LetCont ((k4 (v4) 678 (LetCont ((k4 (v4)
679 (InvokeContinuation k0 ()))) 679 (InvokeContinuation k0 ())))
680 (InvokeStatic print (v3) k4))))) 680 (InvokeStatic print (v3) k4)))))
681 (Branch (IsTrue a) k1 k3)))) 681 (Branch (IsTrue a) k1 k3))))
682 '''), 682 '''),
683 683
684 const TestSpec(''' 684 const TestSpec('''
685 main(a) { 685 main(a) {
686 if (a) { 686 if (a) {
687 print(0); 687 print(0);
688 } else { 688 } else {
689 print(1); 689 print(1);
690 print(2); 690 print(2);
691 } 691 }
692 } 692 }
693 ''', ''' 693 ''', '''
694 (FunctionDefinition main (a) return 694 (FunctionDefinition main () (a) return
695 (LetCont ((k0 () 695 (LetCont ((k0 ()
696 (LetPrim (v0 (Constant (Null))) 696 (LetPrim (v0 (Constant (Null)))
697 (InvokeContinuation return (v0))))) 697 (InvokeContinuation return (v0)))))
698 (LetCont ((k1 () 698 (LetCont ((k1 ()
699 (LetPrim (v1 (Constant (Int 0))) 699 (LetPrim (v1 (Constant (Int 0)))
700 (LetCont ((k2 (v2) 700 (LetCont ((k2 (v2)
701 (InvokeContinuation k0 ()))) 701 (InvokeContinuation k0 ())))
702 (InvokeStatic print (v1) k2)))) 702 (InvokeStatic print (v1) k2))))
703 (k3 () 703 (k3 ()
704 (LetPrim (v3 (Constant (Int 1))) 704 (LetPrim (v3 (Constant (Int 1)))
705 (LetCont ((k4 (v4) 705 (LetCont ((k4 (v4)
706 (LetPrim (v5 (Constant (Int 2))) 706 (LetPrim (v5 (Constant (Int 2)))
707 (LetCont ((k5 (v6) 707 (LetCont ((k5 (v6)
708 (InvokeContinuation k0 ()))) 708 (InvokeContinuation k0 ())))
709 (InvokeStatic print (v5) k5))))) 709 (InvokeStatic print (v5) k5)))))
710 (InvokeStatic print (v3) k4))))) 710 (InvokeStatic print (v3) k4)))))
711 (Branch (IsTrue a) k1 k3)))) 711 (Branch (IsTrue a) k1 k3))))
712 '''), 712 '''),
713 ]), 713 ]),
714 714
715 const Group('Conditional expression', const [ 715 const Group('Conditional expression', const [
716 const TestSpec(''' 716 const TestSpec('''
717 main(a) { 717 main(a) {
718 return a ? print(0) : print(1); 718 return a ? print(0) : print(1);
719 } 719 }
720 ''', ''' 720 ''', '''
721 (FunctionDefinition main (a) return 721 (FunctionDefinition main () (a) return
722 (LetCont ((k0 (v0) 722 (LetCont ((k0 (v0)
723 (InvokeContinuation return (v0)))) 723 (InvokeContinuation return (v0))))
724 (LetCont ((k1 () 724 (LetCont ((k1 ()
725 (LetPrim (v1 (Constant (Int 0))) 725 (LetPrim (v1 (Constant (Int 0)))
726 (LetCont ((k2 (v2) 726 (LetCont ((k2 (v2)
727 (InvokeContinuation k0 (v2)))) 727 (InvokeContinuation k0 (v2))))
728 (InvokeStatic print (v1) k2)))) 728 (InvokeStatic print (v1) k2))))
729 (k3 () 729 (k3 ()
730 (LetPrim (v3 (Constant (Int 1))) 730 (LetPrim (v3 (Constant (Int 1)))
731 (LetCont ((k4 (v4) 731 (LetCont ((k4 (v4)
732 (InvokeContinuation k0 (v4)))) 732 (InvokeContinuation k0 (v4))))
733 (InvokeStatic print (v3) k4))))) 733 (InvokeStatic print (v3) k4)))))
734 (Branch (IsTrue a) k1 k3)))) 734 (Branch (IsTrue a) k1 k3))))
735 '''), 735 '''),
736 ]), 736 ]),
737 737
738 738
739 // These test that unreachable statements are skipped within a block. 739 // These test that unreachable statements are skipped within a block.
740 const Group('Block statements', const <TestSpec>[ 740 const Group('Block statements', const <TestSpec>[
741 const TestSpec(''' 741 const TestSpec('''
742 main(a) { 742 main(a) {
743 return 0; 743 return 0;
744 return 1; 744 return 1;
745 } 745 }
746 ''', ''' 746 ''', '''
747 (FunctionDefinition main (a) return 747 (FunctionDefinition main () (a) return
748 (LetPrim (v0 (Constant (Int 0))) 748 (LetPrim (v0 (Constant (Int 0)))
749 (InvokeContinuation return (v0)))) 749 (InvokeContinuation return (v0))))
750 '''), 750 '''),
751 751
752 const TestSpec(''' 752 const TestSpec('''
753 main(a) { 753 main(a) {
754 if (a) { 754 if (a) {
755 return 0; 755 return 0;
756 return 1; 756 return 1;
757 } else { 757 } else {
758 return 2; 758 return 2;
759 return 3; 759 return 3;
760 } 760 }
761 } 761 }
762 ''', ''' 762 ''', '''
763 (FunctionDefinition main (a) return 763 (FunctionDefinition main () (a) return
764 (LetCont ((k0 () 764 (LetCont ((k0 ()
765 (LetPrim (v0 (Constant (Int 0))) 765 (LetPrim (v0 (Constant (Int 0)))
766 (InvokeContinuation return (v0)))) 766 (InvokeContinuation return (v0))))
767 (k1 () 767 (k1 ()
768 (LetPrim (v1 (Constant (Int 2))) 768 (LetPrim (v1 (Constant (Int 2)))
769 (InvokeContinuation return (v1))))) 769 (InvokeContinuation return (v1)))))
770 (Branch (IsTrue a) k0 k1))) 770 (Branch (IsTrue a) k0 k1)))
771 '''), 771 '''),
772 772
773 const TestSpec(''' 773 const TestSpec('''
774 main(a) { 774 main(a) {
775 if (a) { 775 if (a) {
776 print(0); 776 print(0);
777 return 0; 777 return 0;
778 return 1; 778 return 1;
779 } else { 779 } else {
780 print(2); 780 print(2);
781 return 2; 781 return 2;
782 return 3; 782 return 3;
783 } 783 }
784 } 784 }
785 ''', ''' 785 ''', '''
786 (FunctionDefinition main (a) return 786 (FunctionDefinition main () (a) return
787 (LetCont ((k0 () 787 (LetCont ((k0 ()
788 (LetPrim (v0 (Constant (Int 0))) 788 (LetPrim (v0 (Constant (Int 0)))
789 (LetCont ((k1 (v1) 789 (LetCont ((k1 (v1)
790 (LetPrim (v2 (Constant (Int 0))) 790 (LetPrim (v2 (Constant (Int 0)))
791 (InvokeContinuation return (v2))))) 791 (InvokeContinuation return (v2)))))
792 (InvokeStatic print (v0) k1)))) 792 (InvokeStatic print (v0) k1))))
793 (k2 () 793 (k2 ()
794 (LetPrim (v3 (Constant (Int 2))) 794 (LetPrim (v3 (Constant (Int 2)))
795 (LetCont ((k3 (v4) 795 (LetCont ((k3 (v4)
796 (LetPrim (v5 (Constant (Int 2))) 796 (LetPrim (v5 (Constant (Int 2)))
797 (InvokeContinuation return (v5))))) 797 (InvokeContinuation return (v5)))))
798 (InvokeStatic print (v3) k3))))) 798 (InvokeStatic print (v3) k3)))))
799 (Branch (IsTrue a) k0 k2))) 799 (Branch (IsTrue a) k0 k2)))
800 '''), 800 '''),
801 ]), 801 ]),
802 802
803 const Group('Constructor invocation', const <TestSpec>[ 803 const Group('Constructor invocation', const <TestSpec>[
804 const TestSpec(''' 804 const TestSpec('''
805 main(a) { 805 main(a) {
806 new Object(); 806 new Object();
807 } 807 }
808 ''', ''' 808 ''', '''
809 (FunctionDefinition main (a) return 809 (FunctionDefinition main () (a) return
810 (LetCont ((k0 (v0) 810 (LetCont ((k0 (v0)
811 (LetPrim (v1 (Constant (Null))) 811 (LetPrim (v1 (Constant (Null)))
812 (InvokeContinuation return (v1))))) 812 (InvokeContinuation return (v1)))))
813 (InvokeConstructor Object () k0))) 813 (InvokeConstructor Object () k0)))
814 '''), 814 '''),
815 815
816 const TestSpec(''' 816 const TestSpec('''
817 main(a) { 817 main(a) {
818 new Deprecated(""); 818 new Deprecated("");
819 } 819 }
820 ''', ''' 820 ''', '''
821 (FunctionDefinition main (a) return 821 (FunctionDefinition main () (a) return
822 (LetPrim (v0 (Constant (String ""))) 822 (LetPrim (v0 (Constant (String "")))
823 (LetCont ((k0 (v1) 823 (LetCont ((k0 (v1)
824 (LetPrim (v2 (Constant (Null))) 824 (LetPrim (v2 (Constant (Null)))
825 (InvokeContinuation return (v2))))) 825 (InvokeContinuation return (v2)))))
826 (InvokeConstructor Deprecated (v0) k0)))) 826 (InvokeConstructor Deprecated (v0) k0))))
827 '''), 827 '''),
828 ]), 828 ]),
829 829
830 const Group('List literal', const <TestSpec>[ 830 const Group('List literal', const <TestSpec>[
831 const TestSpec(''' 831 const TestSpec('''
832 main() { 832 main() {
833 return []; 833 return [];
834 } 834 }
835 ''', ''' 835 ''', '''
836 (FunctionDefinition main () return 836 (FunctionDefinition main () () return
837 (LetPrim (v0 (LiteralList ())) 837 (LetPrim (v0 (LiteralList ()))
838 (InvokeContinuation return (v0)))) 838 (InvokeContinuation return (v0))))
839 '''), 839 '''),
840 840
841 const TestSpec(''' 841 const TestSpec('''
842 main() { 842 main() {
843 return [0]; 843 return [0];
844 } 844 }
845 ''', ''' 845 ''', '''
846 (FunctionDefinition main () return 846 (FunctionDefinition main () () return
847 (LetPrim (v0 (Constant (Int 0))) 847 (LetPrim (v0 (Constant (Int 0)))
848 (LetPrim (v1 (LiteralList (v0))) 848 (LetPrim (v1 (LiteralList (v0)))
849 (InvokeContinuation return (v1))))) 849 (InvokeContinuation return (v1)))))
850 '''), 850 '''),
851 851
852 const TestSpec(''' 852 const TestSpec('''
853 main(a) { 853 main(a) {
854 return [0, 1, a]; 854 return [0, 1, a];
855 } 855 }
856 ''', ''' 856 ''', '''
857 (FunctionDefinition main (a) return 857 (FunctionDefinition main () (a) return
858 (LetPrim (v0 (Constant (Int 0))) 858 (LetPrim (v0 (Constant (Int 0)))
859 (LetPrim (v1 (Constant (Int 1))) 859 (LetPrim (v1 (Constant (Int 1)))
860 (LetPrim (v2 (LiteralList (v0 v1 a))) 860 (LetPrim (v2 (LiteralList (v0 v1 a)))
861 (InvokeContinuation return (v2)))))) 861 (InvokeContinuation return (v2))))))
862 '''), 862 '''),
863 863
864 const TestSpec(''' 864 const TestSpec('''
865 main(a) { 865 main(a) {
866 return [0, [1], [a, [3]]]; 866 return [0, [1], [a, [3]]];
867 } 867 }
868 ''', ''' 868 ''', '''
869 (FunctionDefinition main (a) return 869 (FunctionDefinition main () (a) return
870 (LetPrim (v0 (Constant (Int 0))) 870 (LetPrim (v0 (Constant (Int 0)))
871 (LetPrim (v1 (Constant (Int 1))) 871 (LetPrim (v1 (Constant (Int 1)))
872 (LetPrim (v2 (LiteralList (v1))) 872 (LetPrim (v2 (LiteralList (v1)))
873 (LetPrim (v3 (Constant (Int 3))) 873 (LetPrim (v3 (Constant (Int 3)))
874 (LetPrim (v4 (LiteralList (v3))) 874 (LetPrim (v4 (LiteralList (v3)))
875 (LetPrim (v5 (LiteralList (a v4))) 875 (LetPrim (v5 (LiteralList (a v4)))
876 (LetPrim (v6 (LiteralList (v0 v2 v5))) 876 (LetPrim (v6 (LiteralList (v0 v2 v5)))
877 (InvokeContinuation return (v6)))))))))) 877 (InvokeContinuation return (v6))))))))))
878 '''), 878 '''),
879 ]), 879 ]),
880 880
881 const Group('Map literal', const <TestSpec>[ 881 const Group('Map literal', const <TestSpec>[
882 const TestSpec(''' 882 const TestSpec('''
883 main() { 883 main() {
884 return {}; 884 return {};
885 } 885 }
886 ''', ''' 886 ''', '''
887 (FunctionDefinition main () return 887 (FunctionDefinition main () () return
888 (LetPrim (v0 (LiteralMap () ())) 888 (LetPrim (v0 (LiteralMap () ()))
889 (InvokeContinuation return (v0)))) 889 (InvokeContinuation return (v0))))
890 '''), 890 '''),
891 891
892 const TestSpec(''' 892 const TestSpec('''
893 main() { 893 main() {
894 return {"a": 0}; 894 return {"a": 0};
895 } 895 }
896 ''', ''' 896 ''', '''
897 (FunctionDefinition main () return 897 (FunctionDefinition main () () return
898 (LetPrim (v0 (Constant (String "a"))) 898 (LetPrim (v0 (Constant (String "a")))
899 (LetPrim (v1 (Constant (Int 0))) 899 (LetPrim (v1 (Constant (Int 0)))
900 (LetPrim (v2 (LiteralMap (v0) (v1))) 900 (LetPrim (v2 (LiteralMap (v0) (v1)))
901 (InvokeContinuation return (v2)))))) 901 (InvokeContinuation return (v2))))))
902 '''), 902 '''),
903 903
904 const TestSpec(''' 904 const TestSpec('''
905 main(a) { 905 main(a) {
906 return {"a": 0, "b": 1, "c": a}; 906 return {"a": 0, "b": 1, "c": a};
907 } 907 }
908 ''', ''' 908 ''', '''
909 (FunctionDefinition main (a) return 909 (FunctionDefinition main () (a) return
910 (LetPrim (v0 (Constant (String "a"))) 910 (LetPrim (v0 (Constant (String "a")))
911 (LetPrim (v1 (Constant (Int 0))) 911 (LetPrim (v1 (Constant (Int 0)))
912 (LetPrim (v2 (Constant (String "b"))) 912 (LetPrim (v2 (Constant (String "b")))
913 (LetPrim (v3 (Constant (Int 1))) 913 (LetPrim (v3 (Constant (Int 1)))
914 (LetPrim (v4 (Constant (String "c"))) 914 (LetPrim (v4 (Constant (String "c")))
915 (LetPrim (v5 (LiteralMap (v0 v2 v4) (v1 v3 a))) 915 (LetPrim (v5 (LiteralMap (v0 v2 v4) (v1 v3 a)))
916 (InvokeContinuation return (v5))))))))) 916 (InvokeContinuation return (v5)))))))))
917 '''), 917 '''),
918 918
919 const TestSpec(''' 919 const TestSpec('''
920 main(a) { 920 main(a) {
921 return {0: "a", 1: {2: "b"}, a: {3: "c"}}; 921 return {0: "a", 1: {2: "b"}, a: {3: "c"}};
922 } 922 }
923 ''', ''' 923 ''', '''
924 (FunctionDefinition main (a) return 924 (FunctionDefinition main () (a) return
925 (LetPrim (v0 (Constant (Int 0))) 925 (LetPrim (v0 (Constant (Int 0)))
926 (LetPrim (v1 (Constant (String "a"))) 926 (LetPrim (v1 (Constant (String "a")))
927 (LetPrim (v2 (Constant (Int 1))) 927 (LetPrim (v2 (Constant (Int 1)))
928 (LetPrim (v3 (Constant (Int 2))) 928 (LetPrim (v3 (Constant (Int 2)))
929 (LetPrim (v4 (Constant (String "b"))) 929 (LetPrim (v4 (Constant (String "b")))
930 (LetPrim (v5 (LiteralMap (v3) (v4))) 930 (LetPrim (v5 (LiteralMap (v3) (v4)))
931 (LetPrim (v6 (Constant (Int 3))) 931 (LetPrim (v6 (Constant (Int 3)))
932 (LetPrim (v7 (Constant (String "c"))) 932 (LetPrim (v7 (Constant (String "c")))
933 (LetPrim (v8 (LiteralMap (v6) (v7))) 933 (LetPrim (v8 (LiteralMap (v6) (v7)))
934 (LetPrim (v9 (LiteralMap (v0 v2 a) (v1 v5 v8))) 934 (LetPrim (v9 (LiteralMap (v0 v2 a) (v1 v5 v8)))
935 (InvokeContinuation return (v9))))))))))))) 935 (InvokeContinuation return (v9)))))))))))))
936 '''), 936 '''),
937 ]), 937 ]),
938 938
939 const Group('For loop', const <TestSpec>[ 939 const Group('For loop', const <TestSpec>[
940 const TestSpec(''' 940 const TestSpec('''
941 main() { 941 main() {
942 for (;;) {} 942 for (;;) {}
943 } 943 }
944 ''', ''' 944 ''', '''
945 (FunctionDefinition main () return 945 (FunctionDefinition main () () return
946 (LetCont ((rec k0 () 946 (LetCont ((rec k0 ()
947 (LetPrim (v0 (Constant (Bool true))) 947 (LetPrim (v0 (Constant (Bool true)))
948 (LetCont ((k1 () 948 (LetCont ((k1 ()
949 (LetPrim (v1 (Constant (Null))) 949 (LetPrim (v1 (Constant (Null)))
950 (InvokeContinuation return (v1)))) 950 (InvokeContinuation return (v1))))
951 (k2 () 951 (k2 ()
952 (InvokeContinuation rec k0 ()))) 952 (InvokeContinuation rec k0 ())))
953 (Branch (IsTrue v0) k2 k1))))) 953 (Branch (IsTrue v0) k2 k1)))))
954 (InvokeContinuation k0 ()))) 954 (InvokeContinuation k0 ())))
955 '''), 955 '''),
956 956
957 const TestSpec(''' 957 const TestSpec('''
958 main() { 958 main() {
959 for (var i = 0; i < 10; i = i + 1) { 959 for (var i = 0; i < 10; i = i + 1) {
960 print(i); 960 print(i);
961 } 961 }
962 } 962 }
963 ''', ''' 963 ''', '''
964 (FunctionDefinition main () return 964 (FunctionDefinition main () () return
965 (LetPrim (v0 (Constant (Int 0))) 965 (LetPrim (v0 (Constant (Int 0)))
966 (LetCont ((rec k0 (v1) 966 (LetCont ((rec k0 (v1)
967 (LetPrim (v2 (Constant (Int 10))) 967 (LetPrim (v2 (Constant (Int 10)))
968 (LetCont ((k1 (v3) 968 (LetCont ((k1 (v3)
969 (LetCont ((k2 () 969 (LetCont ((k2 ()
970 (LetPrim (v4 (Constant (Null))) 970 (LetPrim (v4 (Constant (Null)))
971 (InvokeContinuation return (v4)))) 971 (InvokeContinuation return (v4))))
972 (k3 () 972 (k3 ()
973 (LetCont ((k4 (v5) 973 (LetCont ((k4 (v5)
974 (LetPrim (v6 (Constant (Int 1))) 974 (LetPrim (v6 (Constant (Int 1)))
975 (LetCont ((k5 (v7) 975 (LetCont ((k5 (v7)
976 (InvokeContinuation rec k0 (v7)))) 976 (InvokeContinuation rec k0 (v7))))
977 (InvokeMethod v1 + (v6) k5))))) 977 (InvokeMethod v1 + (v6) k5)))))
978 (InvokeStatic print (v1) k4)))) 978 (InvokeStatic print (v1) k4))))
979 (Branch (IsTrue v3) k3 k2)))) 979 (Branch (IsTrue v3) k3 k2))))
980 (InvokeMethod v1 < (v2) k1))))) 980 (InvokeMethod v1 < (v2) k1)))))
981 (InvokeContinuation k0 (v0))))) 981 (InvokeContinuation k0 (v0)))))
982 '''), 982 '''),
983 983
984 const TestSpec(''' 984 const TestSpec('''
985 main(i) { 985 main(i) {
986 for (i = 0; i < 10; i = i + 1) { 986 for (i = 0; i < 10; i = i + 1) {
987 print(i); 987 print(i);
988 } 988 }
989 } 989 }
990 ''', ''' 990 ''', '''
991 (FunctionDefinition main (i) return 991 (FunctionDefinition main () (i) return
992 (LetPrim (v0 (Constant (Int 0))) 992 (LetPrim (v0 (Constant (Int 0)))
993 (LetCont ((rec k0 (v1) 993 (LetCont ((rec k0 (v1)
994 (LetPrim (v2 (Constant (Int 10))) 994 (LetPrim (v2 (Constant (Int 10)))
995 (LetCont ((k1 (v3) 995 (LetCont ((k1 (v3)
996 (LetCont ((k2 () 996 (LetCont ((k2 ()
997 (LetPrim (v4 (Constant (Null))) 997 (LetPrim (v4 (Constant (Null)))
998 (InvokeContinuation return (v4)))) 998 (InvokeContinuation return (v4))))
999 (k3 () 999 (k3 ()
1000 (LetCont ((k4 (v5) 1000 (LetCont ((k4 (v5)
1001 (LetPrim (v6 (Constant (Int 1))) 1001 (LetPrim (v6 (Constant (Int 1)))
1002 (LetCont ((k5 (v7) 1002 (LetCont ((k5 (v7)
1003 (InvokeContinuation rec k0 (v7)))) 1003 (InvokeContinuation rec k0 (v7))))
1004 (InvokeMethod v1 + (v6) k5))))) 1004 (InvokeMethod v1 + (v6) k5)))))
1005 (InvokeStatic print (v1) k4)))) 1005 (InvokeStatic print (v1) k4))))
1006 (Branch (IsTrue v3) k3 k2)))) 1006 (Branch (IsTrue v3) k3 k2))))
1007 (InvokeMethod v1 < (v2) k1))))) 1007 (InvokeMethod v1 < (v2) k1)))))
1008 (InvokeContinuation k0 (v0))))) 1008 (InvokeContinuation k0 (v0)))))
1009 '''), 1009 '''),
1010 ]), 1010 ]),
1011 1011
1012 const Group('While loop', const <TestSpec>[ 1012 const Group('While loop', const <TestSpec>[
1013 const TestSpec(''' 1013 const TestSpec('''
1014 main() { 1014 main() {
1015 while (true) {} 1015 while (true) {}
1016 } 1016 }
1017 ''', ''' 1017 ''', '''
1018 (FunctionDefinition main () return 1018 (FunctionDefinition main () () return
1019 (LetCont ((rec k0 () 1019 (LetCont ((rec k0 ()
1020 (LetPrim (v0 (Constant (Bool true))) 1020 (LetPrim (v0 (Constant (Bool true)))
1021 (LetCont ((k1 () 1021 (LetCont ((k1 ()
1022 (LetPrim (v1 (Constant (Null))) 1022 (LetPrim (v1 (Constant (Null)))
1023 (InvokeContinuation return (v1)))) 1023 (InvokeContinuation return (v1))))
1024 (k2 () 1024 (k2 ()
1025 (InvokeContinuation rec k0 ()))) 1025 (InvokeContinuation rec k0 ())))
1026 (Branch (IsTrue v0) k2 k1))))) 1026 (Branch (IsTrue v0) k2 k1)))))
1027 (InvokeContinuation k0 ()))) 1027 (InvokeContinuation k0 ())))
1028 '''), 1028 '''),
1029 1029
1030 const TestSpec(''' 1030 const TestSpec('''
1031 main() { 1031 main() {
1032 var i = 0; 1032 var i = 0;
1033 while (i < 10) { 1033 while (i < 10) {
1034 print(i); 1034 print(i);
1035 i = i + 1; 1035 i = i + 1;
1036 } 1036 }
1037 } 1037 }
1038 ''', ''' 1038 ''', '''
1039 (FunctionDefinition main () return 1039 (FunctionDefinition main () () return
1040 (LetPrim (v0 (Constant (Int 0))) 1040 (LetPrim (v0 (Constant (Int 0)))
1041 (LetCont ((rec k0 (v1) 1041 (LetCont ((rec k0 (v1)
1042 (LetPrim (v2 (Constant (Int 10))) 1042 (LetPrim (v2 (Constant (Int 10)))
1043 (LetCont ((k1 (v3) 1043 (LetCont ((k1 (v3)
1044 (LetCont ((k2 () 1044 (LetCont ((k2 ()
1045 (LetPrim (v4 (Constant (Null))) 1045 (LetPrim (v4 (Constant (Null)))
1046 (InvokeContinuation return (v4)))) 1046 (InvokeContinuation return (v4))))
1047 (k3 () 1047 (k3 ()
1048 (LetCont ((k4 (v5) 1048 (LetCont ((k4 (v5)
1049 (LetPrim (v6 (Constant (Int 1))) 1049 (LetPrim (v6 (Constant (Int 1)))
1050 (LetCont ((k5 (v7) 1050 (LetCont ((k5 (v7)
1051 (InvokeContinuation rec k0 (v7)))) 1051 (InvokeContinuation rec k0 (v7))))
1052 (InvokeMethod v1 + (v6) k5))))) 1052 (InvokeMethod v1 + (v6) k5)))))
1053 (InvokeStatic print (v1) k4)))) 1053 (InvokeStatic print (v1) k4))))
1054 (Branch (IsTrue v3) k3 k2)))) 1054 (Branch (IsTrue v3) k3 k2))))
1055 (InvokeMethod v1 < (v2) k1))))) 1055 (InvokeMethod v1 < (v2) k1)))))
1056 (InvokeContinuation k0 (v0))))) 1056 (InvokeContinuation k0 (v0)))))
1057 '''), 1057 '''),
1058 ]), 1058 ]),
1059 1059
1060 const Group('Type operators', const <TestSpec>[ 1060 const Group('Type operators', const <TestSpec>[
1061 const TestSpec(''' 1061 const TestSpec('''
1062 main(a) { 1062 main(a) {
1063 return a is String; 1063 return a is String;
1064 } 1064 }
1065 ''', ''' 1065 ''', '''
1066 (FunctionDefinition main (a) return 1066 (FunctionDefinition main () (a) return
1067 (LetCont ((k0 (v0) 1067 (LetCont ((k0 (v0)
1068 (InvokeContinuation return (v0)))) 1068 (InvokeContinuation return (v0))))
1069 (TypeOperator is a String k0))) 1069 (TypeOperator is a String k0)))
1070 '''), 1070 '''),
1071 1071
1072 const TestSpec(''' 1072 const TestSpec('''
1073 main(a) { 1073 main(a) {
1074 return a is List<String>; 1074 return a is List<String>;
1075 } 1075 }
1076 ''', ''' 1076 ''', '''
1077 (FunctionDefinition main (a) return 1077 (FunctionDefinition main () (a) return
1078 (LetCont ((k0 (v0) 1078 (LetCont ((k0 (v0)
1079 (InvokeContinuation return (v0)))) 1079 (InvokeContinuation return (v0))))
1080 (TypeOperator is a List<String> k0))) 1080 (TypeOperator is a List<String> k0)))
1081 '''), 1081 '''),
1082 1082
1083 const TestSpec(''' 1083 const TestSpec('''
1084 main(a) { 1084 main(a) {
1085 return a is Comparator<String>; 1085 return a is Comparator<String>;
1086 } 1086 }
1087 ''', ''' 1087 ''', '''
1088 (FunctionDefinition main (a) return 1088 (FunctionDefinition main () (a) return
1089 (LetCont ((k0 (v0) 1089 (LetCont ((k0 (v0)
1090 (InvokeContinuation return (v0)))) 1090 (InvokeContinuation return (v0))))
1091 (TypeOperator is a Comparator<String> k0))) 1091 (TypeOperator is a Comparator<String> k0)))
1092 '''), 1092 '''),
1093 1093
1094 const TestSpec(''' 1094 const TestSpec('''
1095 main(a) { 1095 main(a) {
1096 return a is! String; 1096 return a is! String;
1097 } 1097 }
1098 ''', ''' 1098 ''', '''
1099 (FunctionDefinition main (a) return 1099 (FunctionDefinition main () (a) return
1100 (LetCont ((k0 (v0) 1100 (LetCont ((k0 (v0)
1101 (LetCont ((k1 (v1) 1101 (LetCont ((k1 (v1)
1102 (InvokeContinuation return (v1)))) 1102 (InvokeContinuation return (v1))))
1103 (LetCont ((k2 () 1103 (LetCont ((k2 ()
1104 (LetPrim (v2 (Constant (Bool false))) 1104 (LetPrim (v2 (Constant (Bool false)))
1105 (InvokeContinuation k1 (v2)))) 1105 (InvokeContinuation k1 (v2))))
1106 (k3 () 1106 (k3 ()
1107 (LetPrim (v3 (Constant (Bool true))) 1107 (LetPrim (v3 (Constant (Bool true)))
1108 (InvokeContinuation k1 (v3))))) 1108 (InvokeContinuation k1 (v3)))))
1109 (Branch (IsTrue v0) k2 k3))))) 1109 (Branch (IsTrue v0) k2 k3)))))
1110 (TypeOperator is a String k0))) 1110 (TypeOperator is a String k0)))
1111 '''), 1111 '''),
1112 1112
1113 const TestSpec(''' 1113 const TestSpec('''
1114 main(a) { 1114 main(a) {
1115 return a as String; 1115 return a as String;
1116 } 1116 }
1117 ''', ''' 1117 ''', '''
1118 (FunctionDefinition main (a) return 1118 (FunctionDefinition main () (a) return
1119 (LetCont ((k0 (v0) 1119 (LetCont ((k0 (v0)
1120 (InvokeContinuation return (v0)))) 1120 (InvokeContinuation return (v0))))
1121 (TypeOperator as a String k0))) 1121 (TypeOperator as a String k0)))
1122 '''), 1122 '''),
1123 ]), 1123 ]),
1124 1124
1125 const Group('For in loop', const <TestSpec>[ 1125 const Group('For in loop', const <TestSpec>[
1126 // TODO(johnniwinther): Add tests for `i` as top-level, static and instance 1126 // TODO(johnniwinther): Add tests for `i` as top-level, static and instance
1127 // fields. 1127 // fields.
1128 const TestSpec(''' 1128 const TestSpec('''
1129 main(a) { 1129 main(a) {
1130 for (var i in a) { 1130 for (var i in a) {
1131 print(i); 1131 print(i);
1132 } 1132 }
1133 } 1133 }
1134 ''', ''' 1134 ''', '''
1135 (FunctionDefinition main (a) return 1135 (FunctionDefinition main () (a) return
1136 (LetCont ((k0 (v0) 1136 (LetCont ((k0 (v0)
1137 (LetCont ((rec k1 (v1) 1137 (LetCont ((rec k1 (v1)
1138 (LetCont ((k2 (v2) 1138 (LetCont ((k2 (v2)
1139 (LetCont ((k3 () 1139 (LetCont ((k3 ()
1140 (LetPrim (v3 (Constant (Null))) 1140 (LetPrim (v3 (Constant (Null)))
1141 (InvokeContinuation return (v3)))) 1141 (InvokeContinuation return (v3))))
1142 (k4 () 1142 (k4 ()
1143 (LetPrim (v4 (Constant (Null))) 1143 (LetPrim (v4 (Constant (Null)))
1144 (LetCont ((k5 (v5) 1144 (LetCont ((k5 (v5)
1145 (LetCont ((k6 (v6) 1145 (LetCont ((k6 (v6)
1146 (InvokeContinuation rec k1 (v1)))) 1146 (InvokeContinuation rec k1 (v1))))
1147 (InvokeStatic print (v5) k6)))) 1147 (InvokeStatic print (v5) k6))))
1148 (InvokeMethod v0 current () k5))))) 1148 (InvokeMethod v0 current () k5)))))
1149 (Branch (IsTrue v2) k4 k3)))) 1149 (Branch (IsTrue v2) k4 k3))))
1150 (InvokeMethod v0 moveNext () k2)))) 1150 (InvokeMethod v0 moveNext () k2))))
1151 (InvokeContinuation k1 (a))))) 1151 (InvokeContinuation k1 (a)))))
1152 (InvokeMethod a iterator () k0))) 1152 (InvokeMethod a iterator () k0)))
1153 '''), 1153 '''),
1154 1154
1155 const TestSpec(''' 1155 const TestSpec('''
1156 main(a) { 1156 main(a) {
1157 for (var i in a) { 1157 for (var i in a) {
1158 print(i); 1158 print(i);
1159 i = 0; 1159 i = 0;
1160 print(i); 1160 print(i);
1161 } 1161 }
1162 } 1162 }
1163 ''', ''' 1163 ''', '''
1164 (FunctionDefinition main (a) return 1164 (FunctionDefinition main () (a) return
1165 (LetCont ((k0 (v0) 1165 (LetCont ((k0 (v0)
1166 (LetCont ((rec k1 (v1) 1166 (LetCont ((rec k1 (v1)
1167 (LetCont ((k2 (v2) 1167 (LetCont ((k2 (v2)
1168 (LetCont ((k3 () 1168 (LetCont ((k3 ()
1169 (LetPrim (v3 (Constant (Null))) 1169 (LetPrim (v3 (Constant (Null)))
1170 (InvokeContinuation return (v3)))) 1170 (InvokeContinuation return (v3))))
1171 (k4 () 1171 (k4 ()
1172 (LetPrim (v4 (Constant (Null))) 1172 (LetPrim (v4 (Constant (Null)))
1173 (LetCont ((k5 (v5) 1173 (LetCont ((k5 (v5)
1174 (LetCont ((k6 (v6) 1174 (LetCont ((k6 (v6)
(...skipping 10 matching lines...) Expand all
1185 '''), 1185 '''),
1186 1186
1187 const TestSpec(''' 1187 const TestSpec('''
1188 main(a) { 1188 main(a) {
1189 var i; 1189 var i;
1190 for (i in a) { 1190 for (i in a) {
1191 print(i); 1191 print(i);
1192 } 1192 }
1193 } 1193 }
1194 ''', ''' 1194 ''', '''
1195 (FunctionDefinition main (a) return 1195 (FunctionDefinition main () (a) return
1196 (LetPrim (v0 (Constant (Null))) 1196 (LetPrim (v0 (Constant (Null)))
1197 (LetCont ((k0 (v1) 1197 (LetCont ((k0 (v1)
1198 (LetCont ((rec k1 (v2 v3) 1198 (LetCont ((rec k1 (v2 v3)
1199 (LetCont ((k2 (v4) 1199 (LetCont ((k2 (v4)
1200 (LetCont ((k3 () 1200 (LetCont ((k3 ()
1201 (LetPrim (v5 (Constant (Null))) 1201 (LetPrim (v5 (Constant (Null)))
1202 (InvokeContinuation return (v5)))) 1202 (InvokeContinuation return (v5))))
1203 (k4 () 1203 (k4 ()
1204 (LetCont ((k5 (v6) 1204 (LetCont ((k5 (v6)
1205 (LetCont ((k6 (v7) 1205 (LetCont ((k6 (v7)
1206 (InvokeContinuation rec k1 (v2 v6)))) 1206 (InvokeContinuation rec k1 (v2 v6))))
1207 (InvokeStatic print (v6) k6)))) 1207 (InvokeStatic print (v6) k6))))
1208 (InvokeMethod v1 current () k5)))) 1208 (InvokeMethod v1 current () k5))))
1209 (Branch (IsTrue v4) k4 k3)))) 1209 (Branch (IsTrue v4) k4 k3))))
1210 (InvokeMethod v1 moveNext () k2)))) 1210 (InvokeMethod v1 moveNext () k2))))
1211 (InvokeContinuation k1 (a v0))))) 1211 (InvokeContinuation k1 (a v0)))))
1212 (InvokeMethod a iterator () k0)))) 1212 (InvokeMethod a iterator () k0))))
1213 '''), 1213 '''),
1214 ]), 1214 ]),
1215 1215
1216 const Group('Local functions', const <TestSpec>[ 1216 const Group('Local functions', const <TestSpec>[
1217 const TestSpec(''' 1217 const TestSpec('''
1218 main(a) { 1218 main(a) {
1219 local() {} 1219 local() {}
1220 return local(); 1220 return local();
1221 } 1221 }
1222 ''', ''' 1222 ''', '''
1223 (FunctionDefinition main (a) return 1223 (FunctionDefinition main () (a) return
1224 (LetPrim (v0 (CreateFunction 1224 (LetPrim (v0 (CreateFunction
1225 (FunctionDefinition local () return 1225 (FunctionDefinition local () () return
1226 (LetPrim (v1 (Constant (Null))) 1226 (LetPrim (v1 (Constant (Null)))
1227 (InvokeContinuation return (v1)))))) 1227 (InvokeContinuation return (v1))))))
1228 (LetCont ((k0 (v2) 1228 (LetCont ((k0 (v2)
1229 (InvokeContinuation return (v2)))) 1229 (InvokeContinuation return (v2))))
1230 (InvokeMethod v0 call () k0)))) 1230 (InvokeMethod v0 call () k0))))
1231 '''), 1231 '''),
1232 1232
1233 const TestSpec(''' 1233 const TestSpec('''
1234 main(a) { 1234 main(a) {
1235 local() {} 1235 local() {}
1236 var l = local; 1236 var l = local;
1237 return l(); 1237 return l();
1238 } 1238 }
1239 ''', ''' 1239 ''', '''
1240 (FunctionDefinition main (a) return 1240 (FunctionDefinition main () (a) return
1241 (LetPrim (v0 (CreateFunction 1241 (LetPrim (v0 (CreateFunction
1242 (FunctionDefinition local () return 1242 (FunctionDefinition local () () return
1243 (LetPrim (v1 (Constant (Null))) 1243 (LetPrim (v1 (Constant (Null)))
1244 (InvokeContinuation return (v1)))))) 1244 (InvokeContinuation return (v1))))))
1245 (LetCont ((k0 (v2) 1245 (LetCont ((k0 (v2)
1246 (InvokeContinuation return (v2)))) 1246 (InvokeContinuation return (v2))))
1247 (InvokeMethod v0 call () k0)))) 1247 (InvokeMethod v0 call () k0))))
1248 '''), 1248 '''),
1249 1249
1250 const TestSpec(''' 1250 const TestSpec('''
1251 main(a) { 1251 main(a) {
1252 return () {}(); 1252 return () {}();
1253 } 1253 }
1254 ''', ''' 1254 ''', '''
1255 (FunctionDefinition main (a) return 1255 (FunctionDefinition main () (a) return
1256 (LetPrim (v0 (CreateFunction 1256 (LetPrim (v0 (CreateFunction
1257 (FunctionDefinition () return 1257 (FunctionDefinition () () return
1258 (LetPrim (v1 (Constant (Null))) 1258 (LetPrim (v1 (Constant (Null)))
1259 (InvokeContinuation return (v1)))))) 1259 (InvokeContinuation return (v1))))))
1260 (LetCont ((k0 (v2) 1260 (LetCont ((k0 (v2)
1261 (InvokeContinuation return (v2)))) 1261 (InvokeContinuation return (v2))))
1262 (InvokeMethod v0 call () k0)))) 1262 (InvokeMethod v0 call () k0))))
1263 '''), 1263 '''),
1264 1264
1265 const TestSpec(''' 1265 const TestSpec('''
1266 main(a) { 1266 main(a) {
1267 var c = a ? () { return 0; } : () { return 1; } 1267 var c = a ? () { return 0; } : () { return 1; }
1268 return c(); 1268 return c();
1269 } 1269 }
1270 ''', ''' 1270 ''', '''
1271 (FunctionDefinition main (a) return 1271 (FunctionDefinition main () (a) return
1272 (LetCont ((k0 (v0) 1272 (LetCont ((k0 (v0)
1273 (LetCont ((k1 (v1) 1273 (LetCont ((k1 (v1)
1274 (InvokeContinuation return (v1)))) 1274 (InvokeContinuation return (v1))))
1275 (InvokeMethod v0 call () k1)))) 1275 (InvokeMethod v0 call () k1))))
1276 (LetCont ((k2 () 1276 (LetCont ((k2 ()
1277 (LetPrim (v2 (CreateFunction 1277 (LetPrim (v2 (CreateFunction
1278 (FunctionDefinition () return 1278 (FunctionDefinition () () return
1279 (LetPrim (v3 (Constant (Int 0))) 1279 (LetPrim (v3 (Constant (Int 0)))
1280 (InvokeContinuation return (v3)))))) 1280 (InvokeContinuation return (v3))))))
1281 (InvokeContinuation k0 (v2)))) 1281 (InvokeContinuation k0 (v2))))
1282 (k3 () 1282 (k3 ()
1283 (LetPrim (v4 (CreateFunction 1283 (LetPrim (v4 (CreateFunction
1284 (FunctionDefinition () return 1284 (FunctionDefinition () () return
1285 (LetPrim (v5 (Constant (Int 1))) 1285 (LetPrim (v5 (Constant (Int 1)))
1286 (InvokeContinuation return (v5)))))) 1286 (InvokeContinuation return (v5))))))
1287 (InvokeContinuation k0 (v4))))) 1287 (InvokeContinuation k0 (v4)))))
1288 (Branch (IsTrue a) k2 k3)))) 1288 (Branch (IsTrue a) k2 k3))))
1289 '''), 1289 '''),
1290 ]), 1290 ]),
1291 1291
1292 const Group('Top level field', const <TestSpec>[ 1292 const Group('Top level field', const <TestSpec>[
1293 const TestSpec(''' 1293 const TestSpec('''
1294 var field; 1294 var field;
1295 main(args) { 1295 main(args) {
1296 return field; 1296 return field;
1297 } 1297 }
1298 ''', const { 1298 ''', const {
1299 'main': ''' 1299 'main': '''
1300 (FunctionDefinition main (args) return 1300 (FunctionDefinition main () (args) return
1301 (LetCont ((k0 (v0) 1301 (LetCont ((k0 (v0)
1302 (InvokeContinuation return (v0)))) 1302 (InvokeContinuation return (v0))))
1303 (InvokeStatic field () k0))) 1303 (InvokeStatic field () k0)))
1304 ''', 1304 ''',
1305 'field': ''' 1305 'field': '''
1306 (FieldDefinition field) 1306 (FieldDefinition field)
1307 '''}), 1307 '''}),
1308 1308
1309 const TestSpec(''' 1309 const TestSpec('''
1310 var field = null; 1310 var field = null;
1311 main(args) { 1311 main(args) {
1312 return field; 1312 return field;
1313 } 1313 }
1314 ''', const { 1314 ''', const {
1315 'main': ''' 1315 'main': '''
1316 (FunctionDefinition main (args) return 1316 (FunctionDefinition main () (args) return
1317 (LetCont ((k0 (v0) 1317 (LetCont ((k0 (v0)
1318 (InvokeContinuation return (v0)))) 1318 (InvokeContinuation return (v0))))
1319 (InvokeStatic field () k0))) 1319 (InvokeStatic field () k0)))
1320 ''', 1320 ''',
1321 'field': ''' 1321 'field': '''
1322 (FieldDefinition field () return 1322 (FieldDefinition field () return
1323 (LetPrim (v0 (Constant (Null))) 1323 (LetPrim (v0 (Constant (Null)))
1324 (InvokeContinuation return (v0)))) 1324 (InvokeContinuation return (v0))))
1325 '''}), 1325 '''}),
1326 1326
1327 const TestSpec(''' 1327 const TestSpec('''
1328 var field = 0; 1328 var field = 0;
1329 main(args) { 1329 main(args) {
1330 return field; 1330 return field;
1331 } 1331 }
1332 ''', const { 1332 ''', const {
1333 'main': ''' 1333 'main': '''
1334 (FunctionDefinition main (args) return 1334 (FunctionDefinition main () (args) return
1335 (LetCont ((k0 (v0) 1335 (LetCont ((k0 (v0)
1336 (InvokeContinuation return (v0)))) 1336 (InvokeContinuation return (v0))))
1337 (InvokeStatic field () k0))) 1337 (InvokeStatic field () k0)))
1338 ''', 1338 ''',
1339 'field': ''' 1339 'field': '''
1340 (FieldDefinition field () return 1340 (FieldDefinition field () return
1341 (LetPrim (v0 (Constant (Int 0))) 1341 (LetPrim (v0 (Constant (Int 0)))
1342 (InvokeContinuation return (v0)))) 1342 (InvokeContinuation return (v0))))
1343 '''}), 1343 '''}),
1344 1344
1345 const TestSpec(''' 1345 const TestSpec('''
1346 var field; 1346 var field;
1347 main(args) { 1347 main(args) {
1348 field = args.length; 1348 field = args.length;
1349 return field; 1349 return field;
1350 } 1350 }
1351 ''', ''' 1351 ''', '''
1352 (FunctionDefinition main (args) return 1352 (FunctionDefinition main () (args) return
1353 (LetCont ((k0 (v0) 1353 (LetCont ((k0 (v0)
1354 (LetCont ((k1 (v1) 1354 (LetCont ((k1 (v1)
1355 (LetCont ((k2 (v2) 1355 (LetCont ((k2 (v2)
1356 (InvokeContinuation return (v2)))) 1356 (InvokeContinuation return (v2))))
1357 (InvokeStatic field () k2)))) 1357 (InvokeStatic field () k2))))
1358 (InvokeStatic field (v0) k1)))) 1358 (InvokeStatic field (v0) k1))))
1359 (InvokeMethod args length () k0))) 1359 (InvokeMethod args length () k0)))
1360 '''), 1360 '''),
1361 ]), 1361 ]),
1362 1362
1363 const Group('Closure variables', const <TestSpec>[ 1363 const Group('Closure variables', const <TestSpec>[
1364 const TestSpec(''' 1364 const TestSpec('''
1365 main(x,foo) { 1365 main(x,foo) {
1366 print(x); 1366 print(x);
1367 getFoo() => foo; 1367 getFoo() => foo;
1368 print(getFoo()); 1368 print(getFoo());
1369 } 1369 }
1370 ''', ''' 1370 ''', '''
1371 (FunctionDefinition main (x foo) return 1371 (FunctionDefinition main () (x foo) return
1372 (LetCont ((k0 (v0) 1372 (LetCont ((k0 (v0)
1373 (LetPrim (v1 (CreateFunction 1373 (LetPrim (v1 (CreateFunction
1374 (FunctionDefinition getFoo () return 1374 (FunctionDefinition getFoo () () return
1375 (LetPrim (v2 (GetMutableVariable foo)) 1375 (LetPrim (v2 (GetMutableVariable foo))
1376 (InvokeContinuation return (v2)))))) 1376 (InvokeContinuation return (v2))))))
1377 (LetCont ((k1 (v3) 1377 (LetCont ((k1 (v3)
1378 (LetCont ((k2 (v4) 1378 (LetCont ((k2 (v4)
1379 (LetPrim (v5 (Constant (Null))) 1379 (LetPrim (v5 (Constant (Null)))
1380 (InvokeContinuation return (v5))))) 1380 (InvokeContinuation return (v5)))))
1381 (InvokeStatic print (v3) k2)))) 1381 (InvokeStatic print (v3) k2))))
1382 (InvokeMethod v1 call () k1))))) 1382 (InvokeMethod v1 call () k1)))))
1383 (InvokeStatic print (x) k0))) 1383 (InvokeStatic print (x) k0)))
1384 ''', skipInAnalyzerFrontend: true) 1384 ''', skipInAnalyzerFrontend: true)
1385 ]), 1385 ]),
1386 1386
1387 const Group('Constructors', const <TestSpec>[ 1387 const Group('Constructors', const <TestSpec>[
1388 const TestSpec(''' 1388 const TestSpec('''
1389 class C {} 1389 class C {}
1390 main() { 1390 main() {
1391 return new C(); 1391 return new C();
1392 } 1392 }
1393 ''', 1393 ''',
1394 const { 1394 const {
1395 'main': ''' 1395 'main': '''
1396 (FunctionDefinition main () return 1396 (FunctionDefinition main () () return
1397 (LetCont ((k0 (v0) 1397 (LetCont ((k0 (v0)
1398 (InvokeContinuation return (v0)))) 1398 (InvokeContinuation return (v0))))
1399 (InvokeConstructor C () k0))) 1399 (InvokeConstructor C () k0)))
1400 ''', 1400 ''',
1401 'C.': ''' 1401 'C.': '''
1402 (ConstructorDefinition () return ( 1402 (ConstructorDefinition (this) () return (
1403 ) 1403 )
1404 (LetPrim (v0 (Constant (Null))) 1404 (LetPrim (v0 (Constant (Null)))
1405 (InvokeContinuation return (v0)))) 1405 (InvokeContinuation return (v0))))
1406 '''}), 1406 '''}),
1407 1407
1408 const TestSpec(''' 1408 const TestSpec('''
1409 class C { 1409 class C {
1410 C() {} 1410 C() {}
1411 } 1411 }
1412 main() { 1412 main() {
1413 return new C(); 1413 return new C();
1414 } 1414 }
1415 ''', 1415 ''',
1416 const { 1416 const {
1417 'main': ''' 1417 'main': '''
1418 (FunctionDefinition main () return 1418 (FunctionDefinition main () () return
1419 (LetCont ((k0 (v0) 1419 (LetCont ((k0 (v0)
1420 (InvokeContinuation return (v0)))) 1420 (InvokeContinuation return (v0))))
1421 (InvokeConstructor C () k0))) 1421 (InvokeConstructor C () k0)))
1422 ''', 1422 ''',
1423 'C.': ''' 1423 'C.': '''
1424 (ConstructorDefinition () return ( 1424 (ConstructorDefinition (this) () return (
1425 ) 1425 )
1426 (LetPrim (v0 (Constant (Null))) 1426 (LetPrim (v0 (Constant (Null)))
1427 (InvokeContinuation return (v0)))) 1427 (InvokeContinuation return (v0))))
1428 '''}), 1428 '''}),
1429 1429
1430 const TestSpec(''' 1430 const TestSpec('''
1431 class B {} 1431 class B {}
1432 class C extends B { 1432 class C extends B {
1433 C() {} 1433 C() {}
1434 } 1434 }
1435 main() { 1435 main() {
1436 return new C(); 1436 return new C();
1437 } 1437 }
1438 ''', 1438 ''',
1439 const { 1439 const {
1440 'main': ''' 1440 'main': '''
1441 (FunctionDefinition main () return 1441 (FunctionDefinition main () () return
1442 (LetCont ((k0 (v0) 1442 (LetCont ((k0 (v0)
1443 (InvokeContinuation return (v0)))) 1443 (InvokeContinuation return (v0))))
1444 (InvokeConstructor C () k0))) 1444 (InvokeConstructor C () k0)))
1445 ''', 1445 ''',
1446 'B.': ''' 1446 'B.': '''
1447 (ConstructorDefinition () return ( 1447 (ConstructorDefinition (this) () return (
1448 ) 1448 )
1449 (LetPrim (v0 (Constant (Null))) 1449 (LetPrim (v0 (Constant (Null)))
1450 (InvokeContinuation return (v0)))) 1450 (InvokeContinuation return (v0))))
1451 ''', 1451 ''',
1452 'C.': ''' 1452 'C.': '''
1453 (ConstructorDefinition () return ( 1453 (ConstructorDefinition (this) () return (
1454 ) 1454 )
1455 (LetPrim (v0 (Constant (Null))) 1455 (LetPrim (v0 (Constant (Null)))
1456 (InvokeContinuation return (v0)))) 1456 (InvokeContinuation return (v0))))
1457 '''}), 1457 '''}),
1458 1458
1459 const TestSpec(''' 1459 const TestSpec('''
1460 class B { 1460 class B {
1461 B() {} 1461 B() {}
1462 } 1462 }
1463 class C extends B {} 1463 class C extends B {}
1464 main() { 1464 main() {
1465 return new C(); 1465 return new C();
1466 } 1466 }
1467 ''', 1467 ''',
1468 const { 1468 const {
1469 'main': ''' 1469 'main': '''
1470 (FunctionDefinition main () return 1470 (FunctionDefinition main () () return
1471 (LetCont ((k0 (v0) 1471 (LetCont ((k0 (v0)
1472 (InvokeContinuation return (v0)))) 1472 (InvokeContinuation return (v0))))
1473 (InvokeConstructor C () k0))) 1473 (InvokeConstructor C () k0)))
1474 ''', 1474 ''',
1475 'B.': ''' 1475 'B.': '''
1476 (ConstructorDefinition () return ( 1476 (ConstructorDefinition (this) () return (
1477 ) 1477 )
1478 (LetPrim (v0 (Constant (Null))) 1478 (LetPrim (v0 (Constant (Null)))
1479 (InvokeContinuation return (v0)))) 1479 (InvokeContinuation return (v0))))
1480 ''', 1480 ''',
1481 'C.': ''' 1481 'C.': '''
1482 (ConstructorDefinition () return ( 1482 (ConstructorDefinition (this) () return (
1483 ) 1483 )
1484 (LetPrim (v0 (Constant (Null))) 1484 (LetPrim (v0 (Constant (Null)))
1485 (InvokeContinuation return (v0)))) 1485 (InvokeContinuation return (v0))))
1486 '''}), 1486 '''}),
1487 ]), 1487 ]),
1488 1488
1489 const Group('Instance method', const <TestSpec>[ 1489 const Group('Instance method', const <TestSpec>[
1490 const TestSpec(''' 1490 const TestSpec('''
1491 class C { 1491 class C {
1492 C() {} 1492 C() {}
1493 foo() {} 1493 foo() {}
1494 } 1494 }
1495 main() { 1495 main() {
1496 return new C().foo(); 1496 return new C().foo();
1497 } 1497 }
1498 ''', 1498 ''',
1499 const { 1499 const {
1500 'main': ''' 1500 'main': '''
1501 (FunctionDefinition main () return 1501 (FunctionDefinition main () () return
1502 (LetCont ((k0 (v0) 1502 (LetCont ((k0 (v0)
1503 (LetCont ((k1 (v1) 1503 (LetCont ((k1 (v1)
1504 (InvokeContinuation return (v1)))) 1504 (InvokeContinuation return (v1))))
1505 (InvokeMethod v0 foo () k1)))) 1505 (InvokeMethod v0 foo () k1))))
1506 (InvokeConstructor C () k0))) 1506 (InvokeConstructor C () k0)))
1507 ''', 1507 ''',
1508 'C.foo': ''' 1508 'C.foo': '''
1509 (FunctionDefinition foo () return 1509 (FunctionDefinition foo (this) () return
1510 (LetPrim (v0 (Constant (Null))) 1510 (LetPrim (v0 (Constant (Null)))
1511 (InvokeContinuation return (v0)))) 1511 (InvokeContinuation return (v0))))
1512 '''}), 1512 '''}),
1513 ]), 1513 ]),
1514 1514
1515 1515
1516 const Group('Try-catch', const <TestSpec>[ 1516 const Group('Try-catch', const <TestSpec>[
1517 const TestSpec(''' 1517 const TestSpec('''
1518 main() { 1518 main() {
1519 try {} catch (e) {} 1519 try {} catch (e) {}
1520 } 1520 }
1521 ''', 1521 ''',
1522 ''' 1522 '''
1523 (FunctionDefinition main () return 1523 (FunctionDefinition main () () return
1524 (LetCont ((k0 () 1524 (LetCont ((k0 ()
1525 (LetPrim (v0 (Constant (Null))) 1525 (LetPrim (v0 (Constant (Null)))
1526 (InvokeContinuation return (v0))))) 1526 (InvokeContinuation return (v0)))))
1527 (LetHandler ((v1 v2) 1527 (LetHandler ((v1 v2)
1528 (InvokeContinuation k0 ())) 1528 (InvokeContinuation k0 ()))
1529 (InvokeContinuation k0 ())))) 1529 (InvokeContinuation k0 ()))))
1530 '''), 1530 '''),
1531 1531
1532 const TestSpec(''' 1532 const TestSpec('''
1533 main() { 1533 main() {
1534 try { 1534 try {
1535 return; 1535 return;
1536 } catch (e) {} 1536 } catch (e) {}
1537 } 1537 }
1538 ''', 1538 ''',
1539 ''' 1539 '''
1540 (FunctionDefinition main () return 1540 (FunctionDefinition main () () return
1541 (LetCont ((k0 () 1541 (LetCont ((k0 ()
1542 (LetPrim (v0 (Constant (Null))) 1542 (LetPrim (v0 (Constant (Null)))
1543 (InvokeContinuation return (v0))))) 1543 (InvokeContinuation return (v0)))))
1544 (LetHandler ((v1 v2) 1544 (LetHandler ((v1 v2)
1545 (InvokeContinuation k0 ())) 1545 (InvokeContinuation k0 ()))
1546 (LetPrim (v3 (Constant (Null))) 1546 (LetPrim (v3 (Constant (Null)))
1547 (InvokeContinuation return (v3)))))) 1547 (InvokeContinuation return (v3))))))
1548 '''), 1548 '''),
1549 ]), 1549 ]),
1550 ]; 1550 ];
OLDNEW
« no previous file with comments | « pkg/analyzer2dart/lib/src/modely.dart ('k') | pkg/compiler/lib/src/cps_ir/cps_ir_builder.dart » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698