From cbb7d901d26acf46a57e4ad7e90660fb95037f28 Mon Sep 17 00:00:00 2001 From: Adam Sharp Date: Wed, 26 Dec 2018 14:43:41 -0500 Subject: [PATCH] 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)