diff --git a/src/Compilers/CSharp/Test/Syntax/Parsing/ExpressionParsingTests.cs b/src/Compilers/CSharp/Test/Syntax/Parsing/ExpressionParsingTests.cs index 94ff4b11e1a62..55d4f7d95f431 100644 --- a/src/Compilers/CSharp/Test/Syntax/Parsing/ExpressionParsingTests.cs +++ b/src/Compilers/CSharp/Test/Syntax/Parsing/ExpressionParsingTests.cs @@ -207,6 +207,33 @@ void M() EOF(); } + [Fact] + public void TestInterpolatedStringWithNewLinesInExpression() + { + var text = @"$""Text with {\nnew[] {\n 1, 2, 3 \n}[2]\n}parts and new line expressions!"""; + text = text.Replace(@"\n", System.Environment.NewLine); + + var expr = this.ParseExpression(text); + + if (expr is InterpolatedStringExpressionSyntax intStr) + { + Assert.Equal(3, intStr.Contents.Count); + + Assert.IsType(intStr.Contents[0]); + Assert.IsType(intStr.Contents[1]); + Assert.IsType(intStr.Contents[0]); + + Assert.Equal("Text with ", intStr.Contents[0].ToString()); + Assert.Equal("parts and new line expressions!", intStr.Contents[2].ToString()); + + Assert.IsType(((InterpolationSyntax)intStr.Contents[1]).Expression); + } + else + { + Assert.True(false, "Invalid expression type returned"); + } + } + [Fact] public void TestName() {