@@ -33,15 +33,16 @@ public async Task<Document> ProcessAsync(Document document, CancellationToken ca
33
33
token . LeadingTrivia . First ( ) . CSharpKind ( ) == SyntaxKind . EndOfLineTrivia ||
34
34
token . LeadingTrivia . Last ( ) . CSharpKind ( ) == SyntaxKind . EndOfLineTrivia ||
35
35
token . LeadingTrivia . Last ( ) . CSharpKind ( ) == SyntaxKind . WhitespaceTrivia ) ) ;
36
-
36
+
37
37
return document . WithSyntaxRoot ( syntaxRoot . ReplaceTokens ( tokensToReplace , replaceTriviaInTokens ) ) ;
38
38
}
39
39
40
40
private static IEnumerable < SyntaxTrivia > RemoveNewLinesFromTop ( IEnumerable < SyntaxTrivia > trivia )
41
41
{
42
- int elementsToRemoveAtStart = 1 ;
42
+ int elementsToRemoveAtStart = 0 ;
43
43
if ( trivia . First ( ) . CSharpKind ( ) == SyntaxKind . EndOfLineTrivia )
44
44
{
45
+ elementsToRemoveAtStart = 1 ;
45
46
if ( trivia . Count ( ) > 1 )
46
47
{
47
48
while ( elementsToRemoveAtStart < trivia . Count ( ) &&
@@ -63,7 +64,7 @@ private static IEnumerable<SyntaxTrivia> RemoveNewLinesFromBotton(IEnumerable<Sy
63
64
trivia = trivia . Take ( trivia . Count ( ) - 1 ) ;
64
65
}
65
66
66
- if ( trivia . Any ( ) && trivia . Last ( ) . CSharpKind ( ) == SyntaxKind . EndOfLineTrivia )
67
+ if ( trivia . Any ( ) && trivia . Last ( ) . CSharpKind ( ) == SyntaxKind . EndOfLineTrivia )
67
68
{
68
69
if ( trivia . Count ( ) > 1 )
69
70
{
@@ -75,7 +76,11 @@ private static IEnumerable<SyntaxTrivia> RemoveNewLinesFromBotton(IEnumerable<Sy
75
76
76
77
if ( addWhitespace )
77
78
{
78
- return trivia . Take ( elementsToRemoveAtEnd + 1 ) . AddNewLine ( ) . AddWhiteSpaceTrivia ( ) ;
79
+ var newTrivia = trivia . Take ( elementsToRemoveAtEnd + 1 ) ;
80
+ if ( newTrivia . Last ( ) . IsDirective )
81
+ return newTrivia . AddWhiteSpaceTrivia ( ) ;
82
+
83
+ return newTrivia . AddNewLine ( ) . AddWhiteSpaceTrivia ( ) ;
79
84
}
80
85
81
86
return trivia . Take ( elementsToRemoveAtEnd + 1 ) ;
0 commit comments