mirror of
https://github.com/beefytech/Beef.git
synced 2025-06-14 14:24:10 +02:00
Treat enum match out values as conditional assignments
This commit is contained in:
parent
56f0f3e4f2
commit
f38cf6a1fd
1 changed files with 21 additions and 3 deletions
|
@ -2395,7 +2395,16 @@ void BfModule::HandleCaseEnumMatch_Tuple(BfTypedValue tupleVal, const BfSizedArr
|
|||
BfExprEvaluator exprEvaluator(this);
|
||||
exprEvaluator.mExpectingType = tupleFieldInstance->GetResolvedType();
|
||||
exprEvaluator.mBfEvalExprFlags = BfEvalExprFlags_AllowOutExpr;
|
||||
exprEvaluator.Evaluate(expr);
|
||||
if (mCurMethodState->mDeferredLocalAssignData != NULL)
|
||||
{
|
||||
SetAndRestoreValue<bool> prevIsIfCondition(mCurMethodState->mDeferredLocalAssignData->mIsIfCondition, true);
|
||||
SetAndRestoreValue<bool> prevIfMayBeSkipped(mCurMethodState->mDeferredLocalAssignData->mIfMayBeSkipped, true);
|
||||
exprEvaluator.Evaluate(expr);
|
||||
}
|
||||
else
|
||||
{
|
||||
exprEvaluator.Evaluate(expr);
|
||||
}
|
||||
if (isMatchedBlockEnd)
|
||||
matchedBlockEnd = mBfIRBuilder->GetInsertBlock();
|
||||
if (isFalseBlockEnd)
|
||||
|
@ -2417,7 +2426,16 @@ void BfModule::HandleCaseEnumMatch_Tuple(BfTypedValue tupleVal, const BfSizedArr
|
|||
|
||||
DeferredAssign deferredAssign = { expr, argValue, tupleElement, tupleFieldIdx };
|
||||
deferredAssigns.push_back(deferredAssign);
|
||||
exprEvaluator.MarkResultAssigned();
|
||||
if (mCurMethodState->mDeferredLocalAssignData != NULL)
|
||||
{
|
||||
SetAndRestoreValue<bool> prevIsIfCondition(mCurMethodState->mDeferredLocalAssignData->mIsIfCondition, true);
|
||||
SetAndRestoreValue<bool> prevIfMayBeSkipped(mCurMethodState->mDeferredLocalAssignData->mIfMayBeSkipped, true);
|
||||
exprEvaluator.MarkResultAssigned();
|
||||
}
|
||||
else
|
||||
{
|
||||
exprEvaluator.MarkResultAssigned();
|
||||
}
|
||||
continue;
|
||||
}
|
||||
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue