@@ -52,32 +52,50 @@ private static async Task<Document> GetTransformedDocumentAsync(Document documen
5252 var triviaList = token . LeadingTrivia ;
5353
5454 var index = triviaList . IndexOf ( SyntaxKind . SingleLineDocumentationCommentTrivia ) ;
55- for ( ; index < triviaList . Count - 1 ; index ++ )
55+
56+ int currentLineStart = index + 1 ;
57+ bool onBlankLine = true ;
58+ for ( int currentIndex = currentLineStart ; currentIndex < triviaList . Count ; currentIndex ++ )
5659 {
57- if ( triviaList [ index ] . IsKind ( SyntaxKind . SingleLineCommentTrivia )
58- || triviaList [ index ] . IsKind ( SyntaxKind . MultiLineCommentTrivia ) )
60+ switch ( triviaList [ currentIndex ] . Kind ( ) )
5961 {
60- break ;
61- }
62- }
62+ case SyntaxKind . EndOfLineTrivia :
63+ if ( onBlankLine )
64+ {
65+ for ( int i = 0 ; i < currentIndex - currentLineStart + 1 ; i ++ )
66+ {
67+ triviaList = triviaList . RemoveAt ( currentLineStart ) ;
68+ currentIndex = currentLineStart - 1 ;
69+ }
6370
64- while ( ! triviaList [ index ] . IsKind ( SyntaxKind . EndOfLineTrivia ) )
65- {
66- index -- ;
67- }
71+ continue ;
72+ }
73+ else
74+ {
75+ currentLineStart = currentIndex + 1 ;
76+ onBlankLine = true ;
77+ break ;
78+ }
6879
69- var lastEndOfLine = index ;
80+ case SyntaxKind . WhitespaceTrivia :
81+ break ;
7082
71- while ( ! triviaList [ index ] . IsKind ( SyntaxKind . SingleLineDocumentationCommentTrivia ) )
72- {
73- index -- ;
83+ default :
84+ if ( triviaList [ currentIndex ] . HasBuiltinEndLine ( ) )
85+ {
86+ currentLineStart = currentIndex + 1 ;
87+ onBlankLine = true ;
88+ break ;
89+ }
90+ else
91+ {
92+ onBlankLine = false ;
93+ break ;
94+ }
95+ }
7496 }
7597
76- var lastDocumentation = index ;
77-
78- var newLeadingTrivia = triviaList . Take ( lastDocumentation + 1 ) . Concat ( triviaList . Skip ( lastEndOfLine + 1 ) ) ;
79- var newSyntaxRoot = syntaxRoot . ReplaceToken ( token , token . WithLeadingTrivia ( newLeadingTrivia ) ) ;
80-
98+ var newSyntaxRoot = syntaxRoot . ReplaceToken ( token , token . WithLeadingTrivia ( triviaList ) ) ;
8199 return document . WithSyntaxRoot ( newSyntaxRoot ) ;
82100 }
83101 }
0 commit comments