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 a9047a149e07fc01e3416c6b091bf396fc01e061..aab7e7a964fccf8b38ef2b44aba26153d82eeea2 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 |
@@ -1074,8 +1074,14 @@ class KernelLogicalExpression extends LogicalExpression |
@override |
DartType _inferExpression( |
KernelTypeInferrer inferrer, DartType typeContext, bool typeNeeded) { |
- // TODO(scheglov): implement. |
- return typeNeeded ? const DynamicType() : null; |
+ typeNeeded = inferrer.listener.logicalExpressionEnter(this, typeContext) || |
+ typeNeeded; |
+ var boolType = inferrer.coreTypes.boolClass.rawType; |
+ inferrer.inferExpression(left, boolType, false); |
+ inferrer.inferExpression(right, boolType, false); |
+ var inferredType = typeNeeded ? boolType : null; |
+ inferrer.listener.logicalExpressionExit(this, inferredType); |
+ return inferredType; |
} |
} |