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