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

Unified Diff: pkg/front_end/lib/src/fasta/kernel/kernel_shadow_ast.dart

Issue 2888733005: Rework TypeInferenceListener. (Closed)
Patch Set: Created 3 years, 7 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/front_end/lib/src/fasta/type_inference/type_inference_listener.dart » ('j') | no next file with comments »
Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
Index: pkg/front_end/lib/src/fasta/kernel/kernel_shadow_ast.dart
diff --git a/pkg/front_end/lib/src/fasta/kernel/kernel_shadow_ast.dart b/pkg/front_end/lib/src/fasta/kernel/kernel_shadow_ast.dart
index 45b41b39184a5099257fec64f481f06c1f3488ae..251a74b26fa1e7488a0444955a8a267eb9ff4640 100644
--- a/pkg/front_end/lib/src/fasta/kernel/kernel_shadow_ast.dart
+++ b/pkg/front_end/lib/src/fasta/kernel/kernel_shadow_ast.dart
@@ -76,10 +76,11 @@ class KernelAsExpression extends AsExpression implements KernelExpression {
@override
DartType _inferExpression(
KernelTypeInferrer inferrer, DartType typeContext, bool typeNeeded) {
- typeNeeded = inferrer.listener.asExpressionEnter(typeContext) || typeNeeded;
+ typeNeeded =
+ inferrer.listener.asExpressionEnter(this, typeContext) || typeNeeded;
inferrer.inferExpression(operand, null, false);
var inferredType = typeNeeded ? type : null;
- inferrer.listener.asExpressionExit(inferredType);
+ inferrer.listener.asExpressionExit(this, inferredType);
return inferredType;
}
}
@@ -116,9 +117,10 @@ class KernelBoolLiteral extends BoolLiteral implements KernelExpression {
@override
DartType _inferExpression(
KernelTypeInferrer inferrer, DartType typeContext, bool typeNeeded) {
- typeNeeded = inferrer.listener.boolLiteralEnter(typeContext) || typeNeeded;
+ typeNeeded =
+ inferrer.listener.boolLiteralEnter(this, typeContext) || typeNeeded;
var inferredType = typeNeeded ? inferrer.coreTypes.boolClass.rawType : null;
- inferrer.listener.boolLiteralExit(inferredType);
+ inferrer.listener.boolLiteralExit(this, inferredType);
return inferredType;
}
}
@@ -135,7 +137,8 @@ class KernelConditionalExpression extends ConditionalExpression
DartType _inferExpression(
KernelTypeInferrer inferrer, DartType typeContext, bool typeNeeded) {
typeNeeded =
- inferrer.listener.conditionalExpressionEnter(typeContext) || typeNeeded;
+ inferrer.listener.conditionalExpressionEnter(this, typeContext) ||
+ typeNeeded;
inferrer.inferExpression(
condition, inferrer.coreTypes.boolClass.rawType, false);
// TODO(paulberry): is it correct to pass the context down?
@@ -149,7 +152,7 @@ class KernelConditionalExpression extends ConditionalExpression
.getLeastUpperBound(thenType, otherwiseType);
staticType = type;
var inferredType = typeNeeded ? type : null;
- inferrer.listener.conditionalExpressionExit(inferredType);
+ inferrer.listener.conditionalExpressionExit(this, inferredType);
return inferredType;
}
}
@@ -169,7 +172,8 @@ class KernelConstructorInvocation extends ConstructorInvocation
DartType _inferExpression(
KernelTypeInferrer inferrer, DartType typeContext, bool typeNeeded) {
typeNeeded =
- inferrer.listener.constructorInvocationEnter(typeContext) || typeNeeded;
+ inferrer.listener.constructorInvocationEnter(this, typeContext) ||
+ typeNeeded;
var inferredType = inferrer.inferInvocation(
typeContext,
typeNeeded,
@@ -181,7 +185,7 @@ class KernelConstructorInvocation extends ConstructorInvocation
arguments.types.clear();
arguments.types.addAll(types);
});
- inferrer.listener.constructorInvocationExit(inferredType);
+ inferrer.listener.constructorInvocationExit(this, inferredType);
return inferredType;
}
}
@@ -249,10 +253,10 @@ class KernelDoubleLiteral extends DoubleLiteral implements KernelExpression {
DartType _inferExpression(
KernelTypeInferrer inferrer, DartType typeContext, bool typeNeeded) {
typeNeeded =
- inferrer.listener.doubleLiteralEnter(typeContext) || typeNeeded;
+ inferrer.listener.doubleLiteralEnter(this, typeContext) || typeNeeded;
var inferredType =
typeNeeded ? inferrer.coreTypes.doubleClass.rawType : null;
- inferrer.listener.doubleLiteralExit(inferredType);
+ inferrer.listener.doubleLiteralExit(this, inferredType);
return inferredType;
}
}
@@ -338,8 +342,8 @@ class KernelFunctionExpression extends FunctionExpression
asyncMarker == AsyncMarker.AsyncStar;
bool isGenerator = asyncMarker == AsyncMarker.SyncStar ||
asyncMarker == AsyncMarker.AsyncStar;
- typeNeeded =
- inferrer.listener.functionExpressionEnter(typeContext) || typeNeeded;
+ typeNeeded = inferrer.listener.functionExpressionEnter(this, typeContext) ||
+ typeNeeded;
// TODO(paulberry): do we also need to visit default parameter values?
// Let `<T0, ..., Tn>` be the set of type parameters of the closure (with
@@ -491,7 +495,7 @@ class KernelFunctionExpression extends FunctionExpression
}
inferrer.closureContext = oldClosureContext;
var inferredType = typeNeeded ? function.functionType : null;
- inferrer.listener.functionExpressionExit(inferredType);
+ inferrer.listener.functionExpressionExit(this, inferredType);
return inferredType;
}
}
@@ -517,9 +521,10 @@ class KernelIntLiteral extends IntLiteral implements KernelExpression {
@override
DartType _inferExpression(
KernelTypeInferrer inferrer, DartType typeContext, bool typeNeeded) {
- typeNeeded = inferrer.listener.intLiteralEnter(typeContext) || typeNeeded;
+ typeNeeded =
+ inferrer.listener.intLiteralEnter(this, typeContext) || typeNeeded;
var inferredType = typeNeeded ? inferrer.coreTypes.intClass.rawType : null;
- inferrer.listener.intLiteralExit(inferredType);
+ inferrer.listener.intLiteralExit(this, inferredType);
return inferredType;
}
}
@@ -531,10 +536,11 @@ class KernelIsExpression extends IsExpression implements KernelExpression {
@override
DartType _inferExpression(
KernelTypeInferrer inferrer, DartType typeContext, bool typeNeeded) {
- typeNeeded = inferrer.listener.isExpressionEnter(typeContext) || typeNeeded;
+ typeNeeded =
+ inferrer.listener.isExpressionEnter(this, typeContext) || typeNeeded;
inferrer.inferExpression(operand, null, false);
var inferredType = typeNeeded ? inferrer.coreTypes.boolClass.rawType : null;
- inferrer.listener.isExpressionExit(inferredType);
+ inferrer.listener.isExpressionExit(this, inferredType);
return inferredType;
}
}
@@ -549,10 +555,10 @@ class KernelIsNotExpression extends Not implements KernelExpression {
KernelTypeInferrer inferrer, DartType typeContext, bool typeNeeded) {
IsExpression isExpression = this.operand;
typeNeeded =
- inferrer.listener.isNotExpressionEnter(typeContext) || typeNeeded;
+ inferrer.listener.isNotExpressionEnter(this, typeContext) || typeNeeded;
inferrer.inferExpression(isExpression.operand, null, false);
var inferredType = typeNeeded ? inferrer.coreTypes.boolClass.rawType : null;
- inferrer.listener.isNotExpressionExit(inferredType);
+ inferrer.listener.isNotExpressionExit(this, inferredType);
return inferredType;
}
}
@@ -571,7 +577,8 @@ class KernelListLiteral extends ListLiteral implements KernelExpression {
@override
DartType _inferExpression(
KernelTypeInferrer inferrer, DartType typeContext, bool typeNeeded) {
- typeNeeded = inferrer.listener.listLiteralEnter(typeContext) || typeNeeded;
+ typeNeeded =
+ inferrer.listener.listLiteralEnter(this, typeContext) || typeNeeded;
var listClass = inferrer.coreTypes.listClass;
var listType = listClass.thisType;
List<DartType> inferredTypes;
@@ -616,7 +623,7 @@ class KernelListLiteral extends ListLiteral implements KernelExpression {
var inferredType = typeNeeded
? new InterfaceType(listClass, [inferredTypeArgument])
: null;
- inferrer.listener.listLiteralExit(inferredType);
+ inferrer.listener.listLiteralExit(this, inferredType);
return inferredType;
}
}
@@ -666,8 +673,8 @@ class KernelMethodInvocation extends MethodInvocation
@override
DartType _inferExpression(
KernelTypeInferrer inferrer, DartType typeContext, bool typeNeeded) {
- typeNeeded =
- inferrer.listener.methodInvocationEnter(typeContext) || typeNeeded;
+ typeNeeded = inferrer.listener.methodInvocationEnter(this, typeContext) ||
+ typeNeeded;
// First infer the receiver so we can look up the method that was invoked.
var receiverType = inferrer.inferExpression(receiver, null, true);
bool isOverloadedArithmeticOperator = false;
@@ -701,7 +708,7 @@ class KernelMethodInvocation extends MethodInvocation
},
isOverloadedArithmeticOperator: isOverloadedArithmeticOperator,
receiverType: receiverType);
- inferrer.listener.methodInvocationExit(inferredType);
+ inferrer.listener.methodInvocationExit(this, inferredType);
return inferredType;
}
}
@@ -723,9 +730,10 @@ class KernelNullLiteral extends NullLiteral implements KernelExpression {
@override
DartType _inferExpression(
KernelTypeInferrer inferrer, DartType typeContext, bool typeNeeded) {
- typeNeeded = inferrer.listener.nullLiteralEnter(typeContext) || typeNeeded;
+ typeNeeded =
+ inferrer.listener.nullLiteralEnter(this, typeContext) || typeNeeded;
var inferredType = typeNeeded ? inferrer.coreTypes.nullClass.rawType : null;
- inferrer.listener.nullLiteralExit(inferredType);
+ inferrer.listener.nullLiteralExit(this, inferredType);
return inferredType;
}
}
@@ -815,9 +823,10 @@ class KernelStaticGet extends StaticGet implements KernelExpression {
@override
DartType _inferExpression(
KernelTypeInferrer inferrer, DartType typeContext, bool typeNeeded) {
- typeNeeded = inferrer.listener.staticGetEnter(typeContext) || typeNeeded;
+ typeNeeded =
+ inferrer.listener.staticGetEnter(this, typeContext) || typeNeeded;
var inferredType = typeNeeded ? target.getterType : null;
- inferrer.listener.staticGetExit(inferredType);
+ inferrer.listener.staticGetExit(this, inferredType);
return inferredType;
}
}
@@ -836,8 +845,8 @@ class KernelStaticInvocation extends StaticInvocation
@override
DartType _inferExpression(
KernelTypeInferrer inferrer, DartType typeContext, bool typeNeeded) {
- typeNeeded =
- inferrer.listener.staticInvocationEnter(typeContext) || typeNeeded;
+ typeNeeded = inferrer.listener.staticInvocationEnter(this, typeContext) ||
+ typeNeeded;
var calleeType = target.function.functionType;
var inferredType = inferrer.inferInvocation(
typeContext,
@@ -850,7 +859,7 @@ class KernelStaticInvocation extends StaticInvocation
arguments.types.clear();
arguments.types.addAll(types);
});
- inferrer.listener.staticInvocationExit(inferredType);
+ inferrer.listener.staticInvocationExit(this, inferredType);
return inferredType;
}
}
@@ -879,13 +888,14 @@ class KernelStringConcatenation extends StringConcatenation
DartType _inferExpression(
KernelTypeInferrer inferrer, DartType typeContext, bool typeNeeded) {
typeNeeded =
- inferrer.listener.stringConcatenationEnter(typeContext) || typeNeeded;
+ inferrer.listener.stringConcatenationEnter(this, typeContext) ||
+ typeNeeded;
for (Expression expression in expressions) {
inferrer.inferExpression(expression, null, false);
}
var inferredType =
typeNeeded ? inferrer.coreTypes.stringClass.rawType : null;
- inferrer.listener.stringConcatenationExit(inferredType);
+ inferrer.listener.stringConcatenationExit(this, inferredType);
return inferredType;
}
}
@@ -898,10 +908,10 @@ class KernelStringLiteral extends StringLiteral implements KernelExpression {
DartType _inferExpression(
KernelTypeInferrer inferrer, DartType typeContext, bool typeNeeded) {
typeNeeded =
- inferrer.listener.stringLiteralEnter(typeContext) || typeNeeded;
+ inferrer.listener.stringLiteralEnter(this, typeContext) || typeNeeded;
var inferredType =
typeNeeded ? inferrer.coreTypes.stringClass.rawType : null;
- inferrer.listener.stringLiteralExit(inferredType);
+ inferrer.listener.stringLiteralExit(this, inferredType);
return inferredType;
}
}
@@ -1290,7 +1300,8 @@ class KernelVariableGet extends VariableGet implements KernelExpression {
var variable = this.variable as KernelVariableDeclaration;
bool mutatedInClosure = variable._mutatedInClosure;
DartType declaredOrInferredType = variable.type;
- typeNeeded = inferrer.listener.variableGetEnter(typeContext) || typeNeeded;
+ typeNeeded =
+ inferrer.listener.variableGetEnter(this, typeContext) || typeNeeded;
DartType promotedType = inferrer.typePromoter
.computePromotedType(_fact, _scope, mutatedInClosure);
if (promotedType != null) {
@@ -1300,7 +1311,7 @@ class KernelVariableGet extends VariableGet implements KernelExpression {
this.promotedType = promotedType;
var inferredType =
typeNeeded ? (promotedType ?? declaredOrInferredType) : null;
- inferrer.listener.variableGetExit(inferredType);
+ inferrer.listener.variableGetExit(this, inferredType);
return inferredType;
}
}
@@ -1314,10 +1325,11 @@ class KernelVariableSet extends VariableSet implements KernelExpression {
DartType _inferExpression(
KernelTypeInferrer inferrer, DartType typeContext, bool typeNeeded) {
var variable = this.variable as KernelVariableDeclaration;
- typeNeeded = inferrer.listener.variableSetEnter(typeContext) || typeNeeded;
+ typeNeeded =
+ inferrer.listener.variableSetEnter(this, typeContext) || typeNeeded;
var inferredType =
inferrer.inferExpression(value, variable._declaredType, typeNeeded);
- inferrer.listener.variableSetExit(inferredType);
+ inferrer.listener.variableSetExit(this, inferredType);
return inferredType;
}
}
« no previous file with comments | « no previous file | pkg/front_end/lib/src/fasta/type_inference/type_inference_listener.dart » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698