@@ -85,20 +85,50 @@ private static async Task<Document> RemoveEmptyStatementAsync(Document document,
8585 var options = document . Project . Solution . Workspace . Options ;
8686 var endOfLine = FormattingHelper . GetEndOfLineForCodeFix ( node . SemicolonToken , text , options ) ;
8787 var settings = SettingsHelper . GetStyleCopSettingsInCodeFix ( document . Project . AnalyzerOptions , root . SyntaxTree , cancellationToken ) ;
88- var indentSteps = IndentationHelper . GetIndentationSteps ( settings . Indentation , node . Parent . GetFirstOnLineAncestorOrSelf ( ) ) ;
89- var indentTrivia = IndentationHelper . GenerateWhitespaceTrivia ( settings . Indentation , indentSteps ) ;
90- var block = SyntaxFactory . Block (
91- SyntaxFactory . Token (
92- node . GetLeadingTrivia ( ) . WithoutTrailingWhitespace ( ) . Add ( indentTrivia ) ,
93- SyntaxKind . OpenBraceToken ,
94- SyntaxFactory . TriviaList ( endOfLine ) ) ,
95- SyntaxFactory . List < StatementSyntax > ( ) ,
96- SyntaxFactory . Token (
97- SyntaxFactory . TriviaList ( indentTrivia ) ,
98- SyntaxKind . CloseBraceToken ,
99- node . GetTrailingTrivia ( ) ) ) ;
100- newRoot = root . ReplaceNode ( node , block ) ;
101- return document . WithSyntaxRoot ( newRoot ) ;
88+
89+ if ( node . SemicolonToken . IsFirstInLine ( ) )
90+ {
91+ var indentSteps = IndentationHelper . GetIndentationSteps ( settings . Indentation , node . Parent . GetFirstOnLineAncestorOrSelf ( ) ) ;
92+ var indentTrivia = IndentationHelper . GenerateWhitespaceTrivia ( settings . Indentation , indentSteps ) ;
93+ var block = SyntaxFactory . Block (
94+ SyntaxFactory . Token (
95+ node . GetLeadingTrivia ( ) . WithoutTrailingWhitespace ( ) . Add ( indentTrivia ) ,
96+ SyntaxKind . OpenBraceToken ,
97+ SyntaxFactory . TriviaList ( endOfLine ) ) ,
98+ SyntaxFactory . List < StatementSyntax > ( ) ,
99+ SyntaxFactory . Token (
100+ SyntaxFactory . TriviaList ( indentTrivia ) ,
101+ SyntaxKind . CloseBraceToken ,
102+ node . GetTrailingTrivia ( ) ) ) ;
103+ newRoot = root . ReplaceNode ( node , block ) ;
104+ return document . WithSyntaxRoot ( newRoot ) ;
105+ }
106+ else
107+ {
108+ var firstTokenOnLine = IndentationHelper . GetFirstTokenOnTextLine ( node . SemicolonToken ) ;
109+ var previousToken = node . SemicolonToken . GetPreviousToken ( includeZeroWidth : true ) ;
110+ var replacementPreviousToken = previousToken . WithTrailingTrivia ( previousToken . TrailingTrivia . WithoutTrailingWhitespace ( ) . Add ( endOfLine ) ) ;
111+ var indentSteps = IndentationHelper . GetIndentationSteps ( settings . Indentation , firstTokenOnLine ) ;
112+ var indentTrivia = IndentationHelper . GenerateWhitespaceTrivia ( settings . Indentation , indentSteps ) ;
113+ var block = SyntaxFactory . Block (
114+ SyntaxFactory . Token (
115+ node . GetLeadingTrivia ( ) . WithoutTrailingWhitespace ( ) . Add ( indentTrivia ) ,
116+ SyntaxKind . OpenBraceToken ,
117+ SyntaxFactory . TriviaList ( endOfLine ) ) ,
118+ SyntaxFactory . List < StatementSyntax > ( ) ,
119+ SyntaxFactory . Token (
120+ SyntaxFactory . TriviaList ( indentTrivia ) ,
121+ SyntaxKind . CloseBraceToken ,
122+ node . GetTrailingTrivia ( ) ) ) ;
123+ newRoot = root . ReplaceSyntax (
124+ new [ ] { node } ,
125+ ( originalNode , rewrittenNode ) => block ,
126+ new [ ] { previousToken } ,
127+ ( originalToken , rewrittenToken ) => replacementPreviousToken ,
128+ new SyntaxTrivia [ 0 ] ,
129+ ( originalToken , rewrittenToken ) => rewrittenToken ) ;
130+ return document . WithSyntaxRoot ( newRoot ) ;
131+ }
102132
103133 case SyntaxKind . LabeledStatement :
104134 // handle this case as a text manipulation for simplicity
0 commit comments