change dataFlowInfo after while loop

This commit is contained in:
Alexander Udalov
2012-06-14 18:35:51 +04:00
parent f5bb00240a
commit b97d44c480
@@ -164,10 +164,14 @@ public class ControlStructureTypingVisitor extends ExpressionTypingVisitor {
DataFlowInfo conditionInfo = condition == null ? context.dataFlowInfo : DataFlowUtils.extractDataFlowInfoFromCondition(condition, true, scopeToExtend, context); DataFlowInfo conditionInfo = condition == null ? context.dataFlowInfo : DataFlowUtils.extractDataFlowInfoFromCondition(condition, true, scopeToExtend, context);
context.expressionTypingServices.getBlockReturnedTypeWithWritableScope(scopeToExtend, Collections.singletonList(body), CoercionStrategy.NO_COERCION, context.replaceDataFlowInfo(conditionInfo), context.trace); context.expressionTypingServices.getBlockReturnedTypeWithWritableScope(scopeToExtend, Collections.singletonList(body), CoercionStrategy.NO_COERCION, context.replaceDataFlowInfo(conditionInfo), context.trace);
} }
DataFlowInfo dataFlowInfo;
if (!containsBreak(expression, context)) { if (!containsBreak(expression, context)) {
facade.setResultingDataFlowInfo(DataFlowUtils.extractDataFlowInfoFromCondition(condition, false, null, context)); dataFlowInfo = DataFlowUtils.extractDataFlowInfoFromCondition(condition, false, null, context);
} }
return DataFlowUtils.checkType(JetStandardClasses.getUnitType(), expression, contextWithExpectedType, context.dataFlowInfo); else {
dataFlowInfo = context.dataFlowInfo;
}
return DataFlowUtils.checkType(JetStandardClasses.getUnitType(), expression, contextWithExpectedType, dataFlowInfo);
} }
private boolean containsBreak(final JetLoopExpression loopExpression, final ExpressionTypingContext context) { private boolean containsBreak(final JetLoopExpression loopExpression, final ExpressionTypingContext context) {