@@ -177,120 +177,6 @@ private let dateFormatter: ISO8601DateFormatter = {
177177 return formatter
178178} ( )
179179
180- extension DispatchQueue : CustomDebugOutputConvertible {
181- #if os(Linux) || os(Android)
182- public var debugOutput : String {
183- switch self . label {
184- case " com.apple.main-thread " : return " DispatchQueue.main "
185- case " com.apple.root.default-qos " : return " DispatchQueue.global() "
186- case _ where self . label == " com.apple.root. \( self . qos. qosClass) -qos " :
187- return " DispatchQueue.global(qos: . \( self . qos. qosClass) ) "
188- default :
189- return " DispatchQueue(label: \( self . label. debugDescription) , qos: . \( self . qos. qosClass) ) "
190- }
191- }
192- #else
193- public var debugOutput : String {
194- switch ( self , self . label) {
195- case ( . main, _) : return " DispatchQueue.main "
196- case ( _, " com.apple.root.default-qos " ) : return " DispatchQueue.global() "
197- case ( _, _) where self . label == " com.apple.root. \( self . qos. qosClass) -qos " :
198- return " DispatchQueue.global(qos: . \( self . qos. qosClass) ) "
199- default :
200- return " DispatchQueue(label: \( self . label. debugDescription) , qos: . \( self . qos. qosClass) ) "
201- }
202- }
203- #endif
204- }
205-
206- extension Effect : CustomDebugOutputConvertible {
207- public var debugOutput : String {
208- var empty : Any ?
209- var just : Any ?
210- var mergeMany : [ Any ] = [ ]
211- var path : [ String ] = [ ]
212- var transform : Any ?
213-
214- func updatePath( _ value: Any ) {
215- let mirror = Mirror ( reflecting: value)
216- let subjectType = " \( mirror. subjectType) "
217-
218- // if subjectType.hasPrefix("Deferred<"), let value = value as? Invokable {
219- // updatePath(value())
220- // }
221- if subjectType. hasPrefix ( " Concatenate< " ) {
222- let prefix = mirror. children. first ( where: { label, _ in label == " prefix " } ) !. value
223- let suffix = mirror. children. first ( where: { label, _ in label == " suffix " } ) !. value
224- mergeMany. append ( contentsOf: [ prefix, suffix] )
225- return
226- }
227- if subjectType. hasPrefix ( " Delay< " ) {
228- let interval = mirror. children. first ( where: { label, _ in label == " interval " } ) !. value
229- let scheduler = mirror. children. first ( where: { label, _ in label == " scheduler " } ) !. value
230- let ns = Int ( " \( Mirror ( reflecting: interval) . children. first!. value) " ) !
231- path. append (
232- " \n .delay(for: \( Double ( ns) / Double( NSEC_PER_SEC) ) , scheduler: \( ComposableArchitecture . debugOutput ( scheduler) ) ) "
233- )
234- }
235- if subjectType. hasPrefix ( " Empty< " ) {
236- let completeImmediately = mirror. children. first ( where: { label, _ in
237- label == " completeImmediately "
238- } ) !. value
239- empty = completeImmediately
240- }
241- if subjectType. hasPrefix ( " Just< " ) {
242- just = mirror. children. first!. value
243- }
244- if subjectType. hasPrefix ( " Map< " ) {
245- transform = mirror. children. first ( where: { label, _ in label == " transform " } ) !. value
246- }
247- if subjectType. hasPrefix ( " MergeMany< " ) {
248- let publishers = mirror. children. first ( where: { label, _ in label == " publishers " } ) !. value
249- mergeMany. append ( contentsOf: Mirror ( reflecting: publishers) . children. map { $0. value } )
250- return
251- }
252- if subjectType. hasPrefix ( " ReceiveOn< " ) {
253- let scheduler = mirror. children. first ( where: { label, _ in label == " scheduler " } ) !. value
254- path. append ( " \n .receive(on: \( ComposableArchitecture . debugOutput ( scheduler) ) ) " )
255- }
256-
257- mirror. children. forEach { _, v in updatePath ( v) }
258- }
259-
260- updatePath ( self )
261-
262- guard mergeMany. isEmpty else {
263- return
264- ComposableArchitecture
265- . debugOutput ( mergeMany. filter { !ComposableArchitecture. debugOutput ( $0) . isEmpty } )
266- }
267- guard empty == nil else { return " " }
268-
269- if let value = just, let transform = transform {
270- let transform = withUnsafePointer ( to: transform) {
271- $0. withMemoryRebound ( to: ( ( Any) - > Value) . self, capacity: 1 , { $0. pointee } )
272- }
273- just = transform ( value)
274- }
275-
276- let operators = path. reversed ( ) . joined ( )
277- return """
278- \( type ( of: self ) ) ( \
279- \( just. map { " \n \( " value: \( ComposableArchitecture . debugOutput ( $0) ) " . indent ( by: 2 ) ) \n " } ?? " " ) \
280- ) \( operators. indent ( by: !operators. isEmpty && just == nil ? 2 : 0 ) )
281- """
282- }
283- }
284-
285- extension OperationQueue : CustomDebugOutputConvertible {
286- public var debugOutput : String {
287- switch ( self , self . name) {
288- case ( . main, _) : return " OperationQueue.main "
289- default : return " OperationQueue() "
290- }
291- }
292- }
293-
294180extension RunLoop : CustomDebugOutputConvertible {
295181 public var debugOutput : String {
296182 switch self {
0 commit comments