| Index: lib/src/dependency_graph.dart
|
| diff --git a/lib/src/dependency_graph.dart b/lib/src/dependency_graph.dart
|
| index 58a2aa59cf96995f72eacb01193b8c3b731ac2a3..2a3675b9be60016b0d99d7d40721ca2f07d889dc 100644
|
| --- a/lib/src/dependency_graph.dart
|
| +++ b/lib/src/dependency_graph.dart
|
| @@ -23,7 +23,7 @@ import 'package:analyzer/src/generated/engine.dart'
|
| import 'package:analyzer/src/generated/source.dart' show Source, SourceKind;
|
| import 'package:html5lib/dom.dart' show Document, Node;
|
| import 'package:html5lib/parser.dart' as html;
|
| -import 'package:logging/logging.dart' show Level;
|
| +import 'package:logging/logging.dart' show Logger, Level;
|
| import 'package:path/path.dart' as path;
|
| import 'package:source_span/source_span.dart' show SourceSpan;
|
|
|
| @@ -40,12 +40,28 @@ class SourceGraph {
|
| /// any node.
|
| final Map<Uri, SourceNode> nodes = {};
|
|
|
| + /// Resources included by default on any application.
|
| + final runtimeDeps = new Set<ResourceSourceNode>();
|
| +
|
| /// Analyzer used to resolve source files.
|
| final AnalysisContext _context;
|
| final CheckerReporter _reporter;
|
| final CompilerOptions _options;
|
|
|
| - SourceGraph(this._context, this._reporter, this._options);
|
| + SourceGraph(this._context, this._reporter, this._options) {
|
| + var dir = _options.runtimeDir;
|
| + if (dir == null) {
|
| + _log.severe('Runtime dir could not be determined automatically, '
|
| + 'please specify the --runtime-dir flag on the command line.');
|
| + return;
|
| + }
|
| + var prefix = path.absolute(dir);
|
| + var files =
|
| + _options.serverMode ? runtimeFilesForServerMode : defaultRuntimeFiles;
|
| + for (var file in files) {
|
| + runtimeDeps.add(nodeFromUri(path.toUri(path.join(prefix, file))));
|
| + }
|
| + }
|
|
|
| /// Node associated with a resolved [uri].
|
| SourceNode nodeFromUri(Uri uri) {
|
| @@ -124,7 +140,7 @@ abstract class SourceNode {
|
| /// A node representing an entry HTML source file.
|
| class HtmlSourceNode extends SourceNode {
|
| /// Resources included by default on any application.
|
| - final runtimeDeps = new Set<ResourceSourceNode>();
|
| + final runtimeDeps;
|
|
|
| /// Libraries referred to via script tags.
|
| Set<DartSourceNode> scripts = new Set<DartSourceNode>();
|
| @@ -138,16 +154,9 @@ class HtmlSourceNode extends SourceNode {
|
| /// Parsed document, updated whenever [update] is invoked.
|
| Document document;
|
|
|
| - HtmlSourceNode(uri, source, graph) : super(uri, source) {
|
| - var prefix = 'package:dev_compiler/runtime';
|
| - var files = ['harmony_feature_check.js', 'dart_runtime.js', 'dart_core.js'];
|
| - if (graph._options.serverMode) {
|
| - files.addAll(const ['messages_widget.js', 'messages.css']);
|
| - }
|
| - files.forEach((file) {
|
| - runtimeDeps.add(graph.nodeFromUri(Uri.parse('$prefix/$file')));
|
| - });
|
| - }
|
| + HtmlSourceNode(Uri uri, Source source, SourceGraph graph)
|
| + : runtimeDeps = graph.runtimeDeps,
|
| + super(uri, source);
|
|
|
| void update(SourceGraph graph) {
|
| super.update(graph);
|
| @@ -435,3 +444,17 @@ class DependencyGraphError extends MessageWithSpan {
|
| const DependencyGraphError(String message, SourceSpan span)
|
| : super(message, Level.SEVERE, span);
|
| }
|
| +
|
| +/// Runtime files added to all applications when running the compiler in the
|
| +/// command line.
|
| +const defaultRuntimeFiles = const [
|
| + 'harmony_feature_check.js',
|
| + 'dart_runtime.js',
|
| + 'dart_core.js'
|
| +];
|
| +
|
| +/// Runtime files added to applications when running in server mode.
|
| +final runtimeFilesForServerMode = new List<String>.from(defaultRuntimeFiles)
|
| + ..addAll(const ['messages_widget.js', 'messages.css']);
|
| +
|
| +final _log = new Logger('dev_compiler.dependency_graph');
|
|
|