Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(73)

Side by Side Diff: pkg/front_end/lib/src/fasta/type_inference/type_inference_listener.dart

Issue 2935323002: Lift nearly all top-level type inference restrictions. (Closed)
Patch Set: Created 3 years, 6 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View unified diff | Download patch
OLDNEW
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
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
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
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 }
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698