File tree Expand file tree Collapse file tree 2 files changed +27
-7
lines changed Expand file tree Collapse file tree 2 files changed +27
-7
lines changed Original file line number Diff line number Diff line change @@ -115,8 +115,6 @@ public func recursiveRedactedDescription(of value: Any) -> String {
115
115
return value. description
116
116
case let value as String :
117
117
return value. hashForLogging
118
- case let value as any CustomLogStringConvertible :
119
- return value. redactedDescription
120
118
case let value as any OptionalProtocol :
121
119
if let value = value. asOptional {
122
120
return recursiveRedactedDescription ( of: value)
@@ -129,11 +127,17 @@ public func recursiveRedactedDescription(of value: Any) -> String {
129
127
130
128
let children = Mirror ( reflecting: value) . children. sorted { $0. label ?? " " < $1. label ?? " " }
131
129
if !children. isEmpty {
132
- return " { "
133
- + children. map { ( label, value) -> String in
134
- " \( label ?? " <nil> " ) : \( recursiveRedactedDescription ( of: value) ) "
135
- } . joined ( separator: " , " )
136
- + " } "
130
+ let childrenKeyValuePairs = children. map { ( label, value) -> String in
131
+ let label = label ?? " <nil> "
132
+ let value =
133
+ if let value = value as? any CustomLogStringConvertible {
134
+ value. redactedDescription
135
+ } else {
136
+ recursiveRedactedDescription ( of: value)
137
+ }
138
+ return " \( label) : \( value) "
139
+ }
140
+ return " { " + childrenKeyValuePairs. joined ( separator: " , " ) + " } "
137
141
}
138
142
return " <private> "
139
143
}
Original file line number Diff line number Diff line change @@ -237,5 +237,21 @@ final class LoggingTests: XCTestCase {
237
237
recursiveRedactedDescription ( of: ( " abc " as String ? ) as Any ) ,
238
238
" MD5 digest: 900150983cd24fb0d6963f7d28e17f72 "
239
239
)
240
+
241
+ struct Something : CustomLogStringConvertible {
242
+ let x = 1
243
+ let y = " hi "
244
+
245
+ var redactedDescription : String {
246
+ recursiveRedactedDescription ( of: self )
247
+ }
248
+
249
+ var description : String { " " }
250
+ }
251
+
252
+ XCTAssertEqual (
253
+ Something ( ) . redactedDescription,
254
+ " {x: 1, y: MD5 digest: 49f68a5c8493ec2c0bf489821c21fc3b} "
255
+ )
240
256
}
241
257
}
You can’t perform that action at this time.
0 commit comments