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

Unified Diff: sdk/lib/_internal/pub/lib/src/barback/dart2js_transformer.dart

Issue 223553008: Only pass an AssetId to isPrimary and declareOutputs. (Closed) Base URL: https://dart.googlecode.com/svn/branches/bleeding_edge/dart
Patch Set: fix script_compactor Created 6 years, 8 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
Index: sdk/lib/_internal/pub/lib/src/barback/dart2js_transformer.dart
diff --git a/sdk/lib/_internal/pub/lib/src/barback/dart2js_transformer.dart b/sdk/lib/_internal/pub/lib/src/barback/dart2js_transformer.dart
index 5af3b5c2b34aae3a20eed117b4e2e4d1d7e41f71..71944d9662189ec287e074c1d31f8f005420502e 100644
--- a/sdk/lib/_internal/pub/lib/src/barback/dart2js_transformer.dart
+++ b/sdk/lib/_internal/pub/lib/src/barback/dart2js_transformer.dart
@@ -57,15 +57,44 @@ class Dart2JSTransformer extends Transformer implements LazyTransformer {
: this.withSettings(environment, new BarbackSettings({}, mode));
/// Only ".dart" entrypoint files within a buildable directory are processed.
- Future<bool> isPrimary(Asset asset) {
- if (asset.id.extension != ".dart") return new Future.value(false);
+ Future<bool> isPrimary(AssetId id) {
+ if (id.extension != ".dart") return new Future.value(false);
// These should only contain libraries. For efficiency's sake, we don't
// look for entrypoints in there.
- if (["asset/", "lib/"].any(asset.id.path.startsWith)) {
- return new Future.value(false);
- }
+ return new Future.value(!["asset/", "lib/"].any(id.path.startsWith));
+ }
+
+ Future apply(Transform transform) {
+ // TODO(nweiz): If/when barback starts reporting what assets were modified,
+ // don't re-run the entrypoint detection logic unless the primary input was
+ // actually modified. See issue 16817.
+ return _isEntrypoint(transform.primaryInput).then((isEntrypoint) {
+ if (!isEntrypoint) return null;
+
+ // Wait for any ongoing apply to finish first.
+ return _pool.withResource(() {
+ transform.logger.info("Compiling ${transform.primaryInput.id}...");
+ var stopwatch = new Stopwatch()..start();
+ return _doCompilation(transform).then((_) {
+ stopwatch.stop();
+ transform.logger.info("Took ${stopwatch.elapsed} to compile "
+ "${transform.primaryInput.id}.");
+ });
+ });
+ });
+ }
+
+ Future declareOutputs(DeclaringTransform transform) {
+ var primaryId = transform.primaryId;
+ transform.declareOutput(primaryId.addExtension(".js"));
+ transform.declareOutput(primaryId.addExtension(".js.map"));
+ transform.declareOutput(primaryId.addExtension(".precompiled.js"));
+ return new Future.value();
+ }
+ /// Returns whether or not [asset] might be an entrypoint.
+ Future<bool> _isEntrypoint(Asset asset) {
return asset.readAsString().then((code) {
try {
var name = asset.id.path;
@@ -83,59 +112,39 @@ class Dart2JSTransformer extends Transformer implements LazyTransformer {
});
}
- Future apply(Transform transform) {
- var stopwatch = new Stopwatch();
-
- // Wait for any ongoing apply to finish first.
- return _pool.withResource(() {
- transform.logger.info("Compiling ${transform.primaryInput.id}...");
- stopwatch.start();
-
- var provider = new _BarbackCompilerProvider(_environment, transform,
- generateSourceMaps: _settings.mode != BarbackMode.RELEASE);
-
- // Create a "path" to the entrypoint script. The entrypoint may not
- // actually be on disk, but this gives dart2js a root to resolve relative
- // paths against.
- var id = transform.primaryInput.id;
-
- var entrypoint = path.join(_environment.graph.packages[id.package].dir,
- id.path);
-
- // TODO(rnystrom): Should have more sophisticated error-handling here.
- // Need to report compile errors to the user in an easily visible way.
- // Need to make sure paths in errors are mapped to the original source
- // path so they can understand them.
- return Chain.track(dart.compile(
- entrypoint, provider,
- commandLineOptions: _configCommandLineOptions,
- checked: _configBool('checked'),
- minify: _configBool(
- 'minify', defaultsTo: _settings.mode == BarbackMode.RELEASE),
- verbose: _configBool('verbose'),
- environment: _configEnvironment,
- packageRoot: path.join(_environment.rootPackage.dir,
- "packages"),
- analyzeAll: _configBool('analyzeAll'),
- suppressWarnings: _configBool('suppressWarnings'),
- suppressHints: _configBool('suppressHints'),
- suppressPackageWarnings: _configBool(
- 'suppressPackageWarnings', defaultsTo: true),
- terse: _configBool('terse'),
- includeSourceMapUrls: _settings.mode != BarbackMode.RELEASE))
- .then((_) {
- stopwatch.stop();
- transform.logger.info("Took ${stopwatch.elapsed} to compile $id.");
- });
- });
- }
-
- Future declareOutputs(DeclaringTransform transform) {
- var primaryId = transform.primaryInput.id;
- transform.declareOutput(primaryId.addExtension(".js"));
- transform.declareOutput(primaryId.addExtension(".js.map"));
- transform.declareOutput(primaryId.addExtension(".precompiled.js"));
- return new Future.value();
+ /// Run the dart2js compiler.
+ Future _doCompilation(Transform transform) {
+ var provider = new _BarbackCompilerProvider(_environment, transform,
+ generateSourceMaps: _settings.mode != BarbackMode.RELEASE);
+
+ // Create a "path" to the entrypoint script. The entrypoint may not actually
+ // be on disk, but this gives dart2js a root to resolve relative paths
+ // against.
+ var id = transform.primaryInput.id;
+
+ var entrypoint = path.join(_environment.graph.packages[id.package].dir,
+ id.path);
+
+ // TODO(rnystrom): Should have more sophisticated error-handling here. Need
+ // to report compile errors to the user in an easily visible way. Need to
+ // make sure paths in errors are mapped to the original source path so they
+ // can understand them.
+ return Chain.track(dart.compile(
+ entrypoint, provider,
+ commandLineOptions: _configCommandLineOptions,
+ checked: _configBool('checked'),
+ minify: _configBool(
+ 'minify', defaultsTo: _settings.mode == BarbackMode.RELEASE),
+ verbose: _configBool('verbose'),
+ environment: _configEnvironment,
+ packageRoot: path.join(_environment.rootPackage.dir, "packages"),
+ analyzeAll: _configBool('analyzeAll'),
+ suppressWarnings: _configBool('suppressWarnings'),
+ suppressHints: _configBool('suppressHints'),
+ suppressPackageWarnings: _configBool(
+ 'suppressPackageWarnings', defaultsTo: true),
+ terse: _configBool('terse'),
+ includeSourceMapUrls: _settings.mode != BarbackMode.RELEASE));
}
/// Parses and returns the "commandLineOptions" configuration option.
« no previous file with comments | « sdk/lib/_internal/pub/lib/src/barback.dart ('k') | sdk/lib/_internal/pub/lib/src/barback/excluding_transformer.dart » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698