diff --git a/pkg/compiler/lib/src/compiler.dart b/pkg/compiler/lib/src/compiler.dart index 2e9f1c44029..35519749b53 100644 --- a/pkg/compiler/lib/src/compiler.dart +++ b/pkg/compiler/lib/src/compiler.dart @@ -24,6 +24,7 @@ import 'compiler_interfaces.dart' show CompilerDeferredLoadingFacade, CompilerDiagnosticsFacade, + CompilerKernelStrategyFacade, CompilerTypeInferenceFacade; import 'deferred_load/deferred_load.dart' show DeferredLoadTask; import 'deferred_load/output_unit.dart' show OutputUnitData; @@ -78,6 +79,7 @@ class Compiler implements CompilerDiagnosticsFacade, CompilerDeferredLoadingFacade, + CompilerKernelStrategyFacade, CompilerTypeInferenceFacade { @override final Measurer measurer; @@ -137,6 +139,7 @@ class Compiler GenericTask selfTask; GenericTask enqueueTask; + @override DeferredLoadTask deferredLoadTask; DumpInfoTask dumpInfoTask; SerializationTask serializationTask; diff --git a/pkg/compiler/lib/src/compiler_interfaces.dart b/pkg/compiler/lib/src/compiler_interfaces.dart index 971b0cd3c2c..83dfc025b90 100644 --- a/pkg/compiler/lib/src/compiler_interfaces.dart +++ b/pkg/compiler/lib/src/compiler_interfaces.dart @@ -9,6 +9,7 @@ library compiler.src.compiler_interfaces; import '../compiler_api.dart' show CompilerOutput, Diagnostic; import 'common/tasks.dart' show Measurer; +import 'deferred_load/deferred_load.dart' show DeferredLoadTask; import 'deferred_load/program_split_constraints/nodes.dart' show ConstraintData; import 'diagnostics/diagnostic_listener.dart' show DiagnosticMessage; import 'diagnostics/diagnostic_listener.dart' show DiagnosticReporter; @@ -64,3 +65,18 @@ abstract class CompilerDiagnosticsFacade { SourceSpan spanFromSpannable(Spannable spannable, Entity? currentElement); } + +/// Subset of [Compiler] needed by kernel strategy +/// +/// See definitions on [Compiler] for documentation. +abstract class CompilerKernelStrategyFacade { + bool get compilationFailed; + Measurer get measurer; + DiagnosticReporter get reporter; + Map get impactCache; + CompilerOptions get options; + KernelFrontendStrategyForDeferredLoading get frontendStrategy; + CompilerOutput get outputProvider; + ConstraintData? get programSplitConstraintsData; + DeferredLoadTask get deferredLoadTask; +} diff --git a/pkg/compiler/lib/src/kernel/kernel_strategy.dart b/pkg/compiler/lib/src/kernel/kernel_strategy.dart index 670b9f20b10..4f504344f9a 100644 --- a/pkg/compiler/lib/src/kernel/kernel_strategy.dart +++ b/pkg/compiler/lib/src/kernel/kernel_strategy.dart @@ -13,7 +13,7 @@ import '../common/elements.dart'; import '../common/names.dart' show Uris; import '../common/tasks.dart'; import '../common/work.dart'; -import '../compiler.dart'; +import '../compiler_interfaces.dart'; import '../deferred_load/deferred_load.dart' show DeferredLoadTask; import '../elements/entities.dart'; import '../enqueue.dart'; @@ -134,7 +134,7 @@ class KernelFrontendStrategy } ResolutionEnqueuer createResolutionEnqueuer( - CompilerTask task, Compiler compiler) { + CompilerTask task, CompilerKernelStrategyFacade compiler) { RuntimeTypesNeedBuilder rtiNeedBuilder = _createRuntimeTypesNeedBuilder(); BackendImpacts impacts = BackendImpacts(commonElements, compiler.options); final nativeBasicData = _elementMap.nativeBasicData; @@ -260,7 +260,8 @@ class KernelFrontendStrategy KernelToElementMap get elementMap => _elementMap; /// Creates a [DeferredLoadTask] for the element model used in this strategy. - DeferredLoadTask createDeferredLoadTask(Compiler compiler) => + DeferredLoadTask createDeferredLoadTask( + CompilerDeferredLoadingFacade compiler) => DeferredLoadTask(compiler, _elementMap); /// Computes the main function from [mainLibrary] adding additional world