| Index: pkg/front_end/lib/src/fasta/kernel/kernel_target.dart
|
| diff --git a/pkg/front_end/lib/src/fasta/kernel/kernel_target.dart b/pkg/front_end/lib/src/fasta/kernel/kernel_target.dart
|
| index 2a0f3ffa45332105a4160fb28dcc55377fbe02ec..7841e891ff17949096042281d43e4dfc2458ee12 100644
|
| --- a/pkg/front_end/lib/src/fasta/kernel/kernel_target.dart
|
| +++ b/pkg/front_end/lib/src/fasta/kernel/kernel_target.dart
|
| @@ -40,7 +40,6 @@ import 'package:kernel/ast.dart'
|
| VariableGet,
|
| VoidType;
|
|
|
| -import 'package:kernel/core_types.dart' show CoreTypes;
|
| import 'package:kernel/transformations/erasure.dart' show Erasure;
|
|
|
| import 'package:kernel/transformations/continuation.dart' as transformAsync;
|
| @@ -254,6 +253,10 @@ class KernelTarget extends TargetImplementation {
|
| loader.performInitializerInference();
|
| } on InputError catch (e) {
|
| handleInputError(e, isFullProgram: false);
|
| + // TODO(scheglov) Normally we create CoreTypes and ClassHierarchy.
|
| + // But if there is an exception, they are not created, and when we later
|
| + // blindly continue with buildProgram(), we crash.
|
| + loader.computeHierarchy(_program);
|
| } catch (e, s) {
|
| return reportCrash(e, s, loader?.currentUriForCrashReporting);
|
| }
|
| @@ -662,7 +665,8 @@ class KernelTarget extends TargetImplementation {
|
| }
|
|
|
| void transformMixinApplications() {
|
| - new MixinFullResolution(backendTarget).transform(_program);
|
| + new MixinFullResolution(backendTarget, loader.coreTypes)
|
| + .transform(_program);
|
| ticker.logMs("Transformed mixin applications");
|
| }
|
|
|
| @@ -672,9 +676,8 @@ class KernelTarget extends TargetImplementation {
|
| _program.accept(new Erasure());
|
| ticker.logMs("Erased type variables in generic methods");
|
| }
|
| - var coreTypes = new CoreTypes(_program);
|
| // TODO(kmillikin): Make this run on a per-method basis.
|
| - transformAsync.transformLibraries(coreTypes, loader.libraries);
|
| + transformAsync.transformLibraries(loader.coreTypes, loader.libraries);
|
| ticker.logMs("Transformed async methods");
|
| }
|
|
|
| @@ -701,7 +704,7 @@ class KernelTarget extends TargetImplementation {
|
| // TODO(sigmund): replace this step with data that is directly computed from
|
| // the builders: we should know the tree-shaking roots without having to do
|
| // a second visit over the tree.
|
| - new RootsMarker(data).run(_program, isIncluded);
|
| + new RootsMarker(loader.coreTypes, data).run(_program, isIncluded);
|
| trimProgram(_program, data, isIncluded);
|
| }
|
|
|
|
|