| 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);
|
|
|
|
|