diff --git a/Sources/OpenSwiftUICore/Data/Property/PropertyList.swift b/Sources/OpenSwiftUICore/Data/Property/PropertyList.swift index bc49dd88..b0e6554b 100644 --- a/Sources/OpenSwiftUICore/Data/Property/PropertyList.swift +++ b/Sources/OpenSwiftUICore/Data/Property/PropertyList.swift @@ -145,14 +145,14 @@ private func find( return nil } repeat { - guard keyFilter.match(element.flatMap(\.keyFilter)) else { + guard keyFilter.match(element.map(\.keyFilter)) else { return nil } if let before = element.map(\.before), let result = find(before, key: key, keyFilter: keyFilter) { return result } - if element.flatMap(\.keyType) == Key.self { + if element.map(\.keyType) == Key.self { return element.map { $0 as? TypedElement } } guard let after = element.map(\.after) else { diff --git a/Sources/OpenSwiftUICore/Data/Property/Unmanaged+Extension.swift b/Sources/OpenSwiftUICore/Data/Property/Unmanaged+Extension.swift deleted file mode 100644 index 1e80a99e..00000000 --- a/Sources/OpenSwiftUICore/Data/Property/Unmanaged+Extension.swift +++ /dev/null @@ -1,24 +0,0 @@ -// -// Unmanaged+Extension.swift -// OpenSwiftUI -// -// Audited for iOS 15.5 -// Status: Complete - -extension Unmanaged { - package func map(_ transform: (Instance) throws -> A) rethrows -> Unmanaged { - try _withUnsafeGuaranteedRef { try .passUnretained(transform($0)) } - } - - package func map(_ transform: (Instance) throws -> A?) rethrows -> Unmanaged? { - try _withUnsafeGuaranteedRef { try transform($0).map { .passUnretained($0) } } - } - - package func flatMap(_ transform: (Instance) throws -> A) rethrows -> A { - try _withUnsafeGuaranteedRef { try transform($0) } - } - - package static func == (lhs: Unmanaged, rhs: Unmanaged) -> Bool { - lhs.toOpaque() == rhs.toOpaque() - } -} diff --git a/Sources/OpenSwiftUICore/Extension/Unmanaged+Extension.swift b/Sources/OpenSwiftUICore/Extension/Unmanaged+Extension.swift new file mode 100644 index 00000000..7c414641 --- /dev/null +++ b/Sources/OpenSwiftUICore/Extension/Unmanaged+Extension.swift @@ -0,0 +1,31 @@ +// +// Unmanaged+Extension.swift +// OpenSwiftUICore +// +// Audited for iOS 18.0 +// Status: Complete + +extension Unmanaged { + @_transparent + package func map(_ transform: (Instance) -> T) -> T { + _withUnsafeGuaranteedRef { transform($0) } + } + + @_transparent + package func map(_ transform: (Instance) -> T) -> Unmanaged where T: AnyObject { + _withUnsafeGuaranteedRef { .passUnretained(transform($0)) } + } + + @_transparent + package func map(_ transform: (Instance) -> T?) -> Unmanaged? where T: AnyObject { + _withUnsafeGuaranteedRef { transform($0).map { .passUnretained($0) } } + } + + package static func == (lhs: Unmanaged, rhs: Unmanaged) -> Bool { + lhs.toOpaque() == rhs.toOpaque() + } + + package static func != (lhs: Unmanaged, rhs: Unmanaged) -> Bool { + lhs.toOpaque() != rhs.toOpaque() + } +}