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:front_end/src/fasta/type_inference/type_inference_engine.dart'; |
6 import 'package:kernel/ast.dart'; | 6 import 'package:kernel/ast.dart'; |
7 | 7 |
8 /// Base class for [TypeInferenceListener] that defines the API for debugging. | 8 /// Base class for [TypeInferenceListener] that defines the API for debugging. |
9 /// | 9 /// |
10 /// 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 |
11 /// [TypeInferenceDebugging]. | 11 /// [TypeInferenceDebugging]. |
12 class TypeInferenceBase { | 12 class TypeInferenceBase { |
13 void debugDependency(FieldNode fieldNode) {} | 13 void debugDependency(AccessorNode accessorNode) {} |
14 | 14 |
15 bool debugExpressionEnter( | 15 bool debugExpressionEnter( |
16 String expressionType, Expression expression, DartType typeContext) { | 16 String expressionType, Expression expression, DartType typeContext) { |
17 return false; | 17 return false; |
18 } | 18 } |
19 | 19 |
20 void debugExpressionExit( | 20 void debugExpressionExit( |
21 String expressionType, Expression expression, DartType inferredType) {} | 21 String expressionType, Expression expression, DartType inferredType) {} |
22 | 22 |
23 void debugInitializerEnter(String initializerType, Initializer initializer) {} | 23 void debugInitializerEnter(String initializerType, Initializer initializer) {} |
24 | 24 |
25 void debugInitializerExit(String initializerType, Initializer initializer) {} | 25 void debugInitializerExit(String initializerType, Initializer initializer) {} |
26 | 26 |
27 void debugStatementEnter(String statementType, Statement statement) {} | 27 void debugStatementEnter(String statementType, Statement statement) {} |
28 | 28 |
29 void debugStatementExit(String statementType, Statement statement) {} | 29 void debugStatementExit(String statementType, Statement statement) {} |
30 } | 30 } |
31 | 31 |
32 /// 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 |
33 /// be printed. | 33 /// be printed. |
34 class TypeInferenceDebugging implements TypeInferenceBase { | 34 class TypeInferenceDebugging implements TypeInferenceBase { |
35 void debugDependency(FieldNode fieldNode) { | 35 void debugDependency(AccessorNode accessorNode) { |
36 print('Dependency $fieldNode'); | 36 print('Dependency $accessorNode'); |
37 } | 37 } |
38 | 38 |
39 bool debugExpressionEnter( | 39 bool debugExpressionEnter( |
40 String expressionType, Expression expression, DartType typeContext) { | 40 String expressionType, Expression expression, DartType typeContext) { |
41 print('Enter $expressionType($expression) (context=$typeContext)'); | 41 print('Enter $expressionType($expression) (context=$typeContext)'); |
42 return true; | 42 return true; |
43 } | 43 } |
44 | 44 |
45 void debugExpressionExit( | 45 void debugExpressionExit( |
46 String expressionType, Expression expression, DartType inferredType) { | 46 String expressionType, Expression expression, DartType inferredType) { |
(...skipping 195 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
242 | 242 |
243 void propertyGetExit(Expression expression, DartType inferredType) => | 243 void propertyGetExit(Expression expression, DartType inferredType) => |
244 debugExpressionExit("propertyGet", expression, inferredType); | 244 debugExpressionExit("propertyGet", expression, inferredType); |
245 | 245 |
246 bool propertySetEnter(PropertySet expression, DartType typeContext) => | 246 bool propertySetEnter(PropertySet expression, DartType typeContext) => |
247 debugExpressionEnter("propertySet", expression, typeContext); | 247 debugExpressionEnter("propertySet", expression, typeContext); |
248 | 248 |
249 void propertySetExit(PropertySet expression, DartType inferredType) => | 249 void propertySetExit(PropertySet expression, DartType inferredType) => |
250 debugExpressionExit("propertySet", expression, inferredType); | 250 debugExpressionExit("propertySet", expression, inferredType); |
251 | 251 |
252 void recordDependency(FieldNode fieldNode) => debugDependency(fieldNode); | 252 void recordDependency(AccessorNode accessorNode) => |
| 253 debugDependency(accessorNode); |
253 | 254 |
254 void redirectingInitializerEnter(RedirectingInitializer initializer) => | 255 void redirectingInitializerEnter(RedirectingInitializer initializer) => |
255 debugInitializerEnter("redirectingInitializer", initializer); | 256 debugInitializerEnter("redirectingInitializer", initializer); |
256 | 257 |
257 void redirectingInitializerExit(RedirectingInitializer initializer) => | 258 void redirectingInitializerExit(RedirectingInitializer initializer) => |
258 debugInitializerExit("redirectingInitializer", initializer); | 259 debugInitializerExit("redirectingInitializer", initializer); |
259 | 260 |
260 void returnStatementEnter(ReturnStatement statement) => | 261 void returnStatementEnter(ReturnStatement statement) => |
261 debugStatementEnter('returnStatement', statement); | 262 debugStatementEnter('returnStatement', statement); |
262 | 263 |
(...skipping 57 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
320 | 321 |
321 void variableSetExit(VariableSet expression, DartType inferredType) => | 322 void variableSetExit(VariableSet expression, DartType inferredType) => |
322 debugExpressionExit("variableSet", expression, inferredType); | 323 debugExpressionExit("variableSet", expression, inferredType); |
323 | 324 |
324 void yieldStatementEnter(YieldStatement statement) => | 325 void yieldStatementEnter(YieldStatement statement) => |
325 debugStatementEnter('yieldStatement', statement); | 326 debugStatementEnter('yieldStatement', statement); |
326 | 327 |
327 void yieldStatementExit(YieldStatement statement) => | 328 void yieldStatementExit(YieldStatement statement) => |
328 debugStatementExit('yieldStatement', statement); | 329 debugStatementExit('yieldStatement', statement); |
329 } | 330 } |
OLD | NEW |