Index: sdk/lib/_internal/pub/lib/src/entrypoint.dart |
diff --git a/sdk/lib/_internal/pub/lib/src/entrypoint.dart b/sdk/lib/_internal/pub/lib/src/entrypoint.dart |
index 811ae0bf7507e597b00cedf3fd8929d6ebcecdce..d207147aeed15babcfe3ff90b79fd611b33c3b62 100644 |
--- a/sdk/lib/_internal/pub/lib/src/entrypoint.dart |
+++ b/sdk/lib/_internal/pub/lib/src/entrypoint.dart |
@@ -143,15 +143,14 @@ class Entrypoint { |
var packageGraph = await loadPackageGraph(result); |
packageGraph.loadTransformerCache().clearIfOutdated(result.changedPackages); |
- // TODO(nweiz): Use await here when |
- // https://github.com/dart-lang/async_await/issues/51 is fixed. |
- return precompileDependencies(changed: result.changedPackages).then((_) { |
- return precompileExecutables(changed: result.changedPackages); |
- }).catchError((error, stackTrace) { |
+ try { |
+ await precompileDependencies(changed: result.changedPackages); |
+ await precompileExecutables(changed: result.changedPackages); |
+ } catch (error, stackTrace) { |
// Just log exceptions here. Since the method is just about acquiring |
// dependencies, it shouldn't fail unless that fails. |
log.exception(error, stackTrace); |
- }); |
+ } |
} |
/// Precompile any transformed dependencies of the entrypoint. |
@@ -201,42 +200,43 @@ class Entrypoint { |
if (dependenciesToPrecompile.isEmpty) return; |
- await log.progress("Precompiling dependencies", () async { |
- var packagesToLoad = |
- unionAll(dependenciesToPrecompile.map(graph.transitiveDependencies)) |
- .map((package) => package.name).toSet(); |
- |
- var environment = await AssetEnvironment.create(this, BarbackMode.DEBUG, |
- packages: packagesToLoad, useDart2JS: false); |
- |
- /// Ignore barback errors since they'll be emitted via [getAllAssets] |
- /// below. |
- environment.barback.errors.listen((_) {}); |
- |
- // TODO(nweiz): only get assets from [dependenciesToPrecompile] so as not |
- // to trigger unnecessary lazy transformers. |
- var assets = await environment.barback.getAllAssets(); |
- await waitAndPrintErrors(assets.map((asset) async { |
- if (!dependenciesToPrecompile.contains(asset.id.package)) return; |
- |
- var destPath = path.join( |
- depsDir, asset.id.package, path.fromUri(asset.id.path)); |
- ensureDir(path.dirname(destPath)); |
- await createFileFromStream(asset.read(), destPath); |
- })); |
+ try { |
+ await log.progress("Precompiling dependencies", () async { |
+ var packagesToLoad = |
+ unionAll(dependenciesToPrecompile.map(graph.transitiveDependencies)) |
+ .map((package) => package.name).toSet(); |
+ |
+ var environment = await AssetEnvironment.create(this, BarbackMode.DEBUG, |
+ packages: packagesToLoad, useDart2JS: false); |
+ |
+ /// Ignore barback errors since they'll be emitted via [getAllAssets] |
+ /// below. |
+ environment.barback.errors.listen((_) {}); |
+ |
+ // TODO(nweiz): only get assets from [dependenciesToPrecompile] so as |
+ // not to trigger unnecessary lazy transformers. |
+ var assets = await environment.barback.getAllAssets(); |
+ await waitAndPrintErrors(assets.map((asset) async { |
+ if (!dependenciesToPrecompile.contains(asset.id.package)) return; |
+ |
+ var destPath = path.join( |
+ depsDir, asset.id.package, path.fromUri(asset.id.path)); |
+ ensureDir(path.dirname(destPath)); |
+ await createFileFromStream(asset.read(), destPath); |
+ })); |
- log.message("Precompiled " + |
- toSentence(ordered(dependenciesToPrecompile).map(log.bold)) + "."); |
- }).catchError((error) { |
- // TODO(nweiz): Do this in a catch clause when async_await supports |
- // "rethrow" (https://github.com/dart-lang/async_await/issues/46). |
+ log.message("Precompiled " + |
+ toSentence(ordered(dependenciesToPrecompile).map(log.bold)) + "."); |
+ }); |
+ } catch (_) { |
// TODO(nweiz): When barback does a better job of associating errors with |
// assets (issue 19491), catch and handle compilation errors on a |
// per-package basis. |
- dependenciesToPrecompile.forEach((package) => |
- deleteEntry(path.join(depsDir, package))); |
- throw error; |
- }); |
+ for (var package in dependenciesToPrecompile) { |
+ deleteEntry(path.join(depsDir, package)); |
+ } |
+ rethrow; |
+ } |
} |
/// Precompiles all executables from dependencies that don't transitively |