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

Fixed IsTypeReference 'char*[]' cases

This commit is contained in:
Brian Fiete 2022-02-08 11:39:56 -05:00
parent 0c1ab7b668
commit d6a447f915

View file

@ -716,6 +716,8 @@ bool BfReducer::IsTypeReference(BfAstNode* checkNode, BfToken successToken, int
} }
else if ((checkToken == BfToken_Star) || (checkToken == BfToken_Question)) else if ((checkToken == BfToken_Star) || (checkToken == BfToken_Question))
{ {
bool keepParsing = false;
if (checkToken == BfToken_Star) if (checkToken == BfToken_Star)
{ {
auto prevNode = mVisitorPos.Get(checkIdx - 1); auto prevNode = mVisitorPos.Get(checkIdx - 1);
@ -738,6 +740,12 @@ bool BfReducer::IsTypeReference(BfAstNode* checkNode, BfToken successToken, int
{ {
auto nextNode = mVisitorPos.Get(checkIdx + 1); auto nextNode = mVisitorPos.Get(checkIdx + 1);
auto nextToken = BfNodeDynCast<BfTokenNode>(nextNode); auto nextToken = BfNodeDynCast<BfTokenNode>(nextNode);
if ((nextToken != NULL) && (nextToken->GetToken() == BfToken_LBracket))
{
keepParsing = true;
break;
}
if ((nextToken == NULL) || (nextToken->GetToken() != BfToken_Star)) if ((nextToken == NULL) || (nextToken->GetToken() != BfToken_Star))
break; break;
checkTokenNode = nextToken; checkTokenNode = nextToken;
@ -759,8 +767,12 @@ bool BfReducer::IsTypeReference(BfAstNode* checkNode, BfToken successToken, int
} }
} }
// Star or Question always end a TypeRef // Star or Question normally end a TypeRef
if ((chevronDepth == 0) && (parenDepth == 0) && (bracketDepth == 0)) if (keepParsing)
{
// Keep going
}
else if ((chevronDepth == 0) && (parenDepth == 0) && (bracketDepth == 0))
{ {
if (hadTupleComma) if (hadTupleComma)
return false; return false;