The "extend chain" is broken when we have a conditional where the variable may not be defined after the block. IE: "a" will be defined after the following, but "b" will not necessarily be defined. if ((GetValue(out a)) && (GetValue(out b)) {}
| 129 | // IE: "a" will be defined after the following, but "b" will not necessarily be defined. |
| 130 | // if ((GetValue(out a)) && (GetValue(out b)) {} |
| 131 | void BfDeferredLocalAssignData::BreakExtendChain() |
| 132 | { |
| 133 | if (!mIsChained) |
| 134 | return; |
| 135 | mIsChained = false; |
| 136 | if (mChainedAssignData == NULL) |
| 137 | return; |
| 138 | mChainedAssignData->BreakExtendChain(); |
| 139 | mAssignedLocals = mChainedAssignData->mAssignedLocals; |
| 140 | } |
| 141 | |
| 142 | void BfDeferredLocalAssignData::SetIntersection(const BfDeferredLocalAssignData& otherLocalAssignData) |
| 143 | { |
no outgoing calls
no test coverage detected