From 498d5b1f6feace039534035a08aa864c0cd26d1e Mon Sep 17 00:00:00 2001 From: Bernd Baumanns Date: Mon, 13 Dec 2021 22:21:12 +0100 Subject: [PATCH] Add test from PR 50799 for impl PR 56853 (#57752) * Add test "TestInterpolatedStringWithNewLinesInExpression()" which was implemented as part of https://github.com/dotnet/roslyn/pull/50799 and later realized via https://github.com/dotnet/roslyn/pull/56853 --- .../Syntax/Parsing/ExpressionParsingTests.cs | 75 +++++++++++++++++++ 1 file changed, 75 insertions(+) diff --git a/src/Compilers/CSharp/Test/Syntax/Parsing/ExpressionParsingTests.cs b/src/Compilers/CSharp/Test/Syntax/Parsing/ExpressionParsingTests.cs index 458c792ae648c..1def593ae29a7 100644 --- a/src/Compilers/CSharp/Test/Syntax/Parsing/ExpressionParsingTests.cs +++ b/src/Compilers/CSharp/Test/Syntax/Parsing/ExpressionParsingTests.cs @@ -207,6 +207,81 @@ void M() EOF(); } + [Fact] + public void TestInterpolatedStringWithNewLinesInExpression() + { + var text = @"$""Text with { + new[] { + 1, 2, 3 + }[2] +} parts and new line expressions!"""; + + UsingExpression(text, TestOptions.RegularPreview); + + var expr = (InterpolatedStringExpressionSyntax)N(SyntaxKind.InterpolatedStringExpression); + { + N(SyntaxKind.InterpolatedStringStartToken); + N(SyntaxKind.InterpolatedStringText); + { + N(SyntaxKind.InterpolatedStringTextToken); + } + N(SyntaxKind.Interpolation); + { + N(SyntaxKind.OpenBraceToken); + N(SyntaxKind.ElementAccessExpression); + { + N(SyntaxKind.ImplicitArrayCreationExpression); + { + N(SyntaxKind.NewKeyword); + N(SyntaxKind.OpenBracketToken); + N(SyntaxKind.CloseBracketToken); + N(SyntaxKind.ArrayInitializerExpression); + { + N(SyntaxKind.OpenBraceToken); + N(SyntaxKind.NumericLiteralExpression); + { + N(SyntaxKind.NumericLiteralToken, "1"); + } + N(SyntaxKind.CommaToken); + N(SyntaxKind.NumericLiteralExpression); + { + N(SyntaxKind.NumericLiteralToken, "2"); + } + N(SyntaxKind.CommaToken); + N(SyntaxKind.NumericLiteralExpression); + { + N(SyntaxKind.NumericLiteralToken, "3"); + } + N(SyntaxKind.CloseBraceToken); + } + } + N(SyntaxKind.BracketedArgumentList); + { + N(SyntaxKind.OpenBracketToken); + N(SyntaxKind.Argument); + { + N(SyntaxKind.NumericLiteralExpression); + { + N(SyntaxKind.NumericLiteralToken, "2"); + } + } + N(SyntaxKind.CloseBracketToken); + } + } + N(SyntaxKind.CloseBraceToken); + } + N(SyntaxKind.InterpolatedStringText); + { + N(SyntaxKind.InterpolatedStringTextToken); + } + N(SyntaxKind.InterpolatedStringEndToken); + } + EOF(); + + Assert.Equal("Text with ", expr.Contents[0].ToString()); + Assert.Equal(" parts and new line expressions!", expr.Contents[2].ToString()); + } + [Fact] public void TestName() {