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 ef98a6a3053..6810e3927c7 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 @@ abstract class BodyBuilder extends ScopeListener 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 d7380a42545..437f507b11c 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 @@ export 'kernel_shadow_ast.dart' 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 bb09b003ebe..2b7c54afc57 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 @@ 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( 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; }