From dd76be940620f969e339548365d362d90eebb11a Mon Sep 17 00:00:00 2001 From: "github-actions[bot]" <41898282+github-actions[bot]@users.noreply.github.com> Date: Tue, 4 Aug 2026 20:38:01 +0000 Subject: [PATCH 1/5] Prepare Swift interface update From d0a43c7e8fe7940bd191b479494d3064be49eb3c Mon Sep 17 00:00:00 2001 From: "github-actions[bot]" <41898282+github-actions[bot]@users.noreply.github.com> Date: Wed, 5 Aug 2026 07:04:36 +0200 Subject: [PATCH 2/5] Update tvos Swift interfaces (#4) Co-authored-by: github-actions[bot] <41898282+github-actions[bot]@users.noreply.github.com> --- .../tvos/AssociatedObjects.swiftinterface | 136 ++++++++++++++++++ .../AssociatedObjectsMacros.swiftinterface | 18 +++ ...sociatedObjectsMacrosPlugin.swiftinterface | 25 ++++ 3 files changed, 179 insertions(+) create mode 100644 .agents/interfaces/tvos/AssociatedObjects.swiftinterface create mode 100644 .agents/interfaces/tvos/AssociatedObjectsMacros.swiftinterface create mode 100644 .agents/interfaces/tvos/AssociatedObjectsMacrosPlugin.swiftinterface diff --git a/.agents/interfaces/tvos/AssociatedObjects.swiftinterface b/.agents/interfaces/tvos/AssociatedObjects.swiftinterface new file mode 100644 index 0000000..48ffad4 --- /dev/null +++ b/.agents/interfaces/tvos/AssociatedObjects.swiftinterface @@ -0,0 +1,136 @@ +// swift-interface-format-version: 1.0 +// swift-compiler-version: Apple Swift version 6.3.3 (swiftlang-6.3.3.1.3 clang-2100.1.1.101) +// swift-module-flags: -target arm64-apple-tvos13.0-simulator -enable-objc-interop -swift-version 6 -Onone -module-name AssociatedObjects -package-name swift_associated_objects +// swift-module-flags-ignorable: -formal-cxx-interoperability-mode=off -interface-compiler-version 6.3.3 +import Foundation +import Swift +import _Concurrency +import _StringProcessing +import _SwiftConcurrencyShims +public protocol AssociatingObject : AnyObject { + @discardableResult + @inlinable func setAssociatedObject(_ object: Object?, forKey key: Swift.StaticString, policy: ObjectiveC.objc_AssociationPolicy) -> Swift.Bool + @discardableResult + @inlinable func setAssociatedObject(_ object: Object?, forKey key: Swift.StaticString, threadSafety: AssociatedObjects._AssociationPolicyThreadSafety) -> Swift.Bool + @inlinable func getAssociatedObject(of type: Object.Type, forKey key: Swift.StaticString) -> Object? +} +extension AssociatedObjects.AssociatingObject { + @discardableResult + @inlinable public func setAssociatedObject(_ object: Object?, forKey key: Swift.StaticString, policy: ObjectiveC.objc_AssociationPolicy = .retain(.nonatomic)) -> Swift.Bool { + return _setAssociatedObject( + object, + to: self, + forKey: key, + policy: policy + ) + } + @discardableResult + @inlinable public func setAssociatedObject(_ object: Object?, forKey key: Swift.StaticString, threadSafety: AssociatedObjects._AssociationPolicyThreadSafety) -> Swift.Bool { + return _setAssociatedObject( + object, + to: self, + forKey: key, + threadSafety: threadSafety + ) + } + @inlinable public func getAssociatedObject(of type: Object.Type = Object.self, forKey key: Swift.StaticString) -> Object? { + return _getAssociatedObject( + forKey: key, + from: self + ) + } +} +@discardableResult +@inlinable public func _setAssociatedObject(_ object: Object?, to associatingObject: Swift.AnyObject, forKey key: Swift.StaticString, threadSafety: AssociatedObjects._AssociationPolicyThreadSafety = .nonatomic) -> Swift.Bool { + _setAssociatedObject( + object, + to: associatingObject, + forKey: key, + policy: .init( + Object.self is AnyClass ? .retain : .copy, + threadSafety + ) + ) +} +@discardableResult +@inlinable public func _setAssociatedObject(_ object: Object?, to associatingObject: Swift.AnyObject, forKey key: Swift.StaticString, policy: ObjectiveC.objc_AssociationPolicy) -> Swift.Bool { + guard key.hasPointerRepresentation + else { return false } + + objc_setAssociatedObject( + associatingObject, + UnsafeRawPointer(key.utf8Start), + object, + policy + ) + + return true +} +@inlinable public func _getAssociatedObject(of type: Object.Type = Object.self, forKey key: Swift.StaticString, from associatingObject: Swift.AnyObject) -> Object? { + guard key.hasPointerRepresentation + else { return nil } + + return objc_getAssociatedObject( + associatingObject, + UnsafeRawPointer(key.utf8Start) + ) + .flatMap { $0 as? Object } +} +extension ObjectiveC.NSObject : AssociatedObjects.AssociatingObject { +} +public enum _AssociationPolicyKind : Swift.String { + case copy + case assign + case retain + @inlinable public init?(rawValue: Swift.String) + public typealias RawValue = Swift.String + public var rawValue: Swift.String { + @inlinable get + } +} +public enum _AssociationPolicyThreadSafety : Swift.String { + case atomic + case nonatomic + @inlinable public init?(rawValue: Swift.String) + public typealias RawValue = Swift.String + public var rawValue: Swift.String { + @inlinable get + } +} +extension ObjectiveC.objc_AssociationPolicy { + @inlinable public init(_ kind: AssociatedObjects._AssociationPolicyKind, _ threadSafety: AssociatedObjects._AssociationPolicyThreadSafety) { + switch kind { + case .copy: + self = .copy(threadSafety) + case .assign: + self = .assign + case .retain: + self = .retain(threadSafety) + } + } + @inlinable public static var assign: ObjectiveC.objc_AssociationPolicy { + get { .OBJC_ASSOCIATION_ASSIGN } + } + @inlinable public static func retain(_ threadSafety: AssociatedObjects._AssociationPolicyThreadSafety) -> ObjectiveC.objc_AssociationPolicy { + switch threadSafety { + case .atomic: + .OBJC_ASSOCIATION_RETAIN + case .nonatomic: + .OBJC_ASSOCIATION_RETAIN_NONATOMIC + } + } + @inlinable public static func copy(_ threadSafety: AssociatedObjects._AssociationPolicyThreadSafety) -> ObjectiveC.objc_AssociationPolicy { + switch threadSafety { + case .atomic: + .OBJC_ASSOCIATION_COPY + case .nonatomic: + .OBJC_ASSOCIATION_COPY_NONATOMIC + } + } +} +extension AssociatedObjects._AssociationPolicyKind : Swift.Equatable {} +extension AssociatedObjects._AssociationPolicyKind : Swift.Hashable {} +extension AssociatedObjects._AssociationPolicyKind : Swift.RawRepresentable {} +extension AssociatedObjects._AssociationPolicyThreadSafety : Swift.Equatable {} +extension AssociatedObjects._AssociationPolicyThreadSafety : Swift.Hashable {} +extension AssociatedObjects._AssociationPolicyThreadSafety : Swift.RawRepresentable {} diff --git a/.agents/interfaces/tvos/AssociatedObjectsMacros.swiftinterface b/.agents/interfaces/tvos/AssociatedObjectsMacros.swiftinterface new file mode 100644 index 0000000..0527945 --- /dev/null +++ b/.agents/interfaces/tvos/AssociatedObjectsMacros.swiftinterface @@ -0,0 +1,18 @@ +// swift-interface-format-version: 1.0 +// swift-compiler-version: Apple Swift version 6.3.3 (swiftlang-6.3.3.1.3 clang-2100.1.1.101) +// swift-module-flags: -target arm64-apple-tvos13.0-simulator -enable-objc-interop -swift-version 6 -Onone -module-name AssociatedObjectsMacros -package-name swift_associated_objects +// swift-module-flags-ignorable: -formal-cxx-interoperability-mode=off -interface-compiler-version 6.3.3 +@_exported import AssociatedObjects +import Foundation +import Swift +import _Concurrency +import _StringProcessing +import _SwiftConcurrencyShims +@attached(accessor) public macro AssociatedObject(policy: ObjectiveC.objc_AssociationPolicy, readonly: Swift.Bool) = #externalMacro( + module: "AssociatedObjectsMacrosPlugin", + type: "AssociatedObjectMacro" +) +@attached(accessor) public macro AssociatedObject(threadSafety: AssociatedObjects._AssociationPolicyThreadSafety = .nonatomic, readonly: Swift.Bool = true) = #externalMacro( + module: "AssociatedObjectsMacrosPlugin", + type: "AssociatedObjectMacro" +) diff --git a/.agents/interfaces/tvos/AssociatedObjectsMacrosPlugin.swiftinterface b/.agents/interfaces/tvos/AssociatedObjectsMacrosPlugin.swiftinterface new file mode 100644 index 0000000..d28a714 --- /dev/null +++ b/.agents/interfaces/tvos/AssociatedObjectsMacrosPlugin.swiftinterface @@ -0,0 +1,25 @@ +// swift-interface-format-version: 1.0 +// swift-compiler-version: Apple Swift version 6.3.3 (swiftlang-6.3.3.1.3 clang-2100.1.1.101) +// swift-module-flags: -target arm64-apple-macosx10.15 -enable-objc-interop -swift-version 6 -Onone -module-name AssociatedObjectsMacrosPlugin -package-name swift_associated_objects +// swift-module-flags-ignorable: -formal-cxx-interoperability-mode=off -interface-compiler-version 6.3.3 +import Foundation +import MacroToolkit +import Swift +import SwiftCompilerPlugin +import SwiftDiagnostics +import SwiftSyntax +import SwiftSyntaxMacros +import _Concurrency +import _StringProcessing +import _SwiftConcurrencyShims +public struct AssociatedObjectMacro : SwiftSyntaxMacros.AccessorMacro { + public static func expansion(of node: SwiftSyntax.AttributeSyntax, providingAccessorsOf declaration: some DeclSyntaxProtocol, in context: some MacroExpansionContext) throws -> [SwiftSyntax.AccessorDeclSyntax] +} +extension SwiftSyntaxMacros.MacroExpansionContext { + public func diagnose(_ diagnostic: SwiftDiagnostics.Diagnostic, return value: T) -> T +} +public func == (lhs: Swift.KeyPath, rhs: B) -> (A) -> Swift.Bool where B : Swift.Equatable +public func != (lhs: Swift.KeyPath, rhs: B) -> (A) -> Swift.Bool where B : Swift.Equatable +public func || (lhs: @escaping (A) -> Swift.Bool, rhs: @escaping (A) -> Swift.Bool) -> (A) -> Swift.Bool +public func && (lhs: @escaping (A) -> Swift.Bool, rhs: @escaping (A) -> Swift.Bool) -> (A) -> Swift.Bool +prefix public func ! (f: @escaping (A) -> Swift.Bool) -> (A) -> Swift.Bool From bfcd0473ad3180a8e04a95b6e82de3bde6b62641 Mon Sep 17 00:00:00 2001 From: "github-actions[bot]" <41898282+github-actions[bot]@users.noreply.github.com> Date: Wed, 5 Aug 2026 07:04:39 +0200 Subject: [PATCH 3/5] Update macos Swift interfaces (#5) Co-authored-by: github-actions[bot] <41898282+github-actions[bot]@users.noreply.github.com> --- .../macos/AssociatedObjects.swiftinterface | 66 +++++++++---------- .../AssociatedObjectsMacros.swiftinterface | 10 +-- ...sociatedObjectsMacrosPlugin.swiftinterface | 24 +++---- 3 files changed, 50 insertions(+), 50 deletions(-) diff --git a/.agents/interfaces/macos/AssociatedObjects.swiftinterface b/.agents/interfaces/macos/AssociatedObjects.swiftinterface index a48208d..93dca85 100644 --- a/.agents/interfaces/macos/AssociatedObjects.swiftinterface +++ b/.agents/interfaces/macos/AssociatedObjects.swiftinterface @@ -1,7 +1,7 @@ // swift-interface-format-version: 1.0 -// swift-compiler-version: Apple Swift version 6.4 (swiftlang-6.4.0.25.4 clang-2100.3.25.1) -// swift-module-flags: -target arm64-apple-macosx12.0 -enable-objc-interop -language-mode 6 -Onone -module-name AssociatedObjects -package-name swift_associated_objects -// swift-module-flags-ignorable: -formal-cxx-interoperability-mode=off -interface-compiler-version 6.4 +// swift-compiler-version: Apple Swift version 6.3.3 (swiftlang-6.3.3.1.3 clang-2100.1.1.101) +// swift-module-flags: -target arm64-apple-macosx10.15 -enable-objc-interop -swift-version 6 -Onone -module-name AssociatedObjects -package-name swift_associated_objects +// swift-module-flags-ignorable: -formal-cxx-interoperability-mode=off -interface-compiler-version 6.3.3 import Foundation import Swift import _Concurrency @@ -9,14 +9,14 @@ import _StringProcessing import _SwiftConcurrencyShims public protocol AssociatingObject : AnyObject { @discardableResult - @inlinable func setAssociatedObject(_ object: Object?, forKey key: Swift::StaticString, policy: ObjectiveC::objc_AssociationPolicy) -> Swift::Bool + @inlinable func setAssociatedObject(_ object: Object?, forKey key: Swift.StaticString, policy: ObjectiveC.objc_AssociationPolicy) -> Swift.Bool @discardableResult - @inlinable func setAssociatedObject(_ object: Object?, forKey key: Swift::StaticString, threadSafety: AssociatedObjects::_AssociationPolicyThreadSafety) -> Swift::Bool - @inlinable func getAssociatedObject(of type: Object.Type, forKey key: Swift::StaticString) -> Object? + @inlinable func setAssociatedObject(_ object: Object?, forKey key: Swift.StaticString, threadSafety: AssociatedObjects._AssociationPolicyThreadSafety) -> Swift.Bool + @inlinable func getAssociatedObject(of type: Object.Type, forKey key: Swift.StaticString) -> Object? } -extension AssociatedObjects::AssociatingObject { +extension AssociatedObjects.AssociatingObject { @discardableResult - @inlinable public func setAssociatedObject(_ object: Object?, forKey key: Swift::StaticString, policy: ObjectiveC::objc_AssociationPolicy = .retain(.nonatomic)) -> Swift::Bool { + @inlinable public func setAssociatedObject(_ object: Object?, forKey key: Swift.StaticString, policy: ObjectiveC.objc_AssociationPolicy = .retain(.nonatomic)) -> Swift.Bool { return _setAssociatedObject( object, to: self, @@ -25,7 +25,7 @@ extension AssociatedObjects::AssociatingObject { ) } @discardableResult - @inlinable public func setAssociatedObject(_ object: Object?, forKey key: Swift::StaticString, threadSafety: AssociatedObjects::_AssociationPolicyThreadSafety) -> Swift::Bool { + @inlinable public func setAssociatedObject(_ object: Object?, forKey key: Swift.StaticString, threadSafety: AssociatedObjects._AssociationPolicyThreadSafety) -> Swift.Bool { return _setAssociatedObject( object, to: self, @@ -33,7 +33,7 @@ extension AssociatedObjects::AssociatingObject { threadSafety: threadSafety ) } - @inlinable public func getAssociatedObject(of type: Object.Type = Object.self, forKey key: Swift::StaticString) -> Object? { + @inlinable public func getAssociatedObject(of type: Object.Type = Object.self, forKey key: Swift.StaticString) -> Object? { return _getAssociatedObject( forKey: key, from: self @@ -41,7 +41,7 @@ extension AssociatedObjects::AssociatingObject { } } @discardableResult -@inlinable public func _setAssociatedObject(_ object: Object?, to associatingObject: Swift::AnyObject, forKey key: Swift::StaticString, threadSafety: AssociatedObjects::_AssociationPolicyThreadSafety = .nonatomic) -> Swift::Bool { +@inlinable public func _setAssociatedObject(_ object: Object?, to associatingObject: Swift.AnyObject, forKey key: Swift.StaticString, threadSafety: AssociatedObjects._AssociationPolicyThreadSafety = .nonatomic) -> Swift.Bool { _setAssociatedObject( object, to: associatingObject, @@ -53,7 +53,7 @@ extension AssociatedObjects::AssociatingObject { ) } @discardableResult -@inlinable public func _setAssociatedObject(_ object: Object?, to associatingObject: Swift::AnyObject, forKey key: Swift::StaticString, policy: ObjectiveC::objc_AssociationPolicy) -> Swift::Bool { +@inlinable public func _setAssociatedObject(_ object: Object?, to associatingObject: Swift.AnyObject, forKey key: Swift.StaticString, policy: ObjectiveC.objc_AssociationPolicy) -> Swift.Bool { guard key.hasPointerRepresentation else { return false } @@ -66,7 +66,7 @@ extension AssociatedObjects::AssociatingObject { return true } -@inlinable public func _getAssociatedObject(of type: Object.Type = Object.self, forKey key: Swift::StaticString, from associatingObject: Swift::AnyObject) -> Object? { +@inlinable public func _getAssociatedObject(of type: Object.Type = Object.self, forKey key: Swift.StaticString, from associatingObject: Swift.AnyObject) -> Object? { guard key.hasPointerRepresentation else { return nil } @@ -76,29 +76,29 @@ extension AssociatedObjects::AssociatingObject { ) .flatMap { $0 as? Object } } -extension ObjectiveC::NSObject : AssociatedObjects::AssociatingObject { +extension ObjectiveC.NSObject : AssociatedObjects.AssociatingObject { } -public enum _AssociationPolicyKind : Swift::String { +public enum _AssociationPolicyKind : Swift.String { case copy case assign case retain - @inlinable public init?(rawValue: Swift::String) - public typealias RawValue = Swift::String - public var rawValue: Swift::String { + @inlinable public init?(rawValue: Swift.String) + public typealias RawValue = Swift.String + public var rawValue: Swift.String { @inlinable get } } -public enum _AssociationPolicyThreadSafety : Swift::String { +public enum _AssociationPolicyThreadSafety : Swift.String { case atomic case nonatomic - @inlinable public init?(rawValue: Swift::String) - public typealias RawValue = Swift::String - public var rawValue: Swift::String { + @inlinable public init?(rawValue: Swift.String) + public typealias RawValue = Swift.String + public var rawValue: Swift.String { @inlinable get } } -extension ObjectiveC::objc_AssociationPolicy { - @inlinable public init(_ kind: AssociatedObjects::_AssociationPolicyKind, _ threadSafety: AssociatedObjects::_AssociationPolicyThreadSafety) { +extension ObjectiveC.objc_AssociationPolicy { + @inlinable public init(_ kind: AssociatedObjects._AssociationPolicyKind, _ threadSafety: AssociatedObjects._AssociationPolicyThreadSafety) { switch kind { case .copy: self = .copy(threadSafety) @@ -108,10 +108,10 @@ extension ObjectiveC::objc_AssociationPolicy { self = .retain(threadSafety) } } - @inlinable public static var assign: ObjectiveC::objc_AssociationPolicy { + @inlinable public static var assign: ObjectiveC.objc_AssociationPolicy { get { .OBJC_ASSOCIATION_ASSIGN } } - @inlinable public static func retain(_ threadSafety: AssociatedObjects::_AssociationPolicyThreadSafety) -> ObjectiveC::objc_AssociationPolicy { + @inlinable public static func retain(_ threadSafety: AssociatedObjects._AssociationPolicyThreadSafety) -> ObjectiveC.objc_AssociationPolicy { switch threadSafety { case .atomic: .OBJC_ASSOCIATION_RETAIN @@ -119,7 +119,7 @@ extension ObjectiveC::objc_AssociationPolicy { .OBJC_ASSOCIATION_RETAIN_NONATOMIC } } - @inlinable public static func copy(_ threadSafety: AssociatedObjects::_AssociationPolicyThreadSafety) -> ObjectiveC::objc_AssociationPolicy { + @inlinable public static func copy(_ threadSafety: AssociatedObjects._AssociationPolicyThreadSafety) -> ObjectiveC.objc_AssociationPolicy { switch threadSafety { case .atomic: .OBJC_ASSOCIATION_COPY @@ -128,9 +128,9 @@ extension ObjectiveC::objc_AssociationPolicy { } } } -extension AssociatedObjects::_AssociationPolicyKind : Swift::Equatable {} -extension AssociatedObjects::_AssociationPolicyKind : Swift::Hashable {} -extension AssociatedObjects::_AssociationPolicyKind : Swift::RawRepresentable {} -extension AssociatedObjects::_AssociationPolicyThreadSafety : Swift::Equatable {} -extension AssociatedObjects::_AssociationPolicyThreadSafety : Swift::Hashable {} -extension AssociatedObjects::_AssociationPolicyThreadSafety : Swift::RawRepresentable {} +extension AssociatedObjects._AssociationPolicyKind : Swift.Equatable {} +extension AssociatedObjects._AssociationPolicyKind : Swift.Hashable {} +extension AssociatedObjects._AssociationPolicyKind : Swift.RawRepresentable {} +extension AssociatedObjects._AssociationPolicyThreadSafety : Swift.Equatable {} +extension AssociatedObjects._AssociationPolicyThreadSafety : Swift.Hashable {} +extension AssociatedObjects._AssociationPolicyThreadSafety : Swift.RawRepresentable {} diff --git a/.agents/interfaces/macos/AssociatedObjectsMacros.swiftinterface b/.agents/interfaces/macos/AssociatedObjectsMacros.swiftinterface index ddecc60..aa86ffe 100644 --- a/.agents/interfaces/macos/AssociatedObjectsMacros.swiftinterface +++ b/.agents/interfaces/macos/AssociatedObjectsMacros.swiftinterface @@ -1,18 +1,18 @@ // swift-interface-format-version: 1.0 -// swift-compiler-version: Apple Swift version 6.4 (swiftlang-6.4.0.25.4 clang-2100.3.25.1) -// swift-module-flags: -target arm64-apple-macosx12.0 -enable-objc-interop -language-mode 6 -Onone -module-name AssociatedObjectsMacros -package-name swift_associated_objects -// swift-module-flags-ignorable: -formal-cxx-interoperability-mode=off -interface-compiler-version 6.4 +// swift-compiler-version: Apple Swift version 6.3.3 (swiftlang-6.3.3.1.3 clang-2100.1.1.101) +// swift-module-flags: -target arm64-apple-macosx10.15 -enable-objc-interop -swift-version 6 -Onone -module-name AssociatedObjectsMacros -package-name swift_associated_objects +// swift-module-flags-ignorable: -formal-cxx-interoperability-mode=off -interface-compiler-version 6.3.3 @_exported import AssociatedObjects import Foundation import Swift import _Concurrency import _StringProcessing import _SwiftConcurrencyShims -@attached(accessor) public macro AssociatedObject(policy: ObjectiveC::objc_AssociationPolicy, readonly: Swift::Bool) = #externalMacro( +@attached(accessor) public macro AssociatedObject(policy: ObjectiveC.objc_AssociationPolicy, readonly: Swift.Bool) = #externalMacro( module: "AssociatedObjectsMacrosPlugin", type: "AssociatedObjectMacro" ) -@attached(accessor) public macro AssociatedObject(threadSafety: AssociatedObjects::_AssociationPolicyThreadSafety = .nonatomic, readonly: Swift::Bool = true) = #externalMacro( +@attached(accessor) public macro AssociatedObject(threadSafety: AssociatedObjects._AssociationPolicyThreadSafety = .nonatomic, readonly: Swift.Bool = true) = #externalMacro( module: "AssociatedObjectsMacrosPlugin", type: "AssociatedObjectMacro" ) diff --git a/.agents/interfaces/macos/AssociatedObjectsMacrosPlugin.swiftinterface b/.agents/interfaces/macos/AssociatedObjectsMacrosPlugin.swiftinterface index de8e2a6..d28a714 100644 --- a/.agents/interfaces/macos/AssociatedObjectsMacrosPlugin.swiftinterface +++ b/.agents/interfaces/macos/AssociatedObjectsMacrosPlugin.swiftinterface @@ -1,7 +1,7 @@ // swift-interface-format-version: 1.0 -// swift-compiler-version: Apple Swift version 6.4 (swiftlang-6.4.0.25.4 clang-2100.3.25.1) -// swift-module-flags: -target arm64-apple-macosx12.0 -enable-objc-interop -language-mode 6 -Onone -module-name AssociatedObjectsMacrosPlugin -package-name swift_associated_objects -// swift-module-flags-ignorable: -formal-cxx-interoperability-mode=off -interface-compiler-version 6.4 +// swift-compiler-version: Apple Swift version 6.3.3 (swiftlang-6.3.3.1.3 clang-2100.1.1.101) +// swift-module-flags: -target arm64-apple-macosx10.15 -enable-objc-interop -swift-version 6 -Onone -module-name AssociatedObjectsMacrosPlugin -package-name swift_associated_objects +// swift-module-flags-ignorable: -formal-cxx-interoperability-mode=off -interface-compiler-version 6.3.3 import Foundation import MacroToolkit import Swift @@ -12,14 +12,14 @@ import SwiftSyntaxMacros import _Concurrency import _StringProcessing import _SwiftConcurrencyShims -public struct AssociatedObjectMacro : SwiftSyntaxMacros::AccessorMacro { - public static func expansion(of node: SwiftSyntax::AttributeSyntax, providingAccessorsOf declaration: some DeclSyntaxProtocol, in context: some MacroExpansionContext) throws -> [SwiftSyntax::AccessorDeclSyntax] +public struct AssociatedObjectMacro : SwiftSyntaxMacros.AccessorMacro { + public static func expansion(of node: SwiftSyntax.AttributeSyntax, providingAccessorsOf declaration: some DeclSyntaxProtocol, in context: some MacroExpansionContext) throws -> [SwiftSyntax.AccessorDeclSyntax] } -extension SwiftSyntaxMacros::MacroExpansionContext { - public func diagnose(_ diagnostic: SwiftDiagnostics::Diagnostic, return value: T) -> T +extension SwiftSyntaxMacros.MacroExpansionContext { + public func diagnose(_ diagnostic: SwiftDiagnostics.Diagnostic, return value: T) -> T } -public func == (lhs: Swift::KeyPath, rhs: B) -> (A) -> Swift::Bool where B : Swift::Equatable -public func != (lhs: Swift::KeyPath, rhs: B) -> (A) -> Swift::Bool where B : Swift::Equatable -public func || (lhs: @escaping (A) -> Swift::Bool, rhs: @escaping (A) -> Swift::Bool) -> (A) -> Swift::Bool -public func && (lhs: @escaping (A) -> Swift::Bool, rhs: @escaping (A) -> Swift::Bool) -> (A) -> Swift::Bool -prefix public func ! (f: @escaping (A) -> Swift::Bool) -> (A) -> Swift::Bool +public func == (lhs: Swift.KeyPath, rhs: B) -> (A) -> Swift.Bool where B : Swift.Equatable +public func != (lhs: Swift.KeyPath, rhs: B) -> (A) -> Swift.Bool where B : Swift.Equatable +public func || (lhs: @escaping (A) -> Swift.Bool, rhs: @escaping (A) -> Swift.Bool) -> (A) -> Swift.Bool +public func && (lhs: @escaping (A) -> Swift.Bool, rhs: @escaping (A) -> Swift.Bool) -> (A) -> Swift.Bool +prefix public func ! (f: @escaping (A) -> Swift.Bool) -> (A) -> Swift.Bool From b1da5130c1ea8bc1744a7995e0d093337c7628b5 Mon Sep 17 00:00:00 2001 From: "github-actions[bot]" <41898282+github-actions[bot]@users.noreply.github.com> Date: Wed, 5 Aug 2026 07:04:42 +0200 Subject: [PATCH 4/5] Update watchos Swift interfaces (#6) Co-authored-by: github-actions[bot] <41898282+github-actions[bot]@users.noreply.github.com> --- .../watchos/AssociatedObjects.swiftinterface | 136 ++++++++++++++++++ .../AssociatedObjectsMacros.swiftinterface | 18 +++ ...sociatedObjectsMacrosPlugin.swiftinterface | 25 ++++ 3 files changed, 179 insertions(+) create mode 100644 .agents/interfaces/watchos/AssociatedObjects.swiftinterface create mode 100644 .agents/interfaces/watchos/AssociatedObjectsMacros.swiftinterface create mode 100644 .agents/interfaces/watchos/AssociatedObjectsMacrosPlugin.swiftinterface diff --git a/.agents/interfaces/watchos/AssociatedObjects.swiftinterface b/.agents/interfaces/watchos/AssociatedObjects.swiftinterface new file mode 100644 index 0000000..2130182 --- /dev/null +++ b/.agents/interfaces/watchos/AssociatedObjects.swiftinterface @@ -0,0 +1,136 @@ +// swift-interface-format-version: 1.0 +// swift-compiler-version: Apple Swift version 6.3.3 (swiftlang-6.3.3.1.3 clang-2100.1.1.101) +// swift-module-flags: -target arm64-apple-watchos6.0-simulator -enable-objc-interop -swift-version 6 -Onone -module-name AssociatedObjects -package-name swift_associated_objects +// swift-module-flags-ignorable: -formal-cxx-interoperability-mode=off -interface-compiler-version 6.3.3 +import Foundation +import Swift +import _Concurrency +import _StringProcessing +import _SwiftConcurrencyShims +public protocol AssociatingObject : AnyObject { + @discardableResult + @inlinable func setAssociatedObject(_ object: Object?, forKey key: Swift.StaticString, policy: ObjectiveC.objc_AssociationPolicy) -> Swift.Bool + @discardableResult + @inlinable func setAssociatedObject(_ object: Object?, forKey key: Swift.StaticString, threadSafety: AssociatedObjects._AssociationPolicyThreadSafety) -> Swift.Bool + @inlinable func getAssociatedObject(of type: Object.Type, forKey key: Swift.StaticString) -> Object? +} +extension AssociatedObjects.AssociatingObject { + @discardableResult + @inlinable public func setAssociatedObject(_ object: Object?, forKey key: Swift.StaticString, policy: ObjectiveC.objc_AssociationPolicy = .retain(.nonatomic)) -> Swift.Bool { + return _setAssociatedObject( + object, + to: self, + forKey: key, + policy: policy + ) + } + @discardableResult + @inlinable public func setAssociatedObject(_ object: Object?, forKey key: Swift.StaticString, threadSafety: AssociatedObjects._AssociationPolicyThreadSafety) -> Swift.Bool { + return _setAssociatedObject( + object, + to: self, + forKey: key, + threadSafety: threadSafety + ) + } + @inlinable public func getAssociatedObject(of type: Object.Type = Object.self, forKey key: Swift.StaticString) -> Object? { + return _getAssociatedObject( + forKey: key, + from: self + ) + } +} +@discardableResult +@inlinable public func _setAssociatedObject(_ object: Object?, to associatingObject: Swift.AnyObject, forKey key: Swift.StaticString, threadSafety: AssociatedObjects._AssociationPolicyThreadSafety = .nonatomic) -> Swift.Bool { + _setAssociatedObject( + object, + to: associatingObject, + forKey: key, + policy: .init( + Object.self is AnyClass ? .retain : .copy, + threadSafety + ) + ) +} +@discardableResult +@inlinable public func _setAssociatedObject(_ object: Object?, to associatingObject: Swift.AnyObject, forKey key: Swift.StaticString, policy: ObjectiveC.objc_AssociationPolicy) -> Swift.Bool { + guard key.hasPointerRepresentation + else { return false } + + objc_setAssociatedObject( + associatingObject, + UnsafeRawPointer(key.utf8Start), + object, + policy + ) + + return true +} +@inlinable public func _getAssociatedObject(of type: Object.Type = Object.self, forKey key: Swift.StaticString, from associatingObject: Swift.AnyObject) -> Object? { + guard key.hasPointerRepresentation + else { return nil } + + return objc_getAssociatedObject( + associatingObject, + UnsafeRawPointer(key.utf8Start) + ) + .flatMap { $0 as? Object } +} +extension ObjectiveC.NSObject : AssociatedObjects.AssociatingObject { +} +public enum _AssociationPolicyKind : Swift.String { + case copy + case assign + case retain + @inlinable public init?(rawValue: Swift.String) + public typealias RawValue = Swift.String + public var rawValue: Swift.String { + @inlinable get + } +} +public enum _AssociationPolicyThreadSafety : Swift.String { + case atomic + case nonatomic + @inlinable public init?(rawValue: Swift.String) + public typealias RawValue = Swift.String + public var rawValue: Swift.String { + @inlinable get + } +} +extension ObjectiveC.objc_AssociationPolicy { + @inlinable public init(_ kind: AssociatedObjects._AssociationPolicyKind, _ threadSafety: AssociatedObjects._AssociationPolicyThreadSafety) { + switch kind { + case .copy: + self = .copy(threadSafety) + case .assign: + self = .assign + case .retain: + self = .retain(threadSafety) + } + } + @inlinable public static var assign: ObjectiveC.objc_AssociationPolicy { + get { .OBJC_ASSOCIATION_ASSIGN } + } + @inlinable public static func retain(_ threadSafety: AssociatedObjects._AssociationPolicyThreadSafety) -> ObjectiveC.objc_AssociationPolicy { + switch threadSafety { + case .atomic: + .OBJC_ASSOCIATION_RETAIN + case .nonatomic: + .OBJC_ASSOCIATION_RETAIN_NONATOMIC + } + } + @inlinable public static func copy(_ threadSafety: AssociatedObjects._AssociationPolicyThreadSafety) -> ObjectiveC.objc_AssociationPolicy { + switch threadSafety { + case .atomic: + .OBJC_ASSOCIATION_COPY + case .nonatomic: + .OBJC_ASSOCIATION_COPY_NONATOMIC + } + } +} +extension AssociatedObjects._AssociationPolicyKind : Swift.Equatable {} +extension AssociatedObjects._AssociationPolicyKind : Swift.Hashable {} +extension AssociatedObjects._AssociationPolicyKind : Swift.RawRepresentable {} +extension AssociatedObjects._AssociationPolicyThreadSafety : Swift.Equatable {} +extension AssociatedObjects._AssociationPolicyThreadSafety : Swift.Hashable {} +extension AssociatedObjects._AssociationPolicyThreadSafety : Swift.RawRepresentable {} diff --git a/.agents/interfaces/watchos/AssociatedObjectsMacros.swiftinterface b/.agents/interfaces/watchos/AssociatedObjectsMacros.swiftinterface new file mode 100644 index 0000000..c8286fc --- /dev/null +++ b/.agents/interfaces/watchos/AssociatedObjectsMacros.swiftinterface @@ -0,0 +1,18 @@ +// swift-interface-format-version: 1.0 +// swift-compiler-version: Apple Swift version 6.3.3 (swiftlang-6.3.3.1.3 clang-2100.1.1.101) +// swift-module-flags: -target arm64-apple-watchos6.0-simulator -enable-objc-interop -swift-version 6 -Onone -module-name AssociatedObjectsMacros -package-name swift_associated_objects +// swift-module-flags-ignorable: -formal-cxx-interoperability-mode=off -interface-compiler-version 6.3.3 +@_exported import AssociatedObjects +import Foundation +import Swift +import _Concurrency +import _StringProcessing +import _SwiftConcurrencyShims +@attached(accessor) public macro AssociatedObject(policy: ObjectiveC.objc_AssociationPolicy, readonly: Swift.Bool) = #externalMacro( + module: "AssociatedObjectsMacrosPlugin", + type: "AssociatedObjectMacro" +) +@attached(accessor) public macro AssociatedObject(threadSafety: AssociatedObjects._AssociationPolicyThreadSafety = .nonatomic, readonly: Swift.Bool = true) = #externalMacro( + module: "AssociatedObjectsMacrosPlugin", + type: "AssociatedObjectMacro" +) diff --git a/.agents/interfaces/watchos/AssociatedObjectsMacrosPlugin.swiftinterface b/.agents/interfaces/watchos/AssociatedObjectsMacrosPlugin.swiftinterface new file mode 100644 index 0000000..d28a714 --- /dev/null +++ b/.agents/interfaces/watchos/AssociatedObjectsMacrosPlugin.swiftinterface @@ -0,0 +1,25 @@ +// swift-interface-format-version: 1.0 +// swift-compiler-version: Apple Swift version 6.3.3 (swiftlang-6.3.3.1.3 clang-2100.1.1.101) +// swift-module-flags: -target arm64-apple-macosx10.15 -enable-objc-interop -swift-version 6 -Onone -module-name AssociatedObjectsMacrosPlugin -package-name swift_associated_objects +// swift-module-flags-ignorable: -formal-cxx-interoperability-mode=off -interface-compiler-version 6.3.3 +import Foundation +import MacroToolkit +import Swift +import SwiftCompilerPlugin +import SwiftDiagnostics +import SwiftSyntax +import SwiftSyntaxMacros +import _Concurrency +import _StringProcessing +import _SwiftConcurrencyShims +public struct AssociatedObjectMacro : SwiftSyntaxMacros.AccessorMacro { + public static func expansion(of node: SwiftSyntax.AttributeSyntax, providingAccessorsOf declaration: some DeclSyntaxProtocol, in context: some MacroExpansionContext) throws -> [SwiftSyntax.AccessorDeclSyntax] +} +extension SwiftSyntaxMacros.MacroExpansionContext { + public func diagnose(_ diagnostic: SwiftDiagnostics.Diagnostic, return value: T) -> T +} +public func == (lhs: Swift.KeyPath, rhs: B) -> (A) -> Swift.Bool where B : Swift.Equatable +public func != (lhs: Swift.KeyPath, rhs: B) -> (A) -> Swift.Bool where B : Swift.Equatable +public func || (lhs: @escaping (A) -> Swift.Bool, rhs: @escaping (A) -> Swift.Bool) -> (A) -> Swift.Bool +public func && (lhs: @escaping (A) -> Swift.Bool, rhs: @escaping (A) -> Swift.Bool) -> (A) -> Swift.Bool +prefix public func ! (f: @escaping (A) -> Swift.Bool) -> (A) -> Swift.Bool From 48a0a988b2b6853984d83d1bf51c0171c23ac8b5 Mon Sep 17 00:00:00 2001 From: "github-actions[bot]" <41898282+github-actions[bot]@users.noreply.github.com> Date: Wed, 5 Aug 2026 07:04:44 +0200 Subject: [PATCH 5/5] Update ios Swift interfaces (#7) Co-authored-by: github-actions[bot] <41898282+github-actions[bot]@users.noreply.github.com> --- .../ios/AssociatedObjects.swiftinterface | 136 ++++++++++++++++++ .../AssociatedObjectsMacros.swiftinterface | 18 +++ ...sociatedObjectsMacrosPlugin.swiftinterface | 25 ++++ 3 files changed, 179 insertions(+) create mode 100644 .agents/interfaces/ios/AssociatedObjects.swiftinterface create mode 100644 .agents/interfaces/ios/AssociatedObjectsMacros.swiftinterface create mode 100644 .agents/interfaces/ios/AssociatedObjectsMacrosPlugin.swiftinterface diff --git a/.agents/interfaces/ios/AssociatedObjects.swiftinterface b/.agents/interfaces/ios/AssociatedObjects.swiftinterface new file mode 100644 index 0000000..3a63666 --- /dev/null +++ b/.agents/interfaces/ios/AssociatedObjects.swiftinterface @@ -0,0 +1,136 @@ +// swift-interface-format-version: 1.0 +// swift-compiler-version: Apple Swift version 6.3.3 (swiftlang-6.3.3.1.3 clang-2100.1.1.101) +// swift-module-flags: -target arm64-apple-ios13.0-simulator -enable-objc-interop -swift-version 6 -Onone -module-name AssociatedObjects -package-name swift_associated_objects +// swift-module-flags-ignorable: -formal-cxx-interoperability-mode=off -interface-compiler-version 6.3.3 +import Foundation +import Swift +import _Concurrency +import _StringProcessing +import _SwiftConcurrencyShims +public protocol AssociatingObject : AnyObject { + @discardableResult + @inlinable func setAssociatedObject(_ object: Object?, forKey key: Swift.StaticString, policy: ObjectiveC.objc_AssociationPolicy) -> Swift.Bool + @discardableResult + @inlinable func setAssociatedObject(_ object: Object?, forKey key: Swift.StaticString, threadSafety: AssociatedObjects._AssociationPolicyThreadSafety) -> Swift.Bool + @inlinable func getAssociatedObject(of type: Object.Type, forKey key: Swift.StaticString) -> Object? +} +extension AssociatedObjects.AssociatingObject { + @discardableResult + @inlinable public func setAssociatedObject(_ object: Object?, forKey key: Swift.StaticString, policy: ObjectiveC.objc_AssociationPolicy = .retain(.nonatomic)) -> Swift.Bool { + return _setAssociatedObject( + object, + to: self, + forKey: key, + policy: policy + ) + } + @discardableResult + @inlinable public func setAssociatedObject(_ object: Object?, forKey key: Swift.StaticString, threadSafety: AssociatedObjects._AssociationPolicyThreadSafety) -> Swift.Bool { + return _setAssociatedObject( + object, + to: self, + forKey: key, + threadSafety: threadSafety + ) + } + @inlinable public func getAssociatedObject(of type: Object.Type = Object.self, forKey key: Swift.StaticString) -> Object? { + return _getAssociatedObject( + forKey: key, + from: self + ) + } +} +@discardableResult +@inlinable public func _setAssociatedObject(_ object: Object?, to associatingObject: Swift.AnyObject, forKey key: Swift.StaticString, threadSafety: AssociatedObjects._AssociationPolicyThreadSafety = .nonatomic) -> Swift.Bool { + _setAssociatedObject( + object, + to: associatingObject, + forKey: key, + policy: .init( + Object.self is AnyClass ? .retain : .copy, + threadSafety + ) + ) +} +@discardableResult +@inlinable public func _setAssociatedObject(_ object: Object?, to associatingObject: Swift.AnyObject, forKey key: Swift.StaticString, policy: ObjectiveC.objc_AssociationPolicy) -> Swift.Bool { + guard key.hasPointerRepresentation + else { return false } + + objc_setAssociatedObject( + associatingObject, + UnsafeRawPointer(key.utf8Start), + object, + policy + ) + + return true +} +@inlinable public func _getAssociatedObject(of type: Object.Type = Object.self, forKey key: Swift.StaticString, from associatingObject: Swift.AnyObject) -> Object? { + guard key.hasPointerRepresentation + else { return nil } + + return objc_getAssociatedObject( + associatingObject, + UnsafeRawPointer(key.utf8Start) + ) + .flatMap { $0 as? Object } +} +extension ObjectiveC.NSObject : AssociatedObjects.AssociatingObject { +} +public enum _AssociationPolicyKind : Swift.String { + case copy + case assign + case retain + @inlinable public init?(rawValue: Swift.String) + public typealias RawValue = Swift.String + public var rawValue: Swift.String { + @inlinable get + } +} +public enum _AssociationPolicyThreadSafety : Swift.String { + case atomic + case nonatomic + @inlinable public init?(rawValue: Swift.String) + public typealias RawValue = Swift.String + public var rawValue: Swift.String { + @inlinable get + } +} +extension ObjectiveC.objc_AssociationPolicy { + @inlinable public init(_ kind: AssociatedObjects._AssociationPolicyKind, _ threadSafety: AssociatedObjects._AssociationPolicyThreadSafety) { + switch kind { + case .copy: + self = .copy(threadSafety) + case .assign: + self = .assign + case .retain: + self = .retain(threadSafety) + } + } + @inlinable public static var assign: ObjectiveC.objc_AssociationPolicy { + get { .OBJC_ASSOCIATION_ASSIGN } + } + @inlinable public static func retain(_ threadSafety: AssociatedObjects._AssociationPolicyThreadSafety) -> ObjectiveC.objc_AssociationPolicy { + switch threadSafety { + case .atomic: + .OBJC_ASSOCIATION_RETAIN + case .nonatomic: + .OBJC_ASSOCIATION_RETAIN_NONATOMIC + } + } + @inlinable public static func copy(_ threadSafety: AssociatedObjects._AssociationPolicyThreadSafety) -> ObjectiveC.objc_AssociationPolicy { + switch threadSafety { + case .atomic: + .OBJC_ASSOCIATION_COPY + case .nonatomic: + .OBJC_ASSOCIATION_COPY_NONATOMIC + } + } +} +extension AssociatedObjects._AssociationPolicyKind : Swift.Equatable {} +extension AssociatedObjects._AssociationPolicyKind : Swift.Hashable {} +extension AssociatedObjects._AssociationPolicyKind : Swift.RawRepresentable {} +extension AssociatedObjects._AssociationPolicyThreadSafety : Swift.Equatable {} +extension AssociatedObjects._AssociationPolicyThreadSafety : Swift.Hashable {} +extension AssociatedObjects._AssociationPolicyThreadSafety : Swift.RawRepresentable {} diff --git a/.agents/interfaces/ios/AssociatedObjectsMacros.swiftinterface b/.agents/interfaces/ios/AssociatedObjectsMacros.swiftinterface new file mode 100644 index 0000000..f4f38b9 --- /dev/null +++ b/.agents/interfaces/ios/AssociatedObjectsMacros.swiftinterface @@ -0,0 +1,18 @@ +// swift-interface-format-version: 1.0 +// swift-compiler-version: Apple Swift version 6.3.3 (swiftlang-6.3.3.1.3 clang-2100.1.1.101) +// swift-module-flags: -target arm64-apple-ios13.0-simulator -enable-objc-interop -swift-version 6 -Onone -module-name AssociatedObjectsMacros -package-name swift_associated_objects +// swift-module-flags-ignorable: -formal-cxx-interoperability-mode=off -interface-compiler-version 6.3.3 +@_exported import AssociatedObjects +import Foundation +import Swift +import _Concurrency +import _StringProcessing +import _SwiftConcurrencyShims +@attached(accessor) public macro AssociatedObject(policy: ObjectiveC.objc_AssociationPolicy, readonly: Swift.Bool) = #externalMacro( + module: "AssociatedObjectsMacrosPlugin", + type: "AssociatedObjectMacro" +) +@attached(accessor) public macro AssociatedObject(threadSafety: AssociatedObjects._AssociationPolicyThreadSafety = .nonatomic, readonly: Swift.Bool = true) = #externalMacro( + module: "AssociatedObjectsMacrosPlugin", + type: "AssociatedObjectMacro" +) diff --git a/.agents/interfaces/ios/AssociatedObjectsMacrosPlugin.swiftinterface b/.agents/interfaces/ios/AssociatedObjectsMacrosPlugin.swiftinterface new file mode 100644 index 0000000..d28a714 --- /dev/null +++ b/.agents/interfaces/ios/AssociatedObjectsMacrosPlugin.swiftinterface @@ -0,0 +1,25 @@ +// swift-interface-format-version: 1.0 +// swift-compiler-version: Apple Swift version 6.3.3 (swiftlang-6.3.3.1.3 clang-2100.1.1.101) +// swift-module-flags: -target arm64-apple-macosx10.15 -enable-objc-interop -swift-version 6 -Onone -module-name AssociatedObjectsMacrosPlugin -package-name swift_associated_objects +// swift-module-flags-ignorable: -formal-cxx-interoperability-mode=off -interface-compiler-version 6.3.3 +import Foundation +import MacroToolkit +import Swift +import SwiftCompilerPlugin +import SwiftDiagnostics +import SwiftSyntax +import SwiftSyntaxMacros +import _Concurrency +import _StringProcessing +import _SwiftConcurrencyShims +public struct AssociatedObjectMacro : SwiftSyntaxMacros.AccessorMacro { + public static func expansion(of node: SwiftSyntax.AttributeSyntax, providingAccessorsOf declaration: some DeclSyntaxProtocol, in context: some MacroExpansionContext) throws -> [SwiftSyntax.AccessorDeclSyntax] +} +extension SwiftSyntaxMacros.MacroExpansionContext { + public func diagnose(_ diagnostic: SwiftDiagnostics.Diagnostic, return value: T) -> T +} +public func == (lhs: Swift.KeyPath, rhs: B) -> (A) -> Swift.Bool where B : Swift.Equatable +public func != (lhs: Swift.KeyPath, rhs: B) -> (A) -> Swift.Bool where B : Swift.Equatable +public func || (lhs: @escaping (A) -> Swift.Bool, rhs: @escaping (A) -> Swift.Bool) -> (A) -> Swift.Bool +public func && (lhs: @escaping (A) -> Swift.Bool, rhs: @escaping (A) -> Swift.Bool) -> (A) -> Swift.Bool +prefix public func ! (f: @escaping (A) -> Swift.Bool) -> (A) -> Swift.Bool