Convert ShadowDeferredCheck to DeferredCheckJudgment
Change-Id: I411e29c6b3f1d1d88942cfb6775d4b88908bb6a5
Reviewed-on: https://dart-review.googlesource.com/61820
Commit-Queue: Paul Berry <paulberry@google.com>
Reviewed-by: Brian Wilkerson <brianwilkerson@google.com>
Reviewed-by: Konstantin Shcheglov <scheglov@google.com>
diff --git a/pkg/front_end/lib/src/fasta/kernel/body_builder.dart b/pkg/front_end/lib/src/fasta/kernel/body_builder.dart
index ef98a6a..6810e39 100644
--- a/pkg/front_end/lib/src/fasta/kernel/body_builder.dart
+++ b/pkg/front_end/lib/src/fasta/kernel/body_builder.dart
@@ -4188,7 +4188,7 @@
Object check = new VariableDeclaration.forValue(
forest.checkLibraryIsLoaded(prefix.dependency))
..fileOffset = charOffset;
- return new ShadowDeferredCheck(check, expression);
+ return new DeferredCheckJudgment(check, expression);
}
/// TODO(ahe): This method is temporarily implemented by subclasses. Once type
diff --git a/pkg/front_end/lib/src/fasta/kernel/kernel_ast_api.dart b/pkg/front_end/lib/src/fasta/kernel/kernel_ast_api.dart
index d7380a4..437f507 100644
--- a/pkg/front_end/lib/src/fasta/kernel/kernel_ast_api.dart
+++ b/pkg/front_end/lib/src/fasta/kernel/kernel_ast_api.dart
@@ -72,7 +72,7 @@
ComplexAssignmentJudgment,
ShadowConstructorInvocation,
ContinueSwitchJudgment,
- ShadowDeferredCheck,
+ DeferredCheckJudgment,
ExpressionStatementJudgment,
ShadowFactoryConstructorInvocation,
ShadowFieldInitializer,
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 bb09b00..2b7c54a 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
@@ -825,12 +825,14 @@
}
/// Shadow object representing a deferred check in kernel form.
-class ShadowDeferredCheck extends Let implements ExpressionJudgment {
+class DeferredCheckJudgment extends Let implements ExpressionJudgment {
DartType inferredType;
- ShadowDeferredCheck(VariableDeclaration variable, Expression body)
+ DeferredCheckJudgment(VariableDeclaration variable, Expression body)
: super(variable, body);
+ ExpressionJudgment get judgment => body;
+
@override
DartType infer<Expression, Statement, Initializer, Type>(
ShadowTypeInferrer inferrer,
@@ -838,8 +840,9 @@
DartType typeContext) {
// Since the variable is not used in the body we don't need to type infer
// it. We can just type infer the body.
- var inferredType =
- inferrer.inferExpression(factory, body, typeContext, true);
+ var judgment = this.judgment;
+ inferrer.inferExpression(factory, judgment, typeContext, true);
+ inferredType = judgment.inferredType;
inferrer.listener.deferredCheck(this, fileOffset, inferredType);
return inferredType;
}