1
0
Fork 0
mirror of https://github.com/beefytech/Beef.git synced 2025-06-11 04:52:21 +02:00

Fixed processing error of sized array with size containing local variables

This commit is contained in:
Brian Fiete 2021-12-11 12:27:53 -08:00
parent cb6f88b047
commit 06d896330d

View file

@ -6373,16 +6373,23 @@ void BfExprEvaluator::FinishDeferredEvals(BfResolvedArgs& argValues)
auto variableDeclaration = BfNodeDynCast<BfVariableDeclaration>((*argValues.mArguments)[argIdx]); auto variableDeclaration = BfNodeDynCast<BfVariableDeclaration>((*argValues.mArguments)[argIdx]);
if ((variableDeclaration != NULL) && (variableDeclaration->mNameNode != NULL)) if ((variableDeclaration != NULL) && (variableDeclaration->mNameNode != NULL))
{ {
BfLocalVariable* localVar = new BfLocalVariable(); if (mModule->mCurMethodState == NULL)
localVar->mName = variableDeclaration->mNameNode->ToString(); {
localVar->mResolvedType = mModule->GetPrimitiveType(BfTypeCode_Var); mModule->Fail("Illegal local variable", variableDeclaration);
localVar->mAddr = mModule->mBfIRBuilder->GetFakeVal(); }
localVar->mReadFromId = 0; else
localVar->mWrittenToId = 0; {
localVar->mAssignedKind = BfLocalVarAssignKind_Unconditional; BfLocalVariable* localVar = new BfLocalVariable();
mModule->CheckVariableDef(localVar); localVar->mName = variableDeclaration->mNameNode->ToString();
localVar->Init(); localVar->mResolvedType = mModule->GetPrimitiveType(BfTypeCode_Var);
mModule->AddLocalVariableDef(localVar, true); localVar->mAddr = mModule->mBfIRBuilder->GetFakeVal();
localVar->mReadFromId = 0;
localVar->mWrittenToId = 0;
localVar->mAssignedKind = BfLocalVarAssignKind_Unconditional;
mModule->CheckVariableDef(localVar);
localVar->Init();
mModule->AddLocalVariableDef(localVar, true);
}
} }
} }
} }