| 3484 | } |
| 3485 | |
| 3486 | void BfModule::VisitCodeBlock(BfBlock* block, BfIRBlock continueBlock, BfIRBlock breakBlock, BfIRBlock fallthroughBlock, bool defaultBreak, bool* hadReturn, BfLabelNode* labelNode, bool closeScope, BfEmbeddedStatementFlags flags) |
| 3487 | { |
| 3488 | BfBreakData breakData; |
| 3489 | breakData.mIRContinueBlock = continueBlock; |
| 3490 | breakData.mIRBreakBlock = breakBlock; |
| 3491 | breakData.mIRFallthroughBlock = fallthroughBlock; |
| 3492 | breakData.mScope = mCurMethodState->mCurScope; |
| 3493 | breakData.mPrevBreakData = mCurMethodState->mBreakData; |
| 3494 | |
| 3495 | SetAndRestoreValue<BfBreakData*> prevBreakData(mCurMethodState->mBreakData, &breakData); |
| 3496 | VisitEmbeddedStatement(block, NULL, flags); |
| 3497 | |
| 3498 | if (closeScope) |
| 3499 | RestoreScopeState(); |
| 3500 | |
| 3501 | if ((!mCurMethodState->mLeftBlockUncond) && (defaultBreak)) |
| 3502 | { |
| 3503 | mBfIRBuilder->CreateBr(breakBlock); |
| 3504 | } |
| 3505 | if (hadReturn != NULL) |
| 3506 | { |
| 3507 | *hadReturn = mCurMethodState->mHadReturn; |
| 3508 | mCurMethodState->SetHadReturn(false); |
| 3509 | mCurMethodState->mLeftBlockUncond = false; |
| 3510 | } |
| 3511 | } |
| 3512 | |
| 3513 | void BfModule::VisitCodeBlock(BfBlock* block) |
| 3514 | { |
no test coverage detected