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 f12d760f68034e9fd357ff8590e7812dd2510502..65d134cbb548a1cf8b83a2aac0faba17c2714a23 100644 |
--- a/sdk/lib/_internal/compiler/implementation/enqueue.dart |
+++ b/sdk/lib/_internal/compiler/implementation/enqueue.dart |
@@ -228,10 +228,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); |
@@ -255,6 +254,11 @@ class Enqueuer { |
}); |
} |
} |
+ processClass(cls); |
+ for (Link<DartType> supertypes = cls.allSupertypes; |
+ !supertypes.isEmpty; supertypes = supertypes.tail) { |
+ processClass(supertypes.head.element); |
+ } |
}); |
} |