Index: pkg/compiler/lib/src/kernel/kernel.dart |
diff --git a/pkg/compiler/lib/src/kernel/kernel.dart b/pkg/compiler/lib/src/kernel/kernel.dart |
index 53ca7823e1725d958337e109a6e3be1a6c9b3d33..a4da817105cfa24f20e753a8a52328715ddd54a7 100644 |
--- a/pkg/compiler/lib/src/kernel/kernel.dart |
+++ b/pkg/compiler/lib/src/kernel/kernel.dart |
@@ -207,9 +207,13 @@ class Kernel { |
if (member.enclosingClass.declaration != cls) { |
// TODO(het): figure out why impact_test triggers this |
//internalError(cls, "`$member` isn't mine."); |
- } else if (member.isFunction || |
- member.isAccessor || |
- member.isConstructor) { |
+ } else if (member.isConstructor) { |
+ ConstructorElement constructor = member; |
+ ir.Member memberNode = functionToIr(member); |
+ if (!constructor.isRedirectingFactory) { |
+ classNode.addMember(memberNode); |
+ } |
+ } else if (member.isFunction || member.isAccessor) { |
classNode.addMember(functionToIr(member)); |
} else if (member.isField) { |
classNode.addMember(fieldToIr(member)); |
@@ -220,7 +224,9 @@ class Kernel { |
classNode.typeParameters.addAll(typeVariablesToIr(cls.typeVariables)); |
for (ir.InterfaceType interface |
in typesToIr(cls.interfaces.reverse().toList())) { |
- classNode.implementedTypes.add(interface); |
+ if (interface != classNode.mixedInType) { |
+ classNode.implementedTypes.add(interface); |
+ } |
} |
addWork(cls, () { |
addDefaultInstanceFieldInitializers(classNode); |