mirror of
https://github.com/beefytech/Beef.git
synced 2025-06-08 11:38:21 +02:00
Restore original mixin state for deferred block emission
This commit is contained in:
parent
c939ec1cf6
commit
7f1d8803d9
2 changed files with 6 additions and 0 deletions
|
@ -1814,6 +1814,7 @@ void BfModule::NewScopeState(bool createLexicalBlock, bool flushValueScope)
|
|||
}
|
||||
mCurMethodState->mCurScope->mLocalVarStart = (int)mCurMethodState->mLocals.size();
|
||||
mCurMethodState->mCurScope->mBlock = mBfIRBuilder->MaybeChainNewBlock((!mCurMethodState->mCurScope->mLabel.empty()) ? mCurMethodState->mCurScope->mLabel : "newScope");
|
||||
mCurMethodState->mCurScope->mMixinState = mCurMethodState->mMixinState;
|
||||
}
|
||||
|
||||
void BfModule::RestoreScoreState_LocalVariables()
|
||||
|
@ -14708,6 +14709,8 @@ void BfModule::EmitDeferredScopeCalls(bool useSrcPositions, BfScopeData* scopeDa
|
|||
{
|
||||
if (deferredCallEntry->mDeferredBlock != NULL)
|
||||
{
|
||||
SetAndRestoreValue<BfMixinState*> prevMixinState(mCurMethodState->mMixinState, checkScope->mMixinState);
|
||||
|
||||
if (checkScope == &mCurMethodState->mHeadScope)
|
||||
CreateRetValLocal();
|
||||
|
||||
|
@ -14868,6 +14871,7 @@ void BfModule::EmitDeferredScopeCalls(bool useSrcPositions, BfScopeData* scopeDa
|
|||
deferredCallEmitState.mCloseNode = deferCloseNode;
|
||||
SetAndRestoreValue<BfDeferredCallEmitState*> prevDeferredCallEmitState(mCurMethodState->mDeferredCallEmitState, &deferredCallEmitState);
|
||||
SetAndRestoreValue<bool> prevIgnoredWrites(mBfIRBuilder->mIgnoreWrites, deferredCallEntry->mIgnored);
|
||||
SetAndRestoreValue<BfMixinState*> prevMixinState(mCurMethodState->mMixinState, checkScope->mMixinState);
|
||||
|
||||
if (deferCloseNode != NULL)
|
||||
{
|
||||
|
|
|
@ -423,6 +423,7 @@ public:
|
|||
bool mIsDeferredBlock;
|
||||
bool mAllowVariableDeclarations;
|
||||
bool mInInitBlock;
|
||||
BfMixinState* mMixinState;
|
||||
BfBlock* mAstBlock;
|
||||
BfAstNode* mCloseNode;
|
||||
BfExprEvaluator* mExprEvaluator;
|
||||
|
@ -445,6 +446,7 @@ public:
|
|||
mPrevScope = NULL;
|
||||
mLocalVarStart = 0;
|
||||
mLabelNode = NULL;
|
||||
mMixinState = NULL;
|
||||
mAstBlock = NULL;
|
||||
mCloseNode = NULL;
|
||||
mExprEvaluator = NULL;
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue