Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(182)

Unified Diff: pkg/analyzer/lib/src/dart/element/type.dart

Issue 1568643002: clean up generic methods in resolution (Closed) Base URL: git@github.com:dart-lang/sdk.git@master
Patch Set: Created 4 years, 11 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View side-by-side diff with in-line comments
Download patch
« no previous file with comments | « pkg/analyzer/lib/src/dart/element/member.dart ('k') | pkg/analyzer/lib/src/generated/ast.dart » ('j') | no next file with comments »
Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
Index: pkg/analyzer/lib/src/dart/element/type.dart
diff --git a/pkg/analyzer/lib/src/dart/element/type.dart b/pkg/analyzer/lib/src/dart/element/type.dart
index 03c361d8fe1815d3686e0b962296c22ec350d5ef..55a349312f7ea1bc25cb80c03488ff10b6f5c54c 100644
--- a/pkg/analyzer/lib/src/dart/element/type.dart
+++ b/pkg/analyzer/lib/src/dart/element/type.dart
@@ -177,7 +177,7 @@ class FunctionTypeImpl extends TypeImpl implements FunctionType {
/**
* True if this type is the result of instantiating type parameters (and thus
* any type parameters bound by the typedef should be considered part of
- * [typeParameters] rather than [boundTypeParameters]).
+ * [typeParameters] rather than [typeFormals]).
*/
final bool _isInstantiated;
@@ -243,8 +243,12 @@ class FunctionTypeImpl extends TypeImpl implements FunctionType {
*/
DartType get baseReturnType => element.returnType;
+ @deprecated
@override
- List<TypeParameterElement> get boundTypeParameters {
+ List<TypeParameterElement> get boundTypeParameters => typeFormals;
+
+ @override
+ List<TypeParameterElement> get typeFormals {
if (_isInstantiated) {
return TypeParameterElement.EMPTY_LIST;
} else {
@@ -349,26 +353,6 @@ class FunctionTypeImpl extends TypeImpl implements FunctionType {
return code;
}
- /**
- * The type arguments that were used to instantiate this function type, if
- * any, otherwise this will return an empty list.
- *
- * Given a function type `f`:
- *
- * f == f.originalFunction.instantiate(f.instantiatedTypeArguments)
- *
- * Will always hold.
- */
- List<DartType> get instantiatedTypeArguments {
- int typeParameterCount = element.type.boundTypeParameters.length;
- if (typeParameterCount == 0) {
- return DartType.EMPTY_LIST;
- }
- // The substituted types at the end should be our bound type parameters.
- int skipCount = typeArguments.length - typeParameterCount;
- return new List<DartType>.from(typeArguments.skip(skipCount));
- }
-
@override
Map<String, DartType> get namedParameterTypes {
LinkedHashMap<String, DartType> namedParameterTypes =
@@ -466,20 +450,6 @@ class FunctionTypeImpl extends TypeImpl implements FunctionType {
return types;
}
- /**
- * If this is an instantiation of a generic function type, this will get
- * the original function from which it was instantiated.
- *
- * Otherwise, this will return `this`.
- */
- FunctionTypeImpl get originalFunction {
- if (element.type.boundTypeParameters.isEmpty) {
- return this;
- }
- return (element.type as FunctionTypeImpl).substitute2(typeArguments,
- TypeParameterTypeImpl.getTypes(typeParameters), prunedTypedefs);
- }
-
@override
List<ParameterElement> get parameters {
List<ParameterElement> baseParameters = this.baseParameters;
@@ -553,19 +523,19 @@ class FunctionTypeImpl extends TypeImpl implements FunctionType {
return false;
}
FunctionTypeImpl otherType = object as FunctionTypeImpl;
- if (boundTypeParameters.length != otherType.boundTypeParameters.length) {
+ if (typeFormals.length != otherType.typeFormals.length) {
return false;
}
// `<T>T -> T` should be equal to `<U>U -> U`
// To test this, we instantiate both types with the same (unique) type
// variables, and see if the result is equal.
- if (boundTypeParameters.isNotEmpty) {
+ if (typeFormals.isNotEmpty) {
List<DartType> instantiateTypeArgs = new List<DartType>();
List<DartType> variablesThis = new List<DartType>();
List<DartType> variablesOther = new List<DartType>();
- for (int i = 0; i < boundTypeParameters.length; i++) {
- TypeParameterElement pThis = boundTypeParameters[i];
- TypeParameterElement pOther = otherType.boundTypeParameters[i];
+ for (int i = 0; i < typeFormals.length; i++) {
+ TypeParameterElement pThis = typeFormals[i];
+ TypeParameterElement pOther = otherType.typeFormals[i];
TypeParameterTypeImpl pFresh = new TypeParameterTypeImpl(
new TypeParameterElementImpl(pThis.name, -1));
instantiateTypeArgs.add(pFresh);
@@ -578,7 +548,7 @@ class FunctionTypeImpl extends TypeImpl implements FunctionType {
return false;
}
}
- // After instantiation, they will no longer have boundTypeParameters,
+ // After instantiation, they will no longer have typeFormals,
// so we will continue below.
return this.instantiate(instantiateTypeArgs) ==
otherType.instantiate(instantiateTypeArgs);
@@ -594,7 +564,7 @@ class FunctionTypeImpl extends TypeImpl implements FunctionType {
@override
void appendTo(StringBuffer buffer) {
- if (boundTypeParameters.isNotEmpty) {
+ if (typeFormals.isNotEmpty) {
// To print a type with type variables, first make sure we have unique
// variable names to print.
Set<TypeParameterType> freeVariables = new HashSet<TypeParameterType>();
@@ -610,8 +580,8 @@ class FunctionTypeImpl extends TypeImpl implements FunctionType {
List<DartType> instantiateTypeArgs = new List<DartType>();
List<DartType> variables = new List<DartType>();
buffer.write("<");
- for (TypeParameterElement e in boundTypeParameters) {
- if (e != boundTypeParameters[0]) {
+ for (TypeParameterElement e in typeFormals) {
+ if (e != typeFormals[0]) {
buffer.write(",");
}
String name = e.name;
@@ -640,7 +610,7 @@ class FunctionTypeImpl extends TypeImpl implements FunctionType {
buffer.write(">");
// Instantiate it and print the resulting type. After instantiation, it
- // will no longer have boundTypeParameters, so we will continue below.
+ // will no longer have typeFormals, so we will continue below.
this.instantiate(instantiateTypeArgs).appendTo(buffer);
return;
}
@@ -708,10 +678,10 @@ class FunctionTypeImpl extends TypeImpl implements FunctionType {
@override
FunctionTypeImpl instantiate(List<DartType> argumentTypes) {
- if (argumentTypes.length != boundTypeParameters.length) {
+ if (argumentTypes.length != typeFormals.length) {
throw new IllegalArgumentException(
"argumentTypes.length (${argumentTypes.length}) != "
- "boundTypeParameters.length (${boundTypeParameters.length})");
+ "typeFormals.length (${typeFormals.length})");
}
if (argumentTypes.isEmpty) {
return this;
@@ -720,7 +690,7 @@ class FunctionTypeImpl extends TypeImpl implements FunctionType {
// Given:
// {U/T} <S> T -> S
// Where {U/T} represents the typeArguments (U) and typeParameters (T) list,
- // and <S> represents the boundTypeParameters.
+ // and <S> represents the typeFormals.
//
// Now instantiate([V]), and the result should be:
// {U/T, V/S} T -> S.
@@ -1019,8 +989,8 @@ class FunctionTypeImpl extends TypeImpl implements FunctionType {
FunctionType type, Set<TypeParameterType> free) {
// Make some fresh variables to avoid capture.
List<DartType> typeArgs = DartType.EMPTY_LIST;
- if (type.boundTypeParameters.isNotEmpty) {
- typeArgs = new List<DartType>.from(type.boundTypeParameters.map((e) =>
+ if (type.typeFormals.isNotEmpty) {
+ typeArgs = new List<DartType>.from(type.typeFormals.map((e) =>
new TypeParameterTypeImpl(new TypeParameterElementImpl(e.name, -1))));
type = type.instantiate(typeArgs);
« no previous file with comments | « pkg/analyzer/lib/src/dart/element/member.dart ('k') | pkg/analyzer/lib/src/generated/ast.dart » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698