From ec4761d0c6d2014c58270d5d48329db648b12097 Mon Sep 17 00:00:00 2001 From: Tony Parker Date: Wed, 17 Jan 2024 15:18:16 -0800 Subject: [PATCH] Use deployment target instead of 9999 for min OS version --- Package.swift | 11 ++- ...codingContainers+PredicateExpression.swift | 8 +- .../Archiving/ExpressionArchiving.swift | 14 +-- .../Archiving/Predicate+Codable.swift | 4 +- .../PredicateCodableConfiguration.swift | 8 +- .../Predicate/Expression.swift | 28 +++--- .../Predicate/Expressions/Aggregate.swift | 20 ++--- .../Predicate/Expressions/Arithmetic.swift | 10 +-- .../Predicate/Expressions/Collection.swift | 30 +++---- .../Predicate/Expressions/Comparison.swift | 10 +-- .../Predicate/Expressions/Conditional.swift | 10 +-- .../Predicate/Expressions/Conjunction.swift | 10 +-- .../Predicate/Expressions/Dictionary.swift | 20 ++--- .../Predicate/Expressions/Disjunction.swift | 10 +-- .../Predicate/Expressions/Division.swift | 26 +++--- .../Predicate/Expressions/Equality.swift | 10 +-- .../Predicate/Expressions/Filter.swift | 10 +-- .../Predicate/Expressions/Inequality.swift | 10 +-- .../Predicate/Expressions/Negation.swift | 10 +-- .../Predicate/Expressions/Optional.swift | 28 +++--- .../Expressions/PredicateEvaluation.swift | 14 +-- .../Predicate/Expressions/Range.swift | 30 +++---- .../Predicate/Expressions/Sequence.swift | 32 +++---- .../Expressions/StringComparison.swift | 10 +-- .../Predicate/Expressions/Types.swift | 26 +++--- .../Predicate/Expressions/UnaryMinus.swift | 10 +-- .../Predicate/NSPredicateConversion.swift | 2 +- .../Predicate/Predicate+Description.swift | 86 +++++++++---------- .../Predicate/Predicate.swift | 10 +-- .../Predicate/PredicateBindings.swift | 2 +- .../PredicateTests.swift | 4 +- 31 files changed, 258 insertions(+), 255 deletions(-) diff --git a/Package.swift b/Package.swift index a89e8a821..131709258 100644 --- a/Package.swift +++ b/Package.swift @@ -6,10 +6,13 @@ import CompilerPluginSupport // Availability Macros let availabilityMacros: [SwiftSetting] = [ - "FoundationPreview 0.1:macOS 9999, iOS 9999, tvOS 9999, watchOS 9999", - "FoundationPreview 0.2:macOS 9999, iOS 9999, tvOS 9999, watchOS 9999", - "FoundationPreview 0.3:macOS 9999, iOS 9999, tvOS 9999, watchOS 9999", - "FoundationPreview 0.4:macOS 9999, iOS 9999, tvOS 9999, watchOS 9999", + "FoundationPreview 0.1:macOS 13.3, iOS 16.4, tvOS 16.4, watchOS 9.4", + "FoundationPredicate 0.1:macOS 14, iOS 17, tvOS 17, watchOS 10", + "FoundationPreview 0.2:macOS 13.3, iOS 16.4, tvOS 16.4, watchOS 9.4", + "FoundationPreview 0.3:macOS 13.3, iOS 16.4, tvOS 16.4, watchOS 9.4", + "FoundationPredicate 0.3:macOS 14, iOS 17, tvOS 17, watchOS 10", + "FoundationPreview 0.4:macOS 13.3, iOS 16.4, tvOS 16.4, watchOS 9.4", + "FoundationPredicate 0.4:macOS 14, iOS 17, tvOS 17, watchOS 10", ].map { .enableExperimentalFeature("AvailabilityMacro=\($0)") } let package = Package( diff --git a/Sources/FoundationEssentials/Predicate/Archiving/EncodingContainers+PredicateExpression.swift b/Sources/FoundationEssentials/Predicate/Archiving/EncodingContainers+PredicateExpression.swift index ccd577b3e..e6095bfff 100644 --- a/Sources/FoundationEssentials/Predicate/Archiving/EncodingContainers+PredicateExpression.swift +++ b/Sources/FoundationEssentials/Predicate/Archiving/EncodingContainers+PredicateExpression.swift @@ -12,7 +12,7 @@ #if FOUNDATION_FRAMEWORK -@available(macOS 14, iOS 17, tvOS 17, watchOS 10, *) +@available(FoundationPredicate 0.1, *) extension KeyedEncodingContainer { public mutating func encodePredicateExpression(_ expression: T, forKey key: Self.Key, variable: repeat PredicateExpressions.Variable, predicateConfiguration: PredicateCodableConfiguration) throws where T.Output == Bool { var container = self.nestedContainer(keyedBy: PredicateExpressionCodingKeys.self, forKey: key) @@ -25,7 +25,7 @@ extension KeyedEncodingContainer { } } -@available(macOS 14, iOS 17, tvOS 17, watchOS 10, *) +@available(FoundationPredicate 0.1, *) extension KeyedDecodingContainer { public mutating func decodePredicateExpression(forKey key: Self.Key, input: repeat (each Input).Type, predicateConfiguration: PredicateCodableConfiguration) throws -> (expression: any PredicateExpression, variable: (repeat PredicateExpressions.Variable)) { var container = try self.nestedContainer(keyedBy: PredicateExpressionCodingKeys.self, forKey: key) @@ -38,7 +38,7 @@ extension KeyedDecodingContainer { } } -@available(macOS 14, iOS 17, tvOS 17, watchOS 10, *) +@available(FoundationPredicate 0.1, *) extension UnkeyedEncodingContainer { public mutating func encodePredicateExpression(_ expression: T, variable: repeat PredicateExpressions.Variable, predicateConfiguration: PredicateCodableConfiguration) throws where T.Output == Bool { var container = self.nestedContainer(keyedBy: PredicateExpressionCodingKeys.self) @@ -54,7 +54,7 @@ extension UnkeyedEncodingContainer { } } -@available(macOS 14, iOS 17, tvOS 17, watchOS 10, *) +@available(FoundationPredicate 0.1, *) extension UnkeyedDecodingContainer { public mutating func decodePredicateExpression(input: repeat (each Input).Type, predicateConfiguration: PredicateCodableConfiguration) throws -> (expression: any PredicateExpression, variable: (repeat PredicateExpressions.Variable)) { var container = try self.nestedContainer(keyedBy: PredicateExpressionCodingKeys.self) diff --git a/Sources/FoundationEssentials/Predicate/Archiving/ExpressionArchiving.swift b/Sources/FoundationEssentials/Predicate/Archiving/ExpressionArchiving.swift index eb8a48e0c..057b804ef 100644 --- a/Sources/FoundationEssentials/Predicate/Archiving/ExpressionArchiving.swift +++ b/Sources/FoundationEssentials/Predicate/Archiving/ExpressionArchiving.swift @@ -15,7 +15,7 @@ @_implementationOnly import ReflectionInternal -@available(macOS 14, iOS 17, tvOS 17, watchOS 10, *) +@available(FoundationPredicate 0.1, *) enum PredicateCodableError : Error, CustomStringConvertible { case disallowedType(typeName: String, path: String) case disallowedIdentifier(String, path: String) @@ -32,7 +32,7 @@ enum PredicateCodableError : Error, CustomStringConvertible { } } -@available(macOS 14, iOS 17, tvOS 17, watchOS 10, *) +@available(FoundationPredicate 0.1, *) private struct ExpressionStructure : Codable { let identifier: String let args: [ExpressionStructure] @@ -115,7 +115,7 @@ private struct ExpressionStructure : Codable { } } -@available(macOS 14, iOS 17, tvOS 17, watchOS 10, *) +@available(FoundationPredicate 0.1, *) class PredicateArchivingState { let configuration: PredicateCodableConfiguration @@ -136,7 +136,7 @@ class PredicateArchivingState { } } -@available(macOS 14, iOS 17, tvOS 17, watchOS 10, *) +@available(FoundationPredicate 0.1, *) extension _ThreadLocal.Key { static let predicateArchivingState = Self() } @@ -147,7 +147,7 @@ enum PredicateExpressionCodingKeys : CodingKey { case structure } -@available(macOS 14, iOS 17, tvOS 17, watchOS 10, *) +@available(FoundationPredicate 0.1, *) fileprivate extension PredicateCodableConfiguration { mutating func allowInputs(_ input: repeat (each Input).Type) { var inputTypes = [Any.Type]() @@ -158,7 +158,7 @@ fileprivate extension PredicateCodableConfiguration { } } -@available(macOS 14, iOS 17, tvOS 17, watchOS 10, *) +@available(FoundationPredicate 0.1, *) extension KeyedEncodingContainer where Key == PredicateExpressionCodingKeys { mutating func _encode(_ expression: T, variable: repeat PredicateExpressions.Variable, predicateConfiguration: PredicateCodableConfiguration) throws where T.Output == Bool { var predicateConfiguration = predicateConfiguration @@ -174,7 +174,7 @@ extension KeyedEncodingContainer where Key == PredicateExpressionCodingKeys { } } -@available(macOS 14, iOS 17, tvOS 17, watchOS 10, *) +@available(FoundationPredicate 0.1, *) extension KeyedDecodingContainer where Key == PredicateExpressionCodingKeys { mutating func _decode(input: repeat (each Input).Type, predicateConfiguration: PredicateCodableConfiguration) throws -> (expression: any PredicateExpression, variable: (repeat PredicateExpressions.Variable)) { var predicateConfiguration = predicateConfiguration diff --git a/Sources/FoundationEssentials/Predicate/Archiving/Predicate+Codable.swift b/Sources/FoundationEssentials/Predicate/Archiving/Predicate+Codable.swift index 3bd5caed1..fa26cb01b 100644 --- a/Sources/FoundationEssentials/Predicate/Archiving/Predicate+Codable.swift +++ b/Sources/FoundationEssentials/Predicate/Archiving/Predicate+Codable.swift @@ -12,7 +12,7 @@ #if FOUNDATION_FRAMEWORK -@available(macOS 14, iOS 17, tvOS 17, watchOS 10, *) +@available(FoundationPredicate 0.1, *) extension Predicate : Codable { public func encode(to encoder: Encoder) throws { try self.encode(to: encoder, configuration: .standardConfiguration) @@ -23,7 +23,7 @@ extension Predicate : Codable { } } -@available(macOS 14, iOS 17, tvOS 17, watchOS 10, *) +@available(FoundationPredicate 0.1, *) extension Predicate : CodableWithConfiguration { public typealias EncodingConfiguration = PredicateCodableConfiguration public typealias DecodingConfiguration = PredicateCodableConfiguration diff --git a/Sources/FoundationEssentials/Predicate/Archiving/PredicateCodableConfiguration.swift b/Sources/FoundationEssentials/Predicate/Archiving/PredicateCodableConfiguration.swift index 6f918aa5a..296777e54 100644 --- a/Sources/FoundationEssentials/Predicate/Archiving/PredicateCodableConfiguration.swift +++ b/Sources/FoundationEssentials/Predicate/Archiving/PredicateCodableConfiguration.swift @@ -16,12 +16,12 @@ @_implementationOnly import ReflectionInternal -@available(macOS 14, iOS 17, tvOS 17, watchOS 10, *) +@available(FoundationPredicate 0.1, *) public protocol PredicateCodableKeyPathProviding { static var predicateCodableKeyPaths : [String : PartialKeyPath] { get } } -@available(macOS 14, iOS 17, tvOS 17, watchOS 10, *) +@available(FoundationPredicate 0.1, *) public struct PredicateCodableConfiguration: Sendable, CustomDebugStringConvertible { enum AllowListType : Equatable, Sendable { case concrete(Type) @@ -257,7 +257,7 @@ public struct PredicateCodableConfiguration: Sendable, CustomDebugStringConverti } } -@available(macOS 14, iOS 17, tvOS 17, watchOS 10, *) +@available(FoundationPredicate 0.1, *) extension PredicateCodableConfiguration { func _identifier(for keyPath: AnyKeyPath) -> String? { let concreteIdentifier = allowedKeyPaths.first { @@ -331,7 +331,7 @@ extension PredicateCodableConfiguration { } } -@available(macOS 14, iOS 17, tvOS 17, watchOS 10, *) +@available(FoundationPredicate 0.1, *) extension PredicateCodableConfiguration { public static let standardConfiguration: Self = { var configuration = Self() diff --git a/Sources/FoundationEssentials/Predicate/Expression.swift b/Sources/FoundationEssentials/Predicate/Expression.swift index 550647b7c..b0e7d79dd 100644 --- a/Sources/FoundationEssentials/Predicate/Expression.swift +++ b/Sources/FoundationEssentials/Predicate/Expression.swift @@ -10,7 +10,7 @@ // //===----------------------------------------------------------------------===// -@available(macOS 14, iOS 17, tvOS 17, watchOS 10, *) +@available(FoundationPredicate 0.1, *) public protocol PredicateExpression { associatedtype Output @@ -18,10 +18,10 @@ public protocol PredicateExpression { } // Only Foundation should add conformances to this protocol -@available(macOS 14, iOS 17, tvOS 17, watchOS 10, *) +@available(FoundationPredicate 0.1, *) public protocol StandardPredicateExpression : PredicateExpression, Codable, Sendable {} -@available(macOS 14, iOS 17, tvOS 17, watchOS 10, *) +@available(FoundationPredicate 0.1, *) public struct PredicateError: Error, Hashable, CustomDebugStringConvertible { internal enum _Error: Hashable, Sendable { case undefinedVariable @@ -77,7 +77,7 @@ public struct PredicateError: Error, Hashable, CustomDebugStringConvertible { public static let invalidInput = Self(.invalidInput(nil)) } -@available(macOS 14, iOS 17, tvOS 17, watchOS 10, *) +@available(FoundationPredicate 0.1, *) extension PredicateExpressions { public struct VariableID: Hashable, Codable, Sendable { let id: UInt @@ -166,7 +166,7 @@ extension PredicateExpressions { } -@available(macOS 14, iOS 17, tvOS 17, watchOS 10, *) +@available(FoundationPredicate 0.1, *) extension PredicateExpressions.KeyPath : Codable where Root : Codable { private enum CodingKeys : CodingKey { case root @@ -203,20 +203,20 @@ extension PredicateExpressions.KeyPath : Codable where Root : Codable { #endif // FOUNDATION_FRAMEWORK } } -@available(macOS 14, iOS 17, tvOS 17, watchOS 10, *) +@available(FoundationPredicate 0.1, *) extension PredicateExpressions.KeyPath : Sendable where Root : Sendable {} -@available(macOS 14, iOS 17, tvOS 17, watchOS 10, *) +@available(FoundationPredicate 0.1, *) extension PredicateExpressions.KeyPath : StandardPredicateExpression where Root : StandardPredicateExpression {} -@available(FoundationPreview 0.3, *) +@available(FoundationPredicate 0.3, *) extension PredicateExpressions.KeyPath : CustomStringConvertible { public var description: String { "KeyPath(root: \(root), keyPath: \(keyPath.debugDescription))" } } -@available(macOS 14, iOS 17, tvOS 17, watchOS 10, *) +@available(FoundationPredicate 0.1, *) extension PredicateExpressions.Value : Codable where Output : Codable { public func encode(to encoder: Encoder) throws { var container = encoder.singleValueContainer() @@ -229,13 +229,13 @@ extension PredicateExpressions.Value : Codable where Output : Codable { } } -@available(macOS 14, iOS 17, tvOS 17, watchOS 10, *) +@available(FoundationPredicate 0.1, *) extension PredicateExpressions.Value : Sendable where Output : Sendable {} -@available(macOS 14, iOS 17, tvOS 17, watchOS 10, *) +@available(FoundationPredicate 0.1, *) extension PredicateExpressions.Value : StandardPredicateExpression where Output : Codable /*, Output : Sendable*/ {} -@available(FoundationPreview 0.3, *) +@available(FoundationPredicate 0.3, *) extension PredicateExpressions.Value : CustomStringConvertible { public var description: String { var result = "Value<\(_typeName(Output.self))>(" @@ -244,14 +244,14 @@ extension PredicateExpressions.Value : CustomStringConvertible { } } -@available(FoundationPreview 0.3, *) +@available(FoundationPredicate 0.3, *) extension PredicateExpressions.Variable : CustomStringConvertible { public var description: String { "Variable(\(key.id))" } } -@available(macOS 14, iOS 17, tvOS 17, watchOS 10, *) +@available(FoundationPredicate 0.1, *) extension PredicateExpressions.KeyPath { public enum CommonKeyPathKind : Hashable, Sendable { case collectionCount diff --git a/Sources/FoundationEssentials/Predicate/Expressions/Aggregate.swift b/Sources/FoundationEssentials/Predicate/Expressions/Aggregate.swift index 175090b85..e94bbd013 100644 --- a/Sources/FoundationEssentials/Predicate/Expressions/Aggregate.swift +++ b/Sources/FoundationEssentials/Predicate/Expressions/Aggregate.swift @@ -10,7 +10,7 @@ // //===----------------------------------------------------------------------===// -@available(macOS 14, iOS 17, tvOS 17, watchOS 10, *) +@available(FoundationPredicate 0.1, *) extension PredicateExpressions { public struct SequenceMaximum< Elements : PredicateExpression @@ -36,23 +36,23 @@ extension PredicateExpressions { } } -@available(macOS 14, iOS 17, tvOS 17, watchOS 10, *) +@available(FoundationPredicate 0.1, *) extension PredicateExpressions.SequenceMaximum : StandardPredicateExpression where Elements : StandardPredicateExpression {} -@available(FoundationPreview 0.3, *) +@available(FoundationPredicate 0.3, *) extension PredicateExpressions.SequenceMaximum : CustomStringConvertible { public var description: String { "SequenceMaximum(elements: \(elements))" } } -@available(macOS 14, iOS 17, tvOS 17, watchOS 10, *) +@available(FoundationPredicate 0.1, *) extension PredicateExpressions.SequenceMaximum : Codable where Elements : Codable {} -@available(macOS 14, iOS 17, tvOS 17, watchOS 10, *) +@available(FoundationPredicate 0.1, *) extension PredicateExpressions.SequenceMaximum : Sendable where Elements : Sendable {} -@available(macOS 14, iOS 17, tvOS 17, watchOS 10, *) +@available(FoundationPredicate 0.1, *) extension PredicateExpressions { public struct SequenceMinimum< Elements : PredicateExpression @@ -78,18 +78,18 @@ extension PredicateExpressions { } } -@available(macOS 14, iOS 17, tvOS 17, watchOS 10, *) +@available(FoundationPredicate 0.1, *) extension PredicateExpressions.SequenceMinimum : StandardPredicateExpression where Elements : StandardPredicateExpression {} -@available(FoundationPreview 0.3, *) +@available(FoundationPredicate 0.3, *) extension PredicateExpressions.SequenceMinimum : CustomStringConvertible { public var description: String { "SequenceMinimum(elements: \(elements))" } } -@available(macOS 14, iOS 17, tvOS 17, watchOS 10, *) +@available(FoundationPredicate 0.1, *) extension PredicateExpressions.SequenceMinimum : Codable where Elements : Codable {} -@available(macOS 14, iOS 17, tvOS 17, watchOS 10, *) +@available(FoundationPredicate 0.1, *) extension PredicateExpressions.SequenceMinimum : Sendable where Elements : Sendable {} diff --git a/Sources/FoundationEssentials/Predicate/Expressions/Arithmetic.swift b/Sources/FoundationEssentials/Predicate/Expressions/Arithmetic.swift index bb18d6ddc..efec7e0c9 100644 --- a/Sources/FoundationEssentials/Predicate/Expressions/Arithmetic.swift +++ b/Sources/FoundationEssentials/Predicate/Expressions/Arithmetic.swift @@ -10,7 +10,7 @@ // //===----------------------------------------------------------------------===// -@available(macOS 14, iOS 17, tvOS 17, watchOS 10, *) +@available(FoundationPredicate 0.1, *) extension PredicateExpressions { public enum ArithmeticOperator: Codable, Sendable { case add, subtract, multiply @@ -53,17 +53,17 @@ extension PredicateExpressions { } } -@available(macOS 14, iOS 17, tvOS 17, watchOS 10, *) +@available(FoundationPredicate 0.1, *) extension PredicateExpressions.Arithmetic : StandardPredicateExpression where LHS : StandardPredicateExpression, RHS : StandardPredicateExpression {} -@available(FoundationPreview 0.3, *) +@available(FoundationPredicate 0.3, *) extension PredicateExpressions.Arithmetic : CustomStringConvertible { public var description: String { "Arithmetic(lhs: \(lhs), operator: \(op), rhs: \(rhs))" } } -@available(macOS 14, iOS 17, tvOS 17, watchOS 10, *) +@available(FoundationPredicate 0.1, *) extension PredicateExpressions.Arithmetic : Codable where LHS : Codable, RHS : Codable { public func encode(to encoder: Encoder) throws { var container = encoder.unkeyedContainer() @@ -80,5 +80,5 @@ extension PredicateExpressions.Arithmetic : Codable where LHS : Codable, RHS : C } } -@available(macOS 14, iOS 17, tvOS 17, watchOS 10, *) +@available(FoundationPredicate 0.1, *) extension PredicateExpressions.Arithmetic : Sendable where LHS : Sendable, RHS : Sendable {} diff --git a/Sources/FoundationEssentials/Predicate/Expressions/Collection.swift b/Sources/FoundationEssentials/Predicate/Expressions/Collection.swift index 6b732dd2b..7028f4b08 100644 --- a/Sources/FoundationEssentials/Predicate/Expressions/Collection.swift +++ b/Sources/FoundationEssentials/Predicate/Expressions/Collection.swift @@ -10,7 +10,7 @@ // //===----------------------------------------------------------------------===// -@available(macOS 14, iOS 17, tvOS 17, watchOS 10, *) +@available(FoundationPredicate 0.1, *) extension PredicateExpressions { public struct CollectionIndexSubscript< Wrapped : PredicateExpression, @@ -45,17 +45,17 @@ extension PredicateExpressions { } } -@available(macOS 14, iOS 17, tvOS 17, watchOS 10, *) +@available(FoundationPredicate 0.1, *) extension PredicateExpressions.CollectionIndexSubscript : Sendable where Wrapped : Sendable, Index : Sendable {} -@available(FoundationPreview 0.3, *) +@available(FoundationPredicate 0.3, *) extension PredicateExpressions.CollectionIndexSubscript : CustomStringConvertible { public var description: String { "CollectionIndexSubscript(wrapped: \(wrapped), index: \(index))" } } -@available(macOS 14, iOS 17, tvOS 17, watchOS 10, *) +@available(FoundationPredicate 0.1, *) extension PredicateExpressions.CollectionIndexSubscript : Codable where Wrapped : Codable, Index : Codable { public func encode(to encoder: Encoder) throws { var container = encoder.unkeyedContainer() @@ -70,10 +70,10 @@ extension PredicateExpressions.CollectionIndexSubscript : Codable where Wrapped } } -@available(macOS 14, iOS 17, tvOS 17, watchOS 10, *) +@available(FoundationPredicate 0.1, *) extension PredicateExpressions.CollectionIndexSubscript : StandardPredicateExpression where Wrapped : StandardPredicateExpression, Index : StandardPredicateExpression {} -@available(macOS 14, iOS 17, tvOS 17, watchOS 10, *) +@available(FoundationPredicate 0.1, *) extension PredicateExpressions { public struct CollectionRangeSubscript< Wrapped : PredicateExpression, @@ -113,17 +113,17 @@ extension PredicateExpressions { } } -@available(FoundationPreview 0.3, *) +@available(FoundationPredicate 0.3, *) extension PredicateExpressions.CollectionRangeSubscript : CustomStringConvertible { public var description: String { "CollectionRangeSubscript(wrapped: \(wrapped), range: \(range))" } } -@available(macOS 14, iOS 17, tvOS 17, watchOS 10, *) +@available(FoundationPredicate 0.1, *) extension PredicateExpressions.CollectionRangeSubscript : Sendable where Wrapped : Sendable, Range : Sendable {} -@available(macOS 14, iOS 17, tvOS 17, watchOS 10, *) +@available(FoundationPredicate 0.1, *) extension PredicateExpressions.CollectionRangeSubscript : Codable where Wrapped : Codable, Range : Codable { public func encode(to encoder: Encoder) throws { var container = encoder.unkeyedContainer() @@ -138,10 +138,10 @@ extension PredicateExpressions.CollectionRangeSubscript : Codable where Wrapped } } -@available(macOS 14, iOS 17, tvOS 17, watchOS 10, *) +@available(FoundationPredicate 0.1, *) extension PredicateExpressions.CollectionRangeSubscript : StandardPredicateExpression where Wrapped : StandardPredicateExpression, Range : StandardPredicateExpression {} -@available(macOS 14, iOS 17, tvOS 17, watchOS 10, *) +@available(FoundationPredicate 0.1, *) extension PredicateExpressions { public struct CollectionContainsCollection< Base : PredicateExpression, @@ -174,17 +174,17 @@ extension PredicateExpressions { } } -@available(FoundationPreview 0.3, *) +@available(FoundationPredicate 0.3, *) extension PredicateExpressions.CollectionContainsCollection : CustomStringConvertible { public var description: String { "CollectionContainsCollection(base: \(base), other: \(other))" } } -@available(macOS 14, iOS 17, tvOS 17, watchOS 10, *) +@available(FoundationPredicate 0.1, *) extension PredicateExpressions.CollectionContainsCollection : Sendable where Base : Sendable, Other : Sendable {} -@available(macOS 14, iOS 17, tvOS 17, watchOS 10, *) +@available(FoundationPredicate 0.1, *) extension PredicateExpressions.CollectionContainsCollection : Codable where Base : Codable, Other : Codable { public func encode(to encoder: Encoder) throws { var container = encoder.unkeyedContainer() @@ -199,5 +199,5 @@ extension PredicateExpressions.CollectionContainsCollection : Codable where Base } } -@available(macOS 14, iOS 17, tvOS 17, watchOS 10, *) +@available(FoundationPredicate 0.1, *) extension PredicateExpressions.CollectionContainsCollection : StandardPredicateExpression where Base : StandardPredicateExpression, Other : StandardPredicateExpression {} diff --git a/Sources/FoundationEssentials/Predicate/Expressions/Comparison.swift b/Sources/FoundationEssentials/Predicate/Expressions/Comparison.swift index f958c0a7f..42dda257e 100644 --- a/Sources/FoundationEssentials/Predicate/Expressions/Comparison.swift +++ b/Sources/FoundationEssentials/Predicate/Expressions/Comparison.swift @@ -10,7 +10,7 @@ // //===----------------------------------------------------------------------===// -@available(macOS 14, iOS 17, tvOS 17, watchOS 10, *) +@available(FoundationPredicate 0.1, *) extension PredicateExpressions { public enum ComparisonOperator: Codable, Sendable { case lessThan, lessThanOrEqual, greaterThan, greaterThanOrEqual @@ -54,17 +54,17 @@ extension PredicateExpressions { } } -@available(FoundationPreview 0.3, *) +@available(FoundationPredicate 0.3, *) extension PredicateExpressions.Comparison : CustomStringConvertible { public var description: String { "Comparison(lhs: \(lhs), operator: \(op), rhs: \(rhs))" } } -@available(macOS 14, iOS 17, tvOS 17, watchOS 10, *) +@available(FoundationPredicate 0.1, *) extension PredicateExpressions.Comparison : StandardPredicateExpression where LHS : StandardPredicateExpression, RHS : StandardPredicateExpression {} -@available(macOS 14, iOS 17, tvOS 17, watchOS 10, *) +@available(FoundationPredicate 0.1, *) extension PredicateExpressions.Comparison : Codable where LHS : Codable, RHS : Codable { public func encode(to encoder: Encoder) throws { var container = encoder.unkeyedContainer() @@ -81,5 +81,5 @@ extension PredicateExpressions.Comparison : Codable where LHS : Codable, RHS : C } } -@available(macOS 14, iOS 17, tvOS 17, watchOS 10, *) +@available(FoundationPredicate 0.1, *) extension PredicateExpressions.Comparison : Sendable where LHS : Sendable, RHS : Sendable {} diff --git a/Sources/FoundationEssentials/Predicate/Expressions/Conditional.swift b/Sources/FoundationEssentials/Predicate/Expressions/Conditional.swift index 4281c7b39..3afb13d83 100644 --- a/Sources/FoundationEssentials/Predicate/Expressions/Conditional.swift +++ b/Sources/FoundationEssentials/Predicate/Expressions/Conditional.swift @@ -10,7 +10,7 @@ // //===----------------------------------------------------------------------===// -@available(macOS 14, iOS 17, tvOS 17, watchOS 10, *) +@available(FoundationPredicate 0.1, *) extension PredicateExpressions { public struct Conditional< Test : PredicateExpression, @@ -48,17 +48,17 @@ extension PredicateExpressions { } } -@available(FoundationPreview 0.3, *) +@available(FoundationPredicate 0.3, *) extension PredicateExpressions.Conditional : CustomStringConvertible { public var description: String { "Conditional(test: \(test), trueBranch: \(trueBranch), falseBranch: \(falseBranch))" } } -@available(macOS 14, iOS 17, tvOS 17, watchOS 10, *) +@available(FoundationPredicate 0.1, *) extension PredicateExpressions.Conditional : StandardPredicateExpression where Test : StandardPredicateExpression, If : StandardPredicateExpression, Else : StandardPredicateExpression {} -@available(macOS 14, iOS 17, tvOS 17, watchOS 10, *) +@available(FoundationPredicate 0.1, *) extension PredicateExpressions.Conditional : Codable where Test : Codable, If : Codable, Else : Codable { public func encode(to encoder: Encoder) throws { var container = encoder.unkeyedContainer() @@ -75,5 +75,5 @@ extension PredicateExpressions.Conditional : Codable where Test : Codable, If : } } -@available(macOS 14, iOS 17, tvOS 17, watchOS 10, *) +@available(FoundationPredicate 0.1, *) extension PredicateExpressions.Conditional : Sendable where Test : Sendable, If : Sendable, Else : Sendable {} diff --git a/Sources/FoundationEssentials/Predicate/Expressions/Conjunction.swift b/Sources/FoundationEssentials/Predicate/Expressions/Conjunction.swift index 139dae779..fef01e8d0 100644 --- a/Sources/FoundationEssentials/Predicate/Expressions/Conjunction.swift +++ b/Sources/FoundationEssentials/Predicate/Expressions/Conjunction.swift @@ -10,7 +10,7 @@ // //===----------------------------------------------------------------------===// -@available(macOS 14, iOS 17, tvOS 17, watchOS 10, *) +@available(FoundationPredicate 0.1, *) extension PredicateExpressions { public struct Conjunction< LHS : PredicateExpression, @@ -40,17 +40,17 @@ extension PredicateExpressions { } } -@available(FoundationPreview 0.3, *) +@available(FoundationPredicate 0.3, *) extension PredicateExpressions.Conjunction : CustomStringConvertible { public var description: String { "Conjunction(lhs: \(lhs), rhs: \(rhs))" } } -@available(macOS 14, iOS 17, tvOS 17, watchOS 10, *) +@available(FoundationPredicate 0.1, *) extension PredicateExpressions.Conjunction : StandardPredicateExpression where LHS : StandardPredicateExpression, RHS : StandardPredicateExpression {} -@available(macOS 14, iOS 17, tvOS 17, watchOS 10, *) +@available(FoundationPredicate 0.1, *) extension PredicateExpressions.Conjunction : Codable where LHS : Codable, RHS : Codable { public func encode(to encoder: Encoder) throws { var container = encoder.unkeyedContainer() @@ -65,5 +65,5 @@ extension PredicateExpressions.Conjunction : Codable where LHS : Codable, RHS : } } -@available(macOS 14, iOS 17, tvOS 17, watchOS 10, *) +@available(FoundationPredicate 0.1, *) extension PredicateExpressions.Conjunction : Sendable where LHS : Sendable, RHS : Sendable {} diff --git a/Sources/FoundationEssentials/Predicate/Expressions/Dictionary.swift b/Sources/FoundationEssentials/Predicate/Expressions/Dictionary.swift index d3e501c2a..f4104f495 100644 --- a/Sources/FoundationEssentials/Predicate/Expressions/Dictionary.swift +++ b/Sources/FoundationEssentials/Predicate/Expressions/Dictionary.swift @@ -10,7 +10,7 @@ // //===----------------------------------------------------------------------===// -@available(macOS 14, iOS 17, tvOS 17, watchOS 10, *) +@available(FoundationPredicate 0.1, *) extension PredicateExpressions { public struct DictionaryKeySubscript< Wrapped : PredicateExpression, @@ -40,17 +40,17 @@ extension PredicateExpressions { } } -@available(FoundationPreview 0.3, *) +@available(FoundationPredicate 0.3, *) extension PredicateExpressions.DictionaryKeySubscript : CustomStringConvertible { public var description: String { "DictionaryKeySubscript(wrapped: \(wrapped), key: \(key))" } } -@available(macOS 14, iOS 17, tvOS 17, watchOS 10, *) +@available(FoundationPredicate 0.1, *) extension PredicateExpressions.DictionaryKeySubscript : Sendable where Wrapped : Sendable, Key : Sendable {} -@available(macOS 14, iOS 17, tvOS 17, watchOS 10, *) +@available(FoundationPredicate 0.1, *) extension PredicateExpressions.DictionaryKeySubscript : Codable where Wrapped : Codable, Key : Codable { public func encode(to encoder: Encoder) throws { var container = encoder.unkeyedContainer() @@ -65,10 +65,10 @@ extension PredicateExpressions.DictionaryKeySubscript : Codable where Wrapped : } } -@available(macOS 14, iOS 17, tvOS 17, watchOS 10, *) +@available(FoundationPredicate 0.1, *) extension PredicateExpressions.DictionaryKeySubscript : StandardPredicateExpression where Wrapped : StandardPredicateExpression, Key : StandardPredicateExpression {} -@available(macOS 14, iOS 17, tvOS 17, watchOS 10, *) +@available(FoundationPredicate 0.1, *) extension PredicateExpressions { public struct DictionaryKeyDefaultValueSubscript< Wrapped : PredicateExpression, @@ -103,17 +103,17 @@ extension PredicateExpressions { } } -@available(FoundationPreview 0.3, *) +@available(FoundationPredicate 0.3, *) extension PredicateExpressions.DictionaryKeyDefaultValueSubscript : CustomStringConvertible { public var description: String { "DictionaryKeyDefaultValueSubscript(wrapped: \(wrapped), key: \(key), defaultValue: \(`default`))" } } -@available(macOS 14, iOS 17, tvOS 17, watchOS 10, *) +@available(FoundationPredicate 0.1, *) extension PredicateExpressions.DictionaryKeyDefaultValueSubscript : Sendable where Wrapped : Sendable, Key : Sendable, Default : Sendable {} -@available(macOS 14, iOS 17, tvOS 17, watchOS 10, *) +@available(FoundationPredicate 0.1, *) extension PredicateExpressions.DictionaryKeyDefaultValueSubscript : Codable where Wrapped : Codable, Key : Codable, Default : Codable { public func encode(to encoder: Encoder) throws { var container = encoder.unkeyedContainer() @@ -130,5 +130,5 @@ extension PredicateExpressions.DictionaryKeyDefaultValueSubscript : Codable wher } } -@available(macOS 14, iOS 17, tvOS 17, watchOS 10, *) +@available(FoundationPredicate 0.1, *) extension PredicateExpressions.DictionaryKeyDefaultValueSubscript : StandardPredicateExpression where Wrapped : StandardPredicateExpression, Key : StandardPredicateExpression, Default : StandardPredicateExpression {} diff --git a/Sources/FoundationEssentials/Predicate/Expressions/Disjunction.swift b/Sources/FoundationEssentials/Predicate/Expressions/Disjunction.swift index a6ba12e82..96c9829c2 100644 --- a/Sources/FoundationEssentials/Predicate/Expressions/Disjunction.swift +++ b/Sources/FoundationEssentials/Predicate/Expressions/Disjunction.swift @@ -10,7 +10,7 @@ // //===----------------------------------------------------------------------===// -@available(macOS 14, iOS 17, tvOS 17, watchOS 10, *) +@available(FoundationPredicate 0.1, *) extension PredicateExpressions { public struct Disjunction< LHS : PredicateExpression, @@ -40,17 +40,17 @@ extension PredicateExpressions { } } -@available(FoundationPreview 0.3, *) +@available(FoundationPredicate 0.3, *) extension PredicateExpressions.Disjunction : CustomStringConvertible { public var description: String { "Disjunction(lhs: \(lhs), rhs: \(rhs))" } } -@available(macOS 14, iOS 17, tvOS 17, watchOS 10, *) +@available(FoundationPredicate 0.1, *) extension PredicateExpressions.Disjunction : StandardPredicateExpression where LHS : StandardPredicateExpression, RHS : StandardPredicateExpression {} -@available(macOS 14, iOS 17, tvOS 17, watchOS 10, *) +@available(FoundationPredicate 0.1, *) extension PredicateExpressions.Disjunction : Codable where LHS : Codable, RHS : Codable { public func encode(to encoder: Encoder) throws { var container = encoder.unkeyedContainer() @@ -65,5 +65,5 @@ extension PredicateExpressions.Disjunction : Codable where LHS : Codable, RHS : } } -@available(macOS 14, iOS 17, tvOS 17, watchOS 10, *) +@available(FoundationPredicate 0.1, *) extension PredicateExpressions.Disjunction : Sendable where LHS : Sendable, RHS : Sendable {} diff --git a/Sources/FoundationEssentials/Predicate/Expressions/Division.swift b/Sources/FoundationEssentials/Predicate/Expressions/Division.swift index 4322b40af..d082902e3 100644 --- a/Sources/FoundationEssentials/Predicate/Expressions/Division.swift +++ b/Sources/FoundationEssentials/Predicate/Expressions/Division.swift @@ -10,7 +10,7 @@ // //===----------------------------------------------------------------------===// -@available(macOS 14, iOS 17, tvOS 17, watchOS 10, *) +@available(FoundationPredicate 0.1, *) extension PredicateExpressions { public struct IntDivision< LHS : PredicateExpression, @@ -100,37 +100,37 @@ extension PredicateExpressions { } } -@available(FoundationPreview 0.3, *) +@available(FoundationPredicate 0.3, *) extension PredicateExpressions.FloatDivision : CustomStringConvertible { public var description: String { "FloatDivision(lhs: \(lhs), rhs: \(rhs))" } } -@available(FoundationPreview 0.3, *) +@available(FoundationPredicate 0.3, *) extension PredicateExpressions.IntDivision : CustomStringConvertible { public var description: String { "IntDivision(lhs: \(lhs), rhs: \(rhs))" } } -@available(FoundationPreview 0.3, *) +@available(FoundationPredicate 0.3, *) extension PredicateExpressions.IntRemainder : CustomStringConvertible { public var description: String { "IntRemainder(lhs: \(lhs), rhs: \(rhs))" } } -@available(macOS 14, iOS 17, tvOS 17, watchOS 10, *) +@available(FoundationPredicate 0.1, *) extension PredicateExpressions.FloatDivision : StandardPredicateExpression where LHS : StandardPredicateExpression, RHS : StandardPredicateExpression {} -@available(macOS 14, iOS 17, tvOS 17, watchOS 10, *) +@available(FoundationPredicate 0.1, *) extension PredicateExpressions.IntRemainder : StandardPredicateExpression where LHS : StandardPredicateExpression, RHS : StandardPredicateExpression {} -@available(macOS 14, iOS 17, tvOS 17, watchOS 10, *) +@available(FoundationPredicate 0.1, *) extension PredicateExpressions.IntDivision : StandardPredicateExpression where LHS : StandardPredicateExpression, RHS : StandardPredicateExpression {} -@available(macOS 14, iOS 17, tvOS 17, watchOS 10, *) +@available(FoundationPredicate 0.1, *) extension PredicateExpressions.FloatDivision : Codable where LHS : Codable, RHS : Codable { public func encode(to encoder: Encoder) throws { var container = encoder.unkeyedContainer() @@ -145,7 +145,7 @@ extension PredicateExpressions.FloatDivision : Codable where LHS : Codable, RHS } } -@available(macOS 14, iOS 17, tvOS 17, watchOS 10, *) +@available(FoundationPredicate 0.1, *) extension PredicateExpressions.IntRemainder : Codable where LHS : Codable, RHS : Codable { public func encode(to encoder: Encoder) throws { var container = encoder.unkeyedContainer() @@ -160,7 +160,7 @@ extension PredicateExpressions.IntRemainder : Codable where LHS : Codable, RHS : } } -@available(macOS 14, iOS 17, tvOS 17, watchOS 10, *) +@available(FoundationPredicate 0.1, *) extension PredicateExpressions.IntDivision : Codable where LHS : Codable, RHS : Codable { public func encode(to encoder: Encoder) throws { var container = encoder.unkeyedContainer() @@ -175,11 +175,11 @@ extension PredicateExpressions.IntDivision : Codable where LHS : Codable, RHS : } } -@available(macOS 14, iOS 17, tvOS 17, watchOS 10, *) +@available(FoundationPredicate 0.1, *) extension PredicateExpressions.FloatDivision : Sendable where LHS : Sendable, RHS : Sendable {} -@available(macOS 14, iOS 17, tvOS 17, watchOS 10, *) +@available(FoundationPredicate 0.1, *) extension PredicateExpressions.IntRemainder : Sendable where LHS : Sendable, RHS : Sendable {} -@available(macOS 14, iOS 17, tvOS 17, watchOS 10, *) +@available(FoundationPredicate 0.1, *) extension PredicateExpressions.IntDivision : Sendable where LHS : Sendable, RHS : Sendable {} diff --git a/Sources/FoundationEssentials/Predicate/Expressions/Equality.swift b/Sources/FoundationEssentials/Predicate/Expressions/Equality.swift index fe3319d0a..de996f015 100644 --- a/Sources/FoundationEssentials/Predicate/Expressions/Equality.swift +++ b/Sources/FoundationEssentials/Predicate/Expressions/Equality.swift @@ -10,7 +10,7 @@ // //===----------------------------------------------------------------------===// -@available(macOS 14, iOS 17, tvOS 17, watchOS 10, *) +@available(FoundationPredicate 0.1, *) extension PredicateExpressions { public struct Equal< LHS : PredicateExpression, @@ -40,17 +40,17 @@ extension PredicateExpressions { } } -@available(FoundationPreview 0.3, *) +@available(FoundationPredicate 0.3, *) extension PredicateExpressions.Equal : CustomStringConvertible { public var description: String { "Equal(lhs: \(lhs), rhs: \(rhs))" } } -@available(macOS 14, iOS 17, tvOS 17, watchOS 10, *) +@available(FoundationPredicate 0.1, *) extension PredicateExpressions.Equal : StandardPredicateExpression where LHS : StandardPredicateExpression, RHS : StandardPredicateExpression {} -@available(macOS 14, iOS 17, tvOS 17, watchOS 10, *) +@available(FoundationPredicate 0.1, *) extension PredicateExpressions.Equal : Codable where LHS : Codable, RHS : Codable { public func encode(to encoder: Encoder) throws { var container = encoder.unkeyedContainer() @@ -65,5 +65,5 @@ extension PredicateExpressions.Equal : Codable where LHS : Codable, RHS : Codabl } } -@available(macOS 14, iOS 17, tvOS 17, watchOS 10, *) +@available(FoundationPredicate 0.1, *) extension PredicateExpressions.Equal : Sendable where LHS : Sendable, RHS : Sendable {} diff --git a/Sources/FoundationEssentials/Predicate/Expressions/Filter.swift b/Sources/FoundationEssentials/Predicate/Expressions/Filter.swift index a9db8eaaf..b91f02819 100644 --- a/Sources/FoundationEssentials/Predicate/Expressions/Filter.swift +++ b/Sources/FoundationEssentials/Predicate/Expressions/Filter.swift @@ -10,7 +10,7 @@ // //===----------------------------------------------------------------------===// -@available(macOS 14, iOS 17, tvOS 17, watchOS 10, *) +@available(FoundationPredicate 0.1, *) extension PredicateExpressions { public struct Filter< LHS : PredicateExpression, @@ -47,17 +47,17 @@ extension PredicateExpressions { } } -@available(FoundationPreview 0.3, *) +@available(FoundationPredicate 0.3, *) extension PredicateExpressions.Filter : CustomStringConvertible { public var description: String { "Filter(sequence: \(sequence), variable: \(variable), filter: \(filter))" } } -@available(macOS 14, iOS 17, tvOS 17, watchOS 10, *) +@available(FoundationPredicate 0.1, *) extension PredicateExpressions.Filter : StandardPredicateExpression where LHS : StandardPredicateExpression, RHS : StandardPredicateExpression {} -@available(macOS 14, iOS 17, tvOS 17, watchOS 10, *) +@available(FoundationPredicate 0.1, *) extension PredicateExpressions.Filter : Codable where LHS : Codable, RHS : Codable { public func encode(to encoder: Encoder) throws { var container = encoder.unkeyedContainer() @@ -74,5 +74,5 @@ extension PredicateExpressions.Filter : Codable where LHS : Codable, RHS : Codab } } -@available(macOS 14, iOS 17, tvOS 17, watchOS 10, *) +@available(FoundationPredicate 0.1, *) extension PredicateExpressions.Filter : Sendable where LHS : Sendable, RHS : Sendable {} diff --git a/Sources/FoundationEssentials/Predicate/Expressions/Inequality.swift b/Sources/FoundationEssentials/Predicate/Expressions/Inequality.swift index 72e276bbf..a0c258c97 100644 --- a/Sources/FoundationEssentials/Predicate/Expressions/Inequality.swift +++ b/Sources/FoundationEssentials/Predicate/Expressions/Inequality.swift @@ -10,7 +10,7 @@ // //===----------------------------------------------------------------------===// -@available(macOS 14, iOS 17, tvOS 17, watchOS 10, *) +@available(FoundationPredicate 0.1, *) extension PredicateExpressions { public struct NotEqual< LHS : PredicateExpression, @@ -40,17 +40,17 @@ extension PredicateExpressions { } } -@available(FoundationPreview 0.3, *) +@available(FoundationPredicate 0.3, *) extension PredicateExpressions.NotEqual : CustomStringConvertible { public var description: String { "NotEqual(lhs: \(lhs), rhs: \(rhs))" } } -@available(macOS 14, iOS 17, tvOS 17, watchOS 10, *) +@available(FoundationPredicate 0.1, *) extension PredicateExpressions.NotEqual : StandardPredicateExpression where LHS : StandardPredicateExpression, RHS : StandardPredicateExpression {} -@available(macOS 14, iOS 17, tvOS 17, watchOS 10, *) +@available(FoundationPredicate 0.1, *) extension PredicateExpressions.NotEqual : Codable where LHS : Codable, RHS : Codable { public func encode(to encoder: Encoder) throws { var container = encoder.unkeyedContainer() @@ -65,5 +65,5 @@ extension PredicateExpressions.NotEqual : Codable where LHS : Codable, RHS : Cod } } -@available(macOS 14, iOS 17, tvOS 17, watchOS 10, *) +@available(FoundationPredicate 0.1, *) extension PredicateExpressions.NotEqual : Sendable where LHS : Sendable, RHS : Sendable {} diff --git a/Sources/FoundationEssentials/Predicate/Expressions/Negation.swift b/Sources/FoundationEssentials/Predicate/Expressions/Negation.swift index 8efbcaaa4..c7f0ea341 100644 --- a/Sources/FoundationEssentials/Predicate/Expressions/Negation.swift +++ b/Sources/FoundationEssentials/Predicate/Expressions/Negation.swift @@ -10,7 +10,7 @@ // //===----------------------------------------------------------------------===// -@available(macOS 14, iOS 17, tvOS 17, watchOS 10, *) +@available(FoundationPredicate 0.1, *) extension PredicateExpressions { public struct Negation : PredicateExpression where Wrapped.Output == Bool { public typealias Output = Bool @@ -31,17 +31,17 @@ extension PredicateExpressions { } } -@available(FoundationPreview 0.3, *) +@available(FoundationPredicate 0.3, *) extension PredicateExpressions.Negation : CustomStringConvertible { public var description: String { "Negation(wrapped: \(wrapped))" } } -@available(macOS 14, iOS 17, tvOS 17, watchOS 10, *) +@available(FoundationPredicate 0.1, *) extension PredicateExpressions.Negation : StandardPredicateExpression where Wrapped : StandardPredicateExpression {} -@available(macOS 14, iOS 17, tvOS 17, watchOS 10, *) +@available(FoundationPredicate 0.1, *) extension PredicateExpressions.Negation : Codable where Wrapped : Codable { public func encode(to encoder: Encoder) throws { var container = encoder.singleValueContainer() @@ -54,5 +54,5 @@ extension PredicateExpressions.Negation : Codable where Wrapped : Codable { } } -@available(macOS 14, iOS 17, tvOS 17, watchOS 10, *) +@available(FoundationPredicate 0.1, *) extension PredicateExpressions.Negation : Sendable where Wrapped : Sendable {} diff --git a/Sources/FoundationEssentials/Predicate/Expressions/Optional.swift b/Sources/FoundationEssentials/Predicate/Expressions/Optional.swift index 773eea77c..55220b638 100644 --- a/Sources/FoundationEssentials/Predicate/Expressions/Optional.swift +++ b/Sources/FoundationEssentials/Predicate/Expressions/Optional.swift @@ -10,7 +10,7 @@ // //===----------------------------------------------------------------------===// -@available(macOS 14, iOS 17, tvOS 17, watchOS 10, *) +@available(FoundationPredicate 0.1, *) extension PredicateExpressions { public struct OptionalFlatMap< LHS : PredicateExpression, @@ -111,37 +111,37 @@ extension PredicateExpressions { } } -@available(FoundationPreview 0.3, *) +@available(FoundationPredicate 0.3, *) extension PredicateExpressions.OptionalFlatMap : CustomStringConvertible { public var description: String { "OptionalFlatMap(wrapped: \(wrapped), variable: \(variable), transform: \(transform))" } } -@available(FoundationPreview 0.3, *) +@available(FoundationPredicate 0.3, *) extension PredicateExpressions.NilCoalesce : CustomStringConvertible { public var description: String { "NilCoalesce(lhs: \(lhs), rhs: \(rhs))" } } -@available(FoundationPreview 0.3, *) +@available(FoundationPredicate 0.3, *) extension PredicateExpressions.ForcedUnwrap : CustomStringConvertible { public var description: String { "ForcedUnwrap(inner: \(inner))" } } -@available(macOS 14, iOS 17, tvOS 17, watchOS 10, *) +@available(FoundationPredicate 0.1, *) extension PredicateExpressions.OptionalFlatMap : StandardPredicateExpression where LHS : StandardPredicateExpression, RHS : StandardPredicateExpression {} -@available(macOS 14, iOS 17, tvOS 17, watchOS 10, *) +@available(FoundationPredicate 0.1, *) extension PredicateExpressions.NilCoalesce : StandardPredicateExpression where LHS : StandardPredicateExpression, RHS : StandardPredicateExpression {} -@available(macOS 14, iOS 17, tvOS 17, watchOS 10, *) +@available(FoundationPredicate 0.1, *) extension PredicateExpressions.ForcedUnwrap : StandardPredicateExpression where Inner : StandardPredicateExpression {} -@available(macOS 14, iOS 17, tvOS 17, watchOS 10, *) +@available(FoundationPredicate 0.1, *) extension PredicateExpressions.OptionalFlatMap : Codable where LHS : Codable, RHS : Codable { public func encode(to encoder: Encoder) throws { var container = encoder.unkeyedContainer() @@ -158,7 +158,7 @@ extension PredicateExpressions.OptionalFlatMap : Codable where LHS : Codable, RH } } -@available(macOS 14, iOS 17, tvOS 17, watchOS 10, *) +@available(FoundationPredicate 0.1, *) extension PredicateExpressions.NilCoalesce : Codable where LHS : Codable, RHS : Codable { public func encode(to encoder: Encoder) throws { var container = encoder.unkeyedContainer() @@ -173,7 +173,7 @@ extension PredicateExpressions.NilCoalesce : Codable where LHS : Codable, RHS : } } -@available(macOS 14, iOS 17, tvOS 17, watchOS 10, *) +@available(FoundationPredicate 0.1, *) extension PredicateExpressions.ForcedUnwrap : Codable where Inner : Codable { public func encode(to encoder: Encoder) throws { var container = encoder.singleValueContainer() @@ -186,16 +186,16 @@ extension PredicateExpressions.ForcedUnwrap : Codable where Inner : Codable { } } -@available(macOS 14, iOS 17, tvOS 17, watchOS 10, *) +@available(FoundationPredicate 0.1, *) extension PredicateExpressions.OptionalFlatMap : Sendable where LHS : Sendable, RHS : Sendable {} -@available(macOS 14, iOS 17, tvOS 17, watchOS 10, *) +@available(FoundationPredicate 0.1, *) extension PredicateExpressions.NilCoalesce : Sendable where LHS : Sendable, RHS : Sendable {} -@available(macOS 14, iOS 17, tvOS 17, watchOS 10, *) +@available(FoundationPredicate 0.1, *) extension PredicateExpressions.ForcedUnwrap : Sendable where Inner : Sendable {} -@available(macOS 14, iOS 17, tvOS 17, watchOS 10, *) +@available(FoundationPredicate 0.1, *) extension PredicateExpressions { public struct NilLiteral : StandardPredicateExpression, Codable, Sendable { public typealias Output = Optional diff --git a/Sources/FoundationEssentials/Predicate/Expressions/PredicateEvaluation.swift b/Sources/FoundationEssentials/Predicate/Expressions/PredicateEvaluation.swift index 76d704c96..9a5b9260c 100644 --- a/Sources/FoundationEssentials/Predicate/Expressions/PredicateEvaluation.swift +++ b/Sources/FoundationEssentials/Predicate/Expressions/PredicateEvaluation.swift @@ -11,9 +11,9 @@ //===----------------------------------------------------------------------===// #if FOUNDATION_FRAMEWORK -@available(macOS 14, iOS 17, tvOS 17, watchOS 10, *) +@available(FoundationPredicate 0.1, *) extension PredicateExpressions { - @available(FoundationPreview 0.3, *) + @available(FoundationPredicate 0.3, *) public struct PredicateEvaluate< Condition : PredicateExpression, each Input : PredicateExpression @@ -37,23 +37,23 @@ extension PredicateExpressions { } } - @available(FoundationPreview 0.3, *) + @available(FoundationPredicate 0.3, *) public static func build_evaluate(_ predicate: Condition, _ input: repeat each Input) -> PredicateEvaluate { PredicateEvaluate(predicate: predicate, input: repeat each input) } } -@available(FoundationPreview 0.3, *) +@available(FoundationPredicate 0.3, *) extension PredicateExpressions.PredicateEvaluate : CustomStringConvertible { public var description: String { "PredicateEvaluate(predicate: \(predicate), input: \(input))" } } -@available(FoundationPreview 0.3, *) +@available(FoundationPredicate 0.3, *) extension PredicateExpressions.PredicateEvaluate : StandardPredicateExpression where Condition : StandardPredicateExpression, repeat each Input : StandardPredicateExpression {} -@available(FoundationPreview 0.3, *) +@available(FoundationPredicate 0.3, *) extension PredicateExpressions.PredicateEvaluate : Codable where Condition : Codable, repeat each Input : Codable { public func encode(to encoder: Encoder) throws { throw EncodingError.invalidValue(self, EncodingError.Context(codingPath: encoder.codingPath, debugDescription: "Encoding the PredicateEvaluate operator is not yet supported")) @@ -64,6 +64,6 @@ extension PredicateExpressions.PredicateEvaluate : Codable where Condition : Cod } } -@available(FoundationPreview 0.3, *) +@available(FoundationPredicate 0.3, *) extension PredicateExpressions.PredicateEvaluate : Sendable where Condition : Sendable, repeat each Input : Sendable {} #endif diff --git a/Sources/FoundationEssentials/Predicate/Expressions/Range.swift b/Sources/FoundationEssentials/Predicate/Expressions/Range.swift index abd883acb..003773b8a 100644 --- a/Sources/FoundationEssentials/Predicate/Expressions/Range.swift +++ b/Sources/FoundationEssentials/Predicate/Expressions/Range.swift @@ -10,7 +10,7 @@ // //===----------------------------------------------------------------------===// -@available(macOS 14, iOS 17, tvOS 17, watchOS 10, *) +@available(FoundationPredicate 0.1, *) extension PredicateExpressions { public struct Range< LHS : PredicateExpression, @@ -45,17 +45,17 @@ extension PredicateExpressions { } } -@available(FoundationPreview 0.3, *) +@available(FoundationPredicate 0.3, *) extension PredicateExpressions.Range : CustomStringConvertible { public var description: String { "Range(lower: \(lower), upper: \(upper))" } } -@available(macOS 14, iOS 17, tvOS 17, watchOS 10, *) +@available(FoundationPredicate 0.1, *) extension PredicateExpressions.Range : StandardPredicateExpression where LHS : StandardPredicateExpression, RHS : StandardPredicateExpression {} -@available(macOS 14, iOS 17, tvOS 17, watchOS 10, *) +@available(FoundationPredicate 0.1, *) extension PredicateExpressions.Range : Codable where LHS : Codable, RHS : Codable { public func encode(to encoder: Encoder) throws { var container = encoder.unkeyedContainer() @@ -70,10 +70,10 @@ extension PredicateExpressions.Range : Codable where LHS : Codable, RHS : Codabl } } -@available(macOS 14, iOS 17, tvOS 17, watchOS 10, *) +@available(FoundationPredicate 0.1, *) extension PredicateExpressions.Range : Sendable where LHS : Sendable, RHS : Sendable {} -@available(macOS 14, iOS 17, tvOS 17, watchOS 10, *) +@available(FoundationPredicate 0.1, *) extension PredicateExpressions { public struct ClosedRange< LHS : PredicateExpression, @@ -105,17 +105,17 @@ extension PredicateExpressions { } } -@available(FoundationPreview 0.3, *) +@available(FoundationPredicate 0.3, *) extension PredicateExpressions.ClosedRange : CustomStringConvertible { public var description: String { "ClosedRange(lower: \(lower), upper: \(upper))" } } -@available(macOS 14, iOS 17, tvOS 17, watchOS 10, *) +@available(FoundationPredicate 0.1, *) extension PredicateExpressions.ClosedRange : StandardPredicateExpression where LHS : StandardPredicateExpression, RHS : StandardPredicateExpression {} -@available(macOS 14, iOS 17, tvOS 17, watchOS 10, *) +@available(FoundationPredicate 0.1, *) extension PredicateExpressions.ClosedRange : Codable where LHS : Codable, RHS : Codable { public func encode(to encoder: Encoder) throws { var container = encoder.unkeyedContainer() @@ -130,10 +130,10 @@ extension PredicateExpressions.ClosedRange : Codable where LHS : Codable, RHS : } } -@available(macOS 14, iOS 17, tvOS 17, watchOS 10, *) +@available(FoundationPredicate 0.1, *) extension PredicateExpressions.ClosedRange : Sendable where LHS : Sendable, RHS : Sendable {} -@available(macOS 14, iOS 17, tvOS 17, watchOS 10, *) +@available(FoundationPredicate 0.1, *) extension PredicateExpressions { public struct RangeExpressionContains< RangeExpression : PredicateExpression, @@ -162,17 +162,17 @@ extension PredicateExpressions { } } -@available(FoundationPreview 0.3, *) +@available(FoundationPredicate 0.3, *) extension PredicateExpressions.RangeExpressionContains : CustomStringConvertible { public var description: String { "RangeExpressionContains(range: \(range), element: \(element))" } } -@available(macOS 14, iOS 17, tvOS 17, watchOS 10, *) +@available(FoundationPredicate 0.1, *) extension PredicateExpressions.RangeExpressionContains : StandardPredicateExpression where RangeExpression : StandardPredicateExpression, Element : StandardPredicateExpression {} -@available(macOS 14, iOS 17, tvOS 17, watchOS 10, *) +@available(FoundationPredicate 0.1, *) extension PredicateExpressions.RangeExpressionContains : Codable where RangeExpression : Codable, Element : Codable { public func encode(to encoder: Encoder) throws { var container = encoder.unkeyedContainer() @@ -187,5 +187,5 @@ extension PredicateExpressions.RangeExpressionContains : Codable where RangeExpr } } -@available(macOS 14, iOS 17, tvOS 17, watchOS 10, *) +@available(FoundationPredicate 0.1, *) extension PredicateExpressions.RangeExpressionContains : Sendable where RangeExpression : Sendable, Element : Sendable {} diff --git a/Sources/FoundationEssentials/Predicate/Expressions/Sequence.swift b/Sources/FoundationEssentials/Predicate/Expressions/Sequence.swift index 35608272f..9ffbdc725 100644 --- a/Sources/FoundationEssentials/Predicate/Expressions/Sequence.swift +++ b/Sources/FoundationEssentials/Predicate/Expressions/Sequence.swift @@ -10,7 +10,7 @@ // //===----------------------------------------------------------------------===// -@available(macOS 14, iOS 17, tvOS 17, watchOS 10, *) +@available(FoundationPredicate 0.1, *) extension PredicateExpressions { public struct SequenceContains< LHS : PredicateExpression, @@ -141,40 +141,40 @@ extension PredicateExpressions { } } -@available(FoundationPreview 0.3, *) +@available(FoundationPredicate 0.3, *) extension PredicateExpressions.SequenceContains : CustomStringConvertible { public var description: String { "SequenceContains(sequence: \(sequence), element: \(element))" } } -@available(FoundationPreview 0.3, *) +@available(FoundationPredicate 0.3, *) extension PredicateExpressions.SequenceContainsWhere : CustomStringConvertible { public var description: String { "SequenceContainsWhere(sequence: \(sequence), variable: \(variable), test: \(test))" } } -@available(FoundationPreview 0.3, *) +@available(FoundationPredicate 0.3, *) extension PredicateExpressions.SequenceAllSatisfy : CustomStringConvertible { public var description: String { "SequenceAllSatisfy(sequence: \(sequence), variable: \(variable), test: \(test))" } } -@available(macOS 14, iOS 17, tvOS 17, watchOS 10, *) +@available(FoundationPredicate 0.1, *) extension PredicateExpressions.SequenceContains : StandardPredicateExpression where LHS : StandardPredicateExpression, RHS : StandardPredicateExpression {} -@available(macOS 14, iOS 17, tvOS 17, watchOS 10, *) +@available(FoundationPredicate 0.1, *) extension PredicateExpressions.SequenceContainsWhere : StandardPredicateExpression where LHS : StandardPredicateExpression, RHS : StandardPredicateExpression {} -@available(macOS 14, iOS 17, tvOS 17, watchOS 10, *) +@available(FoundationPredicate 0.1, *) extension PredicateExpressions.SequenceAllSatisfy : StandardPredicateExpression where LHS : StandardPredicateExpression, RHS : StandardPredicateExpression {} -@available(macOS 14, iOS 17, tvOS 17, watchOS 10, *) +@available(FoundationPredicate 0.1, *) extension PredicateExpressions.SequenceStartsWith : StandardPredicateExpression where Base : StandardPredicateExpression, Prefix : StandardPredicateExpression {} -@available(macOS 14, iOS 17, tvOS 17, watchOS 10, *) +@available(FoundationPredicate 0.1, *) extension PredicateExpressions.SequenceContains : Codable where LHS : Codable, RHS : Codable { public func encode(to encoder: Encoder) throws { var container = encoder.unkeyedContainer() @@ -189,7 +189,7 @@ extension PredicateExpressions.SequenceContains : Codable where LHS : Codable, R } } -@available(macOS 14, iOS 17, tvOS 17, watchOS 10, *) +@available(FoundationPredicate 0.1, *) extension PredicateExpressions.SequenceContainsWhere : Codable where LHS : Codable, RHS : Codable { public func encode(to encoder: Encoder) throws { var container = encoder.unkeyedContainer() @@ -206,7 +206,7 @@ extension PredicateExpressions.SequenceContainsWhere : Codable where LHS : Codab } } -@available(macOS 14, iOS 17, tvOS 17, watchOS 10, *) +@available(FoundationPredicate 0.1, *) extension PredicateExpressions.SequenceAllSatisfy : Codable where LHS : Codable, RHS : Codable { public func encode(to encoder: Encoder) throws { var container = encoder.unkeyedContainer() @@ -223,7 +223,7 @@ extension PredicateExpressions.SequenceAllSatisfy : Codable where LHS : Codable, } } -@available(macOS 14, iOS 17, tvOS 17, watchOS 10, *) +@available(FoundationPredicate 0.1, *) extension PredicateExpressions.SequenceStartsWith : Codable where Base : Codable, Prefix : Codable { public func encode(to encoder: Encoder) throws { var container = encoder.unkeyedContainer() @@ -238,14 +238,14 @@ extension PredicateExpressions.SequenceStartsWith : Codable where Base : Codable } } -@available(macOS 14, iOS 17, tvOS 17, watchOS 10, *) +@available(FoundationPredicate 0.1, *) extension PredicateExpressions.SequenceContains : Sendable where LHS : Sendable, RHS : Sendable {} -@available(macOS 14, iOS 17, tvOS 17, watchOS 10, *) +@available(FoundationPredicate 0.1, *) extension PredicateExpressions.SequenceContainsWhere : Sendable where LHS : Sendable, RHS : Sendable {} -@available(macOS 14, iOS 17, tvOS 17, watchOS 10, *) +@available(FoundationPredicate 0.1, *) extension PredicateExpressions.SequenceAllSatisfy : Sendable where LHS : Sendable, RHS : Sendable {} -@available(macOS 14, iOS 17, tvOS 17, watchOS 10, *) +@available(FoundationPredicate 0.1, *) extension PredicateExpressions.SequenceStartsWith : Sendable where Base : Sendable, Prefix : Sendable {} diff --git a/Sources/FoundationEssentials/Predicate/Expressions/StringComparison.swift b/Sources/FoundationEssentials/Predicate/Expressions/StringComparison.swift index b29023a60..69ed5d862 100644 --- a/Sources/FoundationEssentials/Predicate/Expressions/StringComparison.swift +++ b/Sources/FoundationEssentials/Predicate/Expressions/StringComparison.swift @@ -12,7 +12,7 @@ #if FOUNDATION_FRAMEWORK -@available(macOS 14, iOS 17, tvOS 17, watchOS 10, *) +@available(FoundationPredicate 0.1, *) extension PredicateExpressions { public struct StringCaseInsensitiveCompare< Root : PredicateExpression, @@ -41,17 +41,17 @@ extension PredicateExpressions { } } -@available(FoundationPreview 0.3, *) +@available(FoundationPredicate 0.3, *) extension PredicateExpressions.StringCaseInsensitiveCompare : CustomStringConvertible { public var description: String { "StringCaseInsensitiveCompare(root: \(root), other: \(other))" } } -@available(macOS 14, iOS 17, tvOS 17, watchOS 10, *) +@available(FoundationPredicate 0.1, *) extension PredicateExpressions.StringCaseInsensitiveCompare : StandardPredicateExpression where Root : StandardPredicateExpression, Other : StandardPredicateExpression {} -@available(macOS 14, iOS 17, tvOS 17, watchOS 10, *) +@available(FoundationPredicate 0.1, *) extension PredicateExpressions.StringCaseInsensitiveCompare : Codable where Root : Codable, Other : Codable { public func encode(to encoder: Encoder) throws { var container = encoder.unkeyedContainer() @@ -66,7 +66,7 @@ extension PredicateExpressions.StringCaseInsensitiveCompare : Codable where Root } } -@available(macOS 14, iOS 17, tvOS 17, watchOS 10, *) +@available(FoundationPredicate 0.1, *) extension PredicateExpressions.StringCaseInsensitiveCompare : Sendable where Root : Sendable, Other : Sendable {} #endif diff --git a/Sources/FoundationEssentials/Predicate/Expressions/Types.swift b/Sources/FoundationEssentials/Predicate/Expressions/Types.swift index ae478bb8a..a091a9267 100644 --- a/Sources/FoundationEssentials/Predicate/Expressions/Types.swift +++ b/Sources/FoundationEssentials/Predicate/Expressions/Types.swift @@ -10,7 +10,7 @@ // //===----------------------------------------------------------------------===// -@available(macOS 14, iOS 17, tvOS 17, watchOS 10, *) +@available(FoundationPredicate 0.1, *) extension PredicateExpressions { public struct ConditionalCast< Input : PredicateExpression, @@ -68,37 +68,37 @@ extension PredicateExpressions { } } -@available(FoundationPreview 0.3, *) +@available(FoundationPredicate 0.3, *) extension PredicateExpressions.ConditionalCast : CustomStringConvertible { public var description: String { "ConditionalCast(input: \(input), desiredType: \(_typeName(Desired.self)))" } } -@available(FoundationPreview 0.3, *) +@available(FoundationPredicate 0.3, *) extension PredicateExpressions.ForceCast : CustomStringConvertible { public var description: String { "ForceCast(input: \(input), desiredType: \(_typeName(Desired.self)))" } } -@available(FoundationPreview 0.3, *) +@available(FoundationPredicate 0.3, *) extension PredicateExpressions.TypeCheck : CustomStringConvertible { public var description: String { "TypeCheck(input: \(input), desiredType: \(_typeName(Desired.self)))" } } -@available(macOS 14, iOS 17, tvOS 17, watchOS 10, *) +@available(FoundationPredicate 0.1, *) extension PredicateExpressions.ConditionalCast : StandardPredicateExpression where Input : StandardPredicateExpression {} -@available(macOS 14, iOS 17, tvOS 17, watchOS 10, *) +@available(FoundationPredicate 0.1, *) extension PredicateExpressions.ForceCast : StandardPredicateExpression where Input : StandardPredicateExpression {} -@available(macOS 14, iOS 17, tvOS 17, watchOS 10, *) +@available(FoundationPredicate 0.1, *) extension PredicateExpressions.TypeCheck : StandardPredicateExpression where Input : StandardPredicateExpression {} -@available(macOS 14, iOS 17, tvOS 17, watchOS 10, *) +@available(FoundationPredicate 0.1, *) extension PredicateExpressions.ConditionalCast : Codable where Input : Codable { public func encode(to encoder: Encoder) throws { var container = encoder.singleValueContainer() @@ -111,7 +111,7 @@ extension PredicateExpressions.ConditionalCast : Codable where Input : Codable { } } -@available(macOS 14, iOS 17, tvOS 17, watchOS 10, *) +@available(FoundationPredicate 0.1, *) extension PredicateExpressions.ForceCast : Codable where Input : Codable { public func encode(to encoder: Encoder) throws { var container = encoder.singleValueContainer() @@ -124,7 +124,7 @@ extension PredicateExpressions.ForceCast : Codable where Input : Codable { } } -@available(macOS 14, iOS 17, tvOS 17, watchOS 10, *) +@available(FoundationPredicate 0.1, *) extension PredicateExpressions.TypeCheck : Codable where Input : Codable { public func encode(to encoder: Encoder) throws { var container = encoder.singleValueContainer() @@ -137,11 +137,11 @@ extension PredicateExpressions.TypeCheck : Codable where Input : Codable { } } -@available(macOS 14, iOS 17, tvOS 17, watchOS 10, *) +@available(FoundationPredicate 0.1, *) extension PredicateExpressions.ConditionalCast : Sendable where Input : Sendable {} -@available(macOS 14, iOS 17, tvOS 17, watchOS 10, *) +@available(FoundationPredicate 0.1, *) extension PredicateExpressions.ForceCast : Sendable where Input : Sendable {} -@available(macOS 14, iOS 17, tvOS 17, watchOS 10, *) +@available(FoundationPredicate 0.1, *) extension PredicateExpressions.TypeCheck : Sendable where Input : Sendable {} diff --git a/Sources/FoundationEssentials/Predicate/Expressions/UnaryMinus.swift b/Sources/FoundationEssentials/Predicate/Expressions/UnaryMinus.swift index cd3d46712..3e0655439 100644 --- a/Sources/FoundationEssentials/Predicate/Expressions/UnaryMinus.swift +++ b/Sources/FoundationEssentials/Predicate/Expressions/UnaryMinus.swift @@ -10,7 +10,7 @@ // //===----------------------------------------------------------------------===// -@available(macOS 14, iOS 17, tvOS 17, watchOS 10, *) +@available(FoundationPredicate 0.1, *) extension PredicateExpressions { public struct UnaryMinus : PredicateExpression where Wrapped.Output: SignedNumeric { public typealias Output = Wrapped.Output @@ -31,17 +31,17 @@ extension PredicateExpressions { } } -@available(FoundationPreview 0.3, *) +@available(FoundationPredicate 0.3, *) extension PredicateExpressions.UnaryMinus : CustomStringConvertible { public var description: String { "UnaryMinus(wrapped: \(wrapped))" } } -@available(macOS 14, iOS 17, tvOS 17, watchOS 10, *) +@available(FoundationPredicate 0.1, *) extension PredicateExpressions.UnaryMinus : StandardPredicateExpression where Wrapped : StandardPredicateExpression {} -@available(macOS 14, iOS 17, tvOS 17, watchOS 10, *) +@available(FoundationPredicate 0.1, *) extension PredicateExpressions.UnaryMinus : Codable where Wrapped : Codable { public func encode(to encoder: Encoder) throws { var container = encoder.singleValueContainer() @@ -54,5 +54,5 @@ extension PredicateExpressions.UnaryMinus : Codable where Wrapped : Codable { } } -@available(macOS 14, iOS 17, tvOS 17, watchOS 10, *) +@available(FoundationPredicate 0.1, *) extension PredicateExpressions.UnaryMinus : Sendable where Wrapped : Sendable {} diff --git a/Sources/FoundationEssentials/Predicate/NSPredicateConversion.swift b/Sources/FoundationEssentials/Predicate/NSPredicateConversion.swift index fc1b26db3..bad77bad2 100644 --- a/Sources/FoundationEssentials/Predicate/NSPredicateConversion.swift +++ b/Sources/FoundationEssentials/Predicate/NSPredicateConversion.swift @@ -532,7 +532,7 @@ extension OverwritingInitializable { extension NSPredicate : OverwritingInitializable {} -@available(macOS 14, iOS 17, tvOS 17, watchOS 10, *) +@available(FoundationPredicate 0.1, *) extension NSPredicate { public convenience init?(_ predicate: Predicate) where Input : NSObject { let variable = predicate.variable diff --git a/Sources/FoundationEssentials/Predicate/Predicate+Description.swift b/Sources/FoundationEssentials/Predicate/Predicate+Description.swift index 19e00167d..2e995dee6 100644 --- a/Sources/FoundationEssentials/Predicate/Predicate+Description.swift +++ b/Sources/FoundationEssentials/Predicate/Predicate+Description.swift @@ -10,7 +10,7 @@ // //===----------------------------------------------------------------------===// -@available(FoundationPreview 0.3, *) +@available(FoundationPredicate 0.3, *) package struct DebugStringConversionState { private var variables: [PredicateExpressions.VariableID : String] private var nextVariable = 1 @@ -78,61 +78,61 @@ extension AnyKeyPath { } } -@available(FoundationPreview 0.3, *) +@available(FoundationPredicate 0.3, *) package protocol DebugStringConvertiblePredicateExpression : StandardPredicateExpression { func debugString(state: inout DebugStringConversionState) -> String } -@available(FoundationPreview 0.3, *) +@available(FoundationPredicate 0.3, *) extension PredicateExpressions.Variable : DebugStringConvertiblePredicateExpression { package func debugString(state: inout DebugStringConversionState) -> String { state[self.key] } } -@available(FoundationPreview 0.3, *) +@available(FoundationPredicate 0.3, *) extension PredicateExpressions.KeyPath : DebugStringConvertiblePredicateExpression where Root : DebugStringConvertiblePredicateExpression { package func debugString(state: inout DebugStringConversionState) -> String { root.debugString(state: &state) + keyPath.debugStringWithoutType } } -@available(FoundationPreview 0.3, *) +@available(FoundationPredicate 0.3, *) extension PredicateExpressions.Value : DebugStringConvertiblePredicateExpression where Self : StandardPredicateExpression { package func debugString(state: inout DebugStringConversionState) -> String { state.addCapture(value) } } -@available(FoundationPreview 0.3, *) +@available(FoundationPredicate 0.3, *) extension PredicateExpressions.Conjunction : DebugStringConvertiblePredicateExpression where LHS : DebugStringConvertiblePredicateExpression, RHS : DebugStringConvertiblePredicateExpression { package func debugString(state: inout DebugStringConversionState) -> String { "(\(lhs.debugString(state: &state)) && \(rhs.debugString(state: &state)))" } } -@available(FoundationPreview 0.3, *) +@available(FoundationPredicate 0.3, *) extension PredicateExpressions.Disjunction : DebugStringConvertiblePredicateExpression where LHS : DebugStringConvertiblePredicateExpression, RHS : DebugStringConvertiblePredicateExpression { package func debugString(state: inout DebugStringConversionState) -> String { "(\(lhs.debugString(state: &state)) || \(rhs.debugString(state: &state)))" } } -@available(FoundationPreview 0.3, *) +@available(FoundationPredicate 0.3, *) extension PredicateExpressions.Equal : DebugStringConvertiblePredicateExpression where LHS : DebugStringConvertiblePredicateExpression, RHS : DebugStringConvertiblePredicateExpression { package func debugString(state: inout DebugStringConversionState) -> String { "(\(lhs.debugString(state: &state)) == \(rhs.debugString(state: &state)))" } } -@available(FoundationPreview 0.3, *) +@available(FoundationPredicate 0.3, *) extension PredicateExpressions.NotEqual : DebugStringConvertiblePredicateExpression where LHS : DebugStringConvertiblePredicateExpression, RHS : DebugStringConvertiblePredicateExpression { package func debugString(state: inout DebugStringConversionState) -> String { "(\(lhs.debugString(state: &state)) != \(rhs.debugString(state: &state)))" } } -@available(FoundationPreview 0.3, *) +@available(FoundationPredicate 0.3, *) extension PredicateExpressions.Arithmetic : DebugStringConvertiblePredicateExpression where LHS : DebugStringConvertiblePredicateExpression, RHS : DebugStringConvertiblePredicateExpression { package func debugString(state: inout DebugStringConversionState) -> String { let op = switch self.op { @@ -144,7 +144,7 @@ extension PredicateExpressions.Arithmetic : DebugStringConvertiblePredicateExpre } } -@available(FoundationPreview 0.3, *) +@available(FoundationPredicate 0.3, *) extension PredicateExpressions.Comparison : DebugStringConvertiblePredicateExpression where LHS : DebugStringConvertiblePredicateExpression, RHS : DebugStringConvertiblePredicateExpression { package func debugString(state: inout DebugStringConversionState) -> String { let op = switch self.op { @@ -157,42 +157,42 @@ extension PredicateExpressions.Comparison : DebugStringConvertiblePredicateExpre } } -@available(FoundationPreview 0.3, *) +@available(FoundationPredicate 0.3, *) extension PredicateExpressions.UnaryMinus : DebugStringConvertiblePredicateExpression where Wrapped : DebugStringConvertiblePredicateExpression { package func debugString(state: inout DebugStringConversionState) -> String { "-\(wrapped.debugString(state: &state))" } } -@available(FoundationPreview 0.3, *) +@available(FoundationPredicate 0.3, *) extension PredicateExpressions.SequenceMinimum : DebugStringConvertiblePredicateExpression where Elements : DebugStringConvertiblePredicateExpression { package func debugString(state: inout DebugStringConversionState) -> String { "\(elements.debugString(state: &state)).min()" } } -@available(FoundationPreview 0.3, *) +@available(FoundationPredicate 0.3, *) extension PredicateExpressions.SequenceMaximum : DebugStringConvertiblePredicateExpression where Elements : DebugStringConvertiblePredicateExpression { package func debugString(state: inout DebugStringConversionState) -> String { "\(elements.debugString(state: &state)).max()" } } -@available(FoundationPreview 0.3, *) +@available(FoundationPredicate 0.3, *) extension PredicateExpressions.ClosedRange : DebugStringConvertiblePredicateExpression where LHS : DebugStringConvertiblePredicateExpression, RHS : DebugStringConvertiblePredicateExpression { package func debugString(state: inout DebugStringConversionState) -> String { "(\(lower.debugString(state: &state)) ... \(upper.debugString(state: &state)))" } } -@available(FoundationPreview 0.3, *) +@available(FoundationPredicate 0.3, *) extension PredicateExpressions.Range : DebugStringConvertiblePredicateExpression where LHS : DebugStringConvertiblePredicateExpression, RHS : DebugStringConvertiblePredicateExpression { package func debugString(state: inout DebugStringConversionState) -> String { "(\(lower.debugString(state: &state)) ..< \(upper.debugString(state: &state)))" } } -@available(FoundationPreview 0.3, *) +@available(FoundationPredicate 0.3, *) extension PredicateExpressions.Conditional : DebugStringConvertiblePredicateExpression where Test : DebugStringConvertiblePredicateExpression, If : DebugStringConvertiblePredicateExpression, Else : DebugStringConvertiblePredicateExpression { package func debugString(state: inout DebugStringConversionState) -> String { """ @@ -205,56 +205,56 @@ extension PredicateExpressions.Conditional : DebugStringConvertiblePredicateExpr } } -@available(FoundationPreview 0.3, *) +@available(FoundationPredicate 0.3, *) extension PredicateExpressions.CollectionIndexSubscript : DebugStringConvertiblePredicateExpression where Wrapped : DebugStringConvertiblePredicateExpression, Index : DebugStringConvertiblePredicateExpression { package func debugString(state: inout DebugStringConversionState) -> String { "\(wrapped.debugString(state: &state))[\(index.debugString(state: &state))]" } } -@available(FoundationPreview 0.3, *) +@available(FoundationPredicate 0.3, *) extension PredicateExpressions.CollectionRangeSubscript : DebugStringConvertiblePredicateExpression where Wrapped : DebugStringConvertiblePredicateExpression, Range : DebugStringConvertiblePredicateExpression { package func debugString(state: inout DebugStringConversionState) -> String { "\(wrapped.debugString(state: &state))[\(range.debugString(state: &state))]" } } -@available(FoundationPreview 0.3, *) +@available(FoundationPredicate 0.3, *) extension PredicateExpressions.CollectionContainsCollection : DebugStringConvertiblePredicateExpression where Base : DebugStringConvertiblePredicateExpression, Other : DebugStringConvertiblePredicateExpression { package func debugString(state: inout DebugStringConversionState) -> String { "\(base.debugString(state: &state)).contains(\(other.debugString(state: &state)))" } } -@available(FoundationPreview 0.3, *) +@available(FoundationPredicate 0.3, *) extension PredicateExpressions.ConditionalCast : DebugStringConvertiblePredicateExpression where Input : DebugStringConvertiblePredicateExpression { package func debugString(state: inout DebugStringConversionState) -> String { "(\(input.debugString(state: &state)) as? \(_typeName(Desired.self)))" } } -@available(FoundationPreview 0.3, *) +@available(FoundationPredicate 0.3, *) extension PredicateExpressions.ForceCast : DebugStringConvertiblePredicateExpression where Input : DebugStringConvertiblePredicateExpression { package func debugString(state: inout DebugStringConversionState) -> String { "(\(input.debugString(state: &state)) as! \(_typeName(Desired.self)))" } } -@available(FoundationPreview 0.3, *) +@available(FoundationPredicate 0.3, *) extension PredicateExpressions.TypeCheck : DebugStringConvertiblePredicateExpression where Input : DebugStringConvertiblePredicateExpression { package func debugString(state: inout DebugStringConversionState) -> String { "(\(input.debugString(state: &state)) is \(_typeName(Desired.self)))" } } -@available(FoundationPreview 0.3, *) +@available(FoundationPredicate 0.3, *) extension PredicateExpressions.ForcedUnwrap : DebugStringConvertiblePredicateExpression where Inner : DebugStringConvertiblePredicateExpression { package func debugString(state: inout DebugStringConversionState) -> String { "\(inner.debugString(state: &state))!" } } -@available(FoundationPreview 0.3, *) +@available(FoundationPredicate 0.3, *) extension PredicateExpressions.OptionalFlatMap : DebugStringConvertiblePredicateExpression where LHS : DebugStringConvertiblePredicateExpression, RHS : DebugStringConvertiblePredicateExpression { package func debugString(state: inout DebugStringConversionState) -> String { state.setupVariable(variable.key) @@ -266,84 +266,84 @@ extension PredicateExpressions.OptionalFlatMap : DebugStringConvertiblePredicate } } -@available(FoundationPreview 0.3, *) +@available(FoundationPredicate 0.3, *) extension PredicateExpressions.DictionaryKeySubscript : DebugStringConvertiblePredicateExpression where Wrapped : DebugStringConvertiblePredicateExpression, Key : DebugStringConvertiblePredicateExpression { package func debugString(state: inout DebugStringConversionState) -> String { "\(wrapped.debugString(state: &state))[\(key.debugString(state: &state))]" } } -@available(FoundationPreview 0.3, *) +@available(FoundationPredicate 0.3, *) extension PredicateExpressions.DictionaryKeyDefaultValueSubscript : DebugStringConvertiblePredicateExpression where Wrapped : DebugStringConvertiblePredicateExpression, Key : DebugStringConvertiblePredicateExpression, Default : DebugStringConvertiblePredicateExpression { package func debugString(state: inout DebugStringConversionState) -> String { "\(wrapped.debugString(state: &state))[\(key.debugString(state: &state)), default: \(self.default.debugString(state: &state))]" } } -@available(FoundationPreview 0.3, *) +@available(FoundationPredicate 0.3, *) extension PredicateExpressions.FloatDivision : DebugStringConvertiblePredicateExpression where LHS : DebugStringConvertiblePredicateExpression, RHS : DebugStringConvertiblePredicateExpression { package func debugString(state: inout DebugStringConversionState) -> String { "(\(lhs.debugString(state: &state)) / \(rhs.debugString(state: &state)))" } } -@available(FoundationPreview 0.3, *) +@available(FoundationPredicate 0.3, *) extension PredicateExpressions.IntDivision : DebugStringConvertiblePredicateExpression where LHS : DebugStringConvertiblePredicateExpression, RHS : DebugStringConvertiblePredicateExpression { package func debugString(state: inout DebugStringConversionState) -> String { "(\(lhs.debugString(state: &state)) / \(rhs.debugString(state: &state)))" } } -@available(FoundationPreview 0.3, *) +@available(FoundationPredicate 0.3, *) extension PredicateExpressions.IntRemainder : DebugStringConvertiblePredicateExpression where LHS : DebugStringConvertiblePredicateExpression, RHS : DebugStringConvertiblePredicateExpression { package func debugString(state: inout DebugStringConversionState) -> String { "(\(lhs.debugString(state: &state)) % \(rhs.debugString(state: &state)))" } } -@available(FoundationPreview 0.3, *) +@available(FoundationPredicate 0.3, *) extension PredicateExpressions.Negation : DebugStringConvertiblePredicateExpression where Wrapped : DebugStringConvertiblePredicateExpression { package func debugString(state: inout DebugStringConversionState) -> String { "!\(wrapped.debugString(state: &state))" } } -@available(FoundationPreview 0.3, *) +@available(FoundationPredicate 0.3, *) extension PredicateExpressions.NilCoalesce : DebugStringConvertiblePredicateExpression where LHS : DebugStringConvertiblePredicateExpression, RHS: DebugStringConvertiblePredicateExpression { package func debugString(state: inout DebugStringConversionState) -> String { "(\(lhs.debugString(state: &state)) ?? \(rhs.debugString(state: &state)))" } } -@available(FoundationPreview 0.3, *) +@available(FoundationPredicate 0.3, *) extension PredicateExpressions.NilLiteral : DebugStringConvertiblePredicateExpression { package func debugString(state: inout DebugStringConversionState) -> String { "nil" } } -@available(FoundationPreview 0.3, *) +@available(FoundationPredicate 0.3, *) extension PredicateExpressions.RangeExpressionContains : DebugStringConvertiblePredicateExpression where RangeExpression : DebugStringConvertiblePredicateExpression, Element : DebugStringConvertiblePredicateExpression { package func debugString(state: inout DebugStringConversionState) -> String { "\(range.debugString(state: &state)).contains(\(element.debugString(state: &state)))" } } -@available(FoundationPreview 0.3, *) +@available(FoundationPredicate 0.3, *) extension PredicateExpressions.SequenceContains : DebugStringConvertiblePredicateExpression where LHS : DebugStringConvertiblePredicateExpression, RHS: DebugStringConvertiblePredicateExpression { package func debugString(state: inout DebugStringConversionState) -> String { "\(sequence.debugString(state: &state)).contains(\(element.debugString(state: &state)))" } } -@available(FoundationPreview 0.3, *) +@available(FoundationPredicate 0.3, *) extension PredicateExpressions.SequenceStartsWith : DebugStringConvertiblePredicateExpression where Base : DebugStringConvertiblePredicateExpression, Prefix : DebugStringConvertiblePredicateExpression { package func debugString(state: inout DebugStringConversionState) -> String { "\(base.debugString(state: &state)).starts(with: \(prefix.debugString(state: &state)))" } } -@available(FoundationPreview 0.3, *) +@available(FoundationPredicate 0.3, *) extension PredicateExpressions.SequenceContainsWhere : DebugStringConvertiblePredicateExpression where LHS : DebugStringConvertiblePredicateExpression, RHS : DebugStringConvertiblePredicateExpression { package func debugString(state: inout DebugStringConversionState) -> String { state.setupVariable(variable.key) @@ -355,7 +355,7 @@ extension PredicateExpressions.SequenceContainsWhere : DebugStringConvertiblePre } } -@available(FoundationPreview 0.3, *) +@available(FoundationPredicate 0.3, *) extension PredicateExpressions.SequenceAllSatisfy : DebugStringConvertiblePredicateExpression where LHS : DebugStringConvertiblePredicateExpression, RHS : DebugStringConvertiblePredicateExpression { package func debugString(state: inout DebugStringConversionState) -> String { state.setupVariable(variable.key) @@ -367,7 +367,7 @@ extension PredicateExpressions.SequenceAllSatisfy : DebugStringConvertiblePredic } } -@available(FoundationPreview 0.3, *) +@available(FoundationPredicate 0.3, *) extension PredicateExpressions.Filter : DebugStringConvertiblePredicateExpression where LHS : DebugStringConvertiblePredicateExpression, RHS : DebugStringConvertiblePredicateExpression { package func debugString(state: inout DebugStringConversionState) -> String { state.setupVariable(variable.key) @@ -381,7 +381,7 @@ extension PredicateExpressions.Filter : DebugStringConvertiblePredicateExpressio #if FOUNDATION_FRAMEWORK -@available(FoundationPreview 0.3, *) +@available(FoundationPredicate 0.3, *) extension PredicateExpressions.PredicateEvaluate : DebugStringConvertiblePredicateExpression where Condition : DebugStringConvertiblePredicateExpression, repeat each Input : DebugStringConvertiblePredicateExpression { package func debugString(state: inout DebugStringConversionState) -> String { var inputStrings: [String] = [] @@ -390,7 +390,7 @@ extension PredicateExpressions.PredicateEvaluate : DebugStringConvertiblePredica } } -@available(FoundationPreview 0.3, *) +@available(FoundationPredicate 0.3, *) extension PredicateExpressions.StringCaseInsensitiveCompare : DebugStringConvertiblePredicateExpression where Root : DebugStringConvertiblePredicateExpression, Other : DebugStringConvertiblePredicateExpression { package func debugString(state: inout DebugStringConversionState) -> String { "\(root.debugString(state: &state)).caseInsensitiveCompare(\(other.debugString(state: &state)))" @@ -399,7 +399,7 @@ extension PredicateExpressions.StringCaseInsensitiveCompare : DebugStringConvert #endif -@available(FoundationPreview 0.3, *) +@available(FoundationPredicate 0.3, *) extension Predicate : CustomStringConvertible { public var description: String { var variableIDs: [PredicateExpressions.VariableID] = [] @@ -427,7 +427,7 @@ extension Predicate : CustomStringConvertible { } } -@available(FoundationPreview 0.3, *) +@available(FoundationPredicate 0.3, *) extension Predicate : CustomDebugStringConvertible { public var debugDescription: String { var variableDesc: [String] = [] diff --git a/Sources/FoundationEssentials/Predicate/Predicate.swift b/Sources/FoundationEssentials/Predicate/Predicate.swift index f46ddcd98..584cd7dae 100644 --- a/Sources/FoundationEssentials/Predicate/Predicate.swift +++ b/Sources/FoundationEssentials/Predicate/Predicate.swift @@ -10,7 +10,7 @@ // //===----------------------------------------------------------------------===// -@available(macOS 14, iOS 17, tvOS 17, watchOS 10, *) +@available(FoundationPredicate 0.1, *) public struct Predicate : Sendable { public let expression : any StandardPredicateExpression public let variable: (repeat PredicateExpressions.Variable) @@ -28,10 +28,10 @@ public struct Predicate : Sendable { } @freestanding(expression) -@available(macOS 14, iOS 17, tvOS 17, watchOS 10, *) +@available(FoundationPredicate 0.1, *) public macro Predicate(_ body: (repeat each Input) -> Bool) -> Predicate = #externalMacro(module: "FoundationMacros", type: "PredicateMacro") -@available(macOS 14, iOS 17, tvOS 17, watchOS 10, *) +@available(FoundationPredicate 0.1, *) extension Predicate { private init(value: Bool) { self.variable = (repeat PredicateExpressions.Variable()) @@ -49,10 +49,10 @@ extension Predicate { // Namespace for operator expressions -@available(macOS 14, iOS 17, tvOS 17, watchOS 10, *) +@available(FoundationPredicate 0.1, *) @frozen @_nonSendable public enum PredicateExpressions {} -@available(macOS 14, iOS 17, tvOS 17, watchOS 10, *) +@available(FoundationPredicate 0.1, *) extension Sequence { public func filter(_ predicate: Predicate) throws -> [Element] { try self.filter { diff --git a/Sources/FoundationEssentials/Predicate/PredicateBindings.swift b/Sources/FoundationEssentials/Predicate/PredicateBindings.swift index 517e8f1b9..ef5290069 100644 --- a/Sources/FoundationEssentials/Predicate/PredicateBindings.swift +++ b/Sources/FoundationEssentials/Predicate/PredicateBindings.swift @@ -11,7 +11,7 @@ //===----------------------------------------------------------------------===// @_nonSendable -@available(macOS 14, iOS 17, tvOS 17, watchOS 10, *) +@available(FoundationPredicate 0.1, *) public struct PredicateBindings { // Store as a values as an array instead of a dictionary (since it is almost always very few elements, this reduces heap allocation and hashing overhead) private var storage: [(id: PredicateExpressions.VariableID, value: Any)] diff --git a/Tests/FoundationEssentialsTests/PredicateTests.swift b/Tests/FoundationEssentialsTests/PredicateTests.swift index 3dac39693..77938cebe 100644 --- a/Tests/FoundationEssentialsTests/PredicateTests.swift +++ b/Tests/FoundationEssentialsTests/PredicateTests.swift @@ -340,7 +340,7 @@ final class PredicateTests: XCTestCase { } func testDebugDescription() throws { - guard #available(FoundationPreview 0.3, *) else { + guard #available(FoundationPredicate 0.3, *) else { throw XCTSkip("This test is not available on this OS version") } @@ -381,7 +381,7 @@ final class PredicateTests: XCTestCase { #if FOUNDATION_FRAMEWORK func testNested() throws { - guard #available(FoundationPreview 0.3, *) else { + guard #available(FoundationPredicate 0.3, *) else { throw XCTSkip("This test is not available on this OS version") }