mirror of
https://github.com/beefytech/Beef.git
synced 2025-06-14 14:24:10 +02:00
Parsing fixes for initializer expressions
This commit is contained in:
parent
aaf3eb86f6
commit
6b680d2b70
1 changed files with 12 additions and 11 deletions
|
@ -7021,22 +7021,23 @@ BfInitializerExpression* BfReducer::TryCreateInitializerExpression(BfExpression*
|
||||||
SetAndRestoreValue<BfVisitorPos> prevVisitorPos(mVisitorPos, BfVisitorPos(block));
|
SetAndRestoreValue<BfVisitorPos> prevVisitorPos(mVisitorPos, BfVisitorPos(block));
|
||||||
|
|
||||||
bool isDone = !mVisitorPos.MoveNext();
|
bool isDone = !mVisitorPos.MoveNext();
|
||||||
|
|
||||||
BfDeferredAstSizedArray<BfExpression*> values(initializerExpr->mValues, mAlloc);
|
BfDeferredAstNodeSizedArray<BfExpression*> values(initializerExpr, initializerExpr->mValues, mAlloc);
|
||||||
BfDeferredAstSizedArray<BfTokenNode*> commas(initializerExpr->mCommas, mAlloc);
|
BfDeferredAstNodeSizedArray<BfTokenNode*> commas(initializerExpr, initializerExpr->mCommas, mAlloc);
|
||||||
|
|
||||||
BfAstNode* nextNode = NULL;
|
BfAstNode* nextNode = NULL;
|
||||||
while (!isDone)
|
while (!isDone)
|
||||||
{
|
{
|
||||||
BfAstNode* node = mVisitorPos.GetCurrent();
|
BfAstNode* node = mVisitorPos.GetCurrent();
|
||||||
|
initializerExpr->mSrcEnd = node->mSrcEnd;
|
||||||
auto expr = CreateExpression(node);
|
|
||||||
|
auto expr = CreateExpression(node);
|
||||||
isDone = !mVisitorPos.MoveNext();
|
isDone = !mVisitorPos.MoveNext();
|
||||||
if (expr != NULL)
|
if (expr != NULL)
|
||||||
values.Add(expr);
|
values.Add(expr);
|
||||||
else
|
else
|
||||||
AddErrorNode(node);
|
AddErrorNode(node);
|
||||||
|
|
||||||
if (!isDone)
|
if (!isDone)
|
||||||
{
|
{
|
||||||
bool foundComma = false;
|
bool foundComma = false;
|
||||||
|
@ -7048,17 +7049,17 @@ BfInitializerExpression* BfReducer::TryCreateInitializerExpression(BfExpression*
|
||||||
{
|
{
|
||||||
foundComma = true;
|
foundComma = true;
|
||||||
commas.Add(tokenNode);
|
commas.Add(tokenNode);
|
||||||
mVisitorPos.MoveNext();
|
isDone = !mVisitorPos.MoveNext();
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
mVisitorPos.Trim();
|
mVisitorPos.Trim();
|
||||||
|
|
||||||
if (block->mCloseBrace != NULL)
|
|
||||||
MEMBER_SET(initializerExpr, mCloseBrace, block->mCloseBrace);
|
|
||||||
|
|
||||||
|
if (block->mCloseBrace != NULL)
|
||||||
|
MEMBER_SET(initializerExpr, mCloseBrace, block->mCloseBrace);
|
||||||
|
|
||||||
return initializerExpr;
|
return initializerExpr;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue