@@ -17,6 +17,8 @@ namespace StyleCop.Analyzers.ReadabilityRules
1717 using Microsoft . CodeAnalysis . CSharp ;
1818 using Microsoft . CodeAnalysis . CSharp . Syntax ;
1919 using Microsoft . CodeAnalysis . Editing ;
20+ using Microsoft . CodeAnalysis . Options ;
21+ using Microsoft . CodeAnalysis . Text ;
2022 using StyleCop . Analyzers . Helpers ;
2123
2224 /// <summary>
@@ -58,8 +60,10 @@ public override Task RegisterCodeFixesAsync(CodeFixContext context)
5860 private static async Task < Document > GetTransformedDocumentAsync ( Document document , Diagnostic diagnostic , CancellationToken cancellationToken )
5961 {
6062 var syntaxRoot = await document . GetSyntaxRootAsync ( cancellationToken ) . ConfigureAwait ( false ) ;
63+ var sourceText = await document . GetTextAsync ( cancellationToken ) . ConfigureAwait ( false ) ;
64+ var options = document . Project . Solution . Workspace . Options ;
6165 var baseFieldDeclaration = ( BaseFieldDeclarationSyntax ) syntaxRoot . FindNode ( diagnostic . Location . SourceSpan ) ;
62- List < BaseFieldDeclarationSyntax > newFieldDeclarations = SplitDeclaration ( document , baseFieldDeclaration ) ;
66+ List < BaseFieldDeclarationSyntax > newFieldDeclarations = SplitDeclaration ( sourceText , options , baseFieldDeclaration ) ;
6367
6468 if ( newFieldDeclarations != null )
6569 {
@@ -72,12 +76,13 @@ private static async Task<Document> GetTransformedDocumentAsync(Document documen
7276 return document ;
7377 }
7478
75- private static List < BaseFieldDeclarationSyntax > SplitDeclaration ( Document document , BaseFieldDeclarationSyntax baseFieldDeclaration )
79+ private static List < BaseFieldDeclarationSyntax > SplitDeclaration ( SourceText sourceText , OptionSet options , BaseFieldDeclarationSyntax baseFieldDeclaration )
7680 {
7781 if ( baseFieldDeclaration is FieldDeclarationSyntax fieldDeclaration )
7882 {
7983 return DeclarationSplitter (
80- document ,
84+ sourceText ,
85+ options ,
8186 fieldDeclaration . Declaration ,
8287 fieldDeclaration . WithDeclaration ,
8388 fieldDeclaration . SemicolonToken . TrailingTrivia ) ;
@@ -86,7 +91,8 @@ private static List<BaseFieldDeclarationSyntax> SplitDeclaration(Document docume
8691 if ( baseFieldDeclaration is EventFieldDeclarationSyntax eventFieldDeclaration )
8792 {
8893 return DeclarationSplitter (
89- document ,
94+ sourceText ,
95+ options ,
9096 eventFieldDeclaration . Declaration ,
9197 eventFieldDeclaration . WithDeclaration ,
9298 eventFieldDeclaration . SemicolonToken . TrailingTrivia ) ;
@@ -96,7 +102,8 @@ private static List<BaseFieldDeclarationSyntax> SplitDeclaration(Document docume
96102 }
97103
98104 private static List < BaseFieldDeclarationSyntax > DeclarationSplitter (
99- Document document ,
105+ SourceText sourceText ,
106+ OptionSet options ,
100107 VariableDeclarationSyntax declaration ,
101108 Func < VariableDeclarationSyntax , BaseFieldDeclarationSyntax > declarationFactory ,
102109 SyntaxTriviaList declarationTrailingTrivia )
@@ -145,17 +152,18 @@ private static List<BaseFieldDeclarationSyntax> DeclarationSplitter(
145152 else
146153 {
147154 SyntaxToken commaToken = nodeOrToken . AsToken ( ) ;
155+ SyntaxTrivia endOfLineTrivia = FormattingHelper . GetEndOfLineForCodeFix ( commaToken , sourceText , options ) ;
148156 SyntaxTriviaList trailingTrivia = commaToken . TrailingTrivia ;
149157 if ( trailingTrivia . Any ( ) )
150158 {
151159 if ( ! trailingTrivia . Last ( ) . IsKind ( SyntaxKind . EndOfLineTrivia ) )
152160 {
153- trailingTrivia = trailingTrivia . WithoutTrailingWhitespace ( ) . Add ( FormattingHelper . GetNewLineTrivia ( document ) ) ;
161+ trailingTrivia = trailingTrivia . WithoutTrailingWhitespace ( ) . Add ( endOfLineTrivia ) ;
154162 }
155163 }
156164 else
157165 {
158- trailingTrivia = SyntaxTriviaList . Create ( FormattingHelper . GetNewLineTrivia ( document ) ) ;
166+ trailingTrivia = SyntaxTriviaList . Create ( endOfLineTrivia ) ;
159167 }
160168
161169 newFieldDeclarations . Add ( previous . WithTrailingTrivia ( trailingTrivia ) ) ;
0 commit comments