Lines 83-90
Link Here
|
83 |
mergedInfo = trueFlowInfo.addPotentialInitializationsFrom(falseFlowInfo); |
83 |
mergedInfo = trueFlowInfo.addPotentialInitializationsFrom(falseFlowInfo); |
84 |
} else if (isConditionOptimizedFalse) { |
84 |
} else if (isConditionOptimizedFalse) { |
85 |
mergedInfo = falseFlowInfo.addPotentialInitializationsFrom(trueFlowInfo); |
85 |
mergedInfo = falseFlowInfo.addPotentialInitializationsFrom(trueFlowInfo); |
86 |
} else { |
86 |
} else if (this.resolvedType == TypeBinding.BOOLEAN) { |
87 |
// if ((t && (v = t)) ? t : t && (v = f)) r = v; -- ok |
87 |
// if ((t && (v = t)) ? t : t && (v = f)) r = v; -- ok |
|
|
88 |
// if (b ? false : (true && (v = false))) return v; -- ok |
88 |
cst = this.optimizedIfTrueConstant; |
89 |
cst = this.optimizedIfTrueConstant; |
89 |
boolean isValueIfTrueOptimizedTrue = cst != null && cst != Constant.NotAConstant && cst.booleanValue() == true; |
90 |
boolean isValueIfTrueOptimizedTrue = cst != null && cst != Constant.NotAConstant && cst.booleanValue() == true; |
90 |
boolean isValueIfTrueOptimizedFalse = cst != null && cst != Constant.NotAConstant && cst.booleanValue() == false; |
91 |
boolean isValueIfTrueOptimizedFalse = cst != null && cst != Constant.NotAConstant && cst.booleanValue() == false; |
Lines 113-118
Link Here
|
113 |
FlowInfo.conditional( |
114 |
FlowInfo.conditional( |
114 |
trueInfoWhenTrue.mergedWith(falseInfoWhenTrue), |
115 |
trueInfoWhenTrue.mergedWith(falseInfoWhenTrue), |
115 |
trueInfoWhenFalse.mergedWith(falseInfoWhenFalse)); |
116 |
trueInfoWhenFalse.mergedWith(falseInfoWhenFalse)); |
|
|
117 |
} else { |
118 |
mergedInfo = FlowInfo.conditional(trueFlowInfo, falseFlowInfo); |
116 |
} |
119 |
} |
117 |
this.mergedInitStateIndex = |
120 |
this.mergedInitStateIndex = |
118 |
currentScope.methodScope().recordInitializationStates(mergedInfo); |
121 |
currentScope.methodScope().recordInitializationStates(mergedInfo); |
Lines 314-321
Link Here
|
314 |
} |
317 |
} |
315 |
return this.valueIfFalse.nullStatus(flowInfo); |
318 |
return this.valueIfFalse.nullStatus(flowInfo); |
316 |
} |
319 |
} |
317 |
int ifTrueNullStatus = this.valueIfTrue.nullStatus(flowInfo), |
320 |
int ifTrueNullStatus = this.valueIfTrue.nullStatus(flowInfo.initsWhenTrue()), |
318 |
ifFalseNullStatus = this.valueIfFalse.nullStatus(flowInfo); |
321 |
ifFalseNullStatus = this.valueIfFalse.nullStatus(flowInfo.initsWhenFalse()); |
319 |
if (ifTrueNullStatus == ifFalseNullStatus) { |
322 |
if (ifTrueNullStatus == ifFalseNullStatus) { |
320 |
return ifTrueNullStatus; |
323 |
return ifTrueNullStatus; |
321 |
} |
324 |
} |