Skip to content

Commit e7fc8a9

Browse files
authored
Merge pull request #1154 from ahoppen/ahoppen/dont-override-trivia
Prepend/append trivia passed to RawSyntax.makeLayout instead of overriding it
2 parents dc89ef5 + 5f2e102 commit e7fc8a9

File tree

2 files changed

+25
-2
lines changed

2 files changed

+25
-2
lines changed

Sources/SwiftSyntax/Raw/RawSyntax.swift

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -738,12 +738,12 @@ extension RawSyntax {
738738
if let leadingTrivia = leadingTrivia,
739739
let idx = layout.firstIndex(where: { $0 != nil })
740740
{
741-
layout[idx] = layout[idx]!.withLeadingTrivia(leadingTrivia, arena: arena)
741+
layout[idx] = layout[idx]!.withLeadingTrivia(leadingTrivia + (layout[idx]?.formLeadingTrivia() ?? []), arena: arena)
742742
}
743743
if let trailingTrivia = trailingTrivia,
744744
let idx = layout.lastIndex(where: { $0 != nil })
745745
{
746-
layout[idx] = layout[idx]!.withTrailingTrivia(trailingTrivia, arena: arena)
746+
layout[idx] = layout[idx]!.withTrailingTrivia((layout[idx]?.formTrailingTrivia() ?? []) + trailingTrivia, arena: arena)
747747
}
748748
return .makeLayout(kind: kind, from: layout, arena: arena)
749749
}

Tests/SwiftSyntaxTest/SyntaxCreationTests.swift

Lines changed: 23 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -211,4 +211,27 @@ public class SyntaxCreationTests: XCTestCase {
211211
XCTAssertEqual("\(exprList)", "1 \(operatorName) 1")
212212
}
213213
}
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+
}
214237
}

0 commit comments

Comments
 (0)