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>
This commit is contained in:
Paul Berry
2018-06-22 13:36:45 +00:00
committed by commit-bot@chromium.org
parent e2c54e9af5
commit 121fed2840
3 changed files with 9 additions and 6 deletions
@@ -4188,7 +4188,7 @@ abstract class BodyBuilder extends ScopeListener<JumpTarget>
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
@@ -72,7 +72,7 @@ export 'kernel_shadow_ast.dart'
ComplexAssignmentJudgment,
ShadowConstructorInvocation,
ContinueSwitchJudgment,
ShadowDeferredCheck,
DeferredCheckJudgment,
ExpressionStatementJudgment,
ShadowFactoryConstructorInvocation,
ShadowFieldInitializer,
@@ -825,12 +825,14 @@ class ContinueSwitchJudgment extends ContinueSwitchStatement
}
/// 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 @@ class ShadowDeferredCheck extends Let implements ExpressionJudgment {
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;
}