File tree Expand file tree Collapse file tree 2 files changed +25
-2
lines changed Expand file tree Collapse file tree 2 files changed +25
-2
lines changed Original file line number Diff line number Diff line change @@ -738,12 +738,12 @@ extension RawSyntax {
738
738
if let leadingTrivia = leadingTrivia,
739
739
let idx = layout. firstIndex ( where: { $0 != nil } )
740
740
{
741
- layout [ idx] = layout [ idx] !. withLeadingTrivia ( leadingTrivia, arena: arena)
741
+ layout [ idx] = layout [ idx] !. withLeadingTrivia ( leadingTrivia + ( layout [ idx ] ? . formLeadingTrivia ( ) ?? [ ] ) , arena: arena)
742
742
}
743
743
if let trailingTrivia = trailingTrivia,
744
744
let idx = layout. lastIndex ( where: { $0 != nil } )
745
745
{
746
- layout [ idx] = layout [ idx] !. withTrailingTrivia ( trailingTrivia, arena: arena)
746
+ layout [ idx] = layout [ idx] !. withTrailingTrivia ( ( layout [ idx ] ? . formTrailingTrivia ( ) ?? [ ] ) + trailingTrivia, arena: arena)
747
747
}
748
748
return . makeLayout( kind: kind, from: layout, arena: arena)
749
749
}
Original file line number Diff line number Diff line change @@ -211,4 +211,27 @@ public class SyntaxCreationTests: XCTestCase {
211
211
XCTAssertEqual ( " \( exprList) " , " 1 \( operatorName) 1 " )
212
212
}
213
213
}
214
+
215
+ func testTriviaInInitializxerDoesNotOverrideFirstNode( ) {
216
+ let node = ExpressionPatternSyntax (
217
+ leadingTrivia: . lineComment( " // Outer leading " ) + . newline,
218
+ expression: IntegerLiteralExprSyntax (
219
+ leadingTrivia: . lineComment( " // Inner leading " ) + . newline,
220
+ digits: . integerLiteral( " 42 " ) ,
221
+ trailingTrivia: . newline + . lineComment( " // Inner trailing " )
222
+ ) ,
223
+ trailingTrivia: . newline + . lineComment( " // Outer trailing " )
224
+ )
225
+
226
+ XCTAssertEqual (
227
+ node. description,
228
+ """
229
+ // Outer leading
230
+ // Inner leading
231
+ 42
232
+ // Inner trailing
233
+ // Outer trailing
234
+ """
235
+ )
236
+ }
214
237
}
You can’t perform that action at this time.
0 commit comments