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

Unified Diff: pkg/front_end/lib/src/fasta/kernel/kernel_shadow_ast.dart

Issue 2827793003: Plumb TypeInferrer through KernelExpression._inferExpression. (Closed)
Patch Set: Created 3 years, 8 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 side-by-side diff with in-line comments
Download patch
« no previous file with comments | « no previous file | no next file » | no next file with comments »
Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
Index: pkg/front_end/lib/src/fasta/kernel/kernel_shadow_ast.dart
diff --git a/pkg/front_end/lib/src/fasta/kernel/kernel_shadow_ast.dart b/pkg/front_end/lib/src/fasta/kernel/kernel_shadow_ast.dart
index 31c6f8c16ce37d0d3c3bc29b4143579f92a5ceb9..a13d16c1607996b9dfb309740d4d29e04c65707e 100644
--- a/pkg/front_end/lib/src/fasta/kernel/kernel_shadow_ast.dart
+++ b/pkg/front_end/lib/src/fasta/kernel/kernel_shadow_ast.dart
@@ -37,7 +37,8 @@ class KernelBlock extends Block implements KernelStatement {
abstract class KernelExpression implements Expression {
/// Calls back to [inferrer] to perform type inference for whatever concrete
/// type of [KernelExpression] this is.
- DartType _inferExpression(DartType typeContext, bool typeNeeded);
+ DartType _inferExpression(
+ KernelTypeInferrer inferrer, DartType typeContext, bool typeNeeded);
}
/// Concrete shadow object representing a function expression in kernel form.
@@ -46,7 +47,8 @@ class KernelFunctionExpression extends FunctionExpression
KernelFunctionExpression(FunctionNode function) : super(function);
@override
- DartType _inferExpression(DartType typeContext, bool typeNeeded) {
+ DartType _inferExpression(
+ KernelTypeInferrer inferrer, DartType typeContext, bool typeNeeded) {
// TODO(paulberry): implement.
return typeNeeded ? const DynamicType() : null;
}
@@ -57,7 +59,8 @@ class KernelIntLiteral extends IntLiteral implements KernelExpression {
KernelIntLiteral(int value) : super(value);
@override
- DartType _inferExpression(DartType typeContext, bool typeNeeded) {
+ DartType _inferExpression(
+ KernelTypeInferrer inferrer, DartType typeContext, bool typeNeeded) {
// TODO(paulberry): implement.
return typeNeeded ? const DynamicType() : null;
}
@@ -70,7 +73,8 @@ class KernelListLiteral extends ListLiteral implements KernelExpression {
: super(expressions, typeArgument: typeArgument, isConst: isConst);
@override
- DartType _inferExpression(DartType typeContext, bool typeNeeded) {
+ DartType _inferExpression(
+ KernelTypeInferrer inferrer, DartType typeContext, bool typeNeeded) {
// TODO(paulberry): implement.
return typeNeeded ? const DynamicType() : null;
}
@@ -79,7 +83,8 @@ class KernelListLiteral extends ListLiteral implements KernelExpression {
/// Concrete shadow object representing a null literal in kernel form.
class KernelNullLiteral extends NullLiteral implements KernelExpression {
@override
- DartType _inferExpression(DartType typeContext, bool typeNeeded) {
+ DartType _inferExpression(
+ KernelTypeInferrer inferrer, DartType typeContext, bool typeNeeded) {
// TODO(paulberry): implement.
return typeNeeded ? const DynamicType() : null;
}
@@ -119,7 +124,7 @@ class KernelTypeInferrer extends TypeInferrer<Statement, Expression,
// TODO(paulberry): experiment to see if dynamic dispatch would be better,
// so that the type hierarchy will be simpler (which may speed up "is"
// checks).
- return expression._inferExpression(typeContext, typeNeeded);
+ return expression._inferExpression(this, typeContext, typeNeeded);
} else {
// Encountered an expression type for which type inference is not yet
// implemented, so just infer dynamic for now.
@@ -173,7 +178,8 @@ class KernelVariableGet extends VariableGet implements KernelExpression {
: super(variable, promotedType);
@override
- DartType _inferExpression(DartType typeContext, bool typeNeeded) {
+ DartType _inferExpression(
+ KernelTypeInferrer inferrer, DartType typeContext, bool typeNeeded) {
// TODO(paulberry): implement.
return typeNeeded ? const DynamicType() : null;
}
« no previous file with comments | « no previous file | no next file » | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698