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

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

Issue 196063004: Move dart2js entrypoint detection into isPrimary. (Closed) Base URL: https://dart.googlecode.com/svn/branches/bleeding_edge/dart
Patch Set: use dart2js error messages Created 6 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
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 8e000571b53ab47e6ecbce27b9b2e5ed55293fb4..d955a782c94b7e584302d8ed131cbfe81fa534da 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,30 @@ class Dart2JSTransformer extends Transformer implements LazyTransformer {
Dart2JSTransformer(BuildEnvironment environment, BarbackMode mode)
: this.withSettings(environment, new BarbackSettings({}, mode));
- /// Only ".dart" files within a buildable directory are processed.
+ /// Only ".dart" entrpoiny files within a buildable directory are processed.
Bob Nystrom 2014/03/12 21:12:25 "entrypoint".
nweiz 2014/03/12 21:49:06 Done.
Future<bool> isPrimary(Asset asset) {
if (asset.id.extension != ".dart") return new Future.value(false);
- for (var dir in ["benchmark", "example", "test", "web"]) {
- if (asset.id.path.startsWith("$dir/")) return new Future.value(true);
+ if (!["benchmark", "example", "test", "web"]
+ .any((dir) => asset.id.path.startsWith("$dir/"))) {
+ return new Future.value(false);
}
- return new Future.value(false);
+ return asset.readAsString().then((code) {
+ try {
+ var name = asset.id.path;
+ if (asset.id.package != _environment.rootPackage.name) {
+ name += " in ${asset.id.package}";
+ }
+
+ var parsed = parseCompilationUnit(code, name: name);
+ return dart.isEntrypoint(parsed);
+ } on AnalyzerErrorGroup catch (e) {
+ // If we get a parse error, consider the asset primary so we report
+ // dart2js's more detailed error message instead.
+ return true;
+ }
+ });
}
Future apply(Transform transform) {
@@ -76,59 +91,41 @@ class Dart2JSTransformer extends Transformer implements LazyTransformer {
transform.logger.info("Compiling ${transform.primaryInput.id}...");
stopwatch.start();
- return transform.primaryInput.readAsString().then((code) {
- try {
- var id = transform.primaryInput.id;
- var name = id.path;
- if (id.package != _environment.rootPackage.name) {
- name += " in ${id.package}";
- }
-
- var parsed = parseCompilationUnit(code, name: name);
- if (!dart.isEntrypoint(parsed)) return null;
- } on AnalyzerErrorGroup catch (e) {
- // TODO(rnystrom): This doesn't report the error location very
- // precisely anymore. Find a better analyzer API to use for this.
- transform.logger.error(e.message);
- return null;
- }
-
- 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.");
- });
+ 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.");
});
});
}

Powered by Google App Engine
This is Rietveld 408576698