Index: sdk/lib/_internal/compiler/implementation/enqueue.dart |
diff --git a/sdk/lib/_internal/compiler/implementation/enqueue.dart b/sdk/lib/_internal/compiler/implementation/enqueue.dart |
index 111358d7507d378474ce2de88ef9a2346c04c798..fd2f73cf00b7801afc6a081bae6d2c8748014dc7 100644 |
--- a/sdk/lib/_internal/compiler/implementation/enqueue.dart |
+++ b/sdk/lib/_internal/compiler/implementation/enqueue.dart |
@@ -226,10 +226,9 @@ class Enqueuer { |
// supertypes. |
cls.ensureResolved(compiler); |
- for (Link<DartType> supertypes = cls.allSupertypesAndSelf; |
- !supertypes.isEmpty; supertypes = supertypes.tail) { |
- cls = supertypes.head.element; |
- if (seenClasses.contains(cls)) continue; |
+ void processClass(ClassElement cls) { |
+ if (seenClasses.contains(cls)) return; |
+ |
seenClasses.add(cls); |
cls.ensureResolved(compiler); |
cls.implementation.forEachMember(processInstantiatedClassMember); |
@@ -253,6 +252,11 @@ class Enqueuer { |
}); |
} |
} |
+ processClass(cls); |
+ for (Link<DartType> supertypes = cls.allSupertypes; |
+ !supertypes.isEmpty; supertypes = supertypes.tail) { |
+ processClass(supertypes.head.element); |
+ } |
}); |
} |