OLD | NEW |
1 // Copyright (c) 2017, the Dart project authors. Please see the AUTHORS file | 1 // Copyright (c) 2017, the Dart project authors. Please see the AUTHORS file |
2 // for details. All rights reserved. Use of this source code is governed by a | 2 // for details. All rights reserved. Use of this source code is governed by a |
3 // BSD-style license that can be found in the LICENSE.md file. | 3 // BSD-style license that can be found in the LICENSE.md file. |
4 | 4 |
| 5 import 'package:front_end/src/fasta/type_inference/type_inference_engine.dart'; |
5 import 'package:kernel/ast.dart'; | 6 import 'package:kernel/ast.dart'; |
6 | 7 |
7 /// Base class for [TypeInferenceListener] that defines the API for debugging. | 8 /// Base class for [TypeInferenceListener] that defines the API for debugging. |
8 /// | 9 /// |
9 /// By default no debug info is printed. To enable debug printing, mix in | 10 /// By default no debug info is printed. To enable debug printing, mix in |
10 /// [TypeInferenceDebugging]. | 11 /// [TypeInferenceDebugging]. |
11 class TypeInferenceBase { | 12 class TypeInferenceBase { |
| 13 void debugDependency(FieldNode fieldNode) {} |
| 14 |
12 bool debugExpressionEnter( | 15 bool debugExpressionEnter( |
13 String expressionType, Expression expression, DartType typeContext) { | 16 String expressionType, Expression expression, DartType typeContext) { |
14 return false; | 17 return false; |
15 } | 18 } |
16 | 19 |
17 void debugExpressionExit( | 20 void debugExpressionExit( |
18 String expressionType, Expression expression, DartType inferredType) {} | 21 String expressionType, Expression expression, DartType inferredType) {} |
19 | 22 |
20 void debugInitializerEnter(String initializerType, Initializer initializer) {} | 23 void debugInitializerEnter(String initializerType, Initializer initializer) {} |
21 | 24 |
22 void debugInitializerExit(String initializerType, Initializer initializer) {} | 25 void debugInitializerExit(String initializerType, Initializer initializer) {} |
23 | 26 |
24 void debugStatementEnter(String statementType, Statement statement) {} | 27 void debugStatementEnter(String statementType, Statement statement) {} |
25 | 28 |
26 void debugStatementExit(String statementType, Statement statement) {} | 29 void debugStatementExit(String statementType, Statement statement) {} |
27 } | 30 } |
28 | 31 |
29 /// Mixin which can be applied to [TypeInferenceListener] to cause debug info to | 32 /// Mixin which can be applied to [TypeInferenceListener] to cause debug info to |
30 /// be printed. | 33 /// be printed. |
31 class TypeInferenceDebugging implements TypeInferenceBase { | 34 class TypeInferenceDebugging implements TypeInferenceBase { |
| 35 void debugDependency(FieldNode fieldNode) { |
| 36 print('Dependency $fieldNode'); |
| 37 } |
| 38 |
32 bool debugExpressionEnter( | 39 bool debugExpressionEnter( |
33 String expressionType, Expression expression, DartType typeContext) { | 40 String expressionType, Expression expression, DartType typeContext) { |
34 print('Enter $expressionType($expression) (context=$typeContext)'); | 41 print('Enter $expressionType($expression) (context=$typeContext)'); |
35 return true; | 42 return true; |
36 } | 43 } |
37 | 44 |
38 void debugExpressionExit( | 45 void debugExpressionExit( |
39 String expressionType, Expression expression, DartType inferredType) { | 46 String expressionType, Expression expression, DartType inferredType) { |
40 print('Exit $expressionType($expression) (type=$inferredType)'); | 47 print('Exit $expressionType($expression) (type=$inferredType)'); |
41 } | 48 } |
(...skipping 75 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
117 void constructorInvocationExit( | 124 void constructorInvocationExit( |
118 InvocationExpression expression, DartType inferredType) => | 125 InvocationExpression expression, DartType inferredType) => |
119 debugExpressionExit("constructorInvocation", expression, inferredType); | 126 debugExpressionExit("constructorInvocation", expression, inferredType); |
120 | 127 |
121 bool doubleLiteralEnter(DoubleLiteral expression, DartType typeContext) => | 128 bool doubleLiteralEnter(DoubleLiteral expression, DartType typeContext) => |
122 debugExpressionEnter("doubleLiteral", expression, typeContext); | 129 debugExpressionEnter("doubleLiteral", expression, typeContext); |
123 | 130 |
124 void doubleLiteralExit(DoubleLiteral expression, DartType inferredType) => | 131 void doubleLiteralExit(DoubleLiteral expression, DartType inferredType) => |
125 debugExpressionExit("doubleLiteral", expression, inferredType); | 132 debugExpressionExit("doubleLiteral", expression, inferredType); |
126 | 133 |
| 134 void dryRunEnter(Expression expression) => |
| 135 debugExpressionEnter("dryRun", expression, null); |
| 136 |
| 137 void dryRunExit(Expression expression) => |
| 138 debugExpressionExit("dryRun", expression, null); |
| 139 |
127 void expressionStatementEnter(ExpressionStatement statement) => | 140 void expressionStatementEnter(ExpressionStatement statement) => |
128 debugStatementEnter('expressionStatement', statement); | 141 debugStatementEnter('expressionStatement', statement); |
129 | 142 |
130 void expressionStatementExit(ExpressionStatement statement) => | 143 void expressionStatementExit(ExpressionStatement statement) => |
131 debugStatementExit('expressionStatement', statement); | 144 debugStatementExit('expressionStatement', statement); |
132 | 145 |
133 void forInStatementEnter(ForInStatement statement) => | 146 void forInStatementEnter(ForInStatement statement) => |
134 debugStatementEnter('forInStatement', statement); | 147 debugStatementEnter('forInStatement', statement); |
135 | 148 |
136 void forInStatementExit(ForInStatement statement) => | 149 void forInStatementExit(ForInStatement statement) => |
(...skipping 86 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
223 | 236 |
224 void propertyGetExit(PropertyGet expression, DartType inferredType) => | 237 void propertyGetExit(PropertyGet expression, DartType inferredType) => |
225 debugExpressionExit("propertyGet", expression, inferredType); | 238 debugExpressionExit("propertyGet", expression, inferredType); |
226 | 239 |
227 bool propertySetEnter(PropertySet expression, DartType typeContext) => | 240 bool propertySetEnter(PropertySet expression, DartType typeContext) => |
228 debugExpressionEnter("propertySet", expression, typeContext); | 241 debugExpressionEnter("propertySet", expression, typeContext); |
229 | 242 |
230 void propertySetExit(PropertySet expression, DartType inferredType) => | 243 void propertySetExit(PropertySet expression, DartType inferredType) => |
231 debugExpressionExit("propertySet", expression, inferredType); | 244 debugExpressionExit("propertySet", expression, inferredType); |
232 | 245 |
| 246 void recordDependency(FieldNode fieldNode) => debugDependency(fieldNode); |
| 247 |
233 void redirectingInitializerEnter(RedirectingInitializer initializer) => | 248 void redirectingInitializerEnter(RedirectingInitializer initializer) => |
234 debugInitializerEnter("redirectingInitializer", initializer); | 249 debugInitializerEnter("redirectingInitializer", initializer); |
235 | 250 |
236 void redirectingInitializerExit(RedirectingInitializer initializer) => | 251 void redirectingInitializerExit(RedirectingInitializer initializer) => |
237 debugInitializerExit("redirectingInitializer", initializer); | 252 debugInitializerExit("redirectingInitializer", initializer); |
238 | 253 |
239 void returnStatementEnter(ReturnStatement statement) => | 254 void returnStatementEnter(ReturnStatement statement) => |
240 debugStatementEnter('returnStatement', statement); | 255 debugStatementEnter('returnStatement', statement); |
241 | 256 |
242 void returnStatementExit(ReturnStatement statement) => | 257 void returnStatementExit(ReturnStatement statement) => |
(...skipping 56 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
299 | 314 |
300 void variableSetExit(VariableSet expression, DartType inferredType) => | 315 void variableSetExit(VariableSet expression, DartType inferredType) => |
301 debugExpressionExit("variableSet", expression, inferredType); | 316 debugExpressionExit("variableSet", expression, inferredType); |
302 | 317 |
303 void yieldStatementEnter(YieldStatement statement) => | 318 void yieldStatementEnter(YieldStatement statement) => |
304 debugStatementEnter('yieldStatement', statement); | 319 debugStatementEnter('yieldStatement', statement); |
305 | 320 |
306 void yieldStatementExit(YieldStatement statement) => | 321 void yieldStatementExit(YieldStatement statement) => |
307 debugStatementExit('yieldStatement', statement); | 322 debugStatementExit('yieldStatement', statement); |
308 } | 323 } |
OLD | NEW |