@@ -49,10 +49,20 @@ protected override Task<Document> GetChangedDocumentAsync(CancellationToken canc
4949 var modifiers = declaration . Modifiers ;
5050
5151 if ( ! modifiers . Any ( SyntaxKind . FileKeyword ) )
52- modifiers = modifiers . Insert ( 0 , Token ( SyntaxKind . FileKeyword ) ) ;
52+ {
53+ var file = SpacedToken ( SyntaxKind . FileKeyword ) ;
54+ if ( modifiers . Count > 0 )
55+ {
56+ var firstModifier = modifiers [ 0 ] ;
57+ file = file . WithLeadingTrivia ( firstModifier . LeadingTrivia ) ;
58+ modifiers = modifiers . Replace ( firstModifier , firstModifier . WithLeadingTrivia ( TriviaList ( ) ) ) ;
59+ }
60+
61+ modifiers = modifiers . Insert ( 0 , file ) ;
62+ }
5363
5464 if ( ! modifiers . Any ( SyntaxKind . PartialKeyword ) )
55- modifiers = modifiers . Insert ( 1 , Token ( SyntaxKind . PartialKeyword ) ) ;
65+ modifiers = modifiers . Insert ( 1 , SpacedToken ( SyntaxKind . PartialKeyword ) ) ;
5666
5767 // Remove accessibility modifiers which are replaced by 'file' visibility
5868 if ( modifiers . FirstOrDefault ( x => x . IsKind ( SyntaxKind . PublicKeyword ) ) is { } @public )
@@ -63,16 +73,19 @@ protected override Task<Document> GetChangedDocumentAsync(CancellationToken canc
6373 modifiers = modifiers . Remove ( @private ) ;
6474
6575 if ( declaration . Identifier . Text != "TSelf" )
66- declaration = declaration . WithIdentifier ( Identifier ( "TSelf" ) ) ;
76+ declaration = declaration . WithIdentifier ( Identifier (
77+ declaration . Identifier . LeadingTrivia ,
78+ "TSelf" ,
79+ declaration . Identifier . TrailingTrivia ) ) ;
6780
6881 if ( ! declaration . IsKind ( SyntaxKind . RecordStructDeclaration ) )
6982 {
7083 declaration = RecordDeclaration (
7184 SyntaxKind . RecordStructDeclaration ,
7285 declaration . AttributeLists ,
7386 modifiers ,
74- Token ( SyntaxKind . RecordKeyword ) ,
75- Token ( SyntaxKind . StructKeyword ) ,
87+ SpacedToken ( SyntaxKind . RecordKeyword ) ,
88+ SpacedToken ( SyntaxKind . StructKeyword ) ,
7689 declaration . Identifier ,
7790 declaration . TypeParameterList ,
7891 declaration . ParameterList ,
@@ -81,7 +94,8 @@ protected override Task<Document> GetChangedDocumentAsync(CancellationToken canc
8194 declaration . OpenBraceToken ,
8295 declaration . Members ,
8396 declaration . CloseBraceToken ,
84- declaration . SemicolonToken ) ;
97+ declaration . SemicolonToken )
98+ . WithTriviaFrom ( original ) ;
8599 }
86100 else if ( modifiers != declaration . Modifiers )
87101 {
@@ -90,5 +104,8 @@ protected override Task<Document> GetChangedDocumentAsync(CancellationToken canc
90104
91105 return Task . FromResult ( document . WithSyntaxRoot ( root . ReplaceNode ( original , declaration ) ) ) ;
92106 }
107+
108+ static SyntaxToken SpacedToken ( SyntaxKind kind )
109+ => Token ( TriviaList ( ) , kind , TriviaList ( Space ) ) ;
93110 }
94- }
111+ }
0 commit comments