Chromium Code Reviews| 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."); |
| }); |
| }); |
| } |