| Index: dart/sdk/lib/_internal/pub/asset/dart/transformer_isolate.dart
|
| diff --git a/dart/sdk/lib/_internal/pub/asset/dart/transformer_isolate.dart b/dart/sdk/lib/_internal/pub/asset/dart/transformer_isolate.dart
|
| index 3b668417ef5321553086efd41ce71ef461d7c1d3..003c5f0f212e64ebdcbbc340384b84f3ddacfc7e 100644
|
| --- a/dart/sdk/lib/_internal/pub/asset/dart/transformer_isolate.dart
|
| +++ b/dart/sdk/lib/_internal/pub/asset/dart/transformer_isolate.dart
|
| @@ -22,7 +22,7 @@ void loadTransformers(SendPort replyTo) {
|
| var configuration = JSON.decode(message['configuration']);
|
| var mode = new BarbackMode(message['mode']);
|
| return _initialize(library, configuration, mode).
|
| - map(serializeTransformerOrGroup).toList();
|
| + map(serializeTransformerLike).toList();
|
| });
|
| });
|
| }
|
| @@ -34,6 +34,7 @@ void loadTransformers(SendPort replyTo) {
|
| List _initialize(Uri uri, Map configuration, BarbackMode mode) {
|
| var mirrors = currentMirrorSystem();
|
| var transformerClass = reflectClass(Transformer);
|
| + var aggregateClass = _aggregateTransformerClass;
|
| var groupClass = reflectClass(TransformerGroup);
|
|
|
| var seen = new Set();
|
| @@ -57,7 +58,9 @@ List _initialize(Uri uri, Map configuration, BarbackMode mode) {
|
| if (classMirror.isPrivate) return null;
|
| if (classMirror.isAbstract) return null;
|
| if (!classMirror.isSubtypeOf(transformerClass) &&
|
| - !classMirror.isSubtypeOf(groupClass)) {
|
| + !classMirror.isSubtypeOf(groupClass) &&
|
| + (aggregateClass == null ||
|
| + !classMirror.isSubtypeOf(aggregateClass))) {
|
| return null;
|
| }
|
|
|
| @@ -86,3 +89,13 @@ MethodMirror _getConstructor(ClassMirror classMirror, String constructor) {
|
| if (candidate is MethodMirror && candidate.isConstructor) return candidate;
|
| return null;
|
| }
|
| +
|
| +// Older barbacks don't support [AggregateTransformer], and calling
|
| +// [reflectClass] on an undefined class will throw an error, so we just define a
|
| +// null getter for them.
|
| +//# if barback >=0.14.1-dev
|
| +ClassMirror get _aggregateTransformerClass =>
|
| + reflectClass(AggregateTransformer);
|
| +//# else
|
| +//> ClassMirror get _aggregateTransformerClass => null;
|
| +//# end
|
|
|