Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(1559)

Unified Diff: sdk/lib/_internal/pub/lib/src/barback/load_all_transformers.dart

Issue 599993004: Don't load transformers that aren't going to be used for an executable. (Closed) Base URL: https://dart.googlecode.com/svn/branches/bleeding_edge/dart
Patch Set: Code review changes Created 6 years, 3 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View side-by-side diff with in-line comments
Download patch
Index: sdk/lib/_internal/pub/lib/src/barback/load_all_transformers.dart
diff --git a/sdk/lib/_internal/pub/lib/src/barback/load_all_transformers.dart b/sdk/lib/_internal/pub/lib/src/barback/load_all_transformers.dart
index b23eb14dd20543022a56a113ae13b38e813ada6b..ca83a878ec73d9fa23d3c0ac8ac9680853e21fa4 100644
--- a/sdk/lib/_internal/pub/lib/src/barback/load_all_transformers.dart
+++ b/sdk/lib/_internal/pub/lib/src/barback/load_all_transformers.dart
@@ -6,14 +6,16 @@ library pub.load_all_transformers;
import 'dart:async';
+import 'package:barback/barback.dart';
+
import '../log.dart' as log;
import '../package_graph.dart';
import '../utils.dart';
import 'asset_environment.dart';
import 'barback_server.dart';
+import 'dependency_computer.dart';
import 'transformer_id.dart';
import 'transformer_loader.dart';
-import 'transformers_needed_by_transformers.dart';
/// Loads all transformers depended on by packages in [environment].
///
@@ -23,10 +25,30 @@ import 'transformers_needed_by_transformers.dart';
///
/// Any built-in transformers that are provided by the environment will
/// automatically be added to the end of the root package's cascade.
+///
+/// If [entrypoints] is passed, only transformers necessary to run those
+/// entrypoints will be loaded.
Future loadAllTransformers(AssetEnvironment environment,
- BarbackServer transformerServer) async {
- var transformersNeededByTransformers =
- computeTransformersNeededByTransformers(environment.graph);
+ BarbackServer transformerServer, {Iterable<AssetId> entrypoints}) async {
+ var dependencyComputer = new DependencyComputer(environment.graph);
+
+ // If we only need to load transformers for a specific set of entrypoints,
+ // remove any other transformers from [transformersNeededByTransformers].
+ var necessaryTransformers;
+ if (entrypoints != null) {
+ if (entrypoints.isEmpty) return;
+
+ necessaryTransformers = unionAll(entrypoints.map(
+ dependencyComputer.transformersNeededByLibrary));
+
+ if (necessaryTransformers.isEmpty) {
+ log.fine("No transformers are needed for ${toSentence(entrypoints)}.");
+ return;
+ }
+ }
+
+ var transformersNeededByTransformers = dependencyComputer
+ .transformersNeededByTransformers(necessaryTransformers);
var buffer = new StringBuffer();
buffer.writeln("Transformer dependencies:");

Powered by Google App Engine
This is Rietveld 408576698