1
0
Fork 0
mirror of https://github.com/beefytech/Beef.git synced 2025-06-10 12:32:20 +02:00

Parsing fixes for initializer expressions

This commit is contained in:
Brian Fiete 2020-09-12 08:11:14 -07:00
parent aaf3eb86f6
commit 6b680d2b70

View file

@ -7021,22 +7021,23 @@ BfInitializerExpression* BfReducer::TryCreateInitializerExpression(BfExpression*
SetAndRestoreValue<BfVisitorPos> prevVisitorPos(mVisitorPos, BfVisitorPos(block));
bool isDone = !mVisitorPos.MoveNext();
BfDeferredAstSizedArray<BfExpression*> values(initializerExpr->mValues, mAlloc);
BfDeferredAstSizedArray<BfTokenNode*> commas(initializerExpr->mCommas, mAlloc);
BfDeferredAstNodeSizedArray<BfExpression*> values(initializerExpr, initializerExpr->mValues, mAlloc);
BfDeferredAstNodeSizedArray<BfTokenNode*> commas(initializerExpr, initializerExpr->mCommas, mAlloc);
BfAstNode* nextNode = NULL;
while (!isDone)
{
BfAstNode* node = mVisitorPos.GetCurrent();
auto expr = CreateExpression(node);
initializerExpr->mSrcEnd = node->mSrcEnd;
auto expr = CreateExpression(node);
isDone = !mVisitorPos.MoveNext();
if (expr != NULL)
values.Add(expr);
else
AddErrorNode(node);
if (!isDone)
{
bool foundComma = false;
@ -7048,17 +7049,17 @@ BfInitializerExpression* BfReducer::TryCreateInitializerExpression(BfExpression*
{
foundComma = true;
commas.Add(tokenNode);
mVisitorPos.MoveNext();
isDone = !mVisitorPos.MoveNext();
}
}
}
}
}
mVisitorPos.Trim();
if (block->mCloseBrace != NULL)
MEMBER_SET(initializerExpr, mCloseBrace, block->mCloseBrace);
if (block->mCloseBrace != NULL)
MEMBER_SET(initializerExpr, mCloseBrace, block->mCloseBrace);
return initializerExpr;
}