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

Unified Diff: pkg/analyzer/lib/dart/ast/ast.dart

Issue 1720433002: fixes #25477, downward inference of generic methods (Closed) Base URL: git@github.com:dart-lang/sdk.git@master
Patch Set: Created 4 years, 10 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/ast/ast.dart » ('j') | no next file with comments »
Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
Index: pkg/analyzer/lib/dart/ast/ast.dart
diff --git a/pkg/analyzer/lib/dart/ast/ast.dart b/pkg/analyzer/lib/dart/ast/ast.dart
index 598d6116c181de35f372ced023f6d874991cd3c9..dbc0a0da926e253abc45b4af95d826785fb20fc4 100644
--- a/pkg/analyzer/lib/dart/ast/ast.dart
+++ b/pkg/analyzer/lib/dart/ast/ast.dart
@@ -536,7 +536,7 @@ abstract class AstNode {
* (either AST nodes or tokens) that make up the contents of this node,
* including doc comments but excluding other comments.
*/
- Iterable /*<AstNode | Token>*/ get childEntities;
+ Iterable/*<AstNode | Token>*/ get childEntities;
/**
* Return the offset of the character immediately following the last character
@@ -591,7 +591,7 @@ abstract class AstNode {
* Use the given [visitor] to visit this node. Return the value returned by
* the visitor as a result of visiting this node.
*/
- dynamic /* =E */ accept /*<E>*/ (AstVisitor /*<E>*/ visitor);
+ dynamic /* =E */ accept/*<E>*/(AstVisitor/*<E>*/ visitor);
/**
* Return the most immediate ancestor of this node for which the [predicate]
@@ -3994,7 +3994,7 @@ abstract class FunctionExpression extends Expression {
*
* Clients may not extend, implement or mix-in this class.
*/
-abstract class FunctionExpressionInvocation extends Expression {
+abstract class FunctionExpressionInvocation extends InvocationExpression {
/**
* Initialize a newly created function expression invocation.
*/
@@ -4004,11 +4004,6 @@ abstract class FunctionExpressionInvocation extends Expression {
ArgumentList argumentList) = FunctionExpressionInvocationImpl;
/**
- * Return the list of arguments to the method.
- */
- ArgumentList get argumentList;
-
- /**
* Set the list of arguments to the method to the given [argumentList].
*/
void set argumentList(ArgumentList argumentList);
@@ -4094,12 +4089,6 @@ abstract class FunctionExpressionInvocation extends Expression {
void set staticInvokeType(DartType type);
/**
- * Return the type arguments to be applied to the method being invoked, or
- * `null` if no type arguments were provided.
- */
- TypeArgumentList get typeArguments;
-
- /**
* Set the type arguments to be applied to the method being invoked to the
* given [typeArguments].
*/
@@ -4978,6 +4967,61 @@ abstract class InterpolationString extends InterpolationElement {
}
/**
+ * The invocation of a function or method; either a
+ * [FunctionExpressionInvocation] or a [MethodInvocation].
+ *
+ * Clients may not extend, implement or mix-in this class.
+ */
+abstract class InvocationExpression extends Expression {
+ /**
+ * Return the function type of the invocation based on the propagated type
+ * information, or `null` if the AST structure has not been resolved, or if
+ * the invoke could not be resolved.
+ *
+ * This will usually be a [FunctionType], but it can also be an
+ * [InterfaceType] with a `call` method, `dynamic`, `Function`, or a `@proxy`
+ * interface type that implements `Function`.
+ */
+ DartType propagatedInvokeType;
Brian Wilkerson 2016/02/22 22:50:52 I'd forgotten that we decided to not sort fields (
Jennifer Messerly 2016/02/22 22:58:40 yeah I can do that. I'll send you a CL. I was mai
+
+ /**
+ * Return the function type of the invocation based on the static type
+ * information, or `null` if the AST structure has not been resolved, or if
+ * the invoke could not be resolved.
+ *
+ * This will usually be a [FunctionType], but it can also be an
+ * [InterfaceType] with a `call` method, `dynamic`, `Function`, or a `@proxy`
+ * interface type that implements `Function`.
+ */
+ DartType staticInvokeType;
+
+ /**
+ * Return the list of arguments to the method.
+ */
+ ArgumentList get argumentList;
+
+ /**
+ * The expression that identifies the function or method being invoked.
+ * For example:
+ *
+ * (o.m)<TArgs>(args); // target will be `o.m`
+ * o.m<TArgs>(args); // target will be `m`
+ *
+ * In either case, the [function.staticType] will be the
+ * [staticInvokeType] before applying type arguments `TArgs`. Similarly,
+ * [function.propagatedType] will be the [propagatedInvokeType]
+ * before applying type arguments `TArgs`.
+ */
+ Expression get function;
+
+ /**
+ * Return the type arguments to be applied to the method being invoked, or
+ * `null` if no type arguments were provided.
+ */
+ TypeArgumentList get typeArguments;
+}
+
+/**
* An is expression.
*
* > isExpression ::=
@@ -5519,7 +5563,7 @@ abstract class MethodDeclaration extends ClassMember {
*
* Clients may not extend, implement or mix-in this class.
*/
-abstract class MethodInvocation extends Expression {
+abstract class MethodInvocation extends InvocationExpression {
/**
* Initialize a newly created method invocation. The [target] and [operator]
* can be `null` if there is no target.
@@ -5532,11 +5576,6 @@ abstract class MethodInvocation extends Expression {
ArgumentList argumentList) = MethodInvocationImpl;
/**
- * Return the list of arguments to the method.
- */
- ArgumentList get argumentList;
-
- /**
* Set the list of arguments to the method to the given [argumentList].
*/
void set argumentList(ArgumentList argumentList);
@@ -5631,12 +5670,6 @@ abstract class MethodInvocation extends Expression {
void set target(Expression expression);
/**
- * Return the type arguments to be applied to the method being invoked, or
- * `null` if no type arguments were provided.
- */
- TypeArgumentList get typeArguments;
-
- /**
* Set the type arguments to be applied to the method being invoked to the
* given [typeArguments].
*/
« no previous file with comments | « no previous file | pkg/analyzer/lib/src/dart/ast/ast.dart » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698