Kaynağa Gözat

String interpolation fix with string literals inside brackets

Brian Fiete 3 ay önce
ebeveyn
işleme
07a2e88960
1 değiştirilmiş dosya ile 8 ekleme ve 2 silme
  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;
 	SizedArray<BfAstNode*, 32> childArr;
 
 
 	int parenDepth = 0;
 	int parenDepth = 0;
+	int bracketDepth = 0;
 
 
 	while (true)
 	while (true)
 	{
 	{
@@ -3627,7 +3628,7 @@ void BfParser::ParseBlock(BfBlock* astNode, int depth, bool isInterpolate)
 				isAsmBlock = true;
 				isAsmBlock = true;
 		}
 		}
 
 
-		NextToken(-1, isInterpolate && (parenDepth == 0) && (!forceAllowNext));
+		NextToken(-1, isInterpolate && (parenDepth == 0) && (bracketDepth == 0) && (!forceAllowNext));
 		forceAllowNext = false;
 		forceAllowNext = false;
 
 
 		if (mPreprocessorIgnoredSectionNode != NULL)
 		if (mPreprocessorIgnoredSectionNode != NULL)
@@ -3730,7 +3731,12 @@ void BfParser::ParseBlock(BfBlock* astNode, int depth, bool isInterpolate)
 			else if (mToken == BfToken_RParen)
 			else if (mToken == BfToken_RParen)
 				parenDepth--;
 				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)
 				if (mToken == BfToken_Question)
 				{
 				{