1
0
Fork 0
mirror of https://github.com/beefytech/Beef.git synced 2025-06-09 03:52:19 +02:00

Improved some var handling of out arguments

This commit is contained in:
Brian Fiete 2025-02-01 13:00:20 -08:00
parent f466a2ea57
commit cce1611da5

View file

@ -7601,6 +7601,13 @@ void BfExprEvaluator::FinishDeferredEvals(BfResolvedArgs& argValues)
mModule->CheckVariableDef(localVar); mModule->CheckVariableDef(localVar);
localVar->Init(); localVar->Init();
mModule->AddLocalVariableDef(localVar, true); mModule->AddLocalVariableDef(localVar, true);
auto curScope = mModule->mCurMethodState->mCurScope;
if (curScope->mScopeKind == BfScopeKind_StatementTarget)
{
// Move this variable into the parent scope
curScope->mLocalVarStart = (int)mModule->mCurMethodState->mLocals.size();
}
} }
} }
} }
@ -20101,6 +20108,12 @@ bool BfExprEvaluator::CheckIsBase(BfAstNode* checkNode)
bool BfExprEvaluator::CheckModifyResult(BfTypedValue& typedVal, BfAstNode* refNode, const char* modifyType, bool onlyNeedsMut, bool emitWarning, bool skipCopyOnMutate) bool BfExprEvaluator::CheckModifyResult(BfTypedValue& typedVal, BfAstNode* refNode, const char* modifyType, bool onlyNeedsMut, bool emitWarning, bool skipCopyOnMutate)
{ {
if (typedVal.mType->IsVar())
{
// Allow without error
return true;
}
BfLocalVariable* localVar = NULL; BfLocalVariable* localVar = NULL;
bool isCapturedLocal = false; bool isCapturedLocal = false;
if (mResultLocalVar != NULL) if (mResultLocalVar != NULL)