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

Unified Diff: lib/src/dependency_graph.dart

Issue 1013363002: locating runtime files automatically (fixes #96) (Closed) Base URL: git@github.com:dart-lang/dev_compiler.git@master
Patch Set: Created 5 years, 9 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 side-by-side diff with in-line comments
Download patch
« no previous file with comments | « lib/devc.dart ('k') | lib/src/options.dart » ('j') | no next file with comments »
Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
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');
« no previous file with comments | « lib/devc.dart ('k') | lib/src/options.dart » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698