mirror of
https://github.com/beefytech/Beef.git
synced 2025-06-10 04:22:20 +02:00
Fixed processing error of sized array with size containing local variables
This commit is contained in:
parent
cb6f88b047
commit
06d896330d
1 changed files with 17 additions and 10 deletions
|
@ -6373,16 +6373,23 @@ void BfExprEvaluator::FinishDeferredEvals(BfResolvedArgs& argValues)
|
|||
auto variableDeclaration = BfNodeDynCast<BfVariableDeclaration>((*argValues.mArguments)[argIdx]);
|
||||
if ((variableDeclaration != NULL) && (variableDeclaration->mNameNode != NULL))
|
||||
{
|
||||
BfLocalVariable* localVar = new BfLocalVariable();
|
||||
localVar->mName = variableDeclaration->mNameNode->ToString();
|
||||
localVar->mResolvedType = mModule->GetPrimitiveType(BfTypeCode_Var);
|
||||
localVar->mAddr = mModule->mBfIRBuilder->GetFakeVal();
|
||||
localVar->mReadFromId = 0;
|
||||
localVar->mWrittenToId = 0;
|
||||
localVar->mAssignedKind = BfLocalVarAssignKind_Unconditional;
|
||||
mModule->CheckVariableDef(localVar);
|
||||
localVar->Init();
|
||||
mModule->AddLocalVariableDef(localVar, true);
|
||||
if (mModule->mCurMethodState == NULL)
|
||||
{
|
||||
mModule->Fail("Illegal local variable", variableDeclaration);
|
||||
}
|
||||
else
|
||||
{
|
||||
BfLocalVariable* localVar = new BfLocalVariable();
|
||||
localVar->mName = variableDeclaration->mNameNode->ToString();
|
||||
localVar->mResolvedType = mModule->GetPrimitiveType(BfTypeCode_Var);
|
||||
localVar->mAddr = mModule->mBfIRBuilder->GetFakeVal();
|
||||
localVar->mReadFromId = 0;
|
||||
localVar->mWrittenToId = 0;
|
||||
localVar->mAssignedKind = BfLocalVarAssignKind_Unconditional;
|
||||
mModule->CheckVariableDef(localVar);
|
||||
localVar->Init();
|
||||
mModule->AddLocalVariableDef(localVar, true);
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue