Index: pkg/compiler/lib/src/js_emitter/program_builder/program_builder.dart |
diff --git a/pkg/compiler/lib/src/js_emitter/program_builder/program_builder.dart b/pkg/compiler/lib/src/js_emitter/program_builder/program_builder.dart |
index f1fbe6df79052d04964fb89d3731fca2e411b38c..e41c22171ed97744c74290c530ae2521803834b4 100644 |
--- a/pkg/compiler/lib/src/js_emitter/program_builder/program_builder.dart |
+++ b/pkg/compiler/lib/src/js_emitter/program_builder/program_builder.dart |
@@ -58,7 +58,6 @@ import '../js_emitter.dart' |
show |
ClassStubGenerator, |
CodeEmitterTask, |
- computeMixinClass, |
Emitter, |
InterceptorStubGenerator, |
MainCallStubGenerator, |
@@ -234,8 +233,13 @@ class ProgramBuilder { |
"${superclass} of $c.")); |
} |
if (c is MixinApplication) { |
- c.setMixinClass(_classes[computeMixinClass(cls)]); |
- assert(c.mixinClass != null); |
+ ClassEntity effectiveMixinClass = |
+ _elementEnvironment.getEffectiveMixinClass(cls); |
+ c.setMixinClass(_classes[effectiveMixinClass]); |
+ assert( |
+ c.mixinClass != null, |
+ failedAt(cls, |
+ "No class for effective mixin ${effectiveMixinClass} on $cls.")); |
Emily Fortuna
2017/06/13 17:22:50
nit: >80 char here
|
} |
}); |
@@ -327,7 +331,7 @@ class ProgramBuilder { |
void collect(ClassElement element) { |
allocatedClasses.add(element); |
if (element.isMixinApplication) { |
- collect(computeMixinClass(element)); |
+ collect(_elementEnvironment.getEffectiveMixinClass(element)); |
} |
if (element.superclass != null) { |
collect(element.superclass); |
@@ -743,7 +747,7 @@ class ProgramBuilder { |
// MixinApplications run through the members of their mixin. Here, we are |
// only interested in direct members. |
- if (!onlyForRti && !_elementEnvironment.isUnnamedMixinApplication(cls)) { |
+ if (!onlyForRti && !_elementEnvironment.isMixinApplication(cls)) { |
_elementEnvironment.forEachClassMember(cls, visitMember); |
if (cls is ClassElement) { |
// TODO(johnniwinther): Support constructor bodies for entities. |
@@ -802,7 +806,7 @@ class ProgramBuilder { |
_worldBuilder.directlyInstantiatedClasses.contains(cls); |
Class result; |
- if (_elementEnvironment.isUnnamedMixinApplication(cls) && !onlyForRti) { |
+ if (_elementEnvironment.isMixinApplication(cls) && !onlyForRti) { |
assert(!_nativeData.isNativeClass(cls)); |
assert(methods.isEmpty); |
assert(!isClosureBaseClass); |