Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Add deprecations to APIs not needed in iOS 17+. #101

Merged
merged 4 commits into from
Oct 3, 2024
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
12 changes: 12 additions & 0 deletions Sources/Perception/Macros.swift
Original file line number Diff line number Diff line change
Expand Up @@ -9,18 +9,30 @@
//
//===----------------------------------------------------------------------===//

@available(iOS, deprecated: 17, renamed: "Observable")
@available(macOS, deprecated: 14, renamed: "Observable")
@available(watchOS, deprecated: 10, renamed: "Observable")
@available(tvOS, deprecated: 17, renamed: "Observable")
@attached(
member, names: named(_$id), named(_$perceptionRegistrar), named(access), named(withMutation))
@attached(memberAttribute)
@attached(extension, conformances: Perceptible, _Observable)
public macro Perceptible() =
#externalMacro(module: "PerceptionMacros", type: "PerceptibleMacro")

@available(iOS, deprecated: 17, renamed: "ObservationTracked")
@available(macOS, deprecated: 14, renamed: "ObservationTracked")
@available(watchOS, deprecated: 10, renamed: "ObservationTracked")
@available(tvOS, deprecated: 17, renamed: "ObservationTracked")
@attached(accessor, names: named(init), named(get), named(set), named(_modify))
@attached(peer, names: prefixed(_))
public macro PerceptionTracked() =
#externalMacro(module: "PerceptionMacros", type: "PerceptionTrackedMacro")

@available(iOS, deprecated: 17, renamed: "ObservationIgnored")
@available(macOS, deprecated: 14, renamed: "ObservationIgnored")
@available(watchOS, deprecated: 10, renamed: "ObservationIgnored")
@available(tvOS, deprecated: 17, renamed: "ObservationIgnored")
@attached(accessor, names: named(willSet))
public macro PerceptionIgnored() =
#externalMacro(module: "PerceptionMacros", type: "PerceptionIgnoredMacro")
4 changes: 4 additions & 0 deletions Sources/Perception/Perceptible.swift
Original file line number Diff line number Diff line change
Expand Up @@ -16,4 +16,8 @@
/// type doesn't add observation functionality to the type. Instead, always use
/// the ``Perception/Perceptible()`` macro when adding observation
/// support to a type.
@available(iOS, deprecated: 17, renamed: "Observable")
@available(macOS, deprecated: 14, renamed: "Observable")
@available(watchOS, deprecated: 10, renamed: "Observable")
@available(tvOS, deprecated: 17, renamed: "Observable")
public protocol Perceptible {}
19 changes: 19 additions & 0 deletions Sources/Perception/PerceptionChecking.swift
Original file line number Diff line number Diff line change
Expand Up @@ -11,11 +11,30 @@ import Foundation
/// This check only happens in `DEBUG` builds, and so does not affect App Store releases of your
/// app. However, the checks can sometimes be costly and slow down your app in development. If
/// you wish to fully disable the checks, you can set this boolean to `false.`
@available(
iOS, deprecated: 17, message: "'isPerceptionCheckingEnabled' is no longer needed in iOS 17+"
)
@available(
macOS, deprecated: 14, message: "'isPerceptionCheckingEnabled' is no longer needed in macOS 14+"
)
@available(
watchOS, deprecated: 10,
message: "'isPerceptionCheckingEnabled' is no longer needed in watchOS 10+"
)
@available(
tvOS, deprecated: 17, message: "'isPerceptionCheckingEnabled' is no longer needed in tvOS 17+"
)
public var isPerceptionCheckingEnabled: Bool {
get { perceptionChecking.isPerceptionCheckingEnabled }
set { perceptionChecking.isPerceptionCheckingEnabled = newValue }
}

@available(iOS, deprecated: 17, message: "'_PerceptionLocals' is no longer needed in iOS 17+")
@available(macOS, deprecated: 14, message: "'_PerceptionLocals' is no longer needed in macOS 14+")
@available(
watchOS, deprecated: 10, message: "'_PerceptionLocals' is no longer needed in watchOS 10+"
)
@available(tvOS, deprecated: 17, message: "'_PerceptionLocals' is no longer needed in tvOS 17+")
public enum _PerceptionLocals {
@TaskLocal public static var isInPerceptionTracking = false
@TaskLocal public static var skipPerceptionChecking = false
Expand Down
4 changes: 4 additions & 0 deletions Sources/Perception/PerceptionRegistrar.swift
Original file line number Diff line number Diff line change
Expand Up @@ -5,6 +5,10 @@ import IssueReporting
///
/// You don't need to create an instance of `PerceptionRegistrar` when using
/// the ``Perception/Perceptible()`` macro to indicate observability of a type.
@available(iOS, deprecated: 17, message: "Use 'ObservationRegistrar' instead.")
@available(macOS, deprecated: 14, message: "Use 'ObservationRegistrar' instead.")
@available(watchOS, deprecated: 10, message: "Use 'ObservationRegistrar' instead.")
@available(tvOS, deprecated: 17, message: "Use 'ObservationRegistrar' instead.")
public struct PerceptionRegistrar: Sendable {
private let _rawValue: AnySendable
#if DEBUG
Expand Down
12 changes: 12 additions & 0 deletions Sources/Perception/WithPerceptionTracking.swift
Original file line number Diff line number Diff line change
Expand Up @@ -47,6 +47,18 @@
/// To debug this, expand the warning in the Issue Navigator of Xcode (cmd+5), and click through
/// the stack frames displayed to find the line in your view where you are accessing state without
/// being inside ``WithPerceptionTracking``.
@available(
iOS, deprecated: 17, message: "'WithPerceptionTracking' is no longer needed in iOS 17+"
)
@available(
macOS, deprecated: 14, message: "'WithPerceptionTracking' is no longer needed in macOS 14+"
)
@available(
watchOS, deprecated: 10, message: "'WithPerceptionTracking' is no longer needed in watchOS 10+"
)
@available(
tvOS, deprecated: 17, message: "'WithPerceptionTracking' is no longer needed in tvOS 17+"
)
public struct WithPerceptionTracking<Content> {
@State var id = 0
let content: () -> Content
Expand Down