From d6a447f9159c3b387e0e4d95cfd59ad3bf5bf017 Mon Sep 17 00:00:00 2001 From: Brian Fiete Date: Tue, 8 Feb 2022 11:39:56 -0500 Subject: [PATCH] Fixed IsTypeReference 'char*[]' cases --- IDEHelper/Compiler/BfReducer.cpp | 16 ++++++++++++++-- 1 file changed, 14 insertions(+), 2 deletions(-) diff --git a/IDEHelper/Compiler/BfReducer.cpp b/IDEHelper/Compiler/BfReducer.cpp index fbcb6a5e..1a92418d 100644 --- a/IDEHelper/Compiler/BfReducer.cpp +++ b/IDEHelper/Compiler/BfReducer.cpp @@ -716,6 +716,8 @@ bool BfReducer::IsTypeReference(BfAstNode* checkNode, BfToken successToken, int } else if ((checkToken == BfToken_Star) || (checkToken == BfToken_Question)) { + bool keepParsing = false; + if (checkToken == BfToken_Star) { 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 nextToken = BfNodeDynCast(nextNode); + if ((nextToken != NULL) && (nextToken->GetToken() == BfToken_LBracket)) + { + keepParsing = true; + break; + } + if ((nextToken == NULL) || (nextToken->GetToken() != BfToken_Star)) break; checkTokenNode = nextToken; @@ -759,8 +767,12 @@ bool BfReducer::IsTypeReference(BfAstNode* checkNode, BfToken successToken, int } } - // Star or Question always end a TypeRef - if ((chevronDepth == 0) && (parenDepth == 0) && (bracketDepth == 0)) + // Star or Question normally end a TypeRef + if (keepParsing) + { + // Keep going + } + else if ((chevronDepth == 0) && (parenDepth == 0) && (bracketDepth == 0)) { if (hadTupleComma) return false;