| Index: pkg/compiler/lib/src/enqueue.dart
|
| diff --git a/pkg/compiler/lib/src/enqueue.dart b/pkg/compiler/lib/src/enqueue.dart
|
| index 5fd213bce5482f69805a1fa7c85d83316f5207de..35b564043a071e44417bbeeb9e154a998161d1ed 100644
|
| --- a/pkg/compiler/lib/src/enqueue.dart
|
| +++ b/pkg/compiler/lib/src/enqueue.dart
|
| @@ -196,13 +196,7 @@ abstract class Enqueuer {
|
| ClassElement cls = type.element;
|
| registry.registerDependency(cls);
|
| cls.ensureResolved(compiler);
|
| - universe.registerTypeInstantiation(
|
| - type,
|
| - byMirrors: mirrorUsage,
|
| - onImplemented: (ClassElement cls) {
|
| - compiler.backend.registerImplementedClass(
|
| - cls, this, compiler.globalDependencies);
|
| - });
|
| + universe.registerTypeInstantiation(type, byMirrors: mirrorUsage);
|
| processInstantiatedClass(cls);
|
| compiler.backend.registerInstantiatedType(type, registry);
|
| });
|
| @@ -344,9 +338,10 @@ abstract class Enqueuer {
|
| compiler.backend.registerInstantiatedClass(
|
| cls, this, compiler.globalDependencies);
|
| }
|
| - while (cls != null) {
|
| - processClass(cls);
|
| - cls = cls.superclass;
|
| + processClass(cls);
|
| + for (Link<DartType> supertypes = cls.allSupertypes;
|
| + !supertypes.isEmpty; supertypes = supertypes.tail) {
|
| + processClass(supertypes.head.element);
|
| }
|
| });
|
| }
|
|
|