Index: pkg/compiler/lib/src/serialization/modelz.dart |
diff --git a/pkg/compiler/lib/src/serialization/modelz.dart b/pkg/compiler/lib/src/serialization/modelz.dart |
index 3f5f839afe7ffa4d9be9d0cb58269041844e039e..ad3390222283ae54ee04ec0506a02dad24ff2d40 100644 |
--- a/pkg/compiler/lib/src/serialization/modelz.dart |
+++ b/pkg/compiler/lib/src/serialization/modelz.dart |
@@ -971,6 +971,9 @@ class NamedMixinApplicationElementZ extends ClassElementZ |
@override |
InterfaceType get mixinType => _mixinType ??= _decoder.getType(Key.MIXIN); |
+ |
+ @override |
+ ClassElement get subclass => null; |
} |
class UnnamedMixinApplicationElementZ extends ElementZ |
@@ -984,7 +987,7 @@ class UnnamedMixinApplicationElementZ extends ElementZ |
MixinApplicationElementCommon, |
MixinApplicationElementMixin { |
final String name; |
- final ClassElement _subclass; |
+ final ClassElement subclass; |
final InterfaceType _supertypeBase; |
final InterfaceType _mixinBase; |
InterfaceType _supertype; |
@@ -993,14 +996,13 @@ class UnnamedMixinApplicationElementZ extends ElementZ |
Link<ConstructorElement> _constructors; |
UnnamedMixinApplicationElementZ( |
- ClassElement subclass, InterfaceType supertype, InterfaceType mixin) |
- : this._subclass = subclass, |
- this._supertypeBase = supertype, |
+ this.subclass, InterfaceType supertype, InterfaceType mixin) |
+ : this._supertypeBase = supertype, |
this._mixinBase = mixin, |
this.name = "${supertype.name}+${mixin.name}"; |
@override |
- CompilationUnitElement get compilationUnit => _subclass.compilationUnit; |
+ CompilationUnitElement get compilationUnit => subclass.compilationUnit; |
@override |
bool get isTopLevel => true; |
@@ -1035,7 +1037,7 @@ class UnnamedMixinApplicationElementZ extends ElementZ |
// Create synthetic type variables for the mixin application. |
List<DartType> typeVariables = <DartType>[]; |
int index = 0; |
- for (TypeVariableType type in _subclass.typeVariables) { |
+ for (TypeVariableType type in subclass.typeVariables) { |
SyntheticTypeVariableElementZ typeVariableElement = |
new SyntheticTypeVariableElementZ(this, index, type.name); |
TypeVariableType typeVariable = new TypeVariableType(typeVariableElement); |
@@ -1043,12 +1045,12 @@ class UnnamedMixinApplicationElementZ extends ElementZ |
index++; |
} |
// Setup bounds on the synthetic type variables. |
- for (TypeVariableType type in _subclass.typeVariables) { |
+ for (TypeVariableType type in subclass.typeVariables) { |
TypeVariableType typeVariable = typeVariables[type.element.index]; |
SyntheticTypeVariableElementZ typeVariableElement = typeVariable.element; |
typeVariableElement._type = typeVariable; |
typeVariableElement._bound = |
- type.element.bound.subst(typeVariables, _subclass.typeVariables); |
+ type.element.bound.subst(typeVariables, subclass.typeVariables); |
} |
return typeVariables; |
} |
@@ -1067,7 +1069,7 @@ class UnnamedMixinApplicationElementZ extends ElementZ |
// abstract class S+M<S+M.T> extends S<S+M.T> implements M<S+M.T> {} |
// but the supertype is provided as S<C.T> and we need to substitute S+M.T |
// for C.T. |
- _supertype = _supertypeBase.subst(typeVariables, _subclass.typeVariables); |
+ _supertype = _supertypeBase.subst(typeVariables, subclass.typeVariables); |
} |
return _supertype; |
} |
@@ -1087,7 +1089,7 @@ class UnnamedMixinApplicationElementZ extends ElementZ |
// but the mixin is provided as M<C.T> and we need to substitute S+M.T |
// for C.T. |
_interfaces = const Link<DartType>() |
- .prepend(_mixinBase.subst(typeVariables, _subclass.typeVariables)); |
+ .prepend(_mixinBase.subst(typeVariables, subclass.typeVariables)); |
} |
return _interfaces; |
} |
@@ -1107,7 +1109,7 @@ class UnnamedMixinApplicationElementZ extends ElementZ |
} |
@override |
- Element get enclosingElement => _subclass.enclosingElement; |
+ Element get enclosingElement => subclass.enclosingElement; |
@override |
bool get isObject => false; |
@@ -1122,10 +1124,10 @@ class UnnamedMixinApplicationElementZ extends ElementZ |
InterfaceType get mixinType => interfaces.head; |
@override |
- int get sourceOffset => _subclass.sourceOffset; |
+ int get sourceOffset => subclass.sourceOffset; |
@override |
- SourceSpan get sourcePosition => _subclass.sourcePosition; |
+ SourceSpan get sourcePosition => subclass.sourcePosition; |
} |
class EnumClassElementZ extends ClassElementZ implements EnumClassElement { |