1
0
Fork 0
mirror of https://github.com/beefytech/Beef.git synced 2025-06-10 20:42:21 +02:00

Split mHadBreak from mLeftBlock

This commit is contained in:
Brian Fiete 2021-06-19 11:00:57 -07:00
parent 5e9ac07804
commit 3806af6c75
2 changed files with 8 additions and 3 deletions

View file

@ -3622,7 +3622,7 @@ void BfModule::DoIfStatement(BfIfStatement* ifStmt, bool includeTrueStmt, bool i
}
prevDLA.Restore();
if (mCurMethodState->mDeferredLocalAssignData != NULL)
mCurMethodState->mDeferredLocalAssignData->mLeftBlock = deferredLocalAssignData.mLeftBlock;
mCurMethodState->mDeferredLocalAssignData->mHadBreak |= deferredLocalAssignData.mHadBreak;
bool trueHadReturn = mCurMethodState->mHadReturn;
@ -4675,7 +4675,7 @@ void BfModule::Visit(BfSwitchStatement* switchStmt)
deferredLocalAssignDataVec[blockIdx].mHadReturn = hadReturn;
caseCount++;
if ((!hadReturn) &&
((!mCurMethodState->mDeferredLocalAssignData->mHadFallthrough) || (mCurMethodState->mDeferredLocalAssignData->mLeftBlock)))
((!mCurMethodState->mDeferredLocalAssignData->mHadFallthrough) || (mCurMethodState->mDeferredLocalAssignData->mHadBreak)))
allHadReturns = false;
if (auto block = BfNodeDynCast<BfBlock>(switchCase->mCodeBlock))
@ -5126,7 +5126,10 @@ void BfModule::Visit(BfBreakStatement* breakStmt)
while (checkLocalAssignData != NULL)
{
if ((checkLocalAssignData->mScopeData != NULL) && (checkLocalAssignData->mScopeData->mScopeDepth >= breakData->mScope->mScopeDepth))
{
checkLocalAssignData->mLeftBlock = true;
checkLocalAssignData->mHadBreak = true;
}
checkLocalAssignData = checkLocalAssignData->mChainedAssignData;
}