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

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

Issue 1413713010: Fix error detection for a non-existent global script. (Closed) Base URL: git@github.com:dart-lang/pub.git@master
Patch Set: Fix test Created 5 years, 1 month 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 | « no previous file | lib/src/entrypoint.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) 2014, the Dart project authors. Please see the AUTHORS file 1 // Copyright (c) 2014, 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 library pub.barback.dependency_computer; 5 library pub.barback.dependency_computer;
6 6
7 import 'package:barback/barback.dart'; 7 import 'package:barback/barback.dart';
8 import 'package:path/path.dart' as p; 8 import 'package:path/path.dart' as p;
9 9
10 import '../dart.dart'; 10 import '../dart.dart';
(...skipping 25 matching lines...) Expand all
36 36
37 /// A cache of the results of [transformersNeededByPackage]. 37 /// A cache of the results of [transformersNeededByPackage].
38 final _transformersNeededByPackages = new Map<String, Set<TransformerId>>(); 38 final _transformersNeededByPackages = new Map<String, Set<TransformerId>>();
39 39
40 /// The set of all packages that neither use transformers themselves nor 40 /// The set of all packages that neither use transformers themselves nor
41 /// import packages that use transformers. 41 /// import packages that use transformers.
42 /// 42 ///
43 /// This is precomputed before any package computers are loaded. 43 /// This is precomputed before any package computers are loaded.
44 final _untransformedPackages = new Set<String>(); 44 final _untransformedPackages = new Set<String>();
45 45
46 /// Creates a dependency computer for [graph].
47 ///
48 /// If [rootDevDependencies] is true, this includes the root package's dev
49 /// dependencies in the computation.
46 DependencyComputer(this._graph) { 50 DependencyComputer(this._graph) {
47 for (var package in ordered(_graph.packages.keys)) { 51 for (var package in ordered(_graph.packages.keys)) {
48 if (_graph.transitiveDependencies(package).every((dependency) => 52 if (_graph.transitiveDependencies(package).every((dependency) =>
49 dependency.pubspec.transformers.isEmpty)) { 53 dependency.pubspec.transformers.isEmpty)) {
50 _untransformedPackages.add(package); 54 _untransformedPackages.add(package);
51 } 55 }
52 } 56 }
53 57
54 ordered(_graph.packages.keys).forEach(_loadPackageComputer); 58 ordered(_graph.packages.keys).forEach(_loadPackageComputer);
55 } 59 }
(...skipping 122 matching lines...) Expand 10 before | Expand all | Expand 10 after
178 } 182 }
179 183
180 if (_loadingPackageComputers.contains(id.package)) { 184 if (_loadingPackageComputers.contains(id.package)) {
181 throw new CycleException("$packageName is transformed by $id"); 185 throw new CycleException("$packageName is transformed by $id");
182 } 186 }
183 187
184 results.add(id); 188 results.add(id);
185 } 189 }
186 } 190 }
187 191
188 var dependencies = packageName == _graph.entrypoint.root.name ? 192 var dependencies =
189 package.immediateDependencies : package.dependencies; 193 !_graph.entrypoint.isGlobal &&
194 packageName == _graph.entrypoint.root.name
195 ? package.immediateDependencies
196 : package.dependencies;
190 for (var dep in dependencies) { 197 for (var dep in dependencies) {
191 try { 198 try {
192 traversePackage(dep.name); 199 traversePackage(dep.name);
193 } on CycleException catch (error) { 200 } on CycleException catch (error) {
194 throw error.prependStep("$packageName depends on ${dep.name}"); 201 throw error.prependStep("$packageName depends on ${dep.name}");
195 } 202 }
196 } 203 }
197 } 204 }
198 205
199 traversePackage(rootPackage); 206 traversePackage(rootPackage);
(...skipping 128 matching lines...) Expand 10 before | Expand all | Expand 10 after
328 /// [DependencyComputer._transformersNeededByPackage]). 335 /// [DependencyComputer._transformersNeededByPackage]).
329 Set<TransformerId> transformersNeededByLibrary(String library) { 336 Set<TransformerId> transformersNeededByLibrary(String library) {
330 library = p.normalize(library); 337 library = p.normalize(library);
331 if (_activeLibraries.contains(library)) return new Set(); 338 if (_activeLibraries.contains(library)) return new Set();
332 _activeLibraries.add(library); 339 _activeLibraries.add(library);
333 340
334 try { 341 try {
335 var externalDirectives = _getTransitiveExternalDirectives(library); 342 var externalDirectives = _getTransitiveExternalDirectives(library);
336 if (externalDirectives == null) { 343 if (externalDirectives == null) {
337 var rootName = _dependencyComputer._graph.entrypoint.root.name; 344 var rootName = _dependencyComputer._graph.entrypoint.root.name;
338 var dependencies = _package.name == rootName ? 345 var dependencies =
339 _package.immediateDependencies : _package.dependencies; 346 !_dependencyComputer._graph.entrypoint.isGlobal &&
347 _package.name == rootName
348 ? _package.immediateDependencies
349 : _package.dependencies;
340 350
341 // If anything transitively imported/exported by [library] within this 351 // If anything transitively imported/exported by [library] within this
342 // package is modified by a transformer, we don't know what it will 352 // package is modified by a transformer, we don't know what it will
343 // load, so we take the conservative approach and say it depends on 353 // load, so we take the conservative approach and say it depends on
344 // everything. 354 // everything.
345 return _applicableTransformers.map((config) => config.id).toSet().union( 355 return _applicableTransformers.map((config) => config.id).toSet().union(
346 unionAll(dependencies.map((dep) { 356 unionAll(dependencies.map((dep) {
347 try { 357 try {
348 return _dependencyComputer._transformersNeededByPackage(dep.name); 358 return _dependencyComputer._transformersNeededByPackage(dep.name);
349 } on CycleException catch (error) { 359 } on CycleException catch (error) {
(...skipping 94 matching lines...) Expand 10 before | Expand all | Expand 10 after
444 return null; 454 return null;
445 } 455 }
446 456
447 _directives[libraryUri] = 457 _directives[libraryUri] =
448 parseImportsAndExports(readTextFile(library), name: library) 458 parseImportsAndExports(readTextFile(library), name: library)
449 .map((directive) => Uri.parse(directive.uri.stringValue)) 459 .map((directive) => Uri.parse(directive.uri.stringValue))
450 .toSet(); 460 .toSet();
451 return _directives[libraryUri]; 461 return _directives[libraryUri];
452 } 462 }
453 } 463 }
OLDNEW
« no previous file with comments | « no previous file | lib/src/entrypoint.dart » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698