| 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 file. | 3 // BSD-style license that can be found in the LICENSE file. |
| 4 | 4 |
| 5 library fasta.kernel_target; | 5 library fasta.kernel_target; |
| 6 | 6 |
| 7 import 'dart:async' show Future; | 7 import 'dart:async' show Future; |
| 8 | 8 |
| 9 import 'dart:io' show File, IOSink; | 9 import 'dart:io' show File, IOSink; |
| 10 | 10 |
| (...skipping 23 matching lines...) Expand all Loading... |
| 34 SuperInitializer, | 34 SuperInitializer, |
| 35 Throw, | 35 Throw, |
| 36 VariableDeclaration, | 36 VariableDeclaration, |
| 37 VariableGet, | 37 VariableGet, |
| 38 VoidType; | 38 VoidType; |
| 39 | 39 |
| 40 import 'package:kernel/binary/ast_to_binary.dart' show BinaryPrinter; | 40 import 'package:kernel/binary/ast_to_binary.dart' show BinaryPrinter; |
| 41 | 41 |
| 42 import 'package:kernel/text/ast_to_text.dart' show Printer; | 42 import 'package:kernel/text/ast_to_text.dart' show Printer; |
| 43 | 43 |
| 44 import 'package:kernel/transformations/erasure.dart' show Erasure; |
| 45 |
| 46 import 'package:kernel/transformations/continuation.dart' as transformAsync; |
| 47 |
| 44 import 'package:kernel/transformations/mixin_full_resolution.dart' | 48 import 'package:kernel/transformations/mixin_full_resolution.dart' |
| 45 show MixinFullResolution; | 49 show MixinFullResolution; |
| 46 | 50 |
| 47 import 'package:kernel/transformations/setup_builtin_library.dart' | 51 import 'package:kernel/transformations/setup_builtin_library.dart' |
| 48 as setup_builtin_library; | 52 as setup_builtin_library; |
| 49 | 53 |
| 50 import '../source/source_loader.dart' show SourceLoader; | 54 import '../source/source_loader.dart' show SourceLoader; |
| 51 | 55 |
| 52 import '../source/source_class_builder.dart' show SourceClassBuilder; | 56 import '../source/source_class_builder.dart' show SourceClassBuilder; |
| 53 | 57 |
| (...skipping 158 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 212 } | 216 } |
| 213 try { | 217 try { |
| 214 loader.computeHierarchy(program); | 218 loader.computeHierarchy(program); |
| 215 await loader.buildBodies(); | 219 await loader.buildBodies(); |
| 216 loader.finishStaticInvocations(); | 220 loader.finishStaticInvocations(); |
| 217 finishAllConstructors(); | 221 finishAllConstructors(); |
| 218 loader.finishNativeMethods(); | 222 loader.finishNativeMethods(); |
| 219 transformMixinApplications(); | 223 transformMixinApplications(); |
| 220 // TODO(ahe): Don't call this from two different places. | 224 // TODO(ahe): Don't call this from two different places. |
| 221 setup_builtin_library.transformProgram(program); | 225 setup_builtin_library.transformProgram(program); |
| 226 otherTransformations(); |
| 222 errors.addAll(loader.collectCompileTimeErrors().map((e) => e.format())); | 227 errors.addAll(loader.collectCompileTimeErrors().map((e) => e.format())); |
| 223 if (errors.isNotEmpty) { | 228 if (errors.isNotEmpty) { |
| 224 return handleInputError(uri, null, isFullProgram: true); | 229 return handleInputError(uri, null, isFullProgram: true); |
| 225 } | 230 } |
| 226 if (uri == null) return program; | 231 if (uri == null) return program; |
| 227 return await writeLinkedProgram(uri, program, isFullProgram: true); | 232 return await writeLinkedProgram(uri, program, isFullProgram: true); |
| 228 } on InputError catch (e) { | 233 } on InputError catch (e) { |
| 229 return handleInputError(uri, e, isFullProgram: true); | 234 return handleInputError(uri, e, isFullProgram: true); |
| 230 } catch (e, s) { | 235 } catch (e, s) { |
| 231 return reportCrash(e, s, loader?.currentUriForCrashReporting); | 236 return reportCrash(e, s, loader?.currentUriForCrashReporting); |
| (...skipping 310 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 542 } | 547 } |
| 543 } | 548 } |
| 544 }); | 549 }); |
| 545 } | 550 } |
| 546 | 551 |
| 547 void transformMixinApplications() { | 552 void transformMixinApplications() { |
| 548 new MixinFullResolution().transform(program); | 553 new MixinFullResolution().transform(program); |
| 549 ticker.logMs("Transformed mixin applications"); | 554 ticker.logMs("Transformed mixin applications"); |
| 550 } | 555 } |
| 551 | 556 |
| 557 void otherTransformations() { |
| 558 // TODO(ahe): Don't generate type variables in the first place. |
| 559 program.accept(new Erasure()); |
| 560 ticker.logMs("Erased type variables in generic methods"); |
| 561 // TODO(kmillikin): Make this run on a per-method basis. |
| 562 transformAsync.transformProgram(program); |
| 563 ticker.logMs("Transformed async methods"); |
| 564 } |
| 565 |
| 552 void dumpIr() { | 566 void dumpIr() { |
| 553 StringBuffer sb = new StringBuffer(); | 567 StringBuffer sb = new StringBuffer(); |
| 554 for (Library library in loader.libraries) { | 568 for (Library library in loader.libraries) { |
| 555 Printer printer = new Printer(sb); | 569 Printer printer = new Printer(sb); |
| 556 printer.writeLibraryFile(library); | 570 printer.writeLibraryFile(library); |
| 557 } | 571 } |
| 558 print("$sb"); | 572 print("$sb"); |
| 559 } | 573 } |
| 560 } | 574 } |
| 561 | 575 |
| (...skipping 17 matching lines...) Expand all Loading... |
| 579 } | 593 } |
| 580 for (Constructor constructor in superclass.constructors) { | 594 for (Constructor constructor in superclass.constructors) { |
| 581 if (constructor.name.name.isEmpty) { | 595 if (constructor.name.name.isEmpty) { |
| 582 return constructor.function.requiredParameterCount == 0 | 596 return constructor.function.requiredParameterCount == 0 |
| 583 ? constructor | 597 ? constructor |
| 584 : null; | 598 : null; |
| 585 } | 599 } |
| 586 } | 600 } |
| 587 return null; | 601 return null; |
| 588 } | 602 } |
| OLD | NEW |