Chromium Code Reviews| Index: pkg/front_end/lib/src/incremental_kernel_generator_impl.dart |
| diff --git a/pkg/front_end/lib/src/incremental_kernel_generator_impl.dart b/pkg/front_end/lib/src/incremental_kernel_generator_impl.dart |
| index 05e88e2a392f24d2618374ace8f9a5bb9c041adf..bb8089ab8147d3204244c321d3e43990f2cca5c3 100644 |
| --- a/pkg/front_end/lib/src/incremental_kernel_generator_impl.dart |
| +++ b/pkg/front_end/lib/src/incremental_kernel_generator_impl.dart |
| @@ -17,9 +17,14 @@ import 'package:front_end/src/fasta/ticker.dart'; |
| import 'package:front_end/src/fasta/translate_uri.dart'; |
| import 'package:front_end/src/incremental/byte_store.dart'; |
| import 'package:front_end/src/incremental/file_state.dart'; |
| +import 'package:kernel/ast.dart'; |
| import 'package:kernel/binary/ast_from_binary.dart'; |
| import 'package:kernel/binary/ast_to_binary.dart'; |
| import 'package:kernel/kernel.dart' hide Source; |
| +import 'package:kernel/transformations/continuation.dart' as transformAsync; |
| +import 'package:kernel/transformations/erasure.dart' as transformErasure; |
| +import 'package:kernel/transformations/mixin_full_resolution.dart' |
| + as transformMixin; |
| dynamic unimplemented() { |
| // TODO(paulberry): get rid of this. |
| @@ -203,7 +208,7 @@ class IncrementalKernelGeneratorImpl implements IncrementalKernelGenerator { |
| } |
| // Create KernelTarget and configure it for compiling the cycle URIs. |
| - KernelTarget kernelTarget = new KernelTarget(_fsState.fileSystemView, |
| + var kernelTarget = new _IncrementalKernelTarget(_fsState.fileSystemView, |
| dillTarget, _uriTranslator, _options.strongMode); |
| for (FileState library in cycle.libraries) { |
| kernelTarget.read(library.uri); |
| @@ -290,6 +295,24 @@ class IncrementalKernelGeneratorImpl implements IncrementalKernelGenerator { |
| } |
| } |
| +class _IncrementalKernelTarget extends KernelTarget { |
| + _IncrementalKernelTarget(FileSystem fileSystem, DillTarget dillTarget, |
| + TranslateUri uriTranslator, bool strongMode) |
| + : super(fileSystem, dillTarget, uriTranslator, strongMode); |
| + |
| + @override |
| + void runBuildTransformations() { |
|
Siggi Cherem (dart-lang)
2017/05/23 22:06:17
Not sure if we need this subclass: even outside th
|
| + // TODO(scheglov) apply only to source libraries |
| + new transformMixin.MixinFullResolution(backendTarget).transform(program); |
| + if (!strongMode) { |
| + program.accept(new transformErasure.Erasure()); |
| + } |
| + // Transform only source libraries. |
| + // Dill libraries have already been transformed. |
| + transformAsync.transformProgram(program, libraryFilter: isSourceLibrary); |
| + } |
| +} |
| + |
| /// Compilation result for a library cycle. |
| class _LibraryCycleResult { |
| final LibraryCycle cycle; |