From 6787f5e0ae16b8827395e72f8579cc439b96e194 Mon Sep 17 00:00:00 2001 From: Adam Sharp Date: Wed, 26 Dec 2018 14:14:57 -0500 Subject: [PATCH 01/10] Update to Nimble 7.3.1 --- Cartfile.resolved | 2 +- Carthage/Checkouts/Nimble | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/Cartfile.resolved b/Cartfile.resolved index e51e1869a..1dec54b7a 100644 --- a/Cartfile.resolved +++ b/Cartfile.resolved @@ -1,3 +1,3 @@ -github "Quick/Nimble" "v7.0.2" +github "Quick/Nimble" "v7.3.1" github "Quick/Quick" "v1.2.0" github "jspahrsummers/xcconfigs" "3d9d99634cae6d586e272543d527681283b33eb0" diff --git a/Carthage/Checkouts/Nimble b/Carthage/Checkouts/Nimble index 38c9ab084..cd6dfb86f 160000 --- a/Carthage/Checkouts/Nimble +++ b/Carthage/Checkouts/Nimble @@ -1 +1 @@ -Subproject commit 38c9ab0846a3fbec308eb2aa9ef68b10a7434eb4 +Subproject commit cd6dfb86f496fcd96ce0bc6da962cd936bf41903 From fadceaa6a26de53e4b1453ba05de3eab964d1b74 Mon Sep 17 00:00:00 2001 From: Adam Sharp Date: Wed, 26 Dec 2018 14:16:29 -0500 Subject: [PATCH 02/10] Support Swift bridging for RACSignalError using NS_ERROR_ENUM Redefines `RACSignalError` using `NS_ERROR_ENUM`, allowing it to bridge to Swift as a new `RACSignalError` struct containing static instances of `RACSignalError.Code`, and allowing it to be used in error pattern matching contexts. --- ReactiveObjC.xcodeproj/project.pbxproj | 47 ++++++++++++++++++-- ReactiveObjC/RACSignal+Operations.h | 17 +++---- ReactiveObjC/RACSignal+Operations.m | 5 +-- ReactiveObjCTests/RACSwiftBridgingSpec.swift | 19 ++++++++ 4 files changed, 73 insertions(+), 15 deletions(-) create mode 100644 ReactiveObjCTests/RACSwiftBridgingSpec.swift diff --git a/ReactiveObjC.xcodeproj/project.pbxproj b/ReactiveObjC.xcodeproj/project.pbxproj index 1417bb70f..c8cd0535b 100644 --- a/ReactiveObjC.xcodeproj/project.pbxproj +++ b/ReactiveObjC.xcodeproj/project.pbxproj @@ -13,6 +13,9 @@ 3A17B4A71E8EFDD800C8999E /* RACAnnotations.h in Headers */ = {isa = PBXBuildFile; fileRef = 3A17B4A51E8EFDCD00C8999E /* RACAnnotations.h */; settings = {ATTRIBUTES = (Public, ); }; }; 3A17B4A81E8EFDDA00C8999E /* RACAnnotations.h in Headers */ = {isa = PBXBuildFile; fileRef = 3A17B4A51E8EFDCD00C8999E /* RACAnnotations.h */; settings = {ATTRIBUTES = (Public, ); }; }; 3A17B4A91E8EFDDF00C8999E /* RACAnnotations.h in Headers */ = {isa = PBXBuildFile; fileRef = 3A17B4A51E8EFDCD00C8999E /* RACAnnotations.h */; settings = {ATTRIBUTES = (Public, ); }; }; + 4AC5B3B221D405B8005920AA /* RACSwiftBridgingSpec.swift in Sources */ = {isa = PBXBuildFile; fileRef = 4AC5B3B121D405B8005920AA /* RACSwiftBridgingSpec.swift */; }; + 4AC5B3B321D405B8005920AA /* RACSwiftBridgingSpec.swift in Sources */ = {isa = PBXBuildFile; fileRef = 4AC5B3B121D405B8005920AA /* RACSwiftBridgingSpec.swift */; }; + 4AC5B3B421D405B8005920AA /* RACSwiftBridgingSpec.swift in Sources */ = {isa = PBXBuildFile; fileRef = 4AC5B3B121D405B8005920AA /* RACSwiftBridgingSpec.swift */; }; 57A4D1B21BA13D7A00F7D4B1 /* RACCompoundDisposableProvider.d in Sources */ = {isa = PBXBuildFile; fileRef = D037646A19EDA41200A782A9 /* RACCompoundDisposableProvider.d */; }; 57A4D1B31BA13D7A00F7D4B1 /* RACSignalProvider.d in Sources */ = {isa = PBXBuildFile; fileRef = D03764A319EDA41200A782A9 /* RACSignalProvider.d */; }; 57A4D1C11BA13D7A00F7D4B1 /* EXTRuntimeExtensions.m in Sources */ = {isa = PBXBuildFile; fileRef = D037666819EDA57100A782A9 /* EXTRuntimeExtensions.m */; }; @@ -765,6 +768,7 @@ 314304151ACA8B1E00595017 /* MKAnnotationView+RACSignalSupport.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = "MKAnnotationView+RACSignalSupport.h"; sourceTree = ""; }; 314304161ACA8B1E00595017 /* MKAnnotationView+RACSignalSupport.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = "MKAnnotationView+RACSignalSupport.m"; sourceTree = ""; }; 3A17B4A51E8EFDCD00C8999E /* RACAnnotations.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = RACAnnotations.h; sourceTree = ""; }; + 4AC5B3B121D405B8005920AA /* RACSwiftBridgingSpec.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = RACSwiftBridgingSpec.swift; sourceTree = ""; }; 57A4D2411BA13D7A00F7D4B1 /* ReactiveObjC.framework */ = {isa = PBXFileReference; explicitFileType = wrapper.framework; includeInIndex = 0; path = ReactiveObjC.framework; sourceTree = BUILT_PRODUCTS_DIR; }; 57A4D2441BA13F9700F7D4B1 /* tvOS-Application.xcconfig */ = {isa = PBXFileReference; lastKnownFileType = text.xcconfig; path = "tvOS-Application.xcconfig"; sourceTree = ""; }; 57A4D2451BA13F9700F7D4B1 /* tvOS-Base.xcconfig */ = {isa = PBXFileReference; lastKnownFileType = text.xcconfig; path = "tvOS-Base.xcconfig"; sourceTree = ""; }; @@ -1438,6 +1442,7 @@ D03766A519EDA60000A782A9 /* RACSubscriberExamples.m */, D03766A619EDA60000A782A9 /* RACSubscriberSpec.m */, D03766A719EDA60000A782A9 /* RACSubscriptingAssignmentTrampolineSpec.m */, + 4AC5B3B121D405B8005920AA /* RACSwiftBridgingSpec.swift */, D03766A819EDA60000A782A9 /* RACTargetQueueSchedulerSpec.m */, D03766B019EDA60000A782A9 /* RACTupleSpec.m */, D03766B219EDA60000A782A9 /* UIActionSheetRACSupportSpec.m */, @@ -1948,7 +1953,7 @@ }; 7DFBED021CDB8C9500EE435B = { CreatedOnToolsVersion = 7.3.1; - LastSwiftMigration = 0800; + LastSwiftMigration = 1010; }; A9B315531B3940610001CB9C = { CreatedOnToolsVersion = 7.0; @@ -1960,7 +1965,7 @@ }; D04725F419E49ED7006002AA = { CreatedOnToolsVersion = 6.1; - LastSwiftMigration = 0800; + LastSwiftMigration = 1010; }; D047260B19E49F82006002AA = { CreatedOnToolsVersion = 6.1; @@ -1968,7 +1973,7 @@ }; D047261519E49F82006002AA = { CreatedOnToolsVersion = 6.1; - LastSwiftMigration = 0800; + LastSwiftMigration = 1010; }; }; }; @@ -2179,6 +2184,7 @@ 7DFBED5E1CDB8DE300EE435B /* RACSubscriptingAssignmentTrampolineSpec.m in Sources */, 7DFBED5F1CDB8DE300EE435B /* RACTargetQueueSchedulerSpec.m in Sources */, 7DFBED601CDB8DE300EE435B /* RACTupleSpec.m in Sources */, + 4AC5B3B421D405B8005920AA /* RACSwiftBridgingSpec.swift in Sources */, 7DFBED631CDB8DE300EE435B /* UIBarButtonItemRACSupportSpec.m in Sources */, 7DFBED641CDB8DE300EE435B /* UIButtonRACSupportSpec.m in Sources */, 7DFBED671CDB8DE300EE435B /* RACTestExampleScheduler.m in Sources */, @@ -2386,6 +2392,7 @@ D03766DF19EDA60000A782A9 /* RACCompoundDisposableSpec.m in Sources */, D03766E519EDA60000A782A9 /* RACDisposableSpec.m in Sources */, D0C3132019EF2D9700984962 /* RACTestObject.m in Sources */, + 4AC5B3B221D405B8005920AA /* RACSwiftBridgingSpec.swift in Sources */, D03766D319EDA60000A782A9 /* NSUserDefaultsRACSupportSpec.m in Sources */, D03766C119EDA60000A782A9 /* NSObjectRACAppKitBindingsSpec.m in Sources */, D03766DB19EDA60000A782A9 /* RACChannelSpec.m in Sources */, @@ -2537,6 +2544,7 @@ D037670419EDA60000A782A9 /* RACSubjectSpec.m in Sources */, D03766F219EDA60000A782A9 /* RACSchedulerSpec.m in Sources */, D03766E019EDA60000A782A9 /* RACCompoundDisposableSpec.m in Sources */, + 4AC5B3B321D405B8005920AA /* RACSwiftBridgingSpec.swift in Sources */, D03766E619EDA60000A782A9 /* RACDisposableSpec.m in Sources */, D03766D419EDA60000A782A9 /* NSUserDefaultsRACSupportSpec.m in Sources */, D03766DC19EDA60000A782A9 /* RACChannelSpec.m in Sources */, @@ -2632,6 +2640,7 @@ baseConfigurationReference = 57A4D2441BA13F9700F7D4B1 /* tvOS-Application.xcconfig */; buildSettings = { ALWAYS_EMBED_SWIFT_STANDARD_LIBRARIES = YES; + CLANG_ENABLE_MODULES = YES; CODE_SIGN_IDENTITY = ""; FRAMEWORK_SEARCH_PATHS = ( "$(SDKROOT)/Developer/Library/Frameworks", @@ -2640,6 +2649,8 @@ INFOPLIST_FILE = ReactiveObjCTests/Info.plist; LD_RUNPATH_SEARCH_PATHS = "$(inherited) @executable_path/Frameworks @loader_path/Frameworks"; PRODUCT_NAME = "$(PROJECT_NAME)Tests"; + SWIFT_OPTIMIZATION_LEVEL = "-Onone"; + SWIFT_VERSION = 4.2; }; name = Debug; }; @@ -2648,6 +2659,7 @@ baseConfigurationReference = 57A4D2441BA13F9700F7D4B1 /* tvOS-Application.xcconfig */; buildSettings = { ALWAYS_EMBED_SWIFT_STANDARD_LIBRARIES = YES; + CLANG_ENABLE_MODULES = YES; CODE_SIGN_IDENTITY = ""; FRAMEWORK_SEARCH_PATHS = ( "$(SDKROOT)/Developer/Library/Frameworks", @@ -2656,6 +2668,8 @@ INFOPLIST_FILE = ReactiveObjCTests/Info.plist; LD_RUNPATH_SEARCH_PATHS = "$(inherited) @executable_path/Frameworks @loader_path/Frameworks"; PRODUCT_NAME = "$(PROJECT_NAME)Tests"; + SWIFT_OPTIMIZATION_LEVEL = "-Onone"; + SWIFT_VERSION = 4.2; }; name = Test; }; @@ -2664,6 +2678,7 @@ baseConfigurationReference = 57A4D2441BA13F9700F7D4B1 /* tvOS-Application.xcconfig */; buildSettings = { ALWAYS_EMBED_SWIFT_STANDARD_LIBRARIES = YES; + CLANG_ENABLE_MODULES = YES; CODE_SIGN_IDENTITY = ""; FRAMEWORK_SEARCH_PATHS = ( "$(SDKROOT)/Developer/Library/Frameworks", @@ -2672,6 +2687,8 @@ INFOPLIST_FILE = ReactiveObjCTests/Info.plist; LD_RUNPATH_SEARCH_PATHS = "$(inherited) @executable_path/Frameworks @loader_path/Frameworks"; PRODUCT_NAME = "$(PROJECT_NAME)Tests"; + SWIFT_OPTIMIZATION_LEVEL = "-Onone"; + SWIFT_VERSION = 4.2; }; name = Release; }; @@ -2680,6 +2697,7 @@ baseConfigurationReference = 57A4D2441BA13F9700F7D4B1 /* tvOS-Application.xcconfig */; buildSettings = { ALWAYS_EMBED_SWIFT_STANDARD_LIBRARIES = YES; + CLANG_ENABLE_MODULES = YES; CODE_SIGN_IDENTITY = ""; FRAMEWORK_SEARCH_PATHS = ( "$(SDKROOT)/Developer/Library/Frameworks", @@ -2688,6 +2706,7 @@ INFOPLIST_FILE = ReactiveObjCTests/Info.plist; LD_RUNPATH_SEARCH_PATHS = "$(inherited) @executable_path/Frameworks @loader_path/Frameworks"; PRODUCT_NAME = "$(PROJECT_NAME)Tests"; + SWIFT_VERSION = 4.2; }; name = Profile; }; @@ -2828,6 +2847,7 @@ baseConfigurationReference = D047263719E49FE8006002AA /* Mac-Application.xcconfig */; buildSettings = { ALWAYS_EMBED_SWIFT_STANDARD_LIBRARIES = YES; + CLANG_ENABLE_MODULES = YES; FRAMEWORK_SEARCH_PATHS = ( "$(DEVELOPER_FRAMEWORKS_DIR)", "$(inherited)", @@ -2835,6 +2855,8 @@ INFOPLIST_FILE = ReactiveObjCTests/Info.plist; LD_RUNPATH_SEARCH_PATHS = "$(inherited) @executable_path/../Frameworks @loader_path/../Frameworks"; PRODUCT_NAME = "$(PROJECT_NAME)Tests"; + SWIFT_OPTIMIZATION_LEVEL = "-Onone"; + SWIFT_VERSION = 4.2; }; name = Debug; }; @@ -2843,6 +2865,7 @@ baseConfigurationReference = D047263719E49FE8006002AA /* Mac-Application.xcconfig */; buildSettings = { ALWAYS_EMBED_SWIFT_STANDARD_LIBRARIES = YES; + CLANG_ENABLE_MODULES = YES; FRAMEWORK_SEARCH_PATHS = ( "$(DEVELOPER_FRAMEWORKS_DIR)", "$(inherited)", @@ -2850,6 +2873,8 @@ INFOPLIST_FILE = ReactiveObjCTests/Info.plist; LD_RUNPATH_SEARCH_PATHS = "$(inherited) @executable_path/../Frameworks @loader_path/../Frameworks"; PRODUCT_NAME = "$(PROJECT_NAME)Tests"; + SWIFT_OPTIMIZATION_LEVEL = "-Onone"; + SWIFT_VERSION = 4.2; }; name = Release; }; @@ -2884,9 +2909,12 @@ baseConfigurationReference = D047263219E49FE8006002AA /* iOS-Application.xcconfig */; buildSettings = { ALWAYS_EMBED_SWIFT_STANDARD_LIBRARIES = YES; + CLANG_ENABLE_MODULES = YES; INFOPLIST_FILE = ReactiveObjCTests/Info.plist; LD_RUNPATH_SEARCH_PATHS = "$(inherited) @executable_path/Frameworks @loader_path/Frameworks"; PRODUCT_NAME = "$(PROJECT_NAME)Tests"; + SWIFT_OPTIMIZATION_LEVEL = "-Onone"; + SWIFT_VERSION = 4.2; }; name = Debug; }; @@ -2895,9 +2923,12 @@ baseConfigurationReference = D047263219E49FE8006002AA /* iOS-Application.xcconfig */; buildSettings = { ALWAYS_EMBED_SWIFT_STANDARD_LIBRARIES = YES; + CLANG_ENABLE_MODULES = YES; INFOPLIST_FILE = ReactiveObjCTests/Info.plist; LD_RUNPATH_SEARCH_PATHS = "$(inherited) @executable_path/Frameworks @loader_path/Frameworks"; PRODUCT_NAME = "$(PROJECT_NAME)Tests"; + SWIFT_OPTIMIZATION_LEVEL = "-Onone"; + SWIFT_VERSION = 4.2; }; name = Release; }; @@ -2941,6 +2972,7 @@ baseConfigurationReference = D047263719E49FE8006002AA /* Mac-Application.xcconfig */; buildSettings = { ALWAYS_EMBED_SWIFT_STANDARD_LIBRARIES = YES; + CLANG_ENABLE_MODULES = YES; FRAMEWORK_SEARCH_PATHS = ( "$(DEVELOPER_FRAMEWORKS_DIR)", "$(inherited)", @@ -2948,6 +2980,7 @@ INFOPLIST_FILE = ReactiveObjCTests/Info.plist; LD_RUNPATH_SEARCH_PATHS = "$(inherited) @executable_path/../Frameworks @loader_path/../Frameworks"; PRODUCT_NAME = "$(PROJECT_NAME)Tests"; + SWIFT_VERSION = 4.2; }; name = Profile; }; @@ -2969,9 +3002,11 @@ baseConfigurationReference = D047263219E49FE8006002AA /* iOS-Application.xcconfig */; buildSettings = { ALWAYS_EMBED_SWIFT_STANDARD_LIBRARIES = YES; + CLANG_ENABLE_MODULES = YES; INFOPLIST_FILE = ReactiveObjCTests/Info.plist; LD_RUNPATH_SEARCH_PATHS = "$(inherited) @executable_path/Frameworks @loader_path/Frameworks"; PRODUCT_NAME = "$(PROJECT_NAME)Tests"; + SWIFT_VERSION = 4.2; }; name = Profile; }; @@ -3015,6 +3050,7 @@ baseConfigurationReference = D047263719E49FE8006002AA /* Mac-Application.xcconfig */; buildSettings = { ALWAYS_EMBED_SWIFT_STANDARD_LIBRARIES = YES; + CLANG_ENABLE_MODULES = YES; FRAMEWORK_SEARCH_PATHS = ( "$(DEVELOPER_FRAMEWORKS_DIR)", "$(inherited)", @@ -3022,6 +3058,8 @@ INFOPLIST_FILE = ReactiveObjCTests/Info.plist; LD_RUNPATH_SEARCH_PATHS = "$(inherited) @executable_path/../Frameworks @loader_path/../Frameworks"; PRODUCT_NAME = "$(PROJECT_NAME)Tests"; + SWIFT_OPTIMIZATION_LEVEL = "-Onone"; + SWIFT_VERSION = 4.2; }; name = Test; }; @@ -3043,9 +3081,12 @@ baseConfigurationReference = D047263219E49FE8006002AA /* iOS-Application.xcconfig */; buildSettings = { ALWAYS_EMBED_SWIFT_STANDARD_LIBRARIES = YES; + CLANG_ENABLE_MODULES = YES; INFOPLIST_FILE = ReactiveObjCTests/Info.plist; LD_RUNPATH_SEARCH_PATHS = "$(inherited) @executable_path/Frameworks @loader_path/Frameworks"; PRODUCT_NAME = "$(PROJECT_NAME)Tests"; + SWIFT_OPTIMIZATION_LEVEL = "-Onone"; + SWIFT_VERSION = 4.2; }; name = Test; }; diff --git a/ReactiveObjC/RACSignal+Operations.h b/ReactiveObjC/RACSignal+Operations.h index 3c9ef0460..5d645e6f8 100644 --- a/ReactiveObjC/RACSignal+Operations.h +++ b/ReactiveObjC/RACSignal+Operations.h @@ -24,14 +24,15 @@ NS_ASSUME_NONNULL_BEGIN /// The domain for errors originating in RACSignal operations. -extern NSString * const RACSignalErrorDomain; - -/// The error code used with -timeout:. -extern const NSInteger RACSignalErrorTimedOut; - -/// The error code used when a value passed into +switch:cases:default: does not -/// match any of the cases, and no default was given. -extern const NSInteger RACSignalErrorNoMatchingCase; +extern NSErrorDomain const RACSignalErrorDomain; + +typedef NS_ERROR_ENUM(RACSignalErrorDomain, RACSignalError) { + /// The error code used with -timeout:. + RACSignalErrorTimedOut = 1, + /// The error code used when a value passed into +switch:cases:default: does not + /// match any of the cases, and no default was given. + RACSignalErrorNoMatchingCase = 2, +}; @interface RACSignal<__covariant ValueType> (Operations) diff --git a/ReactiveObjC/RACSignal+Operations.m b/ReactiveObjC/RACSignal+Operations.m index dbc4df773..1ec375ea9 100644 --- a/ReactiveObjC/RACSignal+Operations.m +++ b/ReactiveObjC/RACSignal+Operations.m @@ -29,10 +29,7 @@ #import #import -NSString * const RACSignalErrorDomain = @"RACSignalErrorDomain"; - -const NSInteger RACSignalErrorTimedOut = 1; -const NSInteger RACSignalErrorNoMatchingCase = 2; +NSErrorDomain const RACSignalErrorDomain = @"RACSignalErrorDomain"; // Subscribes to the given signal with the given blocks. // diff --git a/ReactiveObjCTests/RACSwiftBridgingSpec.swift b/ReactiveObjCTests/RACSwiftBridgingSpec.swift new file mode 100644 index 000000000..420310fe8 --- /dev/null +++ b/ReactiveObjCTests/RACSwiftBridgingSpec.swift @@ -0,0 +1,19 @@ +import Quick +import Nimble +import ReactiveObjC + +final class RACSwiftBridgingSpec: QuickSpec { + override func spec() { + describe("RACSignalError") { + it("bridges RACSignalErrorTimedOut to a Swift error code") { + let error: Error = NSError(domain: RACSignalErrorDomain, code: 1) + expect(RACSignalError.timedOut ~= error).to(beTrue()) + } + + it("bridges RACSignalErrorNoMatchingCase to a Swift error code") { + let error: Error = NSError(domain: RACSignalErrorDomain, code: 2) + expect(RACSignalError.noMatchingCase ~= error).to(beTrue()) + } + } + } +} From ffd547839cb7625a2985196aa8f3d604e6adcfae Mon Sep 17 00:00:00 2001 From: Adam Sharp Date: Wed, 26 Dec 2018 14:32:34 -0500 Subject: [PATCH 03/10] Add deprecations for error codes bridged to Swift --- ReactiveObjC.xcodeproj/project.pbxproj | 98 ++++++++++++++++++------ ReactiveObjC/Deprecations+Removals.swift | 13 ++++ 2 files changed, 87 insertions(+), 24 deletions(-) create mode 100644 ReactiveObjC/Deprecations+Removals.swift diff --git a/ReactiveObjC.xcodeproj/project.pbxproj b/ReactiveObjC.xcodeproj/project.pbxproj index c8cd0535b..d1a808372 100644 --- a/ReactiveObjC.xcodeproj/project.pbxproj +++ b/ReactiveObjC.xcodeproj/project.pbxproj @@ -16,6 +16,10 @@ 4AC5B3B221D405B8005920AA /* RACSwiftBridgingSpec.swift in Sources */ = {isa = PBXBuildFile; fileRef = 4AC5B3B121D405B8005920AA /* RACSwiftBridgingSpec.swift */; }; 4AC5B3B321D405B8005920AA /* RACSwiftBridgingSpec.swift in Sources */ = {isa = PBXBuildFile; fileRef = 4AC5B3B121D405B8005920AA /* RACSwiftBridgingSpec.swift */; }; 4AC5B3B421D405B8005920AA /* RACSwiftBridgingSpec.swift in Sources */ = {isa = PBXBuildFile; fileRef = 4AC5B3B121D405B8005920AA /* RACSwiftBridgingSpec.swift */; }; + 4AC5B3B621D40E75005920AA /* Deprecations+Removals.swift in Sources */ = {isa = PBXBuildFile; fileRef = 4AC5B3B521D40E75005920AA /* Deprecations+Removals.swift */; }; + 4AC5B3B721D40E75005920AA /* Deprecations+Removals.swift in Sources */ = {isa = PBXBuildFile; fileRef = 4AC5B3B521D40E75005920AA /* Deprecations+Removals.swift */; }; + 4AC5B3B821D40E75005920AA /* Deprecations+Removals.swift in Sources */ = {isa = PBXBuildFile; fileRef = 4AC5B3B521D40E75005920AA /* Deprecations+Removals.swift */; }; + 4AC5B3B921D40E75005920AA /* Deprecations+Removals.swift in Sources */ = {isa = PBXBuildFile; fileRef = 4AC5B3B521D40E75005920AA /* Deprecations+Removals.swift */; }; 57A4D1B21BA13D7A00F7D4B1 /* RACCompoundDisposableProvider.d in Sources */ = {isa = PBXBuildFile; fileRef = D037646A19EDA41200A782A9 /* RACCompoundDisposableProvider.d */; }; 57A4D1B31BA13D7A00F7D4B1 /* RACSignalProvider.d in Sources */ = {isa = PBXBuildFile; fileRef = D03764A319EDA41200A782A9 /* RACSignalProvider.d */; }; 57A4D1C11BA13D7A00F7D4B1 /* EXTRuntimeExtensions.m in Sources */ = {isa = PBXBuildFile; fileRef = D037666819EDA57100A782A9 /* EXTRuntimeExtensions.m */; }; @@ -769,6 +773,7 @@ 314304161ACA8B1E00595017 /* MKAnnotationView+RACSignalSupport.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = "MKAnnotationView+RACSignalSupport.m"; sourceTree = ""; }; 3A17B4A51E8EFDCD00C8999E /* RACAnnotations.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = RACAnnotations.h; sourceTree = ""; }; 4AC5B3B121D405B8005920AA /* RACSwiftBridgingSpec.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = RACSwiftBridgingSpec.swift; sourceTree = ""; }; + 4AC5B3B521D40E75005920AA /* Deprecations+Removals.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = "Deprecations+Removals.swift"; sourceTree = ""; }; 57A4D2411BA13D7A00F7D4B1 /* ReactiveObjC.framework */ = {isa = PBXFileReference; explicitFileType = wrapper.framework; includeInIndex = 0; path = ReactiveObjC.framework; sourceTree = BUILT_PRODUCTS_DIR; }; 57A4D2441BA13F9700F7D4B1 /* tvOS-Application.xcconfig */ = {isa = PBXFileReference; lastKnownFileType = text.xcconfig; path = "tvOS-Application.xcconfig"; sourceTree = ""; }; 57A4D2451BA13F9700F7D4B1 /* tvOS-Base.xcconfig */ = {isa = PBXFileReference; lastKnownFileType = text.xcconfig; path = "tvOS-Base.xcconfig"; sourceTree = ""; }; @@ -1188,6 +1193,7 @@ isa = PBXGroup; children = ( D037666519EDA57100A782A9 /* extobjc */, + 4AC5B3B521D40E75005920AA /* Deprecations+Removals.swift */, 314304151ACA8B1E00595017 /* MKAnnotationView+RACSignalSupport.h */, 314304161ACA8B1E00595017 /* MKAnnotationView+RACSignalSupport.m */, D037642A19EDA41200A782A9 /* NSArray+RACSequenceAdditions.h */, @@ -1949,7 +1955,7 @@ ORGANIZATIONNAME = GitHub; TargetAttributes = { 57A4D1AF1BA13D7A00F7D4B1 = { - LastSwiftMigration = 0800; + LastSwiftMigration = 1010; }; 7DFBED021CDB8C9500EE435B = { CreatedOnToolsVersion = 7.3.1; @@ -1957,11 +1963,11 @@ }; A9B315531B3940610001CB9C = { CreatedOnToolsVersion = 7.0; - LastSwiftMigration = 0800; + LastSwiftMigration = 1010; }; D04725E919E49ED7006002AA = { CreatedOnToolsVersion = 6.1; - LastSwiftMigration = 0800; + LastSwiftMigration = 1010; }; D04725F419E49ED7006002AA = { CreatedOnToolsVersion = 6.1; @@ -1969,7 +1975,7 @@ }; D047260B19E49F82006002AA = { CreatedOnToolsVersion = 6.1; - LastSwiftMigration = 0800; + LastSwiftMigration = 1010; }; D047261519E49F82006002AA = { CreatedOnToolsVersion = 6.1; @@ -2135,6 +2141,7 @@ 57A4D1FE1BA13D7A00F7D4B1 /* RACSubscriptionScheduler.m in Sources */, 57A4D1FF1BA13D7A00F7D4B1 /* RACTargetQueueScheduler.m in Sources */, 57A4D2001BA13D7A00F7D4B1 /* RACTestScheduler.m in Sources */, + 4AC5B3B921D40E75005920AA /* Deprecations+Removals.swift in Sources */, 57A4D2011BA13D7A00F7D4B1 /* RACTuple.m in Sources */, 57A4D2021BA13D7A00F7D4B1 /* RACTupleSequence.m in Sources */, 57A4D2031BA13D7A00F7D4B1 /* RACUnarySequence.m in Sources */, @@ -2255,6 +2262,7 @@ A9B315991B3940750001CB9C /* RACSignal+Operations.m in Sources */, A9B3159A1B3940750001CB9C /* RACSignalSequence.m in Sources */, A9B3159B1B3940750001CB9C /* RACStream.m in Sources */, + 4AC5B3B821D40E75005920AA /* Deprecations+Removals.swift in Sources */, A9B3159C1B3940750001CB9C /* RACStringSequence.m in Sources */, A9B3159D1B3940750001CB9C /* RACSubject.m in Sources */, A9B3159E1B3940750001CB9C /* RACSubscriber.m in Sources */, @@ -2346,6 +2354,7 @@ D037658C19EDA41200A782A9 /* RACEvent.m in Sources */, D03765B219EDA41200A782A9 /* RACQueueScheduler.m in Sources */, D037652A19EDA41200A782A9 /* NSObject+RACSelectorSignal.m in Sources */, + 4AC5B3B621D40E75005920AA /* Deprecations+Removals.swift in Sources */, D03765AE19EDA41200A782A9 /* RACPassthroughSubscriber.m in Sources */, D03765BC19EDA41200A782A9 /* RACReturnSignal.m in Sources */, ); @@ -2449,6 +2458,7 @@ D03765FB19EDA41200A782A9 /* RACSubscriptionScheduler.m in Sources */, D037658119EDA41200A782A9 /* RACEmptySequence.m in Sources */, D037654B19EDA41200A782A9 /* NSUserDefaults+RACSupport.m in Sources */, + 4AC5B3B721D40E75005920AA /* Deprecations+Removals.swift in Sources */, D037660F19EDA41200A782A9 /* RACUnarySequence.m in Sources */, D03765FF19EDA41200A782A9 /* RACTargetQueueScheduler.m in Sources */, D03765DF19EDA41200A782A9 /* RACSignalSequence.m in Sources */, @@ -2579,6 +2589,8 @@ isa = XCBuildConfiguration; baseConfigurationReference = 57A4D2461BA13F9700F7D4B1 /* tvOS-Framework.xcconfig */; buildSettings = { + CLANG_ENABLE_MODULES = YES; + DEFINES_MODULE = YES; DYLIB_COMPATIBILITY_VERSION = 1; DYLIB_CURRENT_VERSION = 1; ENABLE_BITCODE = YES; @@ -2587,6 +2599,8 @@ "DTRACE_PROBES_DISABLED=1", ); INFOPLIST_FILE = ReactiveObjC/Info.plist; + SWIFT_OPTIMIZATION_LEVEL = "-Onone"; + SWIFT_VERSION = 4.2; }; name = Debug; }; @@ -2594,6 +2608,8 @@ isa = XCBuildConfiguration; baseConfigurationReference = 57A4D2461BA13F9700F7D4B1 /* tvOS-Framework.xcconfig */; buildSettings = { + CLANG_ENABLE_MODULES = YES; + DEFINES_MODULE = YES; DYLIB_COMPATIBILITY_VERSION = 1; DYLIB_CURRENT_VERSION = 1; ENABLE_BITCODE = YES; @@ -2602,6 +2618,8 @@ "DTRACE_PROBES_DISABLED=1", ); INFOPLIST_FILE = ReactiveObjC/Info.plist; + SWIFT_OPTIMIZATION_LEVEL = "-Onone"; + SWIFT_VERSION = 4.2; }; name = Test; }; @@ -2609,6 +2627,8 @@ isa = XCBuildConfiguration; baseConfigurationReference = 57A4D2461BA13F9700F7D4B1 /* tvOS-Framework.xcconfig */; buildSettings = { + CLANG_ENABLE_MODULES = YES; + DEFINES_MODULE = YES; DYLIB_COMPATIBILITY_VERSION = 1; DYLIB_CURRENT_VERSION = 1; ENABLE_BITCODE = YES; @@ -2617,6 +2637,8 @@ "DTRACE_PROBES_DISABLED=1", ); INFOPLIST_FILE = ReactiveObjC/Info.plist; + SWIFT_OPTIMIZATION_LEVEL = "-Onone"; + SWIFT_VERSION = 4.2; }; name = Release; }; @@ -2624,6 +2646,8 @@ isa = XCBuildConfiguration; baseConfigurationReference = 57A4D2461BA13F9700F7D4B1 /* tvOS-Framework.xcconfig */; buildSettings = { + CLANG_ENABLE_MODULES = YES; + DEFINES_MODULE = YES; DYLIB_COMPATIBILITY_VERSION = 1; DYLIB_CURRENT_VERSION = 1; ENABLE_BITCODE = YES; @@ -2632,6 +2656,7 @@ "DTRACE_PROBES_DISABLED=1", ); INFOPLIST_FILE = ReactiveObjC/Info.plist; + SWIFT_VERSION = 4.2; }; name = Profile; }; @@ -2647,7 +2672,6 @@ "$(inherited)", ); INFOPLIST_FILE = ReactiveObjCTests/Info.plist; - LD_RUNPATH_SEARCH_PATHS = "$(inherited) @executable_path/Frameworks @loader_path/Frameworks"; PRODUCT_NAME = "$(PROJECT_NAME)Tests"; SWIFT_OPTIMIZATION_LEVEL = "-Onone"; SWIFT_VERSION = 4.2; @@ -2666,7 +2690,6 @@ "$(inherited)", ); INFOPLIST_FILE = ReactiveObjCTests/Info.plist; - LD_RUNPATH_SEARCH_PATHS = "$(inherited) @executable_path/Frameworks @loader_path/Frameworks"; PRODUCT_NAME = "$(PROJECT_NAME)Tests"; SWIFT_OPTIMIZATION_LEVEL = "-Onone"; SWIFT_VERSION = 4.2; @@ -2685,7 +2708,6 @@ "$(inherited)", ); INFOPLIST_FILE = ReactiveObjCTests/Info.plist; - LD_RUNPATH_SEARCH_PATHS = "$(inherited) @executable_path/Frameworks @loader_path/Frameworks"; PRODUCT_NAME = "$(PROJECT_NAME)Tests"; SWIFT_OPTIMIZATION_LEVEL = "-Onone"; SWIFT_VERSION = 4.2; @@ -2704,7 +2726,6 @@ "$(inherited)", ); INFOPLIST_FILE = ReactiveObjCTests/Info.plist; - LD_RUNPATH_SEARCH_PATHS = "$(inherited) @executable_path/Frameworks @loader_path/Frameworks"; PRODUCT_NAME = "$(PROJECT_NAME)Tests"; SWIFT_VERSION = 4.2; }; @@ -2714,6 +2735,8 @@ isa = XCBuildConfiguration; baseConfigurationReference = A97451351B3A935E00F48E55 /* watchOS-Framework.xcconfig */; buildSettings = { + CLANG_ENABLE_MODULES = YES; + DEFINES_MODULE = YES; DYLIB_COMPATIBILITY_VERSION = 1; DYLIB_CURRENT_VERSION = 1; ENABLE_BITCODE = YES; @@ -2722,6 +2745,8 @@ "DTRACE_PROBES_DISABLED=1", ); INFOPLIST_FILE = ReactiveObjC/Info.plist; + SWIFT_OPTIMIZATION_LEVEL = "-Onone"; + SWIFT_VERSION = 4.2; }; name = Debug; }; @@ -2729,6 +2754,8 @@ isa = XCBuildConfiguration; baseConfigurationReference = A97451351B3A935E00F48E55 /* watchOS-Framework.xcconfig */; buildSettings = { + CLANG_ENABLE_MODULES = YES; + DEFINES_MODULE = YES; DYLIB_COMPATIBILITY_VERSION = 1; DYLIB_CURRENT_VERSION = 1; ENABLE_BITCODE = YES; @@ -2737,6 +2764,8 @@ "DTRACE_PROBES_DISABLED=1", ); INFOPLIST_FILE = ReactiveObjC/Info.plist; + SWIFT_OPTIMIZATION_LEVEL = "-Onone"; + SWIFT_VERSION = 4.2; }; name = Test; }; @@ -2744,6 +2773,8 @@ isa = XCBuildConfiguration; baseConfigurationReference = A97451351B3A935E00F48E55 /* watchOS-Framework.xcconfig */; buildSettings = { + CLANG_ENABLE_MODULES = YES; + DEFINES_MODULE = YES; DYLIB_COMPATIBILITY_VERSION = 1; DYLIB_CURRENT_VERSION = 1; ENABLE_BITCODE = YES; @@ -2752,6 +2783,8 @@ "DTRACE_PROBES_DISABLED=1", ); INFOPLIST_FILE = ReactiveObjC/Info.plist; + SWIFT_OPTIMIZATION_LEVEL = "-Onone"; + SWIFT_VERSION = 4.2; }; name = Release; }; @@ -2759,6 +2792,8 @@ isa = XCBuildConfiguration; baseConfigurationReference = A97451351B3A935E00F48E55 /* watchOS-Framework.xcconfig */; buildSettings = { + CLANG_ENABLE_MODULES = YES; + DEFINES_MODULE = YES; DYLIB_COMPATIBILITY_VERSION = 1; DYLIB_CURRENT_VERSION = 1; ENABLE_BITCODE = YES; @@ -2767,6 +2802,7 @@ "DTRACE_PROBES_DISABLED=1", ); INFOPLIST_FILE = ReactiveObjC/Info.plist; + SWIFT_VERSION = 4.2; }; name = Profile; }; @@ -2820,11 +2856,14 @@ isa = XCBuildConfiguration; baseConfigurationReference = D047263A19E49FE8006002AA /* Mac-Framework.xcconfig */; buildSettings = { + CLANG_ENABLE_MODULES = YES; + DEFINES_MODULE = YES; DYLIB_COMPATIBILITY_VERSION = 1; DYLIB_CURRENT_VERSION = 1; FRAMEWORK_VERSION = A; INFOPLIST_FILE = ReactiveObjC/Info.plist; - LD_RUNPATH_SEARCH_PATHS = "$(inherited) @executable_path/../Frameworks @loader_path/Frameworks"; + SWIFT_OPTIMIZATION_LEVEL = "-Onone"; + SWIFT_VERSION = 4.2; USER_HEADER_SEARCH_PATHS = ReactiveObjC/extobjc; }; name = Debug; @@ -2833,11 +2872,14 @@ isa = XCBuildConfiguration; baseConfigurationReference = D047263A19E49FE8006002AA /* Mac-Framework.xcconfig */; buildSettings = { + CLANG_ENABLE_MODULES = YES; + DEFINES_MODULE = YES; DYLIB_COMPATIBILITY_VERSION = 1; DYLIB_CURRENT_VERSION = 1; FRAMEWORK_VERSION = A; INFOPLIST_FILE = ReactiveObjC/Info.plist; - LD_RUNPATH_SEARCH_PATHS = "$(inherited) @executable_path/../Frameworks @loader_path/Frameworks"; + SWIFT_OPTIMIZATION_LEVEL = "-Onone"; + SWIFT_VERSION = 4.2; USER_HEADER_SEARCH_PATHS = ReactiveObjC/extobjc; }; name = Release; @@ -2853,7 +2895,6 @@ "$(inherited)", ); INFOPLIST_FILE = ReactiveObjCTests/Info.plist; - LD_RUNPATH_SEARCH_PATHS = "$(inherited) @executable_path/../Frameworks @loader_path/../Frameworks"; PRODUCT_NAME = "$(PROJECT_NAME)Tests"; SWIFT_OPTIMIZATION_LEVEL = "-Onone"; SWIFT_VERSION = 4.2; @@ -2871,7 +2912,6 @@ "$(inherited)", ); INFOPLIST_FILE = ReactiveObjCTests/Info.plist; - LD_RUNPATH_SEARCH_PATHS = "$(inherited) @executable_path/../Frameworks @loader_path/../Frameworks"; PRODUCT_NAME = "$(PROJECT_NAME)Tests"; SWIFT_OPTIMIZATION_LEVEL = "-Onone"; SWIFT_VERSION = 4.2; @@ -2882,11 +2922,14 @@ isa = XCBuildConfiguration; baseConfigurationReference = D047263419E49FE8006002AA /* iOS-Framework.xcconfig */; buildSettings = { + CLANG_ENABLE_MODULES = YES; + DEFINES_MODULE = YES; DYLIB_COMPATIBILITY_VERSION = 1; DYLIB_CURRENT_VERSION = 1; ENABLE_BITCODE = YES; INFOPLIST_FILE = ReactiveObjC/Info.plist; - LD_RUNPATH_SEARCH_PATHS = "$(inherited) @executable_path/Frameworks @loader_path/Frameworks"; + SWIFT_OPTIMIZATION_LEVEL = "-Onone"; + SWIFT_VERSION = 4.2; USER_HEADER_SEARCH_PATHS = ReactiveObjC/extobjc; }; name = Debug; @@ -2895,11 +2938,14 @@ isa = XCBuildConfiguration; baseConfigurationReference = D047263419E49FE8006002AA /* iOS-Framework.xcconfig */; buildSettings = { + CLANG_ENABLE_MODULES = YES; + DEFINES_MODULE = YES; DYLIB_COMPATIBILITY_VERSION = 1; DYLIB_CURRENT_VERSION = 1; ENABLE_BITCODE = YES; INFOPLIST_FILE = ReactiveObjC/Info.plist; - LD_RUNPATH_SEARCH_PATHS = "$(inherited) @executable_path/Frameworks @loader_path/Frameworks"; + SWIFT_OPTIMIZATION_LEVEL = "-Onone"; + SWIFT_VERSION = 4.2; USER_HEADER_SEARCH_PATHS = ReactiveObjC/extobjc; }; name = Release; @@ -2911,7 +2957,6 @@ ALWAYS_EMBED_SWIFT_STANDARD_LIBRARIES = YES; CLANG_ENABLE_MODULES = YES; INFOPLIST_FILE = ReactiveObjCTests/Info.plist; - LD_RUNPATH_SEARCH_PATHS = "$(inherited) @executable_path/Frameworks @loader_path/Frameworks"; PRODUCT_NAME = "$(PROJECT_NAME)Tests"; SWIFT_OPTIMIZATION_LEVEL = "-Onone"; SWIFT_VERSION = 4.2; @@ -2925,7 +2970,6 @@ ALWAYS_EMBED_SWIFT_STANDARD_LIBRARIES = YES; CLANG_ENABLE_MODULES = YES; INFOPLIST_FILE = ReactiveObjCTests/Info.plist; - LD_RUNPATH_SEARCH_PATHS = "$(inherited) @executable_path/Frameworks @loader_path/Frameworks"; PRODUCT_NAME = "$(PROJECT_NAME)Tests"; SWIFT_OPTIMIZATION_LEVEL = "-Onone"; SWIFT_VERSION = 4.2; @@ -2958,11 +3002,13 @@ isa = XCBuildConfiguration; baseConfigurationReference = D047263A19E49FE8006002AA /* Mac-Framework.xcconfig */; buildSettings = { + CLANG_ENABLE_MODULES = YES; + DEFINES_MODULE = YES; DYLIB_COMPATIBILITY_VERSION = 1; DYLIB_CURRENT_VERSION = 1; FRAMEWORK_VERSION = A; INFOPLIST_FILE = ReactiveObjC/Info.plist; - LD_RUNPATH_SEARCH_PATHS = "$(inherited) @executable_path/../Frameworks @loader_path/Frameworks"; + SWIFT_VERSION = 4.2; USER_HEADER_SEARCH_PATHS = ReactiveObjC/extobjc; }; name = Profile; @@ -2978,7 +3024,6 @@ "$(inherited)", ); INFOPLIST_FILE = ReactiveObjCTests/Info.plist; - LD_RUNPATH_SEARCH_PATHS = "$(inherited) @executable_path/../Frameworks @loader_path/../Frameworks"; PRODUCT_NAME = "$(PROJECT_NAME)Tests"; SWIFT_VERSION = 4.2; }; @@ -2988,11 +3033,13 @@ isa = XCBuildConfiguration; baseConfigurationReference = D047263419E49FE8006002AA /* iOS-Framework.xcconfig */; buildSettings = { + CLANG_ENABLE_MODULES = YES; + DEFINES_MODULE = YES; DYLIB_COMPATIBILITY_VERSION = 1; DYLIB_CURRENT_VERSION = 1; ENABLE_BITCODE = YES; INFOPLIST_FILE = ReactiveObjC/Info.plist; - LD_RUNPATH_SEARCH_PATHS = "$(inherited) @executable_path/Frameworks @loader_path/Frameworks"; + SWIFT_VERSION = 4.2; USER_HEADER_SEARCH_PATHS = ReactiveObjC/extobjc; }; name = Profile; @@ -3004,7 +3051,6 @@ ALWAYS_EMBED_SWIFT_STANDARD_LIBRARIES = YES; CLANG_ENABLE_MODULES = YES; INFOPLIST_FILE = ReactiveObjCTests/Info.plist; - LD_RUNPATH_SEARCH_PATHS = "$(inherited) @executable_path/Frameworks @loader_path/Frameworks"; PRODUCT_NAME = "$(PROJECT_NAME)Tests"; SWIFT_VERSION = 4.2; }; @@ -3036,11 +3082,14 @@ isa = XCBuildConfiguration; baseConfigurationReference = D047263A19E49FE8006002AA /* Mac-Framework.xcconfig */; buildSettings = { + CLANG_ENABLE_MODULES = YES; + DEFINES_MODULE = YES; DYLIB_COMPATIBILITY_VERSION = 1; DYLIB_CURRENT_VERSION = 1; FRAMEWORK_VERSION = A; INFOPLIST_FILE = ReactiveObjC/Info.plist; - LD_RUNPATH_SEARCH_PATHS = "$(inherited) @executable_path/../Frameworks @loader_path/Frameworks"; + SWIFT_OPTIMIZATION_LEVEL = "-Onone"; + SWIFT_VERSION = 4.2; USER_HEADER_SEARCH_PATHS = ReactiveObjC/extobjc; }; name = Test; @@ -3056,7 +3105,6 @@ "$(inherited)", ); INFOPLIST_FILE = ReactiveObjCTests/Info.plist; - LD_RUNPATH_SEARCH_PATHS = "$(inherited) @executable_path/../Frameworks @loader_path/../Frameworks"; PRODUCT_NAME = "$(PROJECT_NAME)Tests"; SWIFT_OPTIMIZATION_LEVEL = "-Onone"; SWIFT_VERSION = 4.2; @@ -3067,11 +3115,14 @@ isa = XCBuildConfiguration; baseConfigurationReference = D047263419E49FE8006002AA /* iOS-Framework.xcconfig */; buildSettings = { + CLANG_ENABLE_MODULES = YES; + DEFINES_MODULE = YES; DYLIB_COMPATIBILITY_VERSION = 1; DYLIB_CURRENT_VERSION = 1; ENABLE_BITCODE = YES; INFOPLIST_FILE = ReactiveObjC/Info.plist; - LD_RUNPATH_SEARCH_PATHS = "$(inherited) @executable_path/Frameworks @loader_path/Frameworks"; + SWIFT_OPTIMIZATION_LEVEL = "-Onone"; + SWIFT_VERSION = 4.2; USER_HEADER_SEARCH_PATHS = ReactiveObjC/extobjc; }; name = Test; @@ -3083,7 +3134,6 @@ ALWAYS_EMBED_SWIFT_STANDARD_LIBRARIES = YES; CLANG_ENABLE_MODULES = YES; INFOPLIST_FILE = ReactiveObjCTests/Info.plist; - LD_RUNPATH_SEARCH_PATHS = "$(inherited) @executable_path/Frameworks @loader_path/Frameworks"; PRODUCT_NAME = "$(PROJECT_NAME)Tests"; SWIFT_OPTIMIZATION_LEVEL = "-Onone"; SWIFT_VERSION = 4.2; diff --git a/ReactiveObjC/Deprecations+Removals.swift b/ReactiveObjC/Deprecations+Removals.swift new file mode 100644 index 000000000..c104c43d0 --- /dev/null +++ b/ReactiveObjC/Deprecations+Removals.swift @@ -0,0 +1,13 @@ +// +// Deprecations+Removals.swift +// ReactiveObjC +// +// Created by Adam Sharp on 26/12/18. +// Copyright © 2018 GitHub. All rights reserved. +// + +@available(*, deprecated, renamed: "RACSignalError.noMatchingCase") +public let RACSignalErrorNoMatchingCase = RACSignalError.noMatchingCase.rawValue + +@available(*, deprecated, renamed: "RACSignalError.timedOut") +public let RACSignalErrorTimedOut = RACSignalError.timedOut.rawValue From cbb7d901d26acf46a57e4ad7e90660fb95037f28 Mon Sep 17 00:00:00 2001 From: Adam Sharp Date: Wed, 26 Dec 2018 14:43:41 -0500 Subject: [PATCH 04/10] Add RACCommandError to bridged Swift errors --- ReactiveObjC/Deprecations+Removals.swift | 3 +++ ReactiveObjC/RACCommand.h | 8 +++++--- ReactiveObjC/RACCommand.m | 4 +--- ReactiveObjCTests/RACSwiftBridgingSpec.swift | 7 +++++++ 4 files changed, 16 insertions(+), 6 deletions(-) diff --git a/ReactiveObjC/Deprecations+Removals.swift b/ReactiveObjC/Deprecations+Removals.swift index c104c43d0..e96781c09 100644 --- a/ReactiveObjC/Deprecations+Removals.swift +++ b/ReactiveObjC/Deprecations+Removals.swift @@ -6,6 +6,9 @@ // Copyright © 2018 GitHub. All rights reserved. // +@available(*, deprecated, renamed: "RACSignalError.notEnabled") +public let RACCommandErrorNotEnabled = RACCommandError.notEnabled.rawValue + @available(*, deprecated, renamed: "RACSignalError.noMatchingCase") public let RACSignalErrorNoMatchingCase = RACSignalError.noMatchingCase.rawValue diff --git a/ReactiveObjC/RACCommand.h b/ReactiveObjC/RACCommand.h index 4a2686057..20762dbf2 100644 --- a/ReactiveObjC/RACCommand.h +++ b/ReactiveObjC/RACCommand.h @@ -13,10 +13,12 @@ NS_ASSUME_NONNULL_BEGIN /// The domain for errors originating within `RACCommand`. -extern NSString * const RACCommandErrorDomain; +extern NSErrorDomain const RACCommandErrorDomain; -/// -execute: was invoked while the command was disabled. -extern const NSInteger RACCommandErrorNotEnabled; +typedef NS_ERROR_ENUM(RACCommandErrorDomain, RACCommandError) { + /// -execute: was invoked while the command was disabled. + RACCommandErrorNotEnabled = 1, +}; /// A `userInfo` key for an error, associated with the `RACCommand` that the /// error originated from. diff --git a/ReactiveObjC/RACCommand.m b/ReactiveObjC/RACCommand.m index 6cda3ac78..4342f80ba 100644 --- a/ReactiveObjC/RACCommand.m +++ b/ReactiveObjC/RACCommand.m @@ -19,11 +19,9 @@ #import "RACSignal+Operations.h" #import -NSString * const RACCommandErrorDomain = @"RACCommandErrorDomain"; +NSErrorDomain const RACCommandErrorDomain = @"RACCommandErrorDomain"; NSString * const RACUnderlyingCommandErrorKey = @"RACUnderlyingCommandErrorKey"; -const NSInteger RACCommandErrorNotEnabled = 1; - @interface RACCommand () { // Atomic backing variable for `allowsConcurrentExecution`. volatile uint32_t _allowsConcurrentExecution; diff --git a/ReactiveObjCTests/RACSwiftBridgingSpec.swift b/ReactiveObjCTests/RACSwiftBridgingSpec.swift index 420310fe8..03b5b4157 100644 --- a/ReactiveObjCTests/RACSwiftBridgingSpec.swift +++ b/ReactiveObjCTests/RACSwiftBridgingSpec.swift @@ -4,6 +4,13 @@ import ReactiveObjC final class RACSwiftBridgingSpec: QuickSpec { override func spec() { + describe("RACCommandError") { + it("bridges RACCommandErrorNotEnabled to a Swift error code") { + let error: Error = NSError(domain: RACCommandErrorDomain, code: 1) + expect(RACCommandError.notEnabled ~= error).to(beTrue()) + } + } + describe("RACSignalError") { it("bridges RACSignalErrorTimedOut to a Swift error code") { let error: Error = NSError(domain: RACSignalErrorDomain, code: 1) From 6d4ae6599d2db950101d9c81007cbe9199faf1c0 Mon Sep 17 00:00:00 2001 From: Adam Sharp Date: Wed, 26 Dec 2018 14:46:54 -0500 Subject: [PATCH 05/10] Add RACSelectorSignalError to bridged Swift errors --- ReactiveObjC/Deprecations+Removals.swift | 3 +++ ReactiveObjC/NSObject+RACSelectorSignal.h | 16 +++++++++------- ReactiveObjC/NSObject+RACSelectorSignal.m | 3 +-- ReactiveObjCTests/RACSwiftBridgingSpec.swift | 7 +++++++ 4 files changed, 20 insertions(+), 9 deletions(-) diff --git a/ReactiveObjC/Deprecations+Removals.swift b/ReactiveObjC/Deprecations+Removals.swift index e96781c09..acd3784fe 100644 --- a/ReactiveObjC/Deprecations+Removals.swift +++ b/ReactiveObjC/Deprecations+Removals.swift @@ -9,6 +9,9 @@ @available(*, deprecated, renamed: "RACSignalError.notEnabled") public let RACCommandErrorNotEnabled = RACCommandError.notEnabled.rawValue +@available(*, deprecated, renamed: "RACSignalError.methodSwizzlingRace") +public let RACSelectorSignalErrorMethodSwizzlingRace = RACSelectorSignalError.methodSwizzlingRace + @available(*, deprecated, renamed: "RACSignalError.noMatchingCase") public let RACSignalErrorNoMatchingCase = RACSignalError.noMatchingCase.rawValue diff --git a/ReactiveObjC/NSObject+RACSelectorSignal.h b/ReactiveObjC/NSObject+RACSelectorSignal.h index bb3672eca..1ea871712 100644 --- a/ReactiveObjC/NSObject+RACSelectorSignal.h +++ b/ReactiveObjC/NSObject+RACSelectorSignal.h @@ -14,14 +14,16 @@ NS_ASSUME_NONNULL_BEGIN /// The domain for any errors originating from -rac_signalForSelector:. -extern NSString * const RACSelectorSignalErrorDomain; +extern NSErrorDomain const RACSelectorSignalErrorDomain; -/// -rac_signalForSelector: was going to add a new method implementation for -/// `selector`, but another thread added an implementation before it was able to. -/// -/// This will _not_ occur for cases where a method implementation exists before -/// -rac_signalForSelector: is invoked. -extern const NSInteger RACSelectorSignalErrorMethodSwizzlingRace; +typedef NS_ERROR_ENUM(RACSelectorSignalErrorDomain, RACSelectorSignalError) { + /// -rac_signalForSelector: was going to add a new method implementation for + /// `selector`, but another thread added an implementation before it was able to. + /// + /// This will _not_ occur for cases where a method implementation exists before + /// -rac_signalForSelector: is invoked. + RACSelectorSignalErrorMethodSwizzlingRace = 1, +}; @interface NSObject (RACSelectorSignal) diff --git a/ReactiveObjC/NSObject+RACSelectorSignal.m b/ReactiveObjC/NSObject+RACSelectorSignal.m index 63e232003..ed809e2ef 100644 --- a/ReactiveObjC/NSObject+RACSelectorSignal.m +++ b/ReactiveObjC/NSObject+RACSelectorSignal.m @@ -18,8 +18,7 @@ #import #import -NSString * const RACSelectorSignalErrorDomain = @"RACSelectorSignalErrorDomain"; -const NSInteger RACSelectorSignalErrorMethodSwizzlingRace = 1; +NSErrorDomain const RACSelectorSignalErrorDomain = @"RACSelectorSignalErrorDomain"; static NSString * const RACSignalForSelectorAliasPrefix = @"rac_alias_"; static NSString * const RACSubclassSuffix = @"_RACSelectorSignal"; diff --git a/ReactiveObjCTests/RACSwiftBridgingSpec.swift b/ReactiveObjCTests/RACSwiftBridgingSpec.swift index 03b5b4157..653418f36 100644 --- a/ReactiveObjCTests/RACSwiftBridgingSpec.swift +++ b/ReactiveObjCTests/RACSwiftBridgingSpec.swift @@ -11,6 +11,13 @@ final class RACSwiftBridgingSpec: QuickSpec { } } + describe("RACSelectorSignalError") { + it("bridges RACSelectorSignalErrorMethodSwizzlingRace to a Swift error code") { + let error: Error = NSError(domain: RACSelectorSignalErrorDomain, code: 1) + expect(RACSelectorSignalError.methodSwizzlingRace ~= error).to(beTrue()) + } + } + describe("RACSignalError") { it("bridges RACSignalErrorTimedOut to a Swift error code") { let error: Error = NSError(domain: RACSignalErrorDomain, code: 1) From e0770cd544fe3de530c2ae7683a998e397da88d9 Mon Sep 17 00:00:00 2001 From: Adam Sharp Date: Wed, 26 Dec 2018 14:53:11 -0500 Subject: [PATCH 06/10] Use Xcode 10 on CI --- .travis.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.travis.yml b/.travis.yml index a15d29916..741e27171 100644 --- a/.travis.yml +++ b/.travis.yml @@ -1,5 +1,5 @@ language: objective-c -osx_image: xcode9 +osx_image: xcode10 before_install: true install: true branches: From 33a2bfe2ea860c1c0cf8f58af8d4be4dd130dce7 Mon Sep 17 00:00:00 2001 From: Adam Sharp Date: Wed, 26 Dec 2018 15:09:13 -0500 Subject: [PATCH 07/10] Enable -Wstrict-prototypes --- ReactiveObjC.xcodeproj/project.pbxproj | 16 ++++++++++++++++ ReactiveObjC/NSObject+RACAppKitBindings.m | 2 +- ReactiveObjC/NSObject+RACKVOWrapper.m | 2 +- ReactiveObjC/RACSignal+Operations.m | 2 +- 4 files changed, 19 insertions(+), 3 deletions(-) diff --git a/ReactiveObjC.xcodeproj/project.pbxproj b/ReactiveObjC.xcodeproj/project.pbxproj index d1a808372..af597fe65 100644 --- a/ReactiveObjC.xcodeproj/project.pbxproj +++ b/ReactiveObjC.xcodeproj/project.pbxproj @@ -2590,6 +2590,7 @@ baseConfigurationReference = 57A4D2461BA13F9700F7D4B1 /* tvOS-Framework.xcconfig */; buildSettings = { CLANG_ENABLE_MODULES = YES; + CLANG_WARN_STRICT_PROTOTYPES = YES; DEFINES_MODULE = YES; DYLIB_COMPATIBILITY_VERSION = 1; DYLIB_CURRENT_VERSION = 1; @@ -2609,6 +2610,7 @@ baseConfigurationReference = 57A4D2461BA13F9700F7D4B1 /* tvOS-Framework.xcconfig */; buildSettings = { CLANG_ENABLE_MODULES = YES; + CLANG_WARN_STRICT_PROTOTYPES = YES; DEFINES_MODULE = YES; DYLIB_COMPATIBILITY_VERSION = 1; DYLIB_CURRENT_VERSION = 1; @@ -2628,6 +2630,7 @@ baseConfigurationReference = 57A4D2461BA13F9700F7D4B1 /* tvOS-Framework.xcconfig */; buildSettings = { CLANG_ENABLE_MODULES = YES; + CLANG_WARN_STRICT_PROTOTYPES = YES; DEFINES_MODULE = YES; DYLIB_COMPATIBILITY_VERSION = 1; DYLIB_CURRENT_VERSION = 1; @@ -2647,6 +2650,7 @@ baseConfigurationReference = 57A4D2461BA13F9700F7D4B1 /* tvOS-Framework.xcconfig */; buildSettings = { CLANG_ENABLE_MODULES = YES; + CLANG_WARN_STRICT_PROTOTYPES = YES; DEFINES_MODULE = YES; DYLIB_COMPATIBILITY_VERSION = 1; DYLIB_CURRENT_VERSION = 1; @@ -2736,6 +2740,7 @@ baseConfigurationReference = A97451351B3A935E00F48E55 /* watchOS-Framework.xcconfig */; buildSettings = { CLANG_ENABLE_MODULES = YES; + CLANG_WARN_STRICT_PROTOTYPES = YES; DEFINES_MODULE = YES; DYLIB_COMPATIBILITY_VERSION = 1; DYLIB_CURRENT_VERSION = 1; @@ -2755,6 +2760,7 @@ baseConfigurationReference = A97451351B3A935E00F48E55 /* watchOS-Framework.xcconfig */; buildSettings = { CLANG_ENABLE_MODULES = YES; + CLANG_WARN_STRICT_PROTOTYPES = YES; DEFINES_MODULE = YES; DYLIB_COMPATIBILITY_VERSION = 1; DYLIB_CURRENT_VERSION = 1; @@ -2774,6 +2780,7 @@ baseConfigurationReference = A97451351B3A935E00F48E55 /* watchOS-Framework.xcconfig */; buildSettings = { CLANG_ENABLE_MODULES = YES; + CLANG_WARN_STRICT_PROTOTYPES = YES; DEFINES_MODULE = YES; DYLIB_COMPATIBILITY_VERSION = 1; DYLIB_CURRENT_VERSION = 1; @@ -2793,6 +2800,7 @@ baseConfigurationReference = A97451351B3A935E00F48E55 /* watchOS-Framework.xcconfig */; buildSettings = { CLANG_ENABLE_MODULES = YES; + CLANG_WARN_STRICT_PROTOTYPES = YES; DEFINES_MODULE = YES; DYLIB_COMPATIBILITY_VERSION = 1; DYLIB_CURRENT_VERSION = 1; @@ -2857,6 +2865,7 @@ baseConfigurationReference = D047263A19E49FE8006002AA /* Mac-Framework.xcconfig */; buildSettings = { CLANG_ENABLE_MODULES = YES; + CLANG_WARN_STRICT_PROTOTYPES = YES; DEFINES_MODULE = YES; DYLIB_COMPATIBILITY_VERSION = 1; DYLIB_CURRENT_VERSION = 1; @@ -2873,6 +2882,7 @@ baseConfigurationReference = D047263A19E49FE8006002AA /* Mac-Framework.xcconfig */; buildSettings = { CLANG_ENABLE_MODULES = YES; + CLANG_WARN_STRICT_PROTOTYPES = YES; DEFINES_MODULE = YES; DYLIB_COMPATIBILITY_VERSION = 1; DYLIB_CURRENT_VERSION = 1; @@ -2923,6 +2933,7 @@ baseConfigurationReference = D047263419E49FE8006002AA /* iOS-Framework.xcconfig */; buildSettings = { CLANG_ENABLE_MODULES = YES; + CLANG_WARN_STRICT_PROTOTYPES = YES; DEFINES_MODULE = YES; DYLIB_COMPATIBILITY_VERSION = 1; DYLIB_CURRENT_VERSION = 1; @@ -2939,6 +2950,7 @@ baseConfigurationReference = D047263419E49FE8006002AA /* iOS-Framework.xcconfig */; buildSettings = { CLANG_ENABLE_MODULES = YES; + CLANG_WARN_STRICT_PROTOTYPES = YES; DEFINES_MODULE = YES; DYLIB_COMPATIBILITY_VERSION = 1; DYLIB_CURRENT_VERSION = 1; @@ -3003,6 +3015,7 @@ baseConfigurationReference = D047263A19E49FE8006002AA /* Mac-Framework.xcconfig */; buildSettings = { CLANG_ENABLE_MODULES = YES; + CLANG_WARN_STRICT_PROTOTYPES = YES; DEFINES_MODULE = YES; DYLIB_COMPATIBILITY_VERSION = 1; DYLIB_CURRENT_VERSION = 1; @@ -3034,6 +3047,7 @@ baseConfigurationReference = D047263419E49FE8006002AA /* iOS-Framework.xcconfig */; buildSettings = { CLANG_ENABLE_MODULES = YES; + CLANG_WARN_STRICT_PROTOTYPES = YES; DEFINES_MODULE = YES; DYLIB_COMPATIBILITY_VERSION = 1; DYLIB_CURRENT_VERSION = 1; @@ -3083,6 +3097,7 @@ baseConfigurationReference = D047263A19E49FE8006002AA /* Mac-Framework.xcconfig */; buildSettings = { CLANG_ENABLE_MODULES = YES; + CLANG_WARN_STRICT_PROTOTYPES = YES; DEFINES_MODULE = YES; DYLIB_COMPATIBILITY_VERSION = 1; DYLIB_CURRENT_VERSION = 1; @@ -3116,6 +3131,7 @@ baseConfigurationReference = D047263419E49FE8006002AA /* iOS-Framework.xcconfig */; buildSettings = { CLANG_ENABLE_MODULES = YES; + CLANG_WARN_STRICT_PROTOTYPES = YES; DEFINES_MODULE = YES; DYLIB_COMPATIBILITY_VERSION = 1; DYLIB_CURRENT_VERSION = 1; diff --git a/ReactiveObjC/NSObject+RACAppKitBindings.m b/ReactiveObjC/NSObject+RACAppKitBindings.m index 9c00edda0..06fd5d011 100644 --- a/ReactiveObjC/NSObject+RACAppKitBindings.m +++ b/ReactiveObjC/NSObject+RACAppKitBindings.m @@ -93,7 +93,7 @@ - (instancetype)initWithTarget:(id)target bindingName:(NSString *)bindingName op @weakify(self); - void (^cleanUp)() = ^{ + void (^cleanUp)(void) = ^{ @strongify(self); id target = self.target; diff --git a/ReactiveObjC/NSObject+RACKVOWrapper.m b/ReactiveObjC/NSObject+RACKVOWrapper.m index 32e99e266..099dc773a 100644 --- a/ReactiveObjC/NSObject+RACKVOWrapper.m +++ b/ReactiveObjC/NSObject+RACKVOWrapper.m @@ -54,7 +54,7 @@ - (RACDisposable *)rac_observeKeyPath:(NSString *)keyPath options:(NSKeyValueObs BOOL isObject = attributes->objectClass != nil || strstr(attributes->type, @encode(id)) == attributes->type; BOOL isProtocol = attributes->objectClass == NSClassFromString(@"Protocol"); - BOOL isBlock = strcmp(attributes->type, @encode(void(^)())) == 0; + BOOL isBlock = strcmp(attributes->type, @encode(void(^)(void))) == 0; BOOL isWeak = attributes->weak; // If this property isn't actually an object (or is a Class object), diff --git a/ReactiveObjC/RACSignal+Operations.m b/ReactiveObjC/RACSignal+Operations.m index 1ec375ea9..87967adfd 100644 --- a/ReactiveObjC/RACSignal+Operations.m +++ b/ReactiveObjC/RACSignal+Operations.m @@ -328,7 +328,7 @@ - (RACSignal *)bufferWithTime:(NSTimeInterval)interval onScheduler:(RACScheduler RACSerialDisposable *timerDisposable = [[RACSerialDisposable alloc] init]; NSMutableArray *values = [NSMutableArray array]; - void (^flushValues)() = ^{ + void (^flushValues)(void) = ^{ @synchronized (values) { [timerDisposable.disposable dispose]; From 9a6dc6e4b4fc0d50bf29bfe593a0206b98c37aeb Mon Sep 17 00:00:00 2001 From: Adam Sharp Date: Wed, 26 Dec 2018 15:12:18 -0500 Subject: [PATCH 08/10] Work around spurious warnings of -initWithBlock: availability --- ReactiveObjC/RACBlockTrampoline.m | 2 +- ReactiveObjC/RACDisposable.m | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/ReactiveObjC/RACBlockTrampoline.m b/ReactiveObjC/RACBlockTrampoline.m index a2d589f1f..eaa0ea2f8 100644 --- a/ReactiveObjC/RACBlockTrampoline.m +++ b/ReactiveObjC/RACBlockTrampoline.m @@ -28,7 +28,7 @@ - (instancetype)initWithBlock:(id)block { + (id)invokeBlock:(id)block withArguments:(RACTuple *)arguments { NSCParameterAssert(block != NULL); - RACBlockTrampoline *trampoline = [[self alloc] initWithBlock:block]; + RACBlockTrampoline *trampoline = [(RACBlockTrampoline *)[self alloc] initWithBlock:block]; return [trampoline invokeWithArguments:arguments]; } diff --git a/ReactiveObjC/RACDisposable.m b/ReactiveObjC/RACDisposable.m index 25f266977..3cba07f4f 100644 --- a/ReactiveObjC/RACDisposable.m +++ b/ReactiveObjC/RACDisposable.m @@ -52,7 +52,7 @@ - (instancetype)initWithBlock:(void (^)(void))block { } + (instancetype)disposableWithBlock:(void (^)(void))block { - return [[self alloc] initWithBlock:block]; + return [(RACDisposable *)[self alloc] initWithBlock:block]; } - (void)dealloc { From 64b8527bc35d9990a454479361faf0367a1f4438 Mon Sep 17 00:00:00 2001 From: Adam Sharp Date: Wed, 26 Dec 2018 17:49:44 -0500 Subject: [PATCH 09/10] Switch to Apple TV 4K on CI --- .travis.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.travis.yml b/.travis.yml index 741e27171..46a0605a4 100644 --- a/.travis.yml +++ b/.travis.yml @@ -24,7 +24,7 @@ matrix: env: - XCODE_SDK=appletvsimulator - XCODE_ACTION="build-for-testing test-without-building" - - XCODE_DESTINATION="platform=tvOS Simulator,name=Apple TV 1080p" + - XCODE_DESTINATION="platform=tvOS Simulator,name=Apple TV 4K" - xcode_scheme: ReactiveObjC-watchOS env: - XCODE_SDK=watchsimulator From 7b150abe20987b71f023138c9448995d5219b1ff Mon Sep 17 00:00:00 2001 From: Adam Sharp Date: Mon, 7 Jan 2019 10:25:37 -0500 Subject: [PATCH 10/10] Use prerelease version of CocoaPods on CI This allows us to use CocoaPods 1.6.0.beta, which fixes a bug in `pod lib lint` under Xcode 10. --- .travis.yml | 1 + 1 file changed, 1 insertion(+) diff --git a/.travis.yml b/.travis.yml index 46a0605a4..3760af61c 100644 --- a/.travis.yml +++ b/.travis.yml @@ -55,6 +55,7 @@ matrix: env: - JOB=CARTHAGE-watchOS - script: + - gem install cocoapods --pre - pod repo update --silent - pod lib lint ReactiveObjC.podspec env: