| OLD | NEW |
| 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 Loading... |
| 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 ]; |
| OLD | NEW |