| 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;
|
| }
|
| }
|
|
|