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