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

Side by Side Diff: lib/src/barback/load_all_transformers.dart

Issue 2184303002: Make pub strong-mode clean. (Closed) Base URL: git@github.com:dart-lang/pub.git@master
Patch Set: Code review changes Created 4 years, 4 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 unified diff | Download patch
« no previous file with comments | « lib/src/barback/foreign_transformer.dart ('k') | lib/src/barback/pub_package_provider.dart » ('j') | no next file with comments »
Toggle Intra-line Diffs ('i') | Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
OLDNEW
1 // Copyright (c) 2013, the Dart project authors. Please see the AUTHORS file 1 // Copyright (c) 2013, 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 import 'dart:async'; 5 import 'dart:async';
6 6
7 import 'package:barback/barback.dart'; 7 import 'package:barback/barback.dart';
8 8
9 import '../log.dart' as log; 9 import '../log.dart' as log;
10 import '../package_graph.dart'; 10 import '../package_graph.dart';
(...skipping 14 matching lines...) Expand all
25 /// automatically be added to the end of the root package's cascade. 25 /// automatically be added to the end of the root package's cascade.
26 /// 26 ///
27 /// If [entrypoints] is passed, only transformers necessary to run those 27 /// If [entrypoints] is passed, only transformers necessary to run those
28 /// entrypoints will be loaded. 28 /// entrypoints will be loaded.
29 Future loadAllTransformers(AssetEnvironment environment, 29 Future loadAllTransformers(AssetEnvironment environment,
30 BarbackServer transformerServer, {Iterable<AssetId> entrypoints}) async { 30 BarbackServer transformerServer, {Iterable<AssetId> entrypoints}) async {
31 var dependencyComputer = new DependencyComputer(environment.graph); 31 var dependencyComputer = new DependencyComputer(environment.graph);
32 32
33 // If we only need to load transformers for a specific set of entrypoints, 33 // If we only need to load transformers for a specific set of entrypoints,
34 // remove any other transformers from [transformersNeededByTransformers]. 34 // remove any other transformers from [transformersNeededByTransformers].
35 var necessaryTransformers; 35 Set<TransformerId> necessaryTransformers;
36 if (entrypoints != null) { 36 if (entrypoints != null) {
37 if (entrypoints.isEmpty) return; 37 if (entrypoints.isEmpty) return;
38 38
39 necessaryTransformers = unionAll(entrypoints.map( 39 necessaryTransformers = unionAll(entrypoints.map(
40 dependencyComputer.transformersNeededByLibrary)); 40 dependencyComputer.transformersNeededByLibrary));
41 41
42 if (necessaryTransformers.isEmpty) { 42 if (necessaryTransformers.isEmpty) {
43 log.fine("No transformers are needed for ${toSentence(entrypoints)}."); 43 log.fine("No transformers are needed for ${toSentence(entrypoints)}.");
44 return; 44 return;
45 } 45 }
(...skipping 73 matching lines...) Expand 10 before | Expand all | Expand 10 after
119 /// Given [transformerDependencies], a directed acyclic graph, returns a list of 119 /// Given [transformerDependencies], a directed acyclic graph, returns a list of
120 /// "stages" (sets of transformers). 120 /// "stages" (sets of transformers).
121 /// 121 ///
122 /// Each stage must be fully loaded and passed to barback before the next stage 122 /// Each stage must be fully loaded and passed to barback before the next stage
123 /// can be safely loaded. However, transformers within a stage can be safely 123 /// can be safely loaded. However, transformers within a stage can be safely
124 /// loaded in parallel. 124 /// loaded in parallel.
125 List<Set<TransformerId>> _stageTransformers( 125 List<Set<TransformerId>> _stageTransformers(
126 Map<TransformerId, Set<TransformerId>> transformerDependencies) { 126 Map<TransformerId, Set<TransformerId>> transformerDependencies) {
127 // A map from transformer ids to the indices of the stages that those 127 // A map from transformer ids to the indices of the stages that those
128 // transformer ids should end up in. Populated by [stageNumberFor]. 128 // transformer ids should end up in. Populated by [stageNumberFor].
129 var stageNumbers = {}; 129 var stageNumbers = <TransformerId, int>{};
130 var stages = []; 130 var stages = <Set<TransformerId>>[];
131 131
132 stageNumberFor(id) { 132 stageNumberFor(TransformerId id) {
133 // Built-in transformers don't have to be loaded in stages, since they're 133 // Built-in transformers don't have to be loaded in stages, since they're
134 // run from pub's source. Return -1 so that the "next stage" is 0. 134 // run from pub's source. Return -1 so that the "next stage" is 0.
135 if (id.isBuiltInTransformer) return -1; 135 if (id.isBuiltInTransformer) return -1;
136 136
137 if (stageNumbers.containsKey(id)) return stageNumbers[id]; 137 if (stageNumbers.containsKey(id)) return stageNumbers[id];
138 var dependencies = transformerDependencies[id]; 138 var dependencies = transformerDependencies[id];
139 stageNumbers[id] = dependencies.isEmpty ? 139 stageNumbers[id] = dependencies.isEmpty ?
140 0 : maxAll(dependencies.map(stageNumberFor)) + 1; 140 0 : maxAll(dependencies.map(stageNumberFor)) + 1;
141 return stageNumbers[id]; 141 return stageNumbers[id];
142 } 142 }
143 143
144 for (var id in transformerDependencies.keys) { 144 for (var id in transformerDependencies.keys) {
145 var stageNumber = stageNumberFor(id); 145 var stageNumber = stageNumberFor(id);
146 if (stages.length <= stageNumber) stages.length = stageNumber + 1; 146 if (stages.length <= stageNumber) stages.length = stageNumber + 1;
147 if (stages[stageNumber] == null) stages[stageNumber] = new Set(); 147 if (stages[stageNumber] == null) stages[stageNumber] = new Set();
148 stages[stageNumber].add(id); 148 stages[stageNumber].add(id);
149 } 149 }
150 150
151 return stages; 151 return stages;
152 } 152 }
153 153
154 /// Returns a map from transformer ids to all packages in [graph] that use each 154 /// Returns a map from transformer ids to all packages in [graph] that use each
155 /// transformer. 155 /// transformer.
156 Map<TransformerId, Set<String>> _packagesThatUseTransformers( 156 Map<TransformerId, Set<String>> _packagesThatUseTransformers(
157 PackageGraph graph) { 157 PackageGraph graph) {
158 var results = {}; 158 var results = <TransformerId, Set<String>>{};
159 for (var package in graph.packages.values) { 159 for (var package in graph.packages.values) {
160 for (var phase in package.pubspec.transformers) { 160 for (var phase in package.pubspec.transformers) {
161 for (var config in phase) { 161 for (var config in phase) {
162 results.putIfAbsent(config.id, () => new Set()).add(package.name); 162 results.putIfAbsent(config.id, () => new Set()).add(package.name);
163 } 163 }
164 } 164 }
165 } 165 }
166 return results; 166 return results;
167 } 167 }
OLDNEW
« no previous file with comments | « lib/src/barback/foreign_transformer.dart ('k') | lib/src/barback/pub_package_provider.dart » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698