Index: sdk/lib/_internal/pub/lib/src/barback/load_transformers.dart |
diff --git a/sdk/lib/_internal/pub/lib/src/barback/load_transformers.dart b/sdk/lib/_internal/pub/lib/src/barback/load_transformers.dart |
index 141d83b4c81b59b7b2cbd192a4e0fac21eaba344..0b1229eebd6f70fa637e0d5beca1aab46d2210a9 100644 |
--- a/sdk/lib/_internal/pub/lib/src/barback/load_transformers.dart |
+++ b/sdk/lib/_internal/pub/lib/src/barback/load_transformers.dart |
@@ -367,36 +367,40 @@ Stream _futureStream(Future<Stream> future) { |
/// |
/// [server] is used to serve any Dart files needed to load the transformers. |
Future<Set> loadTransformers(BarbackServer server, TransformerId id) { |
- var path = id.asset.path.replaceFirst('lib/', ''); |
- // TODO(nweiz): load from a "package:" URI when issue 12474 is fixed. |
- var hostAndPort = '${server.address.address}:${server.port}'; |
- var uri = 'http://$hostAndPort/packages/${id.asset.package}/$path'; |
- var code = 'import "$uri";' + |
- _TRANSFORMER_ISOLATE.replaceAll('<<HOST_AND_PORT>>', hostAndPort); |
- log.fine("Loading transformers from ${id.asset}"); |
- return dart.runInIsolate(code).then((sendPort) { |
- return _receiveFuture(sendPort.call({ |
- 'library': uri, |
- // TODO(nweiz): support non-JSON-encodable configuration maps. |
- 'configuration': JSON.encode(id.configuration) |
- })).then((transformers) { |
- transformers = transformers.map(_deserializeTransformerOrGroup).toSet(); |
- log.fine("Transformers from ${id.asset}: $transformers"); |
- return transformers; |
- }); |
- }).catchError((error) { |
- if (error is! dart.CrossIsolateException) throw error; |
- if (error.type != 'IsolateSpawnException') throw error; |
- // TODO(nweiz): don't parse this as a string once issues 12617 and 12689 are |
- // fixed. |
- if (!error.message.split('\n')[1].startsWith('import "$uri";')) { |
- throw error; |
- } |
+ return id.getAssetId(server.barback).then((assetId) { |
+ var path = assetId.path.replaceFirst('lib/', ''); |
+ // TODO(nweiz): load from a "package:" URI when issue 12474 is fixed. |
+ var hostAndPort = '${server.address.address}:${server.port}'; |
+ var uri = 'http://$hostAndPort/packages/${id.package}/$path'; |
+ var code = 'import "$uri";' + |
+ _TRANSFORMER_ISOLATE.replaceAll('<<HOST_AND_PORT>>', hostAndPort); |
+ log.fine("Loading transformers from $assetId"); |
+ |
+ return dart.runInIsolate(code).then((sendPort) { |
+ return _receiveFuture(sendPort.call({ |
+ 'library': uri, |
+ // TODO(nweiz): support non-JSON-encodable configuration maps. |
+ 'configuration': JSON.encode(id.configuration) |
+ })).then((transformers) { |
+ transformers = transformers.map(_deserializeTransformerOrGroup).toSet(); |
+ log.fine("Transformers from $assetId: $transformers"); |
+ return transformers; |
+ }); |
+ }).catchError((error) { |
+ if (error is! dart.CrossIsolateException) throw error; |
+ if (error.type != 'IsolateSpawnException') throw error; |
+ // TODO(nweiz): don't parse this as a string once issues 12617 and 12689 |
+ // are fixed. |
+ if (!error.message.split('\n')[1].startsWith('import "$uri";')) { |
+ throw error; |
+ } |
- // If there was an IsolateSpawnException and the import that actually failed |
- // was the one we were loading transformers from, throw an application |
- // exception with a more user-friendly message. |
- fail('Transformer library "package:${id.asset.package}/$path" not found.'); |
+ // If there was an IsolateSpawnException and the import that actually |
+ // failed was the one we were loading transformers from, throw an |
+ // application exception with a more user-friendly message. |
+ fail('Transformer library "package:${id.package}/$path" not ' |
+ 'found.'); |
+ }); |
}); |
} |