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 @@ -714,12 +714,12 @@ extension RawSyntax {
714
714
if let leadingTrivia = leadingTrivia,
715
715
let idx = layout. firstIndex ( where: { $0 != nil } )
716
716
{
717
- layout [ idx] = layout [ idx] !. withLeadingTrivia ( leadingTrivia, arena: arena)
717
+ layout [ idx] = layout [ idx] !. withLeadingTrivia ( leadingTrivia + ( layout [ idx ] ? . formLeadingTrivia ( ) ?? [ ] ) , arena: arena)
718
718
}
719
719
if let trailingTrivia = trailingTrivia,
720
720
let idx = layout. lastIndex ( where: { $0 != nil } )
721
721
{
722
- layout [ idx] = layout [ idx] !. withTrailingTrivia ( trailingTrivia, arena: arena)
722
+ layout [ idx] = layout [ idx] !. withTrailingTrivia ( ( layout [ idx ] ? . formTrailingTrivia ( ) ?? [ ] ) + trailingTrivia, arena: arena)
723
723
}
724
724
return . makeLayout( kind: kind, from: layout, arena: arena)
725
725
}
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