From 2cb931d8e9828cbc27e0737b9129bfe255a7a92a Mon Sep 17 00:00:00 2001 From: Mo Ramezanpoor Date: Mon, 25 Jul 2016 15:21:33 +0100 Subject: [PATCH 1/6] Add new insert/remove methods to CompositeDisposable that follow Swift 3 naming conventions. --- RxSwift/Disposables/CompositeDisposable.swift | 44 ++++++++++++++----- 1 file changed, 33 insertions(+), 11 deletions(-) diff --git a/RxSwift/Disposables/CompositeDisposable.swift b/RxSwift/Disposables/CompositeDisposable.swift index 10bdd313..8b91bad0 100644 --- a/RxSwift/Disposables/CompositeDisposable.swift +++ b/RxSwift/Disposables/CompositeDisposable.swift @@ -77,17 +77,29 @@ public class CompositeDisposable : DisposeBase, Disposable, Cancelable { - returns: Key that can be used to remove disposable from composite disposable. In case dispose bag was already disposed `nil` will be returned. */ + @available(*, deprecated, renamed: "insert(_:)") public func addDisposable(_ disposable: Disposable) -> DisposeKey? { - let key = _addDisposable(disposable) - + return insert(disposable) + } + + /** + Adds a disposable to the CompositeDisposable or disposes the disposable if the CompositeDisposable is disposed. + + - parameter disposable: Disposable to add. + - returns: Key that can be used to remove disposable from composite disposable. In case dispose bag was already + disposed `nil` will be returned. + */ + public func insert(_ disposable: Disposable) -> DisposeKey? { + let key = _insert(disposable) + if key == nil { disposable.dispose() } return key } - - private func _addDisposable(_ disposable: Disposable) -> DisposeKey? { + + private func _insert(_ disposable: Disposable) -> DisposeKey? { _lock.lock(); defer { _lock.unlock() } return _disposables?.insert(disposable) @@ -102,15 +114,25 @@ public class CompositeDisposable : DisposeBase, Disposable, Cancelable { } /** - Removes and disposes the disposable identified by `disposeKey` from the CompositeDisposable. - - - parameter disposeKey: Key used to identify disposable to be removed. - */ + Removes and disposes the disposable identified by `disposeKey` from the CompositeDisposable. + + - parameter disposeKey: Key used to identify disposable to be removed. + */ + @available(*, deprecated, renamed: "removeDisposable(forKey:)") public func removeDisposable(_ disposeKey: DisposeKey) { - _removeDisposable(disposeKey)?.dispose() + removeDisposable(forKey: disposeKey) } - - private func _removeDisposable(_ disposeKey: DisposeKey) -> Disposable? { + + /** + Removes and disposes the disposable identified by `disposeKey` from the CompositeDisposable. + + - parameter disposeKey: Key used to identify disposable to be removed. + */ + public func removeDisposable(forKey disposeKey: DisposeKey) { + _removeDisposable(forKey: disposeKey)?.dispose() + } + + private func _removeDisposable(forKey disposeKey: DisposeKey) -> Disposable? { _lock.lock(); defer { _lock.unlock() } return _disposables?.removeKey(disposeKey) } From fbee13188610df3d4cfd9257b64553cf4e47e402 Mon Sep 17 00:00:00 2001 From: Mo Ramezanpoor Date: Mon, 25 Jul 2016 15:31:40 +0100 Subject: [PATCH 2/6] Update all known call sites to use the new insert/remove methods on CompositeDisposable. --- RxSwift/Observables/Implementations/Merge.swift | 14 +++++++------- RxSwift/Observables/Implementations/Window.swift | 4 ++-- .../Internal/DispatchQueueConfiguration.swift | 4 ++-- RxSwift/Schedulers/OperationQueueScheduler.swift | 4 ++-- RxSwift/Schedulers/RecursiveScheduler.swift | 12 ++++++------ RxSwift/Schedulers/VirtualTimeScheduler.swift | 2 +- Tests/RxSwiftTests/Tests/DisposableTest.swift | 10 +++++----- .../Tests/Observable+ConcurrencyTest.swift | 2 +- 8 files changed, 26 insertions(+), 26 deletions(-) diff --git a/RxSwift/Observables/Implementations/Merge.swift b/RxSwift/Observables/Implementations/Merge.swift index 7647087a..52cb7283 100644 --- a/RxSwift/Observables/Implementations/Merge.swift +++ b/RxSwift/Observables/Implementations/Merge.swift @@ -42,7 +42,7 @@ class MergeLimitedSinkIter) -> Disposable { - let _ = _group.addDisposable(_sourceSubscription) + let _ = _group.insert(_sourceSubscription) let disposable = source.subscribe(self) _sourceSubscription.disposable = disposable @@ -96,7 +96,7 @@ class MergeLimitedSink) { let iterDisposable = SingleAssignmentDisposable() - if let disposeKey = _group.addDisposable(iterDisposable) { + if let disposeKey = _group.insert(iterDisposable) { let iter = MergeSinkIter(parent: self, disposeKey: disposeKey) let subscription = source.subscribe(iter) iterDisposable.disposable = subscription @@ -339,7 +339,7 @@ class MergeSink) -> Disposable { - let _ = _group.addDisposable(_sourceSubscription) + let _ = _group.insert(_sourceSubscription) let subscription = source.subscribe(self) _sourceSubscription.disposable = subscription diff --git a/RxSwift/Observables/Implementations/Window.swift b/RxSwift/Observables/Implementations/Window.swift index 71489391..637bfff3 100644 --- a/RxSwift/Observables/Implementations/Window.swift +++ b/RxSwift/Observables/Implementations/Window.swift @@ -31,7 +31,7 @@ class WindowTimeCountSink { let action = self._lock.calculateLocked { () -> Action? in if isAdded { - self._group.removeDisposable(removeKey!) + self._group.removeDisposable(forKey: removeKey!) } else { isDone = true @@ -65,7 +65,7 @@ class AnyRecursiveScheduler { _lock.performLocked { if !isDone { - removeKey = _group.addDisposable(d) + removeKey = _group.insert(d) isAdded = true } } @@ -90,7 +90,7 @@ class AnyRecursiveScheduler { let action = self._lock.calculateLocked { () -> Action? in if isAdded { - self._group.removeDisposable(removeKey!) + self._group.removeDisposable(forKey: removeKey!) } else { isDone = true @@ -108,7 +108,7 @@ class AnyRecursiveScheduler { _lock.performLocked { if !isDone { - removeKey = _group.addDisposable(d) + removeKey = _group.insert(d) isAdded = true } } @@ -160,7 +160,7 @@ class RecursiveImmediateScheduler { let action = self._lock.calculateLocked { () -> Action? in if isAdded { - self._group.removeDisposable(removeKey!) + self._group.removeDisposable(forKey: removeKey!) } else { isDone = true @@ -178,7 +178,7 @@ class RecursiveImmediateScheduler { _lock.performLocked { if !isDone { - removeKey = _group.addDisposable(d) + removeKey = _group.insert(d) isAdded = true } } diff --git a/RxSwift/Schedulers/VirtualTimeScheduler.swift b/RxSwift/Schedulers/VirtualTimeScheduler.swift index efd9b000..96974f90 100644 --- a/RxSwift/Schedulers/VirtualTimeScheduler.swift +++ b/RxSwift/Schedulers/VirtualTimeScheduler.swift @@ -128,7 +128,7 @@ public class VirtualTimeScheduler _schedulerQueue.enqueue(item) - _ = compositeDisposable.addDisposable(item) + _ = compositeDisposable.insert(item) return compositeDisposable } diff --git a/Tests/RxSwiftTests/Tests/DisposableTest.swift b/Tests/RxSwiftTests/Tests/DisposableTest.swift index acd55d12..58d2e3ce 100644 --- a/Tests/RxSwiftTests/Tests/DisposableTest.swift +++ b/Tests/RxSwiftTests/Tests/DisposableTest.swift @@ -73,11 +73,11 @@ class DisposableTest : RxTest { var numberDisposed = 0 let compositeDisposable = CompositeDisposable() - let result1 = compositeDisposable.addDisposable(AnonymousDisposable { + let result1 = compositeDisposable.insert(AnonymousDisposable { numberDisposed += 1 }) - _ = compositeDisposable.addDisposable(AnonymousDisposable { + _ = compositeDisposable.insert(AnonymousDisposable { numberDisposed += 1 }) @@ -89,7 +89,7 @@ class DisposableTest : RxTest { XCTAssertEqual(numberDisposed, 2) XCTAssertEqual(compositeDisposable.count, 0) - let result = compositeDisposable.addDisposable(AnonymousDisposable { + let result = compositeDisposable.insert(AnonymousDisposable { numberDisposed += 1 }) @@ -131,11 +131,11 @@ class DisposableTest : RxTest { var numberDisposed = 0 let compositeDisposable = CompositeDisposable() - let result1 = compositeDisposable.addDisposable(AnonymousDisposable { + let result1 = compositeDisposable.insert(AnonymousDisposable { numberDisposed += 1 }) - let result2 = compositeDisposable.addDisposable(AnonymousDisposable { + let result2 = compositeDisposable.insert(AnonymousDisposable { numberDisposed += 1 }) diff --git a/Tests/RxSwiftTests/Tests/Observable+ConcurrencyTest.swift b/Tests/RxSwiftTests/Tests/Observable+ConcurrencyTest.swift index 39ddf20e..2d0d50f7 100644 --- a/Tests/RxSwiftTests/Tests/Observable+ConcurrencyTest.swift +++ b/Tests/RxSwiftTests/Tests/Observable+ConcurrencyTest.swift @@ -60,7 +60,7 @@ extension ObservableConcurrencyTest { let compositeDisposable = CompositeDisposable() for test in tests { - _ = compositeDisposable.addDisposable(runDispatchQueueSchedulerTests(scheduler, tests: test)) + _ = compositeDisposable.insert(runDispatchQueueSchedulerTests(scheduler, tests: test)) } compositeDisposable.dispose() From 61420eef9f5c0986f27bf309e2b57da96fd01f20 Mon Sep 17 00:00:00 2001 From: Mo Ramezanpoor Date: Mon, 25 Jul 2016 15:37:33 +0100 Subject: [PATCH 3/6] Add DisposeBag.insert() and deprecate DisposeBag.addDisposable(). Update [the only] known call site to match. --- RxSwift/Disposables/DisposeBag.swift | 18 ++++++++++++++---- 1 file changed, 14 insertions(+), 4 deletions(-) diff --git a/RxSwift/Disposables/DisposeBag.swift b/RxSwift/Disposables/DisposeBag.swift index 3d9ed244..c466515d 100644 --- a/RxSwift/Disposables/DisposeBag.swift +++ b/RxSwift/Disposables/DisposeBag.swift @@ -15,7 +15,7 @@ extension Disposable { - parameter bag: `DisposeBag` to add `self` to. */ public func addDisposableTo(_ bag: DisposeBag) { - bag.addDisposable(self) + bag.insert(self) } } @@ -51,11 +51,21 @@ public class DisposeBag: DisposeBase { - parameter disposable: Disposable to add. */ + @available(*, deprecated, renamed: "insert(_:)") public func addDisposable(_ disposable: Disposable) { - _addDisposable(disposable)?.dispose() + insert(disposable) } - - private func _addDisposable(_ disposable: Disposable) -> Disposable? { + + /** + Adds `disposable` to be disposed when dispose bag is being deinited. + + - parameter disposable: Disposable to add. + */ + public func insert(_ disposable: Disposable) { + _insert(disposable)?.dispose() + } + + private func _insert(_ disposable: Disposable) -> Disposable? { _lock.lock(); defer { _lock.unlock() } if _disposed { return disposable From fa14592a2bbf0b9b0132695c4c3b9d4e63d6cca5 Mon Sep 17 00:00:00 2001 From: Mo Ramezanpoor Date: Mon, 25 Jul 2016 16:02:26 +0100 Subject: [PATCH 4/6] Rename disposeAllIn(_:) to disposeAll(in:). MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Ideally we’d move this to be a method on Bag where T: Disposable. Unfortunately atm that doesn’t work on Bag itself, only on concrete types inheriting from it. We can at least make the function feel more at home in Swift 3. --- RxSwift/DataStructures/Bag.swift | 8 ++++++++ RxSwift/Disposables/CompositeDisposable.swift | 2 +- 2 files changed, 9 insertions(+), 1 deletion(-) diff --git a/RxSwift/DataStructures/Bag.swift b/RxSwift/DataStructures/Bag.swift index 82f84bed..6b7192f3 100644 --- a/RxSwift/DataStructures/Bag.swift +++ b/RxSwift/DataStructures/Bag.swift @@ -297,7 +297,15 @@ extension Bag where T: ObserverType { /** Dispatches `dispose` to all disposables contained inside bag. */ +@available(*, deprecated, renamed: "disposeAll(in:)") public func disposeAllIn(_ bag: Bag) { + disposeAll(in: bag) +} + +/** + Dispatches `dispose` to all disposables contained inside bag. + */ +public func disposeAll(in bag: Bag) { if bag._onlyFastPath { bag._value0?.dispose() return diff --git a/RxSwift/Disposables/CompositeDisposable.swift b/RxSwift/Disposables/CompositeDisposable.swift index 8b91bad0..9a3b32a5 100644 --- a/RxSwift/Disposables/CompositeDisposable.swift +++ b/RxSwift/Disposables/CompositeDisposable.swift @@ -142,7 +142,7 @@ public class CompositeDisposable : DisposeBase, Disposable, Cancelable { */ public func dispose() { if let disposables = _dispose() { - disposeAllIn(disposables) + disposeAll(in: disposables) } } From 181a94bbc9ddf7023b942078a30cff42f91b23a8 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=C5=81ukasz=20Mro=CC=81z?= Date: Sun, 10 Jul 2016 18:46:48 +0200 Subject: [PATCH 5/6] [Swift3] doOn syntax. --- .../CocoaUnits/Driver/Driver+Operators.swift | 14 +++++------ .../RxExample/Services/ImageService.swift | 8 +++---- RxSwift/Observables/Observable+Multiple.swift | 4 ++-- RxSwift/Observables/Observable+Single.swift | 10 ++++---- Tests/RxCocoaTests/Driver+Test.swift | 8 +++---- .../Tests/Observable+SingleTest.swift | 24 +++++++++---------- 6 files changed, 34 insertions(+), 34 deletions(-) diff --git a/RxCocoa/Common/CocoaUnits/Driver/Driver+Operators.swift b/RxCocoa/Common/CocoaUnits/Driver/Driver+Operators.swift index 6063cb28..ea428d94 100644 --- a/RxCocoa/Common/CocoaUnits/Driver/Driver+Operators.swift +++ b/RxCocoa/Common/CocoaUnits/Driver/Driver+Operators.swift @@ -123,7 +123,7 @@ extension DriverConvertibleType { public func doOn(_ eventHandler: (Event) -> Void) -> Driver { let source = self.asObservable() - .doOn(eventHandler: eventHandler) + .doOn(eventHandler) return Driver(source) } @@ -137,7 +137,7 @@ extension DriverConvertibleType { - returns: The source sequence with the side-effecting behavior applied. */ // @warn_unused_result(message:"http://git.io/rxs.uo") - public func doOn(_ onNext: ((E) -> Void)? = nil, onError: ((ErrorProtocol) -> Void)? = nil, onCompleted: (() -> Void)? = nil) + public func doOn(onNext: ((E) -> Void)? = nil, onError: ((ErrorProtocol) -> Void)? = nil, onCompleted: (() -> Void)? = nil) -> Driver { let source = self.asObservable() .doOn(onNext: onNext, onError: onError, onCompleted: onCompleted) @@ -152,9 +152,9 @@ extension DriverConvertibleType { - returns: The source sequence with the side-effecting behavior applied. */ // @warn_unused_result(message:"http://git.io/rxs.uo") - public func doOnNext(_ onNext: ((E) -> Void)) + public func `do`(onNext: ((E) -> Void)) -> Driver { - return self.doOn(onNext) + return self.doOn(onNext: onNext) } /** @@ -164,7 +164,7 @@ extension DriverConvertibleType { - returns: The source sequence with the side-effecting behavior applied. */ // @warn_unused_result(message:"http://git.io/rxs.uo") - public func doOnCompleted(_ onCompleted: (() -> Void)) + public func `do`(onCompleted: (() -> Void)) -> Driver { return self.doOn(onCompleted: onCompleted) } @@ -399,7 +399,7 @@ extension Collection where Iterator.Element : DriverConvertibleType { */ // @warn_unused_result(message:"http://git.io/rxs.uo") public func zip(_ resultSelector: ([Generator.Element.E]) throws -> R) -> Driver { - let source = self.map { $0.asDriver().asObservable() }.zip(resultSelector: resultSelector) + let source = self.map { $0.asDriver().asObservable() }.zip(resultSelector) return Driver(source) } } @@ -415,7 +415,7 @@ extension Collection where Iterator.Element : DriverConvertibleType { */ // @warn_unused_result(message:"http://git.io/rxs.uo") public func combineLatest(_ resultSelector: ([Generator.Element.E]) throws -> R) -> Driver { - let source = self.map { $0.asDriver().asObservable() }.combineLatest(resultSelector: resultSelector) + let source = self.map { $0.asDriver().asObservable() }.combineLatest(resultSelector) return Driver(source) } } diff --git a/RxExample/RxExample/Services/ImageService.swift b/RxExample/RxExample/Services/ImageService.swift index 1f3a7eb9..82ca0057 100644 --- a/RxExample/RxExample/Services/ImageService.swift +++ b/RxExample/RxExample/Services/ImageService.swift @@ -75,17 +75,17 @@ class DefaultImageService: ImageService { else { // fetch from network decodedImage = self.$.URLSession.rx_data(URLRequest(url: url)) - .doOnNext { data in + .do(onNext: { data in self._imageDataCache.setObject(data, forKey: url) - } + }) .flatMap(self.decodeImage) .trackActivity(self.loadingImage) } } - return decodedImage.doOnNext { image in + return decodedImage.do(onNext: { image in self._imageCache.setObject(image, forKey: url) - } + }) } } diff --git a/RxSwift/Observables/Observable+Multiple.swift b/RxSwift/Observables/Observable+Multiple.swift index 9a646de5..7190495c 100644 --- a/RxSwift/Observables/Observable+Multiple.swift +++ b/RxSwift/Observables/Observable+Multiple.swift @@ -21,7 +21,7 @@ extension Collection where Iterator.Element : ObservableType { - returns: An observable sequence containing the result of combining elements of the sources using the specified result selector function. */ // @warn_unused_result(message:"http://git.io/rxs.uo") - public func combineLatest(resultSelector: ([Generator.Element.E]) throws -> R) -> Observable { + public func combineLatest(_ resultSelector: ([Generator.Element.E]) throws -> R) -> Observable { return CombineLatestCollectionType(sources: self, resultSelector: resultSelector) } } @@ -39,7 +39,7 @@ extension Collection where Iterator.Element : ObservableType { - returns: An observable sequence containing the result of combining elements of the sources using the specified result selector function. */ // @warn_unused_result(message:"http://git.io/rxs.uo") - public func zip(resultSelector: ([Generator.Element.E]) throws -> R) -> Observable { + public func zip(_ resultSelector: ([Generator.Element.E]) throws -> R) -> Observable { return ZipCollectionType(sources: self, resultSelector: resultSelector) } } diff --git a/RxSwift/Observables/Observable+Single.swift b/RxSwift/Observables/Observable+Single.swift index 784fd4a0..4ed98d6a 100644 --- a/RxSwift/Observables/Observable+Single.swift +++ b/RxSwift/Observables/Observable+Single.swift @@ -84,7 +84,7 @@ extension ObservableType { - returns: The source sequence with the side-effecting behavior applied. */ // @warn_unused_result(message:"http://git.io/rxs.uo") - public func doOn(eventHandler: (Event) throws -> Void) + public func doOn(_ eventHandler: (Event) throws -> Void) -> Observable { return Do(source: self.asObservable(), eventHandler: eventHandler) } @@ -121,7 +121,7 @@ extension ObservableType { - returns: The source sequence with the side-effecting behavior applied. */ // @warn_unused_result(message:"http://git.io/rxs.uo") - public func doOnNext(onNext: ((E) throws -> Void)) + public func `do`(onNext: ((E) throws -> Void)) -> Observable { return self.doOn(onNext: onNext) } @@ -133,7 +133,7 @@ extension ObservableType { - returns: The source sequence with the side-effecting behavior applied. */ // @warn_unused_result(message:"http://git.io/rxs.uo") - public func doOnError(onError: ((ErrorProtocol) throws -> Void)) + public func `do`(onError: ((ErrorProtocol) throws -> Void)) -> Observable { return self.doOn(onError: onError) } @@ -145,7 +145,7 @@ extension ObservableType { - returns: The source sequence with the side-effecting behavior applied. */ // @warn_unused_result(message:"http://git.io/rxs.uo") - public func doOnCompleted(onCompleted: (() throws -> Void)) + public func `do`(onCompleted: (() throws -> Void)) -> Observable { return self.doOn(onCompleted: onCompleted) } @@ -229,7 +229,7 @@ extension ObservableType { - returns: An observable sequence producing the elements of the given sequence repeatedly until it terminates successfully or is notified to error or complete. */ // @warn_unused_result(message:"http://git.io/rxs.uo") - public func retryWhen(notificationHandler: (Observable) -> TriggerObservable) + public func retryWhen(_ notificationHandler: (Observable) -> TriggerObservable) -> Observable { return RetryWhenSequence(sources: InfiniteSequence(repeatedValue: self.asObservable()), notificationHandler: notificationHandler) } diff --git a/Tests/RxCocoaTests/Driver+Test.swift b/Tests/RxCocoaTests/Driver+Test.swift index c90ca678..58803b04 100644 --- a/Tests/RxCocoaTests/Driver+Test.swift +++ b/Tests/RxCocoaTests/Driver+Test.swift @@ -548,10 +548,10 @@ extension DriverTest { var events = [Int]() - let driver = hotObservable.asDriver(onErrorJustReturn: -1).doOnNext { e in + let driver = hotObservable.asDriver(onErrorJustReturn: -1).do(onNext: { e in XCTAssertTrue(isMainThread()) events.append(e) - } + }) let results = subscribeTwiceOnBackgroundSchedulerAndOnlyOneSubscription(driver) { XCTAssertTrue(hotObservable.subscriptions == [SubscribedToHotObservable]) @@ -572,10 +572,10 @@ extension DriverTest { let hotObservable = BackgroundThreadPrimitiveHotObservable() var completed = false - let driver = hotObservable.asDriver(onErrorJustReturn: -1).doOnCompleted { e in + let driver = hotObservable.asDriver(onErrorJustReturn: -1).do(onCompleted: { e in XCTAssertTrue(isMainThread()) completed = true - } + }) let results = subscribeTwiceOnBackgroundSchedulerAndOnlyOneSubscription(driver) { XCTAssertTrue(hotObservable.subscriptions == [SubscribedToHotObservable]) diff --git a/Tests/RxSwiftTests/Tests/Observable+SingleTest.swift b/Tests/RxSwiftTests/Tests/Observable+SingleTest.swift index 668103c5..a682e3c5 100644 --- a/Tests/RxSwiftTests/Tests/Observable+SingleTest.swift +++ b/Tests/RxSwiftTests/Tests/Observable+SingleTest.swift @@ -573,9 +573,9 @@ extension ObservableSingleTest { var numberOfTimesInvoked = 0 - let res = scheduler.start { xs.doOnNext { error in + let res = scheduler.start { xs.do(onNext: { error in numberOfTimesInvoked = numberOfTimesInvoked + 1 - } + }) } let correctMessages = [ @@ -610,12 +610,12 @@ extension ObservableSingleTest { var numberOfTimesInvoked = 0 - let res = scheduler.start { xs.doOnNext { error in + let res = scheduler.start { xs.do(onNext: { error in if numberOfTimesInvoked > 2 { throw testError } numberOfTimesInvoked = numberOfTimesInvoked + 1 - } + }) } let correctMessages = [ @@ -647,10 +647,10 @@ extension ObservableSingleTest { var recordedError: ErrorProtocol! var numberOfTimesInvoked = 0 - let res = scheduler.start { xs.doOnError { error in + let res = scheduler.start { xs.do(onError: { error in recordedError = error numberOfTimesInvoked = numberOfTimesInvoked + 1 - } + }) } let correctMessages = [ @@ -678,9 +678,9 @@ extension ObservableSingleTest { error(250, testError) ]) - let res = scheduler.start { xs.doOnError { _ in + let res = scheduler.start { xs.do(onError: { _ in throw testError1 - } + }) } let correctMessages = [ @@ -710,9 +710,9 @@ extension ObservableSingleTest { var didComplete = false - let res = scheduler.start { xs.doOnCompleted { error in + let res = scheduler.start { xs.do(onCompleted: { error in didComplete = true - } + }) } let correctMessages = [ @@ -745,9 +745,9 @@ extension ObservableSingleTest { completed(250) ]) - let res = scheduler.start { xs.doOnCompleted { error in + let res = scheduler.start { xs.do(onCompleted: { error in throw testError - } + }) } let correctMessages = [ From 99e21bdb46d58f25661bd33edb8d3205823bbfdf Mon Sep 17 00:00:00 2001 From: Mo Ramezanpoor Date: Wed, 27 Jul 2016 16:34:38 +0100 Subject: [PATCH 6/6] Rename CompositeDisposable.removeDisposable(forKey:) to .remove(for:). Decided as part of #800 that this is more suitable. --- RxSwift/Disposables/CompositeDisposable.swift | 10 +++++----- RxSwift/Observables/Implementations/Merge.swift | 4 ++-- RxSwift/Schedulers/RecursiveScheduler.swift | 6 +++--- 3 files changed, 10 insertions(+), 10 deletions(-) diff --git a/RxSwift/Disposables/CompositeDisposable.swift b/RxSwift/Disposables/CompositeDisposable.swift index 9a3b32a5..a60c2730 100644 --- a/RxSwift/Disposables/CompositeDisposable.swift +++ b/RxSwift/Disposables/CompositeDisposable.swift @@ -118,9 +118,9 @@ public class CompositeDisposable : DisposeBase, Disposable, Cancelable { - parameter disposeKey: Key used to identify disposable to be removed. */ - @available(*, deprecated, renamed: "removeDisposable(forKey:)") + @available(*, deprecated, renamed: "remove(for:)") public func removeDisposable(_ disposeKey: DisposeKey) { - removeDisposable(forKey: disposeKey) + remove(for: disposeKey) } /** @@ -128,11 +128,11 @@ public class CompositeDisposable : DisposeBase, Disposable, Cancelable { - parameter disposeKey: Key used to identify disposable to be removed. */ - public func removeDisposable(forKey disposeKey: DisposeKey) { - _removeDisposable(forKey: disposeKey)?.dispose() + public func remove(for disposeKey: DisposeKey) { + _remove(for: disposeKey)?.dispose() } - private func _removeDisposable(forKey disposeKey: DisposeKey) -> Disposable? { + private func _remove(for disposeKey: DisposeKey) -> Disposable? { _lock.lock(); defer { _lock.unlock() } return _disposables?.removeKey(disposeKey) } diff --git a/RxSwift/Observables/Implementations/Merge.swift b/RxSwift/Observables/Implementations/Merge.swift index 52cb7283..617a29af 100644 --- a/RxSwift/Observables/Implementations/Merge.swift +++ b/RxSwift/Observables/Implementations/Merge.swift @@ -42,7 +42,7 @@ class MergeLimitedSinkIter { let action = self._lock.calculateLocked { () -> Action? in if isAdded { - self._group.removeDisposable(forKey: removeKey!) + self._group.remove(for: removeKey!) } else { isDone = true @@ -90,7 +90,7 @@ class AnyRecursiveScheduler { let action = self._lock.calculateLocked { () -> Action? in if isAdded { - self._group.removeDisposable(forKey: removeKey!) + self._group.remove(for: removeKey!) } else { isDone = true @@ -160,7 +160,7 @@ class RecursiveImmediateScheduler { let action = self._lock.calculateLocked { () -> Action? in if isAdded { - self._group.removeDisposable(forKey: removeKey!) + self._group.remove(for: removeKey!) } else { isDone = true