mirror of
https://github.com/beefytech/Beef.git
synced 2025-06-10 12:32:20 +02:00
Improved struct returns from mixins and block expressions
This commit is contained in:
parent
5268e103e9
commit
e3ca70c153
3 changed files with 36 additions and 0 deletions
|
@ -3403,6 +3403,11 @@ void BfExprEvaluator::Visit(BfBlock* blockExpr)
|
|||
|
||||
mModule->VisitEmbeddedStatement(blockExpr, this, BfNodeIsA<BfUnscopedBlock>(blockExpr) ? BfEmbeddedStatementFlags_Unscoped : BfEmbeddedStatementFlags_None);
|
||||
mResult = mModule->SanitizeAddr(mResult);
|
||||
if ((mResult) && (mResult.mType->IsStruct()))
|
||||
{
|
||||
mResult = mModule->MakeAddressable(mResult, true);
|
||||
mResult.MakeTemporary(true);
|
||||
}
|
||||
}
|
||||
|
||||
bool BfExprEvaluator::CheckVariableDeclaration(BfAstNode* checkNode, bool requireSimpleIfExpr, bool exprMustBeTrue, bool silentFail)
|
||||
|
@ -17248,6 +17253,12 @@ void BfExprEvaluator::InjectMixin(BfAstNode* targetSrc, BfTypedValue target, boo
|
|||
|
||||
mModule->mBfIRBuilder->RestoreDebugLocation();
|
||||
mModule->mBfIRBuilder->DupDebugLocation();
|
||||
|
||||
if ((mResult) && (mResult.mType->IsStruct()))
|
||||
{
|
||||
mResult = mModule->MakeAddressable(mResult, true);
|
||||
mResult.MakeTemporary(true);
|
||||
}
|
||||
}
|
||||
|
||||
void BfExprEvaluator::SetMethodElementType(BfAstNode* target)
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue