From 3771c88abc02ed159650f3ddfbed64ffd1c33ec7 Mon Sep 17 00:00:00 2001 From: Stephen Celis Date: Thu, 5 Oct 2023 22:58:18 -0700 Subject: [PATCH] Avoid additional trailing closure offset crash A MacroTesting bug report encountered an index crash: https://github.com/pointfreeco/swift-macro-testing/issues/6 Even when updating to `index(_:offsetBy:limitedBy:)`, the crash remained, so I've resorted to more explicit limiting math. This seems to fix the crash. --- .../AssertInlineSnapshot.swift | 18 +++++++++--------- 1 file changed, 9 insertions(+), 9 deletions(-) diff --git a/Sources/InlineSnapshotTesting/AssertInlineSnapshot.swift b/Sources/InlineSnapshotTesting/AssertInlineSnapshot.swift index 20bfbde63..4c9922b33 100644 --- a/Sources/InlineSnapshotTesting/AssertInlineSnapshot.swift +++ b/Sources/InlineSnapshotTesting/AssertInlineSnapshot.swift @@ -566,15 +566,15 @@ private final class SnapshotVisitor: SyntaxVisitor { } case 1...: - self.trailingClosureLine = - functionCallExpr.additionalTrailingClosures[ - functionCallExpr.additionalTrailingClosures.index( - functionCallExpr.additionalTrailingClosures.startIndex, - offsetBy: centeredTrailingClosureOffset - 1 - ) - ] - .startLocation(converter: self.sourceLocationConverter) - .line + let index = functionCallExpr.additionalTrailingClosures.index( + functionCallExpr.additionalTrailingClosures.startIndex, + offsetBy: centeredTrailingClosureOffset - 1 + ) + if centeredTrailingClosureOffset - 1 < functionCallExpr.additionalTrailingClosures.count { + self.trailingClosureLine = functionCallExpr.additionalTrailingClosures[index] + .startLocation(converter: self.sourceLocationConverter) + .line + } default: break }