1
0
Fork 0
mirror of https://github.com/beefytech/Beef.git synced 2025-06-13 22:04:09 +02:00

Fixed some decltype and rettype parsing

This commit is contained in:
Brian Fiete 2020-01-31 06:11:13 -08:00
parent 36bf9df1f5
commit 1c876af91c

View file

@ -266,7 +266,7 @@ bool BfReducer::IsTypeReference(BfAstNode* checkNode, BfToken successToken, int*
{ {
// Tuple start // Tuple start
} }
else if (checkToken == BfToken_Decltype) else if ((checkToken == BfToken_Decltype) || (checkToken == BfToken_RetType))
{ {
// Decltype start // Decltype start
} }
@ -759,12 +759,18 @@ bool BfReducer::IsTypeReference(BfAstNode* checkNode, BfToken successToken, int*
checkIdx = funcEndNode; checkIdx = funcEndNode;
continue; continue;
} }
else if (checkToken == BfToken_Decltype) else if ((checkToken == BfToken_Decltype) || (checkToken == BfToken_RetType))
{ {
int endNodeIdx = checkIdx + 1; int endNodeIdx = checkIdx + 1;
auto nextNode = mVisitorPos.Get(checkIdx + 1); auto nextNode = mVisitorPos.Get(checkIdx + 1);
if (auto tokenNode = BfNodeDynCast<BfTokenNode>(nextNode)) if (auto tokenNode = BfNodeDynCast<BfTokenNode>(nextNode))
{
if (tokenNode->mToken != BfToken_LParen)
{
isDone = true;
}
else
{ {
int openCount = 1; int openCount = 1;
@ -789,7 +795,9 @@ bool BfReducer::IsTypeReference(BfAstNode* checkNode, BfToken successToken, int*
} }
} }
} }
}
identifierExpected = false;
checkIdx = endNodeIdx; checkIdx = endNodeIdx;
/*if (outEndNode != NULL) /*if (outEndNode != NULL)
@ -4590,7 +4598,10 @@ BfTypeReference* BfReducer::DoCreateTypeRef(BfAstNode* firstNode, CreateTypeRefF
tokenNode = ExpectTokenAfter(declTypeRef, BfToken_RParen); tokenNode = ExpectTokenAfter(declTypeRef, BfToken_RParen);
MEMBER_SET_CHECKED(declTypeRef, mCloseParen, tokenNode); MEMBER_SET_CHECKED(declTypeRef, mCloseParen, tokenNode);
return declTypeRef; isHandled = true;
firstNode = declTypeRef;
//return declTypeRef;
} }
else if (token == BfToken_LParen) else if (token == BfToken_LParen)
{ {