Skip to content

Commit 5709b9e

Browse files
committed
Compute the prefix of orLog only when the closure threw an error
Probably not significant in practice but I noticed that we don’t need to compute the prefix of `orLog` unless the closure threw an error. Make `prefix` an autoclosure to avoid its eager computation.
1 parent c6ed68a commit 5709b9e

File tree

1 file changed

+4
-4
lines changed

1 file changed

+4
-4
lines changed

Sources/SKLogging/OrLog.swift

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -23,14 +23,14 @@ private func logError(prefix: String, error: Error, level: LogLevel = .error) {
2323

2424
/// Like `try?`, but logs the error on failure.
2525
package func orLog<R>(
26-
_ prefix: String,
26+
_ prefix: @autoclosure () -> String,
2727
level: LogLevel = .error,
2828
_ block: () throws -> R?
2929
) -> R? {
3030
do {
3131
return try block()
3232
} catch {
33-
logError(prefix: prefix, error: error, level: level)
33+
logError(prefix: prefix(), error: error, level: level)
3434
return nil
3535
}
3636
}
@@ -39,14 +39,14 @@ package func orLog<R>(
3939
///
4040
/// - SeeAlso: ``orLog(_:level:_:)-66i2z``
4141
package func orLog<R>(
42-
_ prefix: String,
42+
_ prefix: @autoclosure () -> String,
4343
level: LogLevel = .error,
4444
@_inheritActorContext _ block: @Sendable () async throws -> R?
4545
) async -> R? {
4646
do {
4747
return try await block()
4848
} catch {
49-
logError(prefix: prefix, error: error, level: level)
49+
logError(prefix: prefix(), error: error, level: level)
5050
return nil
5151
}
5252
}

0 commit comments

Comments
 (0)