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