| Index: pkg/compiler/lib/src/elements/resolution_types.dart
|
| diff --git a/pkg/compiler/lib/src/elements/resolution_types.dart b/pkg/compiler/lib/src/elements/resolution_types.dart
|
| index 785a27193d494b1d356ca392d10daa3bac10c642..8168305002430977a8f442fe3f88514389adf392 100644
|
| --- a/pkg/compiler/lib/src/elements/resolution_types.dart
|
| +++ b/pkg/compiler/lib/src/elements/resolution_types.dart
|
| @@ -356,7 +356,7 @@ class MalformedType extends DartType {
|
| }
|
| }
|
|
|
| -abstract class GenericType extends DartType {
|
| +abstract class GenericType<T extends GenericType> extends DartType {
|
| final TypeDeclarationElement element;
|
| final List<DartType> typeArguments;
|
|
|
| @@ -381,9 +381,9 @@ abstract class GenericType extends DartType {
|
| }
|
|
|
| /// Creates a new instance of this type using the provided type arguments.
|
| - GenericType createInstantiation(List<DartType> newTypeArguments);
|
| + T createInstantiation(List<DartType> newTypeArguments);
|
|
|
| - DartType subst(List<DartType> arguments, List<DartType> parameters) {
|
| + T subst(List<DartType> arguments, List<DartType> parameters) {
|
| if (typeArguments.isEmpty) {
|
| // Return fast on non-generic types.
|
| return this;
|
| @@ -471,7 +471,8 @@ abstract class GenericType extends DartType {
|
| }
|
| }
|
|
|
| -class InterfaceType extends GenericType implements types.InterfaceType {
|
| +class InterfaceType extends GenericType<InterfaceType>
|
| + implements types.InterfaceType {
|
| int _hashCode;
|
|
|
| InterfaceType(ClassElement element,
|
| @@ -809,7 +810,7 @@ class FunctionType extends DartType implements types.FunctionType {
|
| bool _typeContainsMethodTypeVariableType(DartType type) =>
|
| type.containsMethodTypeVariableType;
|
|
|
| -class TypedefType extends GenericType {
|
| +class TypedefType extends GenericType<TypedefType> {
|
| DartType _unaliased;
|
|
|
| TypedefType(TypedefElement element,
|
|
|