Skip to content

Commit 8550b40

Browse files
authored
Fixes #1005, trailing trivia preserved when replacing closures (#1006)
1 parent 37230a3 commit 8550b40

File tree

1 file changed

+21
-3
lines changed

1 file changed

+21
-3
lines changed

Sources/InlineSnapshotTesting/AssertInlineSnapshot.swift

Lines changed: 21 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -554,13 +554,25 @@ public struct InlineSnapshotSyntaxDescriptor: Hashable {
554554
case 0:
555555
if snapshot.wasRecording || functionCallExpr.trailingClosure == nil {
556556
functionCallExpr.rightParen?.trailingTrivia = .space
557+
let trailingClosureTrivia = functionCallExpr.trailingClosure?.trailingTrivia
557558
if let snapshotClosure {
558-
functionCallExpr.trailingClosure = snapshotClosure // FIXME: ?? multipleTrailingClosures.removeFirst()
559+
// FIXME: ?? multipleTrailingClosures.removeFirst()
560+
functionCallExpr.trailingClosure =
561+
if let trailingClosureTrivia, trailingClosureTrivia.count > 0 {
562+
snapshotClosure.with(\.trailingTrivia, snapshotClosure.trailingTrivia + trailingClosureTrivia)
563+
} else {
564+
snapshotClosure
565+
}
559566
} else if !functionCallExpr.additionalTrailingClosures.isEmpty {
560567
let additionalTrailingClosure = functionCallExpr.additionalTrailingClosures.remove(
561568
at: functionCallExpr.additionalTrailingClosures.startIndex
562569
)
563-
functionCallExpr.trailingClosure = additionalTrailingClosure.closure
570+
functionCallExpr.trailingClosure =
571+
if let trailingClosureTrivia, trailingClosureTrivia.count > 0 {
572+
additionalTrailingClosure.closure.with(\.trailingTrivia, additionalTrailingClosure.closure.trailingTrivia + trailingClosureTrivia)
573+
} else {
574+
additionalTrailingClosure.closure
575+
}
564576
} else {
565577
functionCallExpr.rightParen?.trailingTrivia = ""
566578
functionCallExpr.trailingClosure = nil
@@ -599,7 +611,13 @@ public struct InlineSnapshotSyntaxDescriptor: Hashable {
599611
if snapshot.wasRecording {
600612
if let snapshotClosure {
601613
functionCallExpr.additionalTrailingClosures[index].label = snapshotLabel
602-
functionCallExpr.additionalTrailingClosures[index].closure = snapshotClosure
614+
let trailingTrivia = functionCallExpr.additionalTrailingClosures[index].closure.trailingTrivia
615+
functionCallExpr.additionalTrailingClosures[index].closure =
616+
if trailingTrivia.count > 0 {
617+
snapshotClosure.with(\.trailingTrivia, snapshotClosure.trailingTrivia + trailingTrivia)
618+
} else {
619+
snapshotClosure
620+
}
603621
} else {
604622
functionCallExpr.additionalTrailingClosures.remove(at: index)
605623
}

0 commit comments

Comments
 (0)