dotnet/roslyn

InterpolatedStringExpression inserts a space on its own.

Open

#39,923 opened on Nov 21, 2019

View on GitHub
 (0 comments) (0 reactions) (0 assignees)C# (20,414 stars) (4,257 forks)batch import
Area-AnalyzersBughelp wanted

Description

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.

Contributor guide