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 |