OLD | NEW |
1 // Copyright (c) 2016, the Dart project authors. Please see the AUTHORS file | 1 // Copyright (c) 2016, 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.md file. | 3 // BSD-style license that can be found in the LICENSE.md file. |
4 | 4 |
5 // TODO(ahe): Copied from closure_conversion branch of kernel, remove this file | 5 // TODO(ahe): Copied from closure_conversion branch of kernel, remove this file |
6 // when closure_conversion is merged with master. | 6 // when closure_conversion is merged with master. |
7 | 7 |
8 library kernel.testing.kernel_chain; | 8 library kernel.testing.kernel_chain; |
9 | 9 |
10 import 'dart:async' show | 10 import 'dart:async' show |
(...skipping 170 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
181 target.performModularTransformations(program); | 181 target.performModularTransformations(program); |
182 target.performGlobalTransformations(program); | 182 target.performGlobalTransformations(program); |
183 return pass(program); | 183 return pass(program); |
184 } catch (e, s) { | 184 } catch (e, s) { |
185 return crash(e, s); | 185 return crash(e, s); |
186 } | 186 } |
187 } | 187 } |
188 } | 188 } |
189 | 189 |
190 | 190 |
191 class Print extends Step<Program, Program, dynamic> { | 191 class Print extends Step<Program, Program, TestContext> { |
192 const Print(); | 192 const Print(); |
193 | 193 |
194 String get name => "print"; | 194 String get name => "print"; |
195 | 195 |
196 Future<Result<Program>> run(Program program, _) async { | 196 Future<Result<Program>> run(Program program, _) async { |
197 StringBuffer sb = new StringBuffer(); | 197 StringBuffer sb = new StringBuffer(); |
198 for (Library library in program.libraries) { | 198 for (Library library in program.libraries) { |
199 Printer printer = new Printer(sb); | 199 Printer printer = new Printer(sb); |
200 if (library.importUri.scheme != "dart" && | 200 if (library.importUri.scheme != "dart" && |
201 library.importUri.scheme != "package") { | 201 library.importUri.scheme != "package") { |
202 printer.writeLibraryFile(library); | 202 printer.writeLibraryFile(library); |
203 } | 203 } |
204 } | 204 } |
205 print("$sb"); | 205 print("$sb"); |
206 return pass(program); | 206 return pass(program); |
207 } | 207 } |
208 } | 208 } |
209 | 209 |
210 class Verify extends Step<Program, Program, dynamic> { | 210 class Verify extends Step<Program, Program, TestContext> { |
211 final bool fullCompile; | 211 final bool fullCompile; |
212 | 212 |
213 const Verify(this.fullCompile); | 213 const Verify(this.fullCompile); |
214 | 214 |
215 String get name => "verify"; | 215 String get name => "verify"; |
216 | 216 |
217 Future<Result<Program>> run(Program program, TestContext testContext) async { | 217 Future<Result<Program>> run(Program program, TestContext testContext) async { |
218 try { | 218 try { |
219 program.accept(new VerifyingVisitor()..isOutline = !fullCompile); | 219 program.accept(new VerifyingVisitor()..isOutline = !fullCompile); |
220 return pass(program); | 220 return pass(program); |
221 } catch (e, s) { | 221 } catch (e, s) { |
222 return new Result<Program>( | 222 return new Result<Program>( |
223 null, testContext.expectationSet["VerificationError"], e, s); | 223 null, testContext.expectationSet["VerificationError"], e, s); |
224 } | 224 } |
225 } | 225 } |
226 } | 226 } |
227 | 227 |
228 class MatchExpectation extends Step<Program, Program, dynamic> { | 228 class MatchExpectation extends Step<Program, Program, TestContext> { |
229 final String suffix; | 229 final String suffix; |
230 | 230 |
231 // TODO(ahe): This is true by default which doesn't match well with the class | 231 // TODO(ahe): This is true by default which doesn't match well with the class |
232 // name. | 232 // name. |
233 final bool updateExpectations; | 233 final bool updateExpectations; |
234 | 234 |
235 const MatchExpectation(this.suffix, {this.updateExpectations: true}); | 235 const MatchExpectation(this.suffix, {this.updateExpectations: true}); |
236 | 236 |
237 String get name => "match expectations"; | 237 String get name => "match expectations"; |
238 | 238 |
(...skipping 28 matching lines...) Expand all Loading... |
267 }); | 267 }); |
268 return pass(program); | 268 return pass(program); |
269 } else { | 269 } else { |
270 return fail(program, """ | 270 return fail(program, """ |
271 Please create file ${expectedFile.path} with this content: | 271 Please create file ${expectedFile.path} with this content: |
272 $buffer"""); | 272 $buffer"""); |
273 } | 273 } |
274 } | 274 } |
275 } | 275 } |
276 | 276 |
277 class WriteDill extends Step<Program, Uri, dynamic> { | 277 class WriteDill extends Step<Program, Uri, TestContext> { |
278 const WriteDill(); | 278 const WriteDill(); |
279 | 279 |
280 String get name => "write .dill"; | 280 String get name => "write .dill"; |
281 | 281 |
282 Future<Result<Uri>> run(Program program, _) async { | 282 Future<Result<Uri>> run(Program program, _) async { |
283 Directory tmp = await Directory.systemTemp.createTemp(); | 283 Directory tmp = await Directory.systemTemp.createTemp(); |
284 Uri uri = tmp.uri.resolve("generated.dill"); | 284 Uri uri = tmp.uri.resolve("generated.dill"); |
285 File generated = new File.fromUri(uri); | 285 File generated = new File.fromUri(uri); |
286 IOSink sink = generated.openWrite(); | 286 IOSink sink = generated.openWrite(); |
287 try { | 287 try { |
288 new BinaryPrinter(sink).writeProgramFile(program); | 288 new BinaryPrinter(sink).writeProgramFile(program); |
289 } catch (e, s) { | 289 } catch (e, s) { |
290 return fail(uri, e, s); | 290 return fail(uri, e, s); |
291 } finally { | 291 } finally { |
292 print("Wrote `${generated.path}`"); | 292 print("Wrote `${generated.path}`"); |
293 await sink.close(); | 293 await sink.close(); |
294 } | 294 } |
295 return pass(uri); | 295 return pass(uri); |
296 } | 296 } |
297 } | 297 } |
298 | 298 |
299 class ReadDill extends Step<Uri, Uri, dynamic> { | 299 class ReadDill extends Step<Uri, Uri, TestContext> { |
300 const ReadDill(); | 300 const ReadDill(); |
301 | 301 |
302 String get name => "read .dill"; | 302 String get name => "read .dill"; |
303 | 303 |
304 Future<Result<Uri>> run(Uri uri, _) async { | 304 Future<Result<Uri>> run(Uri uri, _) async { |
305 try { | 305 try { |
306 loadProgramFromBinary(uri.toFilePath()); | 306 loadProgramFromBinary(uri.toFilePath()); |
307 } catch (e, s) { | 307 } catch (e, s) { |
308 return fail(uri, e, s); | 308 return fail(uri, e, s); |
309 } | 309 } |
310 return pass(uri); | 310 return pass(uri); |
311 } | 311 } |
312 } | 312 } |
313 | 313 |
314 class Copy extends Step<Program, Program, dynamic> { | 314 class Copy extends Step<Program, Program, TestContext> { |
315 const Copy(); | 315 const Copy(); |
316 | 316 |
317 String get name => "copy program"; | 317 String get name => "copy program"; |
318 | 318 |
319 Future<Result<Program>> run(Program program, _) async { | 319 Future<Result<Program>> run(Program program, _) async { |
320 BytesCollector sink = new BytesCollector(); | 320 BytesCollector sink = new BytesCollector(); |
321 new BinaryPrinter(sink).writeProgramFile(program); | 321 new BinaryPrinter(sink).writeProgramFile(program); |
322 Uint8List bytes = sink.collect(); | 322 Uint8List bytes = sink.collect(); |
323 BinaryLoader loader = new BinaryLoader(new Repository()); | 323 BinaryLoader loader = new BinaryLoader(new Repository()); |
324 return pass(new BinaryBuilder(loader, bytes).readProgramFile()); | 324 return pass(new BinaryBuilder(loader, bytes).readProgramFile()); |
(...skipping 56 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
381 | 381 |
382 Future openWrite(Uri uri, f(IOSink sink)) async { | 382 Future openWrite(Uri uri, f(IOSink sink)) async { |
383 IOSink sink = new File.fromUri(uri).openWrite(); | 383 IOSink sink = new File.fromUri(uri).openWrite(); |
384 try { | 384 try { |
385 await f(sink); | 385 await f(sink); |
386 } finally { | 386 } finally { |
387 await sink.close(); | 387 await sink.close(); |
388 } | 388 } |
389 print("Wrote $uri"); | 389 print("Wrote $uri"); |
390 } | 390 } |
OLD | NEW |