dotnet/roslyn

InterpolatedStringExpression inserts a space on its own.

Open

#39,923 创建于 2019年11月21日

在 GitHub 查看
 (0 评论) (0 反应) (0 负责人)C# (20,414 star) (4,257 fork)batch import
Area-AnalyzersBughelp wanted

描述

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.

贡献者指南