Deprecation of ObjectiveC shivs

This commit is contained in:
John Estropia
2020-01-08 10:26:27 +09:00
parent b7ebda4487
commit 4beb11519e
21 changed files with 69 additions and 17 deletions

View File

@@ -30,6 +30,10 @@
@import CoreData; @import CoreData;
#pragma clang diagnostic push
#pragma clang diagnostic ignored "-Wdeprecated-declarations"
// MARK: - BridgingTests // MARK: - BridgingTests
@implementation BridgingTests @implementation BridgingTests
@@ -261,3 +265,5 @@
} }
@end @end
#pragma clang diagnostic pop

View File

@@ -31,6 +31,7 @@ import CoreStore
// MARK: - ErrorTests // MARK: - ErrorTests
@available(*, deprecated, message: "CoreStore Objective-C API will be removed soon.")
final class ErrorTests: XCTestCase { final class ErrorTests: XCTestCase {
@objc @objc

View File

@@ -34,6 +34,7 @@ import CoreData
- SeeAlso: `AsynchronousDataTransaction` - SeeAlso: `AsynchronousDataTransaction`
*/ */
@available(*, deprecated, message: "CoreStore Objective-C API will be removed soon.")
@objc @objc
public final class CSAsynchronousDataTransaction: CSBaseDataTransaction, CoreStoreObjectiveCType { public final class CSAsynchronousDataTransaction: CSBaseDataTransaction, CoreStoreObjectiveCType {
@@ -161,6 +162,7 @@ public final class CSAsynchronousDataTransaction: CSBaseDataTransaction, CoreSto
// MARK: - AsynchronousDataTransaction // MARK: - AsynchronousDataTransaction
@available(*, deprecated, message: "CoreStore Objective-C API will be removed soon.")
extension AsynchronousDataTransaction: CoreStoreSwiftType { extension AsynchronousDataTransaction: CoreStoreSwiftType {
// MARK: CoreStoreSwiftType // MARK: CoreStoreSwiftType

View File

@@ -29,6 +29,7 @@ import CoreData
// MARK: - CSDataStack // MARK: - CSDataStack
@available(*, deprecated, message: "CoreStore Objective-C API will be removed soon.")
extension CSDataStack { extension CSDataStack {
/** /**

View File

@@ -29,6 +29,7 @@ import CoreData
// MARK: - CSDataStack // MARK: - CSDataStack
@available(*, deprecated, message: "CoreStore Objective-C API will be removed soon.")
@available(macOS 10.12, *) @available(macOS 10.12, *)
extension CSDataStack { extension CSDataStack {

View File

@@ -29,6 +29,7 @@ import CoreData
// MARK: - CSDataStack // MARK: - CSDataStack
@available(*, deprecated, message: "CoreStore Objective-C API will be removed soon.")
extension CSDataStack { extension CSDataStack {
/** /**

View File

@@ -28,6 +28,7 @@ import Foundation
// MARK: - CSDataStack // MARK: - CSDataStack
@available(*, deprecated, message: "CoreStore Objective-C API will be removed soon.")
extension CSDataStack { extension CSDataStack {
/** /**

View File

@@ -34,6 +34,7 @@ import CoreData
- SeeAlso: `DataStack` - SeeAlso: `DataStack`
*/ */
@available(*, deprecated, message: "CoreStore Objective-C API will be removed soon.")
@objc @objc
public final class CSDataStack: NSObject, CoreStoreObjectiveCType { public final class CSDataStack: NSObject, CoreStoreObjectiveCType {
@@ -209,6 +210,7 @@ public final class CSDataStack: NSObject, CoreStoreObjectiveCType {
// MARK: - DataStack // MARK: - DataStack
@available(*, deprecated, message: "CoreStore Objective-C API will be removed soon.")
extension DataStack: CoreStoreSwiftType { extension DataStack: CoreStoreSwiftType {
// MARK: CoreStoreSwiftType // MARK: CoreStoreSwiftType

View File

@@ -35,7 +35,7 @@ import CoreData
- SeeAlso: `CoreStoreError` - SeeAlso: `CoreStoreError`
*/ */
@objc @objc
public final class CSError: NSError, CoreStoreObjectiveCType { public final class CSError: NSError {
/** /**
The `NSError` error domain for `CSError`. The `NSError` error domain for `CSError`.
@@ -67,20 +67,6 @@ public final class CSError: NSError, CoreStoreObjectiveCType {
return "(\(String(reflecting: Self.self))) \(self.bridgeToSwift.coreStoreDumpString)" return "(\(String(reflecting: Self.self))) \(self.bridgeToSwift.coreStoreDumpString)"
} }
// MARK: CoreStoreObjectiveCType
public var bridgeToSwift: CoreStoreError {
if let swift = self.swiftError {
return swift
}
let swift = CoreStoreError(_bridgedNSError: self) ?? .unknown
self.swiftError = swift
return swift
}
/** /**
Do not call directly! Do not call directly!
*/ */
@@ -101,6 +87,23 @@ public final class CSError: NSError, CoreStoreObjectiveCType {
private var swiftError: CoreStoreError? private var swiftError: CoreStoreError?
} }
@available(*, deprecated, message: "CoreStore Objective-C API will be removed soon.")
extension CSError: CoreStoreObjectiveCType {
// MARK: CoreStoreObjectiveCType
public var bridgeToSwift: CoreStoreError {
if let swift = self.swiftError {
return swift
}
let swift = CoreStoreError(_bridgedNSError: self) ?? .unknown
self.swiftError = swift
return swift
}
}
// MARK: - CSErrorCode // MARK: - CSErrorCode
@@ -110,6 +113,7 @@ public final class CSError: NSError, CoreStoreObjectiveCType {
- SeeAlso: `CSError` - SeeAlso: `CSError`
- SeeAlso: `CoreStoreError` - SeeAlso: `CoreStoreError`
*/ */
@available(*, deprecated, message: "CoreStore Objective-C API will be removed soon.")
@objc @objc
public enum CSErrorCode: Int { public enum CSErrorCode: Int {
@@ -152,6 +156,7 @@ public enum CSErrorCode: Int {
// MARK: - CoreStoreError // MARK: - CoreStoreError
@available(*, deprecated, message: "CoreStore Objective-C API will be removed soon.")
extension CoreStoreError: CoreStoreSwiftType, _ObjectiveCBridgeableError { extension CoreStoreError: CoreStoreSwiftType, _ObjectiveCBridgeableError {
// MARK: CoreStoreSwiftType // MARK: CoreStoreSwiftType
@@ -282,6 +287,7 @@ extension Error {
} }
} }
@available(*, deprecated, message: "CoreStore Objective-C API will be removed soon.")
internal var bridgeToObjectiveC: NSError { internal var bridgeToObjectiveC: NSError {
switch self { switch self {

View File

@@ -34,6 +34,7 @@ import CoreData
- SeeAlso: `InMemoryStore` - SeeAlso: `InMemoryStore`
*/ */
@available(*, deprecated, message: "CoreStore Objective-C API will be removed soon.")
@objc @objc
public final class CSInMemoryStore: NSObject, CSStorageInterface, CoreStoreObjectiveCType { public final class CSInMemoryStore: NSObject, CSStorageInterface, CoreStoreObjectiveCType {
@@ -121,6 +122,7 @@ public final class CSInMemoryStore: NSObject, CSStorageInterface, CoreStoreObjec
// MARK: - InMemoryStore // MARK: - InMemoryStore
@available(*, deprecated, message: "CoreStore Objective-C API will be removed soon.")
extension InMemoryStore: CoreStoreSwiftType { extension InMemoryStore: CoreStoreSwiftType {
// MARK: CoreStoreSwiftType // MARK: CoreStoreSwiftType

View File

@@ -34,6 +34,7 @@ import CoreData
- SeeAlso: `MigrationResult` - SeeAlso: `MigrationResult`
*/ */
@available(*, deprecated, message: "CoreStore Objective-C API will be removed soon.")
@objc @objc
public final class CSMigrationResult: NSObject, CoreStoreObjectiveCType { public final class CSMigrationResult: NSObject, CoreStoreObjectiveCType {
@@ -173,6 +174,7 @@ public final class CSMigrationResult: NSObject, CoreStoreObjectiveCType {
// MARK: - MigrationResult // MARK: - MigrationResult
@available(*, deprecated, message: "CoreStore Objective-C API will be removed soon.")
extension MigrationResult { extension MigrationResult {
// MARK: CoreStoreSwiftType // MARK: CoreStoreSwiftType

View File

@@ -34,6 +34,7 @@ import CoreData
- SeeAlso: `MigrationType` - SeeAlso: `MigrationType`
*/ */
@available(*, deprecated, message: "CoreStore Objective-C API will be removed soon.")
@objc @objc
public final class CSMigrationType: NSObject, CoreStoreObjectiveCType { public final class CSMigrationType: NSObject, CoreStoreObjectiveCType {
@@ -119,6 +120,7 @@ public final class CSMigrationType: NSObject, CoreStoreObjectiveCType {
// MARK: - MigrationType // MARK: - MigrationType
@available(*, deprecated, message: "CoreStore Objective-C API will be removed soon.")
extension MigrationType: CoreStoreSwiftType { extension MigrationType: CoreStoreSwiftType {
// MARK: CoreStoreSwiftType // MARK: CoreStoreSwiftType

View File

@@ -34,6 +34,7 @@ import CoreData
- SeeAlso: `SQLiteStore` - SeeAlso: `SQLiteStore`
*/ */
@available(*, deprecated, message: "CoreStore Objective-C API will be removed soon.")
@objc @objc
public final class CSSQLiteStore: NSObject, CSLocalStorage, CoreStoreObjectiveCType { public final class CSSQLiteStore: NSObject, CSLocalStorage, CoreStoreObjectiveCType {
@@ -196,6 +197,7 @@ public final class CSSQLiteStore: NSObject, CSLocalStorage, CoreStoreObjectiveCT
// MARK: - SQLiteStore // MARK: - SQLiteStore
@available(*, deprecated, message: "CoreStore Objective-C API will be removed soon.")
extension SQLiteStore: CoreStoreSwiftType { extension SQLiteStore: CoreStoreSwiftType {
// MARK: CoreStoreSwiftType // MARK: CoreStoreSwiftType

View File

@@ -34,6 +34,7 @@ import CoreData
- SeeAlso: `SetupResult` - SeeAlso: `SetupResult`
*/ */
@available(*, deprecated, message: "CoreStore Objective-C API will be removed soon.")
@objc @objc
public final class CSSetupResult: NSObject { public final class CSSetupResult: NSObject {
@@ -177,6 +178,7 @@ public final class CSSetupResult: NSObject {
// MARK: - SetupResult // MARK: - SetupResult
@available(*, deprecated, message: "CoreStore Objective-C API will be removed soon.")
extension SetupResult where Success: StorageInterface, Success: CoreStoreSwiftType, Success.ObjectiveCType: CSStorageInterface, Failure == CoreStoreError { extension SetupResult where Success: StorageInterface, Success: CoreStoreSwiftType, Success.ObjectiveCType: CSStorageInterface, Failure == CoreStoreError {
// MARK: CoreStoreSwiftType // MARK: CoreStoreSwiftType

View File

@@ -34,6 +34,7 @@ import CoreData
- SeeAlso: `SynchronousDataTransaction` - SeeAlso: `SynchronousDataTransaction`
*/ */
@available(*, deprecated, message: "CoreStore Objective-C API will be removed soon.")
@objc @objc
public final class CSSynchronousDataTransaction: CSBaseDataTransaction, CoreStoreObjectiveCType { public final class CSSynchronousDataTransaction: CSBaseDataTransaction, CoreStoreObjectiveCType {
@@ -148,6 +149,7 @@ public final class CSSynchronousDataTransaction: CSBaseDataTransaction, CoreStor
// MARK: - SynchronousDataTransaction // MARK: - SynchronousDataTransaction
@available(*, deprecated, message: "CoreStore Objective-C API will be removed soon.")
extension SynchronousDataTransaction: CoreStoreSwiftType { extension SynchronousDataTransaction: CoreStoreSwiftType {
// MARK: CoreStoreSwiftType // MARK: CoreStoreSwiftType

View File

@@ -34,6 +34,7 @@ import CoreData
- SeeAlso: `Tweak` - SeeAlso: `Tweak`
*/ */
@available(*, deprecated, message: "CoreStore Objective-C API will be removed soon.")
@objc @objc
public final class CSTweak: NSObject, CSFetchClause, CSQueryClause, CSDeleteClause, CoreStoreObjectiveCType { public final class CSTweak: NSObject, CSFetchClause, CSQueryClause, CSDeleteClause, CoreStoreObjectiveCType {
@@ -90,6 +91,7 @@ public final class CSTweak: NSObject, CSFetchClause, CSQueryClause, CSDeleteClau
// MARK: - Tweak // MARK: - Tweak
@available(*, deprecated, message: "CoreStore Objective-C API will be removed soon.")
extension Tweak: CoreStoreSwiftType { extension Tweak: CoreStoreSwiftType {
// MARK: CoreStoreSwiftType // MARK: CoreStoreSwiftType

View File

@@ -34,6 +34,7 @@ import Foundation
- SeeAlso: `UnsafeDataModelSchema` - SeeAlso: `UnsafeDataModelSchema`
*/ */
@available(*, deprecated, message: "CoreStore Objective-C API will be removed soon.")
@objc @objc
public final class CSUnsafeDataModelSchema: NSObject, CSDynamicSchema, CoreStoreObjectiveCType { public final class CSUnsafeDataModelSchema: NSObject, CSDynamicSchema, CoreStoreObjectiveCType {
@@ -104,6 +105,7 @@ public final class CSUnsafeDataModelSchema: NSObject, CSDynamicSchema, CoreStore
// MARK: - UnsafeDataModelSchema // MARK: - UnsafeDataModelSchema
@available(*, deprecated, message: "CoreStore Objective-C API will be removed soon.")
extension UnsafeDataModelSchema: CoreStoreSwiftType { extension UnsafeDataModelSchema: CoreStoreSwiftType {
// MARK: CoreStoreSwiftType // MARK: CoreStoreSwiftType

View File

@@ -34,6 +34,7 @@ import CoreData
- SeeAlso: `UnsafeDataTransaction` - SeeAlso: `UnsafeDataTransaction`
*/ */
@available(*, deprecated, message: "CoreStore Objective-C API will be removed soon.")
@objc @objc
public final class CSUnsafeDataTransaction: CSBaseDataTransaction, CoreStoreObjectiveCType { public final class CSUnsafeDataTransaction: CSBaseDataTransaction, CoreStoreObjectiveCType {
/** /**
@@ -208,6 +209,7 @@ public final class CSUnsafeDataTransaction: CSBaseDataTransaction, CoreStoreObje
// MARK: - UnsafeDataTransaction // MARK: - UnsafeDataTransaction
@available(*, deprecated, message: "CoreStore Objective-C API will be removed soon.")
extension UnsafeDataTransaction: CoreStoreSwiftType { extension UnsafeDataTransaction: CoreStoreSwiftType {
// MARK: CoreStoreSwiftType // MARK: CoreStoreSwiftType

View File

@@ -35,6 +35,7 @@ import Foundation
- SeeAlso: `XcodeDataModelSchema` - SeeAlso: `XcodeDataModelSchema`
*/ */
@objc @objc
@available(*, deprecated, message: "CoreStore Objective-C API will be removed soon.")
public final class CSXcodeDataModelSchema: NSObject, CSDynamicSchema, CoreStoreObjectiveCType { public final class CSXcodeDataModelSchema: NSObject, CSDynamicSchema, CoreStoreObjectiveCType {
/** /**
@@ -104,6 +105,7 @@ public final class CSXcodeDataModelSchema: NSObject, CSDynamicSchema, CoreStoreO
// MARK: - XcodeDataModelSchema // MARK: - XcodeDataModelSchema
@available(*, deprecated, message: "CoreStore Objective-C API will be removed soon.")
extension XcodeDataModelSchema: CoreStoreSwiftType { extension XcodeDataModelSchema: CoreStoreSwiftType {
// MARK: CoreStoreSwiftType // MARK: CoreStoreSwiftType

View File

@@ -37,7 +37,7 @@
#error CoreStore Objective-C utilities can only be used on platforms that support C function overloading #error CoreStore Objective-C utilities can only be used on platforms that support C function overloading
#endif #endif
#define CORESTORE_EXTERN extern #define CORESTORE_EXTERN extern __deprecated_msg("CoreStore Objective-C API will be removed soon.")
#define CORESTORE_OVERLOADABLE __attribute__((__overloadable__)) #define CORESTORE_OVERLOADABLE __attribute__((__overloadable__))
#define CORESTORE_REQUIRES_NIL_TERMINATION __attribute__((sentinel(0, 1))) #define CORESTORE_REQUIRES_NIL_TERMINATION __attribute__((sentinel(0, 1)))
#define CORESTORE_RETURNS_RETAINED __attribute__((ns_returns_retained)) #define CORESTORE_RETURNS_RETAINED __attribute__((ns_returns_retained))

View File

@@ -31,6 +31,7 @@ import Foundation
/** /**
`CoreStoreObjectiveCType`s are Objective-C accessible classes that represent CoreStore's Swift types. `CoreStoreObjectiveCType`s are Objective-C accessible classes that represent CoreStore's Swift types.
*/ */
@available(*, deprecated, message: "CoreStore Objective-C API will be removed soon.")
public protocol CoreStoreObjectiveCType: AnyObject { public protocol CoreStoreObjectiveCType: AnyObject {
/** /**
@@ -55,6 +56,7 @@ public protocol CoreStoreObjectiveCType: AnyObject {
/** /**
`CoreStoreSwiftType`s are CoreStore's Swift types that are bridgeable to Objective-C. `CoreStoreSwiftType`s are CoreStore's Swift types that are bridgeable to Objective-C.
*/ */
@available(*, deprecated, message: "CoreStore Objective-C API will be removed soon.")
public protocol CoreStoreSwiftType { public protocol CoreStoreSwiftType {
/** /**
@@ -71,21 +73,25 @@ public protocol CoreStoreSwiftType {
// MARK: - Internal // MARK: - Internal
@available(*, deprecated, message: "CoreStore Objective-C API will be removed soon.")
internal func bridge<T: CoreStoreSwiftType>(_ closure: () -> T) -> T.ObjectiveCType { internal func bridge<T: CoreStoreSwiftType>(_ closure: () -> T) -> T.ObjectiveCType {
return closure().bridgeToObjectiveC return closure().bridgeToObjectiveC
} }
@available(*, deprecated, message: "CoreStore Objective-C API will be removed soon.")
internal func bridge<T: CoreStoreSwiftType>(_ closure: () -> [T]) -> [T.ObjectiveCType] { internal func bridge<T: CoreStoreSwiftType>(_ closure: () -> [T]) -> [T.ObjectiveCType] {
return closure().map { $0.bridgeToObjectiveC } return closure().map { $0.bridgeToObjectiveC }
} }
@available(*, deprecated, message: "CoreStore Objective-C API will be removed soon.")
internal func bridge<T: CoreStoreSwiftType>(_ closure: () -> T?) -> T.ObjectiveCType? { internal func bridge<T: CoreStoreSwiftType>(_ closure: () -> T?) -> T.ObjectiveCType? {
return closure()?.bridgeToObjectiveC return closure()?.bridgeToObjectiveC
} }
@available(*, deprecated, message: "CoreStore Objective-C API will be removed soon.")
internal func bridge<T: CoreStoreSwiftType>(_ closure: () throws -> T) throws -> T.ObjectiveCType { internal func bridge<T: CoreStoreSwiftType>(_ closure: () throws -> T) throws -> T.ObjectiveCType {
do { do {
@@ -98,6 +104,7 @@ internal func bridge<T: CoreStoreSwiftType>(_ closure: () throws -> T) throws ->
} }
} }
@available(*, deprecated, message: "CoreStore Objective-C API will be removed soon.")
internal func bridge(_ closure: () throws -> Void) throws { internal func bridge(_ closure: () throws -> Void) throws {
do { do {
@@ -110,6 +117,7 @@ internal func bridge(_ closure: () throws -> Void) throws {
} }
} }
@available(*, deprecated, message: "CoreStore Objective-C API will be removed soon.")
internal func bridge<T: CoreStoreSwiftType>(_ error: NSErrorPointer, _ closure: () throws -> T) -> T.ObjectiveCType? { internal func bridge<T: CoreStoreSwiftType>(_ error: NSErrorPointer, _ closure: () throws -> T) -> T.ObjectiveCType? {
do { do {
@@ -125,6 +133,7 @@ internal func bridge<T: CoreStoreSwiftType>(_ error: NSErrorPointer, _ closure:
} }
} }
@available(*, deprecated, message: "CoreStore Objective-C API will be removed soon.")
internal func bridge(_ error: NSErrorPointer, _ closure: () throws -> Void) -> Bool { internal func bridge(_ error: NSErrorPointer, _ closure: () throws -> Void) -> Bool {
do { do {
@@ -140,6 +149,7 @@ internal func bridge(_ error: NSErrorPointer, _ closure: () throws -> Void) -> B
} }
} }
@available(*, deprecated, message: "CoreStore Objective-C API will be removed soon.")
internal func bridge<T>(_ error: NSErrorPointer, _ closure: () throws -> T?) -> T? { internal func bridge<T>(_ error: NSErrorPointer, _ closure: () throws -> T?) -> T? {
do { do {
@@ -155,6 +165,7 @@ internal func bridge<T>(_ error: NSErrorPointer, _ closure: () throws -> T?) ->
} }
} }
@available(*, deprecated, message: "CoreStore Objective-C API will be removed soon.")
internal func bridge<T: CoreStoreSwiftType>(_ error: NSErrorPointer, _ closure: () throws -> [T]) -> [T.ObjectiveCType]? { internal func bridge<T: CoreStoreSwiftType>(_ error: NSErrorPointer, _ closure: () throws -> [T]) -> [T.ObjectiveCType]? {
do { do {