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

Unified Diff: pkg/analyzer/lib/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 | « no previous file | pkg/analyzer/lib/src/dart/element/member.dart » ('j') | no next file with comments »
Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
Index: pkg/analyzer/lib/dart/element/type.dart
diff --git a/pkg/analyzer/lib/dart/element/type.dart b/pkg/analyzer/lib/dart/element/type.dart
index 49607dc2c65b46d30b59d8f13740cc42b390b909..548dc1d4e64c7a350e948f4f65211ccadb9a8b73 100644
--- a/pkg/analyzer/lib/dart/element/type.dart
+++ b/pkg/analyzer/lib/dart/element/type.dart
@@ -131,13 +131,20 @@ abstract class DartType {
*/
abstract class FunctionType implements ParameterizedType {
/**
- * The type parameters of this generic function. For example `<T> T -> T`.
+ * Deprecated: use [typeFormals].
+ */
+ @deprecated
+ List<TypeParameterElement> get boundTypeParameters;
+
+ /**
+ * The formal type parameters of this generic function.
+ * For example `<T> T -> T`.
*
* These are distinct from the [typeParameters] list, which contains type
* parameters from surrounding contexts, and thus are free type variables from
* the perspective of this function type.
*/
- List<TypeParameterElement> get boundTypeParameters;
+ List<TypeParameterElement> get typeFormals;
/**
* Return a map from the names of named parameters to the types of the named
@@ -569,7 +576,7 @@ abstract class InterfaceType implements ParameterizedType {
*/
// TODO(jmesserly): introduce a new "instantiate" and deprecate this.
// The new "instantiate" should work similar to FunctionType.instantiate,
- // which uses [boundTypeParameters] to model type parameters that haven't been
+ // which uses [typeFormals] to model type parameters that haven't been
// filled in yet. Those are kept separate from already-substituted type
// parameters or free variables from the enclosing scopes, which allows nested
// generics to work, such as a generic method in a generic class.
@@ -590,7 +597,16 @@ abstract class InterfaceType implements ParameterizedType {
}
/**
- * A type with type parameters, such as a class or function type alias.
+ * A type that can track substituted type parameters, either for itself after
+ * instantiation, or from a surrounding context.
+ *
+ * For example, given a class `Foo<T>`, after instantiation with S for T, it
+ * will track the substitution `{S/T}`.
+ *
+ * This substitution will be propagated to its members. For example, say our
+ * `Foo<T>` class has a field `T bar;`. When we look up this field, we will get
+ * back a [FieldElement] that tracks the substituted type as `{S/T}T`, so when
+ * we ask for the field type we will get`S`.
*
* Clients may not extend, implement or mix-in this class.
*/
« no previous file with comments | « no previous file | pkg/analyzer/lib/src/dart/element/member.dart » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698