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

Unified Diff: pkg/front_end/lib/dependency_grapher.dart

Issue 2581263002: dependency_grapher: handle dependencies on SDK. (Closed)
Patch Set: Created 4 years 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
« no previous file with comments | « no previous file | pkg/front_end/test/dependency_grapher_test.dart » ('j') | no next file with comments »
Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
Index: pkg/front_end/lib/dependency_grapher.dart
diff --git a/pkg/front_end/lib/dependency_grapher.dart b/pkg/front_end/lib/dependency_grapher.dart
index 73541a1897e566db9db081bd8ec3a48309ce28e8..a7431680adad92726a459a50c22010c390de89a0 100644
--- a/pkg/front_end/lib/dependency_grapher.dart
+++ b/pkg/front_end/lib/dependency_grapher.dart
@@ -39,7 +39,7 @@ Future<Graph> graphForProgram(
var sdkLibraries = <String, Uri>{}; // TODO(paulberry): support SDK libraries
var uriResolver =
new UriResolver(packages, sdkLibraries, options.fileSystem.context);
- var walker = new _Walker(options.fileSystem, uriResolver);
+ var walker = new _Walker(options.fileSystem, uriResolver, options.compileSdk);
var startingPoint = new _StartingPoint(walker, sources);
await walker.walk(startingPoint);
return walker.graph;
@@ -110,8 +110,9 @@ class _Walker extends AsyncDependencyWalker<_WalkerNode> {
final UriResolver uriResolver;
final _nodesByUri = <Uri, _WalkerNode>{};
final graph = new Graph._();
+ final bool compileSdk;
- _Walker(this.fileSystem, this.uriResolver);
+ _Walker(this.fileSystem, this.uriResolver, this.compileSdk);
@override
Future<Null> evaluate(_WalkerNode v) {
@@ -137,6 +138,7 @@ class _Walker extends AsyncDependencyWalker<_WalkerNode> {
}
class _WalkerNode extends Node<_WalkerNode> {
+ static final dartCoreUri = Uri.parse('dart:core');
final _Walker walker;
final Uri uri;
final LibraryNode library;
@@ -161,6 +163,18 @@ class _WalkerNode extends Node<_WalkerNode> {
// TODO(paulberry): report errors.
var parser = new Parser(null, AnalysisErrorListener.NULL_LISTENER);
var unit = parser.parseDirectives(token);
+ bool coreUriFound = false;
+ void handleDependency(Uri referencedUri) {
+ _WalkerNode dependencyNode = walker.nodeForUri(referencedUri);
+ library.dependencies.add(dependencyNode.library);
+ if (referencedUri.scheme != 'dart' || walker.compileSdk) {
+ dependencies.add(dependencyNode);
+ }
+ if (referencedUri == dartCoreUri) {
+ coreUriFound = true;
+ }
+ }
+
for (var directive in unit.directives) {
if (directive is UriBasedDirective) {
// TODO(paulberry): when we support SDK libraries, we'll need more
@@ -169,12 +183,13 @@ class _WalkerNode extends Node<_WalkerNode> {
if (directive is PartDirective) {
library.parts.add(referencedUri);
} else {
- _WalkerNode dependencyNode = walker.nodeForUri(referencedUri);
- dependencies.add(dependencyNode);
- library.dependencies.add(dependencyNode.library);
+ handleDependency(referencedUri);
}
}
}
+ if (!coreUriFound) {
+ handleDependency(dartCoreUri);
+ }
return dependencies;
}
}
« no previous file with comments | « no previous file | pkg/front_end/test/dependency_grapher_test.dart » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698