| Index: sdk/lib/_internal/compiler/implementation/js_backend/emitter.dart
|
| diff --git a/sdk/lib/_internal/compiler/implementation/js_backend/emitter.dart b/sdk/lib/_internal/compiler/implementation/js_backend/emitter.dart
|
| index b2ad0686849ba4ab0dd2c63c6b335a1026f6048b..97f703b1e362237e3ad7798259d35622ec485380 100644
|
| --- a/sdk/lib/_internal/compiler/implementation/js_backend/emitter.dart
|
| +++ b/sdk/lib/_internal/compiler/implementation/js_backend/emitter.dart
|
| @@ -1171,21 +1171,6 @@ class CodeEmitterTask extends CompilerTask {
|
| }
|
| }
|
|
|
| - // TODO(kasperl): We should make sure to only emit one version of
|
| - // overridden methods. Right now, we rely on the ordering so the
|
| - // methods pulled in from mixins are replaced with the members
|
| - // from the class definition.
|
| -
|
| - // If the class is a native class, we have to add the instance
|
| - // members defined in the non-native mixin applications used by
|
| - // the class.
|
| - visitNativeMixins(classElement, (MixinApplicationElement mixin) {
|
| - mixin.forEachMember(
|
| - visitMember,
|
| - includeBackendMembers: true,
|
| - includeSuperMembers: false);
|
| - });
|
| -
|
| classElement.implementation.forEachMember(
|
| visitMember,
|
| includeBackendMembers: true,
|
| @@ -1296,22 +1281,6 @@ class CodeEmitterTask extends CompilerTask {
|
| }
|
| }
|
|
|
| - void visitNativeMixins(ClassElement classElement,
|
| - void visit(MixinApplicationElement mixinApplication)) {
|
| - if (!classElement.isNative()) return;
|
| - // Use recursion to make sure to visit the superclasses before the
|
| - // subclasses. Once we start keeping track of the emitted fields
|
| - // and members, we're going to want to visit these in the other
|
| - // order so we get the most specialized definition first.
|
| - void recurse(ClassElement cls) {
|
| - if (cls == null || !cls.isMixinApplication) return;
|
| - recurse(cls.superclass);
|
| - assert(!cls.isNative());
|
| - visit(cls);
|
| - }
|
| - recurse(classElement.superclass);
|
| - }
|
| -
|
| /**
|
| * Documentation wanted -- johnniwinther
|
| *
|
| @@ -1389,15 +1358,6 @@ class CodeEmitterTask extends CompilerTask {
|
| // fields pulled in from mixins are replaced with the fields from
|
| // the class definition.
|
|
|
| - // If the class is a native class, we have to add the fields
|
| - // defined in the non-native mixin applications used by the class.
|
| - visitNativeMixins(classElement, (MixinApplicationElement mixin) {
|
| - mixin.forEachInstanceField(
|
| - visitField,
|
| - includeBackendMembers: true,
|
| - includeSuperMembers: false);
|
| - });
|
| -
|
| // If a class is not instantiated then we add the field just so we can
|
| // generate the field getter/setter dynamically. Since this is only
|
| // allowed on fields that are in [classElement] we don't need to visit
|
| @@ -1405,7 +1365,7 @@ class CodeEmitterTask extends CompilerTask {
|
| classElement.implementation.forEachInstanceField(
|
| visitField,
|
| includeBackendMembers: true,
|
| - includeSuperMembers: isInstantiated && !classElement.isNative());
|
| + includeSuperMembers: isInstantiated);
|
| }
|
|
|
| void generateGetter(Element member, String fieldName, String accessorName,
|
| @@ -1590,12 +1550,7 @@ class CodeEmitterTask extends CompilerTask {
|
| needsDefineClass = true;
|
| String className = namer.getName(classElement);
|
|
|
| - // Find the first non-native superclass.
|
| ClassElement superclass = classElement.superclass;
|
| - while (superclass != null && superclass.isNative()) {
|
| - superclass = superclass.superclass;
|
| - }
|
| -
|
| String superName = "";
|
| if (superclass != null) {
|
| superName = namer.getName(superclass);
|
| @@ -1725,17 +1680,6 @@ class CodeEmitterTask extends CompilerTask {
|
| generateInterfacesIsTests(interfaceType.element, emitIsTest,
|
| emitSubstitution, generated);
|
| }
|
| -
|
| - // For native classes, we also have to run through their mixin
|
| - // applications and make sure we deal with 'is' tests correctly
|
| - // for those.
|
| - visitNativeMixins(cls, (MixinApplicationElement mixin) {
|
| - for (DartType interfaceType in mixin.interfaces) {
|
| - ClassElement interfaceElement = interfaceType.element;
|
| - generateInterfacesIsTests(interfaceType.element, emitIsTest,
|
| - emitSubstitution, generated);
|
| - }
|
| - });
|
| }
|
|
|
| /**
|
|
|