瀏覽代碼

String interpolation fix with string literals inside brackets

Brian Fiete 2 月之前
父節點
當前提交
07a2e88960
共有 1 個文件被更改,包括 8 次插入2 次删除
  1. 8 2
      IDEHelper/Compiler/BfParser.cpp

+ 8 - 2
IDEHelper/Compiler/BfParser.cpp

@@ -3616,6 +3616,7 @@ void BfParser::ParseBlock(BfBlock* astNode, int depth, bool isInterpolate)
 	SizedArray<BfAstNode*, 32> childArr;
 
 	int parenDepth = 0;
+	int bracketDepth = 0;
 
 	while (true)
 	{
@@ -3627,7 +3628,7 @@ void BfParser::ParseBlock(BfBlock* astNode, int depth, bool isInterpolate)
 				isAsmBlock = true;
 		}
 
-		NextToken(-1, isInterpolate && (parenDepth == 0) && (!forceAllowNext));
+		NextToken(-1, isInterpolate && (parenDepth == 0) && (bracketDepth == 0) && (!forceAllowNext));
 		forceAllowNext = false;
 
 		if (mPreprocessorIgnoredSectionNode != NULL)
@@ -3730,7 +3731,12 @@ void BfParser::ParseBlock(BfBlock* astNode, int depth, bool isInterpolate)
 			else if (mToken == BfToken_RParen)
 				parenDepth--;
 
-			if ((isInterpolate) && (parenDepth == 0))
+			if (mToken == BfToken_LBracket)
+				bracketDepth++;
+			else if (mToken == BfToken_RBracket)
+				bracketDepth--;
+
+			if ((isInterpolate) && (parenDepth == 0) && (bracketDepth == 0))
 			{
 				if (mToken == BfToken_Question)
 				{