| Index: sdk/lib/_internal/pub/lib/src/barback/asset_environment.dart
|
| diff --git a/sdk/lib/_internal/pub/lib/src/barback/asset_environment.dart b/sdk/lib/_internal/pub/lib/src/barback/asset_environment.dart
|
| index 04acfa4439a89876a2478c50ccc1ad0c93802209..afc41fcf9501606c9de7d30d6a10c05076f7c202 100644
|
| --- a/sdk/lib/_internal/pub/lib/src/barback/asset_environment.dart
|
| +++ b/sdk/lib/_internal/pub/lib/src/barback/asset_environment.dart
|
| @@ -350,94 +350,96 @@ class AssetEnvironment {
|
| /// Returns a [Future] that completes once all inputs and transformers are
|
| /// loaded.
|
| Future _load({bool useDart2JS}) {
|
| - // If the entrypoint package manually configures the dart2js
|
| - // transformer, don't include it in the built-in transformer list.
|
| - //
|
| - // TODO(nweiz): if/when we support more built-in transformers, make
|
| - // this more general.
|
| - var containsDart2JS = graph.entrypoint.root.pubspec.transformers
|
| - .any((transformers) => transformers
|
| - .any((id) => id.package == '\$dart2js'));
|
| -
|
| - if (!containsDart2JS && useDart2JS) {
|
| - _builtInTransformers.addAll([
|
| - new Dart2JSTransformer(this, mode),
|
| - new DartForwardingTransformer(mode)
|
| - ]);
|
| - }
|
| -
|
| - // "$pub" is a psuedo-package that allows pub's transformer-loading
|
| - // infrastructure to share code with pub proper. We provide it only during
|
| - // the initial transformer loading process.
|
| - var dartPath = assetPath('dart');
|
| - var pubSources = listDir(dartPath, recursive: true)
|
| - // Don't include directories.
|
| - .where((file) => path.extension(file) == ".dart")
|
| - .map((library) {
|
| - var idPath = path.join('lib', path.relative(library, from: dartPath));
|
| - return new AssetId('\$pub', path.toUri(idPath).toString());
|
| - });
|
| + return log.progress("Initializing barback", () {
|
| + // If the entrypoint package manually configures the dart2js
|
| + // transformer, don't include it in the built-in transformer list.
|
| + //
|
| + // TODO(nweiz): if/when we support more built-in transformers, make
|
| + // this more general.
|
| + var containsDart2JS = graph.entrypoint.root.pubspec.transformers
|
| + .any((transformers) => transformers
|
| + .any((id) => id.package == '\$dart2js'));
|
| +
|
| + if (!containsDart2JS && useDart2JS) {
|
| + _builtInTransformers.addAll([
|
| + new Dart2JSTransformer(this, mode),
|
| + new DartForwardingTransformer(mode)
|
| + ]);
|
| + }
|
|
|
| - // "$sdk" is a pseudo-package that allows the dart2js transformer to find
|
| - // the Dart core libraries without hitting the file system directly. This
|
| - // ensures they work with source maps.
|
| - var libPath = path.join(sdk.rootDirectory, "lib");
|
| - var sdkSources = listDir(libPath, recursive: true)
|
| - .where((file) => path.extension(file) == ".dart")
|
| - .map((file) {
|
| - var idPath = path.join("lib",
|
| - path.relative(file, from: sdk.rootDirectory));
|
| - return new AssetId('\$sdk', path.toUri(idPath).toString());
|
| - });
|
| + // "$pub" is a psuedo-package that allows pub's transformer-loading
|
| + // infrastructure to share code with pub proper. We provide it only during
|
| + // the initial transformer loading process.
|
| + var dartPath = assetPath('dart');
|
| + var pubSources = listDir(dartPath, recursive: true)
|
| + // Don't include directories.
|
| + .where((file) => path.extension(file) == ".dart")
|
| + .map((library) {
|
| + var idPath = path.join('lib', path.relative(library, from: dartPath));
|
| + return new AssetId('\$pub', path.toUri(idPath).toString());
|
| + });
|
|
|
| - // Bind a server that we can use to load the transformers.
|
| - var transformerServer;
|
| - return BarbackServer.bind(this, _hostname, 0, null).then((server) {
|
| - transformerServer = server;
|
| + // "$sdk" is a pseudo-package that allows the dart2js transformer to find
|
| + // the Dart core libraries without hitting the file system directly. This
|
| + // ensures they work with source maps.
|
| + var libPath = path.join(sdk.rootDirectory, "lib");
|
| + var sdkSources = listDir(libPath, recursive: true)
|
| + .where((file) => path.extension(file) == ".dart")
|
| + .map((file) {
|
| + var idPath = path.join("lib",
|
| + path.relative(file, from: sdk.rootDirectory));
|
| + return new AssetId('\$sdk', path.toUri(idPath).toString());
|
| + });
|
|
|
| - var errorStream = barback.errors.map((error) {
|
| - // Even most normally non-fatal barback errors should take down pub if
|
| - // they happen during the initial load process.
|
| - if (error is! AssetLoadException) throw error;
|
| + // Bind a server that we can use to load the transformers.
|
| + var transformerServer;
|
| + return BarbackServer.bind(this, _hostname, 0, null).then((server) {
|
| + transformerServer = server;
|
|
|
| - log.error(log.red(error.message));
|
| - log.fine(error.stackTrace.terse);
|
| - });
|
| + var errorStream = barback.errors.map((error) {
|
| + // Even most normally non-fatal barback errors should take down pub if
|
| + // they happen during the initial load process.
|
| + if (error is! AssetLoadException) throw error;
|
|
|
| - return _withStreamErrors(() {
|
| - return log.progress("Loading source assets", () {
|
| - barback.updateSources(pubSources);
|
| - barback.updateSources(sdkSources);
|
| - return _provideSources();
|
| + log.error(log.red(error.message));
|
| + log.fine(error.stackTrace.terse);
|
| });
|
| - }, [errorStream, barback.results]);
|
| - }).then((_) {
|
| - log.fine("Provided sources.");
|
| - var completer = new Completer();
|
| -
|
| - var errorStream = barback.errors.map((error) {
|
| - // Now that we're loading transformers, errors they log shouldn't be
|
| - // fatal, since we're starting to run them on real user assets which may
|
| - // have e.g. syntax errors. If an error would cause a transformer to
|
| - // fail to load, the load failure will cause us to exit.
|
| - if (error is! TransformerException) throw error;
|
| -
|
| - var message = error.error.toString();
|
| - if (error.stackTrace != null) {
|
| - message += "\n" + error.stackTrace.terse.toString();
|
| - }
|
|
|
| - _log(new LogEntry(error.transform, error.transform.primaryId,
|
| - LogLevel.ERROR, message, null));
|
| - });
|
| -
|
| - return _withStreamErrors(() {
|
| - return loadAllTransformers(this, transformerServer).then((_) {
|
| - log.fine("Loaded transformers.");
|
| - return transformerServer.close();
|
| + return _withStreamErrors(() {
|
| + return log.progress("Loading source assets", () {
|
| + barback.updateSources(pubSources);
|
| + barback.updateSources(sdkSources);
|
| + return _provideSources();
|
| + });
|
| + }, [errorStream, barback.results]);
|
| + }).then((_) {
|
| + log.fine("Provided sources.");
|
| + var completer = new Completer();
|
| +
|
| + var errorStream = barback.errors.map((error) {
|
| + // Now that we're loading transformers, errors they log shouldn't be
|
| + // fatal, since we're starting to run them on real user assets which
|
| + // may have e.g. syntax errors. If an error would cause a transformer
|
| + // to fail to load, the load failure will cause us to exit.
|
| + if (error is! TransformerException) throw error;
|
| +
|
| + var message = error.error.toString();
|
| + if (error.stackTrace != null) {
|
| + message += "\n" + error.stackTrace.terse.toString();
|
| + }
|
| +
|
| + _log(new LogEntry(error.transform, error.transform.primaryId,
|
| + LogLevel.ERROR, message, null));
|
| });
|
| - }, [errorStream, barback.results, transformerServer.results]);
|
| - }).then((_) => barback.removeSources(pubSources));
|
| +
|
| + return _withStreamErrors(() {
|
| + return log.progress("Loading transformers", () {
|
| + return loadAllTransformers(this, transformerServer)
|
| + .then((_) => transformerServer.close());
|
| + }, fine: true);
|
| + }, [errorStream, barback.results, transformerServer.results]);
|
| + }).then((_) => barback.removeSources(pubSources));
|
| + }, fine: true);
|
| }
|
|
|
| /// Provides the public source assets in the environment to barback.
|
|
|