dotnet/roslyn

InterpolatedStringExpression inserts a space on its own.

Aperta

#39.923 aperta il 21 nov 2019

 (0 commenti) (0 reazioni) (0 assegnatari)C# (4257 fork)batch import
Area-AnalyzersBughelp wanted

Metriche repository

Star
 (20.414 stelle)
Metriche merge PR
 (Merge medio 6g 17h) (256 PR mergiate in 30 g)

Descrizione

Version Used: 3.3.1 Steps to Reproduce:

Dim Workspace As New AdhocWorkspace()

Dim generator As SyntaxGenerator = SyntaxGenerator.GetGenerator(Workspace, LanguageNames.VisualBasic)

Dim InterpolationBroken As SyntaxNode = VisualBasic.SyntaxFactory.InterpolatedStringExpression(New SyntaxList(Of VisualBasic.Syntax.InterpolatedStringContentSyntax)({
                                                                                                                                                                             VisualBasic.SyntaxFactory.Interpolation(generator.IdentifierName("uApp.AccentColor.ToString")),
                                                                                                                                                                             VisualBasic.SyntaxFactory.Interpolation(VisualBasic.SyntaxFactory.ParseExpression("If(uApp.ThemeIsDark,""Dark"","""")"))}))

Dim InterpolationWorking As SyntaxNode = VisualBasic.SyntaxFactory.InterpolatedStringExpression(New SyntaxList(Of VisualBasic.Syntax.InterpolatedStringContentSyntax)({
                                                                                                                                                                              VisualBasic.SyntaxFactory.Interpolation(generator.IdentifierName("uApp.AccentColor.ToString")),
                                                                                                                                                                              VisualBasic.SyntaxFactory.InterpolatedStringText(VisualBasic.SyntaxFactory.InterpolatedStringTextToken("", "")),
                                                                                                                                                                              VisualBasic.SyntaxFactory.Interpolation(VisualBasic.SyntaxFactory.ParseExpression("If(uApp.ThemeIsDark,""Dark"","""")"))}))

Dim txtoutputBroken = generator.CompilationUnit(generator.ExpressionStatement(InterpolationBroken)).NormalizeWhitespace

Dim txtoutputWorking = generator.CompilationUnit(generator.ExpressionStatement(InterpolationWorking)).NormalizeWhitespace

Expected Behavior: Output Stirng should be $"{uApp.AccentColor.ToString}{If(uApp.ThemeIsDark, "Dark", "")}" No added space between the Interpolations

Actual Behavior: Current output string is $"{uApp.AccentColor.ToString} {If(uApp.ThemeIsDark, "Dark", "")}" With a space between the Interpolations

I had to manually add a InterpolatedStringText with a empty string to make the space between the two Interpolations not appear. I don't understand why it is adding the space by default, messing up the formatting of the output string.

Guida contributor