Index: pkg/front_end/lib/src/fasta/type_inference/type_inference_listener.dart |
diff --git a/pkg/front_end/lib/src/fasta/type_inference/type_inference_listener.dart b/pkg/front_end/lib/src/fasta/type_inference/type_inference_listener.dart |
index ff368b5840971d79d1ce818edc1b1e74ebe16e4c..f4ad5f8fd4383ed921430a818aab197a0d9aa473 100644 |
--- a/pkg/front_end/lib/src/fasta/type_inference/type_inference_listener.dart |
+++ b/pkg/front_end/lib/src/fasta/type_inference/type_inference_listener.dart |
@@ -14,8 +14,12 @@ class TypeInferenceBase { |
return false; |
} |
- debugExpressionExit( |
+ void debugExpressionExit( |
String expressionType, Expression expression, DartType inferredType) {} |
+ |
+ void debugStatementEnter(String statementType, Statement statement) {} |
+ |
+ void debugStatementExit(String statementType, Statement statement) {} |
} |
/// Mixin which can be applied to [TypeInferenceListener] to cause debug info to |
@@ -27,10 +31,18 @@ class TypeInferenceDebugging implements TypeInferenceBase { |
return true; |
} |
- debugExpressionExit( |
+ void debugExpressionExit( |
String expressionType, Expression expression, DartType inferredType) { |
print('Exit $expressionType($expression) (type=$inferredType)'); |
} |
+ |
+ void debugStatementEnter(String statementType, Statement statement) { |
+ print('Enter $statementType($statement)'); |
+ } |
+ |
+ void debugStatementExit(String statementType, Statement statement) { |
+ print('Exit $statementType($statement)'); |
+ } |
} |
/// Callback interface used by [TypeInferrer] to report the results of type |
@@ -56,6 +68,10 @@ class TypeInferenceListener |
void asExpressionExit(AsExpression expression, DartType inferredType) => |
debugExpressionExit("asExpression", expression, inferredType); |
+ void blockEnter(Block statement) => debugStatementEnter('block', statement); |
+ |
+ void blockExit(Block statement) => debugStatementExit('block', statement); |
+ |
bool boolLiteralEnter(BoolLiteral expression, DartType typeContext) => |
debugExpressionEnter("boolLiteral", expression, typeContext); |
@@ -84,6 +100,18 @@ class TypeInferenceListener |
void doubleLiteralExit(DoubleLiteral expression, DartType inferredType) => |
debugExpressionExit("doubleLiteral", expression, inferredType); |
+ void expressionStatementEnter(ExpressionStatement statement) => |
+ debugStatementEnter('expressionStatement', statement); |
+ |
+ void expressionStatementExit(ExpressionStatement statement) => |
+ debugStatementExit('expressionStatement', statement); |
+ |
+ void functionDeclarationEnter(FunctionDeclaration statement) => |
+ debugStatementEnter('functionDeclaration', statement); |
+ |
+ void functionDeclarationExit(FunctionDeclaration statement) => |
+ debugStatementExit('functionDeclaration', statement); |
+ |
bool functionExpressionEnter( |
FunctionExpression expression, DartType typeContext) => |
debugExpressionEnter("functionExpression", expression, typeContext); |
@@ -92,6 +120,12 @@ class TypeInferenceListener |
FunctionExpression expression, DartType inferredType) => |
debugExpressionExit("functionExpression", expression, inferredType); |
+ void ifStatementEnter(IfStatement statement) => |
+ debugStatementEnter('ifStatement', statement); |
+ |
+ void ifStatementExit(IfStatement statement) => |
+ debugStatementExit('ifStatement', statement); |
+ |
bool intLiteralEnter(IntLiteral expression, DartType typeContext) => |
debugExpressionEnter("intLiteral", expression, typeContext); |
@@ -130,6 +164,12 @@ class TypeInferenceListener |
void nullLiteralExit(NullLiteral expression, DartType inferredType) => |
debugExpressionExit("nullLiteral", expression, inferredType); |
+ void returnStatementEnter(ReturnStatement statement) => |
+ debugStatementEnter('returnStatement', statement); |
+ |
+ void returnStatementExit(ReturnStatement statement) => |
+ debugStatementExit('returnStatement', statement); |
+ |
bool staticGetEnter(StaticGet expression, DartType typeContext) => |
debugExpressionEnter("staticGet", expression, typeContext); |
@@ -158,6 +198,12 @@ class TypeInferenceListener |
void stringLiteralExit(StringLiteral expression, DartType inferredType) => |
debugExpressionExit("StringLiteral", expression, inferredType); |
+ void variableDeclarationEnter(VariableDeclaration statement) => |
+ debugStatementEnter('variableDeclaration', statement); |
+ |
+ void variableDeclarationExit(VariableDeclaration statement) => |
+ debugStatementExit('variableDeclaration', statement); |
+ |
bool variableGetEnter(VariableGet expression, DartType typeContext) => |
debugExpressionEnter("variableGet", expression, typeContext); |