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 13d4ba6707fe13404a90a67e971c40c3e2586f1f..d96bcf9c96e470b2e5196595d4251a720e35b8b5 100644 |
--- a/pkg/compiler/lib/src/serialization/modelz.dart |
+++ b/pkg/compiler/lib/src/serialization/modelz.dart |
@@ -276,7 +276,8 @@ abstract class AnalyzableElementMixin implements AnalyzableElement, ElementZ { |
TreeElements get treeElements => _unsupported('treeElements'); |
} |
-abstract class AstElementMixinZ implements AstElement, ElementZ { |
+abstract class AstElementMixinZ<N extends Node> |
+ implements AstElement, ElementZ { |
ResolvedAst _resolvedAst; |
// TODO(johnniwinther): This is needed for the token invariant assertion. Find |
@@ -288,7 +289,7 @@ abstract class AstElementMixinZ implements AstElement, ElementZ { |
bool get hasResolvedAst => _resolvedAst != null; |
@override |
- get node => _unsupported('node'); |
+ N get node => _unsupported('node'); |
@override |
ResolvedAst get resolvedAst { |
@@ -399,6 +400,7 @@ class AbstractFieldElementZ extends ElementZ |
bool get isTopLevel => _canonicalElement.isTopLevel; |
} |
+// ignore: STRONG_MODE_INVALID_METHOD_OVERRIDE_FROM_BASE |
class LibraryElementZ extends DeserializedElementZ |
with AnalyzableElementMixin, ContainerMixin, LibraryElementCommon |
implements LibraryElement { |
@@ -760,11 +762,12 @@ abstract class StaticMemberMixin implements DeserializedElementZ { |
bool get isClassMember => true; |
} |
-abstract class TypedElementMixin implements DeserializedElementZ, TypedElement { |
- ResolutionDartType _type; |
+abstract class TypedElementMixin<T extends ResolutionDartType> |
+ implements DeserializedElementZ, TypedElement { |
+ T _type; |
@override |
- ResolutionDartType get type { |
+ T get type { |
if (_type == null) { |
_type = _decoder.getType(Key.TYPE); |
} |
@@ -772,7 +775,7 @@ abstract class TypedElementMixin implements DeserializedElementZ, TypedElement { |
} |
@override |
- ResolutionDartType computeType(Resolution resolution) => type; |
+ T computeType(Resolution resolution) => type; |
} |
abstract class ParametersMixin |
@@ -921,6 +924,7 @@ abstract class ClassElementMixin |
} |
} |
+// ignore: STRONG_MODE_INVALID_METHOD_OVERRIDE_FROM_BASE |
class ClassElementZ extends DeserializedElementZ |
with |
AnalyzableElementMixin, |
@@ -929,7 +933,7 @@ class ClassElementZ extends DeserializedElementZ |
class_members.ClassMemberMixin, |
ContainerMixin, |
LibraryMemberMixin, |
- TypeDeclarationMixin<ResolutionInterfaceType>, |
+ TypeDeclarationMixin, |
ClassElementMixin |
implements ClassElement { |
bool _isObject; |
@@ -1020,6 +1024,10 @@ class ClassElementZ extends DeserializedElementZ |
// TODO(johnniwinther): Why can't this always be computed in ensureResolved? |
return _callType; |
} |
+ |
+ ResolutionInterfaceType get thisType => super.thisType; |
+ |
+ ResolutionInterfaceType get rawType => super.rawType; |
} |
abstract class MixinApplicationElementMixin |
@@ -1051,7 +1059,8 @@ class UnnamedMixinApplicationElementZ extends ElementZ |
ClassElementCommon, |
ClassElementMixin, |
class_members.ClassMemberMixin, |
- TypeDeclarationMixin<ResolutionInterfaceType>, |
+ // ignore: STRONG_MODE_INVALID_METHOD_OVERRIDE_FROM_MIXIN |
+ TypeDeclarationMixin, |
AnalyzableElementMixin, |
AstElementMixinZ, |
MixinApplicationElementCommon, |
@@ -1202,6 +1211,7 @@ class UnnamedMixinApplicationElementZ extends ElementZ |
SourceSpan get sourcePosition => subclass.sourcePosition; |
} |
+// ignore: STRONG_MODE_INVALID_METHOD_OVERRIDE_FROM_BASE |
class EnumClassElementZ extends ClassElementZ implements EnumClassElement { |
List<FieldElement> _enumValues; |
@@ -1211,7 +1221,7 @@ class EnumClassElementZ extends ClassElementZ implements EnumClassElement { |
bool get isEnumClass => true; |
@override |
- List<FieldElement> get enumValues { |
+ List<EnumConstantElement> get enumValues { |
if (_enumValues == null) { |
_enumValues = _decoder.getElements(Key.FIELDS); |
} |
@@ -1219,14 +1229,15 @@ class EnumClassElementZ extends ClassElementZ implements EnumClassElement { |
} |
} |
+// ignore: STRONG_MODE_INVALID_METHOD_OVERRIDE_FROM_BASE |
abstract class ConstructorElementZ extends DeserializedElementZ |
with |
AnalyzableElementMixin, |
- AstElementMixinZ, |
+ AstElementMixinZ<FunctionExpression>, |
ClassMemberMixin, |
FunctionTypedElementMixin, |
ParametersMixin, |
- TypedElementMixin, |
+ TypedElementMixin<ResolutionFunctionType>, |
MemberElementMixin, |
ConstructorElementCommon |
implements |
@@ -1306,7 +1317,7 @@ abstract class ConstructorElementZ extends DeserializedElementZ |
PrefixElement get redirectionDeferredPrefix => null; |
@override |
- ResolutionInterfaceType computeEffectiveTargetType( |
+ ResolutionDartType computeEffectiveTargetType( |
ResolutionInterfaceType newType) => |
newType; |
} |
@@ -1416,10 +1427,11 @@ class RedirectingFactoryConstructorElementZ extends ConstructorElementZ { |
} |
} |
+// ignore: STRONG_MODE_INVALID_METHOD_OVERRIDE_FROM_BASE |
class ForwardingConstructorElementZ extends ElementZ |
with |
AnalyzableElementMixin, |
- AstElementMixinZ |
+ AstElementMixinZ<FunctionExpression> |
implements |
ConstructorElement, |
// TODO(johnniwinther): Sort out whether a constructor is a method. |
@@ -1441,7 +1453,7 @@ class ForwardingConstructorElementZ extends ElementZ |
AsyncMarker get asyncMarker => AsyncMarker.SYNC; |
@override |
- ResolutionInterfaceType computeEffectiveTargetType( |
+ ResolutionDartType computeEffectiveTargetType( |
ResolutionInterfaceType newType) { |
return enclosingClass.thisType.substByContext(newType); |
} |
@@ -1583,7 +1595,7 @@ abstract class MemberElementMixin |
abstract class FieldElementZ extends DeserializedElementZ |
with |
AnalyzableElementMixin, |
- AstElementMixinZ, |
+ AstElementMixinZ<VariableDefinitions>, |
TypedElementMixin, |
MemberElementMixin |
implements FieldElement { |
@@ -1638,6 +1650,7 @@ class StaticFieldElementZ extends FieldElementZ |
StaticFieldElementZ(ObjectDecoder decoder) : super(decoder); |
} |
+// ignore: STRONG_MODE_INVALID_METHOD_OVERRIDE_FROM_BASE |
class EnumConstantElementZ extends StaticFieldElementZ |
implements EnumConstantElement { |
EnumConstantElementZ(ObjectDecoder decoder) : super(decoder); |
@@ -1650,13 +1663,14 @@ class InstanceFieldElementZ extends FieldElementZ |
InstanceFieldElementZ(ObjectDecoder decoder) : super(decoder); |
} |
+// ignore: STRONG_MODE_INVALID_METHOD_OVERRIDE_FROM_BASE |
abstract class FunctionElementZ extends DeserializedElementZ |
with |
AnalyzableElementMixin, |
- AstElementMixinZ, |
+ AstElementMixinZ<FunctionExpression>, |
ParametersMixin, |
FunctionTypedElementMixin, |
- TypedElementMixin, |
+ TypedElementMixin<ResolutionFunctionType>, |
MemberElementMixin |
implements MethodElement { |
FunctionElementZ(ObjectDecoder decoder) : super(decoder); |
@@ -1704,7 +1718,7 @@ abstract class LocalExecutableMixin |
Element get enclosingElement => executableContext; |
@override |
- Element get enclosingClass => memberContext.enclosingClass; |
+ ClassElementZ get enclosingClass => memberContext.enclosingClass; |
@override |
ExecutableElement get executableContext { |
@@ -1735,13 +1749,14 @@ abstract class LocalExecutableMixin |
TreeElements get treeElements => memberContext.treeElements; |
} |
+// ignore: STRONG_MODE_INVALID_METHOD_OVERRIDE_FROM_BASE |
class LocalFunctionElementZ extends DeserializedElementZ |
with |
LocalExecutableMixin, |
- AstElementMixinZ, |
+ AstElementMixinZ<FunctionExpression>, |
ParametersMixin, |
FunctionTypedElementMixin, |
- TypedElementMixin |
+ TypedElementMixin<ResolutionFunctionType> |
implements LocalFunctionElement { |
LocalFunctionElementZ(ObjectDecoder decoder) : super(decoder); |
@@ -1759,13 +1774,14 @@ class LocalFunctionElementZ extends DeserializedElementZ |
} |
} |
+// ignore: STRONG_MODE_INVALID_METHOD_OVERRIDE_FROM_BASE |
abstract class GetterElementZ extends DeserializedElementZ |
with |
AnalyzableElementMixin, |
- AstElementMixinZ, |
+ AstElementMixinZ<FunctionExpression>, |
FunctionTypedElementMixin, |
ParametersMixin, |
- TypedElementMixin, |
+ TypedElementMixin<ResolutionFunctionType>, |
MemberElementMixin |
implements GetterElement { |
AbstractFieldElement abstractField; |
@@ -1804,13 +1820,14 @@ class InstanceGetterElementZ extends GetterElementZ |
InstanceGetterElementZ(ObjectDecoder decoder) : super(decoder); |
} |
+// ignore: STRONG_MODE_INVALID_METHOD_OVERRIDE_FROM_BASE |
abstract class SetterElementZ extends DeserializedElementZ |
with |
AnalyzableElementMixin, |
- AstElementMixinZ, |
+ AstElementMixinZ<FunctionExpression>, |
FunctionTypedElementMixin, |
ParametersMixin, |
- TypedElementMixin, |
+ TypedElementMixin<ResolutionFunctionType>, |
MemberElementMixin |
implements SetterElement { |
AbstractFieldElement abstractField; |
@@ -1847,11 +1864,11 @@ class InstanceSetterElementZ extends SetterElementZ |
InstanceSetterElementZ(ObjectDecoder decoder) : super(decoder); |
} |
-abstract class TypeDeclarationMixin<T extends GenericType> |
+abstract class TypeDeclarationMixin |
implements ElementZ, TypeDeclarationElement { |
List<ResolutionDartType> _typeVariables; |
- T _rawType; |
- T _thisType; |
+ GenericType _rawType; |
+ GenericType _thisType; |
Name _memberName; |
Name get memberName { |
@@ -1872,7 +1889,7 @@ abstract class TypeDeclarationMixin<T extends GenericType> |
} |
} |
- T _createType(List<ResolutionDartType> typeArguments); |
+ GenericType _createType(List<ResolutionDartType> typeArguments); |
@override |
List<ResolutionDartType> get typeVariables { |
@@ -1881,19 +1898,19 @@ abstract class TypeDeclarationMixin<T extends GenericType> |
} |
@override |
- T get rawType { |
+ GenericType get rawType { |
_ensureTypes(); |
return _rawType; |
} |
@override |
- T get thisType { |
+ GenericType get thisType { |
_ensureTypes(); |
return _thisType; |
} |
@override |
- T computeType(Resolution resolution) => thisType; |
+ GenericType computeType(Resolution resolution) => thisType; |
@override |
bool get isResolved => true; |
@@ -1902,10 +1919,10 @@ abstract class TypeDeclarationMixin<T extends GenericType> |
class TypedefElementZ extends DeserializedElementZ |
with |
AnalyzableElementMixin, |
- AstElementMixinZ, |
+ AstElementMixinZ<Node>, |
LibraryMemberMixin, |
ParametersMixin, |
- TypeDeclarationMixin<ResolutionTypedefType> |
+ TypeDeclarationMixin |
implements TypedefElement { |
ResolutionDartType _alias; |
@@ -1941,10 +1958,17 @@ class TypedefElementZ extends DeserializedElementZ |
@override |
void checkCyclicReference(Resolution resolution) {} |
+ |
+ ResolutionTypedefType get thisType => super.thisType; |
+ |
+ ResolutionTypedefType get rawType => super.rawType; |
} |
class TypeVariableElementZ extends DeserializedElementZ |
- with AnalyzableElementMixin, AstElementMixinZ, TypedElementMixin |
+ with |
+ AnalyzableElementMixin, |
+ AstElementMixinZ<Node>, |
+ TypedElementMixin<ResolutionTypeVariableType> |
implements TypeVariableElement { |
GenericElement _typeDeclaration; |
ResolutionTypeVariableType _type; |
@@ -1977,7 +2001,7 @@ class TypeVariableElementZ extends DeserializedElementZ |
Element get enclosingElement => typeDeclaration; |
@override |
- Element get enclosingClass => typeDeclaration; |
+ ClassElementZ get enclosingClass => typeDeclaration; |
@override |
int get index => _decoder.getInt(Key.INDEX); |
@@ -2002,7 +2026,7 @@ class TypeVariableElementZ extends DeserializedElementZ |
} |
class SyntheticTypeVariableElementZ extends ElementZ |
- with AnalyzableElementMixin, AstElementMixinZ |
+ with AnalyzableElementMixin, AstElementMixinZ<Node> |
implements TypeVariableElement { |
final TypeDeclarationElement typeDeclaration; |
final int index; |
@@ -2047,7 +2071,7 @@ class SyntheticTypeVariableElementZ extends ElementZ |
Element get enclosingElement => typeDeclaration; |
@override |
- Element get enclosingClass => typeDeclaration; |
+ ClassElementZ get enclosingClass => typeDeclaration; |
ResolutionDartType get bound { |
assert(_bound != null, |
@@ -2066,7 +2090,10 @@ class SyntheticTypeVariableElementZ extends ElementZ |
} |
abstract class ParameterElementZ extends DeserializedElementZ |
- with AnalyzableElementMixin, AstElementMixinZ, TypedElementMixin |
+ with |
+ AnalyzableElementMixin, |
+ AstElementMixinZ<VariableDefinitions>, |
+ TypedElementMixin |
implements ParameterElement { |
FunctionElement _functionDeclaration; |
ConstantExpression _constant; |
@@ -2122,7 +2149,7 @@ abstract class ParameterElementZ extends DeserializedElementZ |
Expression initializer; |
@override |
- Node node; |
+ VariableDefinitions node; |
@override |
bool get isNamed => _decoder.getBool(Key.IS_NAMED); |
@@ -2183,12 +2210,14 @@ class InitializingFormalElementZ extends LocalParameterElementZ |
@override |
bool get isLocal => true; |
+ |
+ ConstructorElementZ get functionDeclaration => super.functionDeclaration; |
} |
class LocalVariableElementZ extends DeserializedElementZ |
with |
AnalyzableElementMixin, |
- AstElementMixinZ, |
+ AstElementMixinZ<VariableDefinitions>, |
LocalExecutableMixin, |
TypedElementMixin |
implements LocalVariableElement { |