// When the compiler folds string concatenations using an O(n^2) algorithm, this program cannot be
...
...
@@ -3455,12 +3457,29 @@ static void Main()
";
StringBuildersource=newStringBuilder();
source.Append(source0);
for(inti=0;i<5000;i++)
constintNumIterations=5000;
for(inti=0;i<NumIterations;i++)
{
source.Append(@"""Lorem ipsum dolor sit amet"" + "", consectetur adipiscing elit, sed"" + "" do eiusmod tempor incididunt"" + "" ut labore et dolore magna aliqua. "" +"+"\n");
stringTextBuilder.Append("Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua. ");
// History of this bug: When constant folding a long sequence of string concatentations, there is
...
...
@@ -11137,11 +11140,42 @@ static void Main()
C1;
}}
";
CreateCompilation(source).VerifyDiagnostics(
varcomp=CreateCompilation(source);
comp.VerifyDiagnostics(
// (28,68): error CS8095: Length of String constant resulting from concatenation exceeds System.Int32.MaxValue. Try splitting the string into multiple constants.
/// If the operation is an expression that evaluates to a constant value, <see cref="Optional{Object}.HasValue"/> is true and <see cref="Optional{Object}.Value"/> is the value of the expression. Otherwise, <see cref="Optional{Object}.HasValue"/> is false.