Merge pull request #828 from mohsenr/swift-3.0-disposables-rebased

[Swift 3.0] Collect all immutable Disposable constructors in `Disposables` type
This commit is contained in:
Krunoslav Zaher 2016-08-10 23:06:45 +02:00 committed by GitHub
commit 55f4bb3b65
99 changed files with 364 additions and 264 deletions

View File

@ -293,7 +293,7 @@ func myJust<E>(element: E) -> Observable<E> {
return Observable.create { observer in
observer.on(.Next(element))
observer.on(.Completed)
return NopDisposable.instance
return Disposables.create()
}
}
@ -329,7 +329,7 @@ func myFrom<E>(sequence: [E]) -> Observable<E> {
}
observer.on(.Completed)
return NopDisposable.instance
return Disposables.create()
}
}
@ -382,7 +382,7 @@ func myInterval(interval: NSTimeInterval) -> Observable<Int> {
var next = 0
dispatch_source_set_timer(timer, 0, UInt64(interval * Double(NSEC_PER_SEC)), 0)
let cancel = AnonymousDisposable {
let cancel = Disposables.create {
print("Disposed")
dispatch_source_cancel(timer)
}
@ -574,7 +574,7 @@ extension NSURLSession {
task.resume()
return AnonymousDisposable {
return Disposables.create {
task.cancel()
}
}
@ -831,7 +831,7 @@ extension ObservableType {
observer.on(.Completed)
}
}
return AnonymousDisposable {
return Disposables.create {
print("disposing \(identifier)")
subscription.dispose()
}

View File

@ -102,7 +102,7 @@ example("create") {
return Observable.create { observer in
observer.on(.next(element))
observer.on(.completed)
return NopDisposable.instance
return Disposables.create()
}
}
@ -170,7 +170,7 @@ example("deferred") {
observer.onNext("🐶")
observer.onNext("🐱")
observer.onNext("🐵")
return NopDisposable.instance
return Disposables.create()
}
}

View File

@ -34,7 +34,7 @@ example("debug") {
observer.onNext("🐭")
observer.onCompleted()
return NopDisposable.instance
return Disposables.create()
}
sequenceThatErrors

View File

@ -85,7 +85,7 @@ example("retry") {
observer.onNext("🐭")
observer.onCompleted()
return NopDisposable.instance
return Disposables.create()
}
sequenceThatErrors
@ -119,7 +119,7 @@ example("retry maxAttemptCount") {
observer.onNext("🐭")
observer.onCompleted()
return NopDisposable.instance
return Disposables.create()
}
sequenceThatErrors

View File

@ -58,7 +58,7 @@ example("Observable with no subscribers") {
print("This will never be printed")
observerOfString.on(.next("😬"))
observerOfString.on(.completed)
return NopDisposable.instance
return Disposables.create()
}
}
/*:
@ -70,7 +70,7 @@ example("Observable with subscriber") {
print("Observable created")
observerOfString.on(.next("😉"))
observerOfString.on(.completed)
return NopDisposable.instance
return Disposables.create()
}
.subscribe { event in
print(event)

View File

@ -121,8 +121,6 @@
C8093CDE1B8A72BE0088E94D /* DisposeBag.swift in Sources */ = {isa = PBXBuildFile; fileRef = C8093C581B8A72BE0088E94D /* DisposeBag.swift */; };
C8093CDF1B8A72BE0088E94D /* DisposeBase.swift in Sources */ = {isa = PBXBuildFile; fileRef = C8093C591B8A72BE0088E94D /* DisposeBase.swift */; };
C8093CE01B8A72BE0088E94D /* DisposeBase.swift in Sources */ = {isa = PBXBuildFile; fileRef = C8093C591B8A72BE0088E94D /* DisposeBase.swift */; };
C8093CE11B8A72BE0088E94D /* NAryDisposable.swift in Sources */ = {isa = PBXBuildFile; fileRef = C8093C5A1B8A72BE0088E94D /* NAryDisposable.swift */; };
C8093CE21B8A72BE0088E94D /* NAryDisposable.swift in Sources */ = {isa = PBXBuildFile; fileRef = C8093C5A1B8A72BE0088E94D /* NAryDisposable.swift */; };
C8093CE51B8A72BE0088E94D /* NopDisposable.swift in Sources */ = {isa = PBXBuildFile; fileRef = C8093C5C1B8A72BE0088E94D /* NopDisposable.swift */; };
C8093CE61B8A72BE0088E94D /* NopDisposable.swift in Sources */ = {isa = PBXBuildFile; fileRef = C8093C5C1B8A72BE0088E94D /* NopDisposable.swift */; };
C8093CE71B8A72BE0088E94D /* ScheduledDisposable.swift in Sources */ = {isa = PBXBuildFile; fileRef = C8093C5D1B8A72BE0088E94D /* ScheduledDisposable.swift */; };
@ -907,7 +905,6 @@
C8F0BFF21BBBFB8B001B112F /* ObserverType.swift in Sources */ = {isa = PBXBuildFile; fileRef = C8093CAB1B8A72BE0088E94D /* ObserverType.swift */; };
C8F0BFF31BBBFB8B001B112F /* SubscribeOn.swift in Sources */ = {isa = PBXBuildFile; fileRef = C8093C8B1B8A72BE0088E94D /* SubscribeOn.swift */; };
C8F0BFF41BBBFB8B001B112F /* Observable.swift in Sources */ = {isa = PBXBuildFile; fileRef = C8093C681B8A72BE0088E94D /* Observable.swift */; };
C8F0BFF51BBBFB8B001B112F /* NAryDisposable.swift in Sources */ = {isa = PBXBuildFile; fileRef = C8093C5A1B8A72BE0088E94D /* NAryDisposable.swift */; };
C8F0BFF61BBBFB8B001B112F /* SerialDisposable.swift in Sources */ = {isa = PBXBuildFile; fileRef = C8093C5F1B8A72BE0088E94D /* SerialDisposable.swift */; };
C8F0BFF71BBBFB8B001B112F /* Never.swift in Sources */ = {isa = PBXBuildFile; fileRef = C8C3DA0B1B93959F004D233E /* Never.swift */; };
C8F0BFF91BBBFB8B001B112F /* Event.swift in Sources */ = {isa = PBXBuildFile; fileRef = C8093C641B8A72BE0088E94D /* Event.swift */; };
@ -1018,6 +1015,10 @@
CBEE77201BD649A000AD584C /* ToArray.swift in Sources */ = {isa = PBXBuildFile; fileRef = CBEE771E1BD649A000AD584C /* ToArray.swift */; };
CBEE77211BD649A000AD584C /* ToArray.swift in Sources */ = {isa = PBXBuildFile; fileRef = CBEE771E1BD649A000AD584C /* ToArray.swift */; };
CBEE77221BD649A000AD584C /* ToArray.swift in Sources */ = {isa = PBXBuildFile; fileRef = CBEE771E1BD649A000AD584C /* ToArray.swift */; };
CDDEF16A1D4FB40000CA8546 /* Disposables.swift in Sources */ = {isa = PBXBuildFile; fileRef = CDDEF1691D4FB40000CA8546 /* Disposables.swift */; };
CDDEF16B1D4FB40000CA8546 /* Disposables.swift in Sources */ = {isa = PBXBuildFile; fileRef = CDDEF1691D4FB40000CA8546 /* Disposables.swift */; };
CDDEF16C1D4FB40000CA8546 /* Disposables.swift in Sources */ = {isa = PBXBuildFile; fileRef = CDDEF1691D4FB40000CA8546 /* Disposables.swift */; };
CDDEF16D1D4FB40000CA8546 /* Disposables.swift in Sources */ = {isa = PBXBuildFile; fileRef = CDDEF1691D4FB40000CA8546 /* Disposables.swift */; };
D203C4F31BB9C4CA00D02D00 /* RxCollectionViewReactiveArrayDataSource.swift in Sources */ = {isa = PBXBuildFile; fileRef = C88253F11B8A752B00B02D69 /* RxCollectionViewReactiveArrayDataSource.swift */; };
D203C4F41BB9C52400D02D00 /* RxTableViewReactiveArrayDataSource.swift in Sources */ = {isa = PBXBuildFile; fileRef = C88253F21B8A752B00B02D69 /* RxTableViewReactiveArrayDataSource.swift */; };
D203C4F51BB9C52900D02D00 /* ItemEvents.swift in Sources */ = {isa = PBXBuildFile; fileRef = C88253F41B8A752B00B02D69 /* ItemEvents.swift */; };
@ -1106,7 +1107,6 @@
D2EBEAF21BB9B6AE003A27DC /* CompositeDisposable.swift in Sources */ = {isa = PBXBuildFile; fileRef = C8093C571B8A72BE0088E94D /* CompositeDisposable.swift */; };
D2EBEAF31BB9B6AE003A27DC /* DisposeBag.swift in Sources */ = {isa = PBXBuildFile; fileRef = C8093C581B8A72BE0088E94D /* DisposeBag.swift */; };
D2EBEAF41BB9B6AE003A27DC /* DisposeBase.swift in Sources */ = {isa = PBXBuildFile; fileRef = C8093C591B8A72BE0088E94D /* DisposeBase.swift */; };
D2EBEAF51BB9B6AE003A27DC /* NAryDisposable.swift in Sources */ = {isa = PBXBuildFile; fileRef = C8093C5A1B8A72BE0088E94D /* NAryDisposable.swift */; };
D2EBEAF61BB9B6B2003A27DC /* NopDisposable.swift in Sources */ = {isa = PBXBuildFile; fileRef = C8093C5C1B8A72BE0088E94D /* NopDisposable.swift */; };
D2EBEAF71BB9B6B2003A27DC /* ScheduledDisposable.swift in Sources */ = {isa = PBXBuildFile; fileRef = C8093C5D1B8A72BE0088E94D /* ScheduledDisposable.swift */; };
D2EBEAF91BB9B6B2003A27DC /* SerialDisposable.swift in Sources */ = {isa = PBXBuildFile; fileRef = C8093C5F1B8A72BE0088E94D /* SerialDisposable.swift */; };
@ -1443,8 +1443,6 @@
C8093C571B8A72BE0088E94D /* CompositeDisposable.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = CompositeDisposable.swift; sourceTree = "<group>"; };
C8093C581B8A72BE0088E94D /* DisposeBag.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = DisposeBag.swift; sourceTree = "<group>"; };
C8093C591B8A72BE0088E94D /* DisposeBase.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = DisposeBase.swift; sourceTree = "<group>"; };
C8093C5A1B8A72BE0088E94D /* NAryDisposable.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = NAryDisposable.swift; sourceTree = "<group>"; };
C8093C5B1B8A72BE0088E94D /* NAryDisposable.tt */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text; path = NAryDisposable.tt; sourceTree = "<group>"; };
C8093C5C1B8A72BE0088E94D /* NopDisposable.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = NopDisposable.swift; sourceTree = "<group>"; };
C8093C5D1B8A72BE0088E94D /* ScheduledDisposable.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = ScheduledDisposable.swift; sourceTree = "<group>"; };
C8093C5F1B8A72BE0088E94D /* SerialDisposable.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = SerialDisposable.swift; sourceTree = "<group>"; };
@ -1763,6 +1761,7 @@
CB883B441BE256D4000AC2EE /* BooleanDisposable.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = BooleanDisposable.swift; sourceTree = "<group>"; };
CB883B491BE369AA000AC2EE /* AddRef.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = AddRef.swift; sourceTree = "<group>"; };
CBEE771E1BD649A000AD584C /* ToArray.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = ToArray.swift; sourceTree = "<group>"; };
CDDEF1691D4FB40000CA8546 /* Disposables.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = Disposables.swift; sourceTree = "<group>"; };
D2138C751BB9BE9800339B5C /* RxCocoa.framework */ = {isa = PBXFileReference; explicitFileType = wrapper.framework; includeInIndex = 0; path = RxCocoa.framework; sourceTree = BUILT_PRODUCTS_DIR; };
D2245A1A1BD5657300E7146F /* WithLatestFrom.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = WithLatestFrom.swift; sourceTree = "<group>"; };
D22B6D251BC8504A00BCE0AB /* SkipWhile.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = SkipWhile.swift; sourceTree = "<group>"; };
@ -1988,14 +1987,13 @@
C8093C581B8A72BE0088E94D /* DisposeBag.swift */,
C8093C591B8A72BE0088E94D /* DisposeBase.swift */,
C84CC5661BDD08A500E06A64 /* SubscriptionDisposable.swift */,
C8093C5A1B8A72BE0088E94D /* NAryDisposable.swift */,
C8093C5B1B8A72BE0088E94D /* NAryDisposable.tt */,
C8093C5C1B8A72BE0088E94D /* NopDisposable.swift */,
CB883B3F1BE24C15000AC2EE /* RefCountDisposable.swift */,
C8093C5D1B8A72BE0088E94D /* ScheduledDisposable.swift */,
C8093C5F1B8A72BE0088E94D /* SerialDisposable.swift */,
C8093C601B8A72BE0088E94D /* SingleAssignmentDisposable.swift */,
C8093C611B8A72BE0088E94D /* StableCompositeDisposable.swift */,
CDDEF1691D4FB40000CA8546 /* Disposables.swift */,
);
path = Disposables;
sourceTree = "<group>";
@ -3919,6 +3917,7 @@
C8093D9E1B8A72BE0088E94D /* SerialDispatchQueueScheduler.swift in Sources */,
C8093D341B8A72BE0088E94D /* RefCount.swift in Sources */,
C8093D0E1B8A72BE0088E94D /* Concat.swift in Sources */,
CDDEF16B1D4FB40000CA8546 /* Disposables.swift in Sources */,
C8093CCA1B8A72BE0088E94D /* Lock.swift in Sources */,
C8093D441B8A72BE0088E94D /* Take.swift in Sources */,
C84CC5591BDCF51200E06A64 /* SynchronizedSubscribeType.swift in Sources */,
@ -3943,7 +3942,6 @@
CBEE77201BD649A000AD584C /* ToArray.swift in Sources */,
C8093CFE1B8A72BE0088E94D /* Observable.swift in Sources */,
C84CC55E1BDD010800E06A64 /* SynchronizedUnsubscribeType.swift in Sources */,
C8093CE21B8A72BE0088E94D /* NAryDisposable.swift in Sources */,
C8093CEC1B8A72BE0088E94D /* SerialDisposable.swift in Sources */,
C8C3DA0D1B93959F004D233E /* Never.swift in Sources */,
C84CC5681BDD08A500E06A64 /* SubscriptionDisposable.swift in Sources */,
@ -4142,6 +4140,7 @@
C8093D9D1B8A72BE0088E94D /* SerialDispatchQueueScheduler.swift in Sources */,
C8093D331B8A72BE0088E94D /* RefCount.swift in Sources */,
C8093D0D1B8A72BE0088E94D /* Concat.swift in Sources */,
CDDEF16A1D4FB40000CA8546 /* Disposables.swift in Sources */,
C8093CC91B8A72BE0088E94D /* Lock.swift in Sources */,
C8093D431B8A72BE0088E94D /* Take.swift in Sources */,
C84CC5581BDCF51200E06A64 /* SynchronizedSubscribeType.swift in Sources */,
@ -4166,7 +4165,6 @@
CBEE771F1BD649A000AD584C /* ToArray.swift in Sources */,
C8093CFD1B8A72BE0088E94D /* Observable.swift in Sources */,
C84CC55D1BDD010800E06A64 /* SynchronizedUnsubscribeType.swift in Sources */,
C8093CE11B8A72BE0088E94D /* NAryDisposable.swift in Sources */,
C8093CEB1B8A72BE0088E94D /* SerialDisposable.swift in Sources */,
C8C3DA0C1B93959F004D233E /* Never.swift in Sources */,
C84CC5671BDD08A500E06A64 /* SubscriptionDisposable.swift in Sources */,
@ -4289,6 +4287,7 @@
C8F0BFE01BBBFB8B001B112F /* SerialDispatchQueueScheduler.swift in Sources */,
C8F0BFE11BBBFB8B001B112F /* RefCount.swift in Sources */,
C8F0BFE21BBBFB8B001B112F /* Concat.swift in Sources */,
CDDEF16D1D4FB40000CA8546 /* Disposables.swift in Sources */,
C8F0BFE31BBBFB8B001B112F /* Lock.swift in Sources */,
C8F0BFE41BBBFB8B001B112F /* Take.swift in Sources */,
C84CC55B1BDCF51200E06A64 /* SynchronizedSubscribeType.swift in Sources */,
@ -4313,7 +4312,6 @@
CBEE77221BD649A000AD584C /* ToArray.swift in Sources */,
C8F0BFF41BBBFB8B001B112F /* Observable.swift in Sources */,
C84CC5601BDD010800E06A64 /* SynchronizedUnsubscribeType.swift in Sources */,
C8F0BFF51BBBFB8B001B112F /* NAryDisposable.swift in Sources */,
C8F0BFF61BBBFB8B001B112F /* SerialDisposable.swift in Sources */,
C8F0BFF71BBBFB8B001B112F /* Never.swift in Sources */,
C84CC56A1BDD08A500E06A64 /* SubscriptionDisposable.swift in Sources */,
@ -4607,7 +4605,6 @@
D2EBEAF61BB9B6B2003A27DC /* NopDisposable.swift in Sources */,
CB30D9EB1BF0E3500084C1C0 /* SingleAsync.swift in Sources */,
D2EBEAFF1BB9B6BA003A27DC /* Buffer.swift in Sources */,
D2EBEAF51BB9B6AE003A27DC /* NAryDisposable.swift in Sources */,
D2EBEB1D1BB9B6C1003A27DC /* Scan.swift in Sources */,
D2EBEB261BB9B6C1003A27DC /* Throttle.swift in Sources */,
D2EBEAE81BB9B697003A27DC /* Rx.swift in Sources */,
@ -4631,6 +4628,7 @@
D2EBEB2B1BB9B6CA003A27DC /* Observable+Aggregate.swift in Sources */,
D2EBEB291BB9B6C1003A27DC /* Zip+arity.swift in Sources */,
D2EBEB241BB9B6C1003A27DC /* TakeUntil.swift in Sources */,
CDDEF16C1D4FB40000CA8546 /* Disposables.swift in Sources */,
C84CC55A1BDCF51200E06A64 /* SynchronizedSubscribeType.swift in Sources */,
D2EBEB3B1BB9B6D8003A27DC /* OperationQueueScheduler.swift in Sources */,
D2EBEAE51BB9B697003A27DC /* AnyObserver.swift in Sources */,

View File

@ -43,7 +43,7 @@ class RunLoopLock {
if CurrentThreadScheduler.isScheduleRequired {
_ = CurrentThreadScheduler.instance.schedule(()) { _ in
action()
return NopDisposable.instance
return Disposables.create()
}
}
else {

View File

@ -228,7 +228,7 @@ extension DelegateProxyType {
assert(proxy.forwardToDelegate() === forwardDelegate, "Setting of delegate failed")
return AnonymousDisposable {
return Disposables.create {
MainScheduler.ensureExecutingOnScheduler()
let delegate: AnyObject? = weakForwardDelegate
@ -273,6 +273,6 @@ extension ObservableType {
}
}
return CompositeDisposable(subscription, disposable)
return Disposables.create(subscription, disposable)
}
}

View File

@ -42,7 +42,7 @@ class KVOObservable<Element>
observer.on(.next(value as? Element))
}
return AnonymousDisposable(observer.dispose)
return Disposables.create(with: observer.dispose)
}
}

View File

@ -26,7 +26,7 @@ extension NotificationCenter {
observer.on(.next(notification))
}
return AnonymousDisposable {
return Disposables.create {
self.removeObserver(nsObserver)
}
}

View File

@ -155,7 +155,7 @@ extension URLSession {
let t = task
t.resume()
return AnonymousDisposable(task.cancel)
return Disposables.create(with: task.cancel)
}
}

View File

@ -29,7 +29,7 @@ extension NSControl {
guard let control = self else {
observer.on(.completed)
return NopDisposable.instance
return Disposables.create()
}
let observer = ControlTarget(control: control) { control in
@ -54,7 +54,7 @@ extension NSControl {
return Observable.create { [weak weakControl = control] (observer: AnyObserver<T>) in
guard let control = weakControl else {
observer.on(.completed)
return NopDisposable.instance
return Disposables.create()
}
observer.on(.next(getter(control)))

View File

@ -34,7 +34,7 @@ extension UIBarButtonItem {
Observable.create { [weak self] observer in
guard let control = self else {
observer.on(.completed)
return NopDisposable.instance
return Disposables.create()
}
let target = BarButtonItemTarget(barButtonItem: control) {
observer.on(.next())

View File

@ -45,7 +45,7 @@ extension UIControl {
guard let control = self else {
observer.on(.completed)
return NopDisposable.instance
return Disposables.create()
}
let controlTarget = ControlTarget(control: control, controlEvents: controlEvents) {
@ -53,7 +53,7 @@ extension UIControl {
observer.on(.next())
}
return AnonymousDisposable(controlTarget.dispose)
return Disposables.create(with: controlTarget.dispose)
}.takeUntil(rx_deallocated)
return ControlEvent(events: source)
@ -67,7 +67,7 @@ extension UIControl {
let source: Observable<T> = Observable.create { [weak weakControl = control] observer in
guard let control = weakControl else {
observer.on(.completed)
return NopDisposable.instance
return Disposables.create()
}
observer.on(.next(getter(control)))
@ -78,7 +78,7 @@ extension UIControl {
}
}
return AnonymousDisposable(controlTarget.dispose)
return Disposables.create(with: controlTarget.dispose)
}
.takeUntil((control as! NSObject).rx_deallocated)

View File

@ -64,7 +64,7 @@ extension Reactive where Self: UIGestureRecognizer {
guard let control = self else {
observer.on(.completed)
return NopDisposable.instance
return Disposables.create()
}
let observer = GestureTarget(control) {

View File

@ -150,13 +150,13 @@ extension TestScheduler {
let scheduledEvents = events[attemptCount].map { event in
return self.scheduleRelative((), dueTime: resolution * TimeInterval(event.time)) { _ in
observer.on(event.value)
return NopDisposable.instance
return Disposables.create()
}
}
attemptCount += 1
return CompositeDisposable(disposables: scheduledEvents)
return Disposables.create(scheduledEvents)
}
}

View File

@ -45,18 +45,18 @@ extension UIImagePickerController {
}
catch let error {
observer.on(.error(error))
return NopDisposable.instance
return Disposables.create()
}
guard let parent = parent else {
observer.on(.completed)
return NopDisposable.instance
return Disposables.create()
}
parent.present(imagePicker, animated: animated, completion: nil)
observer.on(.next(imagePicker))
return CompositeDisposable(dismissDisposable, AnonymousDisposable {
return Disposables.create(dismissDisposable, Disposables.create {
dismissViewController(imagePicker, animated: animated)
})
}

View File

@ -69,7 +69,7 @@ func <-> (textInput: RxTextInput, variable: Variable<String>) -> Disposable {
bindToUIDisposable.dispose()
})
return StableCompositeDisposable.create(bindToUIDisposable, bindToVariable)
return Disposables.create(bindToUIDisposable, bindToVariable)
}
func <-> <T>(property: ControlProperty<T>, variable: Variable<T>) -> Disposable {
@ -92,7 +92,7 @@ func <-> <T>(property: ControlProperty<T>, variable: Variable<T>) -> Disposable
bindToUIDisposable.dispose()
})
return StableCompositeDisposable.create(bindToUIDisposable, bindToVariable)
return Disposables.create(bindToUIDisposable, bindToVariable)
}
// }

View File

@ -18,7 +18,7 @@ private struct ActivityToken<E> : ObservableConvertibleType, Disposable {
init(source: Observable<E>, disposeAction: () -> ()) {
_source = source
_dispose = AnonymousDisposable(disposeAction)
_dispose = Disposables.create(with: disposeAction)
}
func dispose() {

View File

@ -71,7 +71,7 @@ class DefaultWireframe: Wireframe {
DefaultWireframe.rootViewController().present(alertView, animated: true, completion: nil)
return AnonymousDisposable {
return Disposables.create {
alertView.dismiss(animated:false, completion: nil)
}
}

View File

@ -31,11 +31,18 @@ public final class AnonymousDisposable : DisposeBase, Cancelable {
- parameter disposeAction: Disposal action which will be run upon calling `dispose`.
*/
@available(*, deprecated, renamed: "Disposables.create")
public init(_ disposeAction: DisposeAction) {
_disposeAction = disposeAction
super.init()
}
// Non-deprecated version of the constructor, used by `Disposables.create(with:)`
private init(disposeAction: DisposeAction) {
_disposeAction = disposeAction
super.init()
}
/**
Calls the disposal action if and only if the current instance hasn't been disposed yet.
@ -52,3 +59,16 @@ public final class AnonymousDisposable : DisposeBase, Cancelable {
}
}
}
public extension Disposables {
/**
Constructs a new disposable with the given action used for disposal.
- parameter dispose: Disposal action which will be run upon calling `dispose`.
*/
static func create(with dispose: () -> ()) -> Cancelable {
return AnonymousDisposable(disposeAction: dispose)
}
}

View File

@ -11,7 +11,7 @@ import Foundation
/**
Represents two disposable resources that are disposed together.
*/
final class BinaryDisposable : DisposeBase, Cancelable {
private final class BinaryDisposable : DisposeBase, Cancelable {
private var _isDisposed: AtomicInt = 0
@ -52,3 +52,14 @@ final class BinaryDisposable : DisposeBase, Cancelable {
}
}
}
public extension Disposables {
/**
Creates a disposable with the given disposables.
*/
static func create(_ disposable1: Disposable, _ disposable2: Disposable) -> Cancelable {
return BinaryDisposable(disposable1, disposable2)
}
}

View File

@ -11,7 +11,7 @@ import Foundation
/**
Represents a disposable resource that can be checked for disposal status.
*/
public class BooleanDisposable : Disposable, Cancelable {
public final class BooleanDisposable : Disposable, Cancelable {
internal static let BooleanDisposableTrue = BooleanDisposable(isDisposed: true)
private var _isDisposed = false

View File

@ -11,7 +11,7 @@ import Foundation
/**
Represents a group of disposable resources that are disposed together.
*/
public class CompositeDisposable : DisposeBase, Disposable, Cancelable {
public final class CompositeDisposable : DisposeBase, Disposable, Cancelable {
public typealias DisposeKey = Bag<Disposable>.KeyType
private var _lock = SpinLock()

View File

@ -0,0 +1,61 @@
//
// Disposables.swift
// Rx
//
// Created by Mohsen Ramezanpoor on 01/08/2016.
// Copyright © 2016 Mohsen Ramezanpoor. All rights reserved.
//
import Foundation
/**
A collection of utility methods for common disposable operations.
*/
public struct Disposables {
private init() {}
}
public extension Disposables {
private static let noOp: Disposable = NopDisposable()
/**
Creates a disposable that does nothing on disposal.
*/
static func create() -> Disposable {
return noOp
}
/**
Creates a disposable with the given disposables.
*/
static func create(_ disposable1: Disposable, _ disposable2: Disposable, _ disposable3: Disposable) -> Cancelable {
return CompositeDisposable(disposable1, disposable2, disposable3)
}
/**
Creates a disposable with the given disposables.
*/
static func create(_ disposable1: Disposable, _ disposable2: Disposable, _ disposable3: Disposable, _ disposables: Disposable ...) -> Cancelable {
var disposables = disposables
disposables.append(disposable1)
disposables.append(disposable2)
disposables.append(disposable3)
return CompositeDisposable(disposables: disposables)
}
/**
Creates a disposable with the given disposables.
*/
static func create(_ disposables: [Disposable]) -> Cancelable {
switch disposables.count {
case 2:
return Disposables.create(disposables[0], disposables[1])
default:
return CompositeDisposable(disposables: disposables)
}
}
}

View File

@ -31,7 +31,7 @@ or create a new one in its place.
In case explicit disposal is necessary, there is also `CompositeDisposable`.
*/
public class DisposeBag: DisposeBase {
public final class DisposeBag: DisposeBase {
private var _lock = SpinLock()

View File

@ -1,10 +0,0 @@
// This file is autogenerated. Take a look at `Preprocessor` target in RxSwift project
//
// NAryDisposable.swift
// RxSwift
//
// Created by Krunoslav Zaher on 8/20/15.
// Copyright © 2015 Krunoslav Zaher. All rights reserved.
//
import Foundation

View File

@ -1,9 +0,0 @@
//
// NAryDisposable.swift
// RxSwift
//
// Created by Krunoslav Zaher on 8/20/15.
// Copyright © 2015 Krunoslav Zaher. All rights reserved.
//
import Foundation

View File

@ -18,6 +18,7 @@ public struct NopDisposable : Disposable {
/**
Singleton instance of `NopDisposable`.
*/
@available(*, deprecated, renamed: "Disposables.empty()")
public static let instance: Disposable = NopDisposable()
init() {
@ -29,4 +30,4 @@ public struct NopDisposable : Disposable {
*/
public func dispose() {
}
}
}

View File

@ -11,7 +11,7 @@ import Foundation
/**
Represents a disposable resource that only disposes its underlying disposable resource when all dependent disposable objects have been disposed.
*/
public class RefCountDisposable : DisposeBase, Cancelable {
public final class RefCountDisposable : DisposeBase, Cancelable {
private var _lock = SpinLock()
private var _disposable = nil as Disposable?
private var _primaryDisposed = false
@ -50,7 +50,7 @@ public class RefCountDisposable : DisposeBase, Cancelable {
return RefCountInnerDisposable(self)
} else {
return NopDisposable.instance
return Disposables.create()
}
}
}

View File

@ -10,13 +10,13 @@ import Foundation
private let disposeScheduledDisposable: (ScheduledDisposable) -> Disposable = { sd in
sd.disposeInner()
return NopDisposable.instance
return Disposables.create()
}
/**
Represents a disposable resource whose disposal invocation will be scheduled on the specified scheduler.
*/
public class ScheduledDisposable : Cancelable {
public final class ScheduledDisposable : Cancelable {
public let scheduler: ImmediateSchedulerType
private var _isDisposed: AtomicInt = 0

View File

@ -11,7 +11,7 @@ import Foundation
/**
Represents a disposable resource whose underlying disposable resource can be replaced by another disposable resource, causing automatic disposal of the previous underlying disposable resource.
*/
public class SerialDisposable : DisposeBase, Cancelable {
public final class SerialDisposable : DisposeBase, Cancelable {
private var _lock = SpinLock()
// state

View File

@ -43,7 +43,7 @@ public class SingleAssignmentDisposable : DisposeBase, Disposable, Cancelable {
public var disposable: Disposable {
get {
_lock.lock(); defer { _lock.unlock() }
return _disposable ?? NopDisposable.instance
return _disposable ?? Disposables.create()
}
set {
_setDisposable(newValue)?.dispose()

View File

@ -9,7 +9,8 @@
import Foundation
public final class StableCompositeDisposable {
@available(*, deprecated, renamed: "Disposables.create")
public static func create(_ disposable1: Disposable, _ disposable2: Disposable) -> Disposable {
return BinaryDisposable(disposable1, disposable2)
return Disposables.create(disposable1, disposable2)
}
}
}

View File

@ -35,6 +35,6 @@ extension ImmediateSchedulerType {
recursiveScheduler.schedule(state)
return AnonymousDisposable(recursiveScheduler.dispose)
return Disposables.create(with: recursiveScheduler.dispose)
}
}

View File

@ -42,10 +42,10 @@ extension ObservableType {
let disposable: Disposable
if let disposed = onDisposed {
disposable = AnonymousDisposable(disposed)
disposable = Disposables.create(with: disposed)
}
else {
disposable = NopDisposable.instance
disposable = Disposables.create()
}
let observer = AnonymousObserver<E> { e in
@ -65,7 +65,7 @@ extension ObservableType {
disposable.dispose()
}
}
return BinaryDisposable(
return Disposables.create(
self.subscribeSafe(observer),
disposable
)
@ -88,10 +88,10 @@ extension ObservableType {
let disposable: Disposable
if let disposed = onDisposed {
disposable = AnonymousDisposable(disposed)
disposable = Disposables.create(with: disposed)
}
else {
disposable = NopDisposable.instance
disposable = Disposables.create()
}
let observer = AnonymousObserver<E> { e in
@ -106,7 +106,7 @@ extension ObservableType {
disposable.dispose()
}
}
return BinaryDisposable(
return Disposables.create(
self.subscribeSafe(observer),
disposable
)

View File

@ -40,7 +40,7 @@ class AddRef<Element> : Producer<Element> {
override func run<O: ObserverType where O.E == Element>(_ observer: O) -> Disposable {
let releaseDisposable = _refCount.retain()
let sink = AddRefSink(observer: observer)
sink.disposable = StableCompositeDisposable.create(releaseDisposable, _source.subscribeSafe(sink))
sink.disposable = Disposables.create(releaseDisposable, _source.subscribeSafe(sink))
return sink
}

View File

@ -66,7 +66,7 @@ class AmbSink<ElementType, O: ObserverType where O.E == ElementType> : Sink<O> {
func run() -> Disposable {
let subscription1 = SingleAssignmentDisposable()
let subscription2 = SingleAssignmentDisposable()
let disposeAll = StableCompositeDisposable.create(subscription1, subscription2)
let disposeAll = Disposables.create(subscription1, subscription2)
let forwardEvent = { (o: AmbObserverType, event: Event<ElementType>) -> Void in
self.forwardOn(event)

View File

@ -53,7 +53,7 @@ class BufferTimeCountSink<Element, O: ObserverType where O.E == [Element]>
func run() -> Disposable {
createTimer(_windowID)
return StableCompositeDisposable.create(_timerD, _parent._source.subscribe(self))
return Disposables.create(_timerD, _parent._source.subscribe(self))
}
func startNewWindowAndSendCurrentOne() {
@ -113,7 +113,7 @@ class BufferTimeCountSink<Element, O: ObserverType where O.E == [Element]>
self.startNewWindowAndSendCurrentOne()
}
return NopDisposable.instance
return Disposables.create()
}
}
}

View File

@ -100,7 +100,7 @@ class CombineLatestCollectionTypeSink<C: Collection, R, O: ObserverType where C.
j += 1
}
return CompositeDisposable(disposables: _subscriptions.map { $0 })
return Disposables.create(_subscriptions)
}
}

View File

@ -57,7 +57,7 @@ class CombineLatestSink2_<E1, E2, O: ObserverType> : CombineLatestSink<O> {
subscription1.disposable = _parent._source1.subscribe(observer1)
subscription2.disposable = _parent._source2.subscribe(observer2)
return CompositeDisposable(disposables: [
return Disposables.create([
subscription1,
subscription2
])
@ -142,7 +142,7 @@ class CombineLatestSink3_<E1, E2, E3, O: ObserverType> : CombineLatestSink<O> {
subscription2.disposable = _parent._source2.subscribe(observer2)
subscription3.disposable = _parent._source3.subscribe(observer3)
return CompositeDisposable(disposables: [
return Disposables.create([
subscription1,
subscription2,
subscription3
@ -234,7 +234,7 @@ class CombineLatestSink4_<E1, E2, E3, E4, O: ObserverType> : CombineLatestSink<O
subscription3.disposable = _parent._source3.subscribe(observer3)
subscription4.disposable = _parent._source4.subscribe(observer4)
return CompositeDisposable(disposables: [
return Disposables.create([
subscription1,
subscription2,
subscription3,
@ -333,7 +333,7 @@ class CombineLatestSink5_<E1, E2, E3, E4, E5, O: ObserverType> : CombineLatestSi
subscription4.disposable = _parent._source4.subscribe(observer4)
subscription5.disposable = _parent._source5.subscribe(observer5)
return CompositeDisposable(disposables: [
return Disposables.create([
subscription1,
subscription2,
subscription3,
@ -439,7 +439,7 @@ class CombineLatestSink6_<E1, E2, E3, E4, E5, E6, O: ObserverType> : CombineLate
subscription5.disposable = _parent._source5.subscribe(observer5)
subscription6.disposable = _parent._source6.subscribe(observer6)
return CompositeDisposable(disposables: [
return Disposables.create([
subscription1,
subscription2,
subscription3,
@ -552,7 +552,7 @@ class CombineLatestSink7_<E1, E2, E3, E4, E5, E6, E7, O: ObserverType> : Combine
subscription6.disposable = _parent._source6.subscribe(observer6)
subscription7.disposable = _parent._source7.subscribe(observer7)
return CompositeDisposable(disposables: [
return Disposables.create([
subscription1,
subscription2,
subscription3,
@ -672,7 +672,7 @@ class CombineLatestSink8_<E1, E2, E3, E4, E5, E6, E7, E8, O: ObserverType> : Com
subscription7.disposable = _parent._source7.subscribe(observer7)
subscription8.disposable = _parent._source8.subscribe(observer8)
return CompositeDisposable(disposables: [
return Disposables.create([
subscription1,
subscription2,
subscription3,

View File

@ -60,7 +60,7 @@ class CombineLatestSink<%= i %>_<<%= (Array(1...i).map { "E\($0)" }).joined(sepa
" subscription\($0).disposable = _parent._source\($0).subscribe(observer\($0))"
}).joined(separator: "\n") %>
return CompositeDisposable(disposables: [
return Disposables.create([
<%= (Array(1...i).map { " subscription\($0)" }).joined(separator: ",\n") %>
])
}

View File

@ -26,7 +26,7 @@ class DeferredSink<S: ObservableType, O: ObserverType where S.E == O.E> : Sink<O
catch let e {
forwardOn(.error(e))
dispose()
return NopDisposable.instance
return Disposables.create()
}
}

View File

@ -11,6 +11,6 @@ import Foundation
class Empty<Element> : Producer<Element> {
override func subscribe<O : ObserverType where O.E == Element>(_ observer: O) -> Disposable {
observer.on(.completed)
return NopDisposable.instance
return Disposables.create()
}
}

View File

@ -17,6 +17,6 @@ class Error<Element> : Producer<Element> {
override func subscribe<O : ObserverType where O.E == Element>(_ observer: O) -> Disposable {
observer.on(.error(_error))
return NopDisposable.instance
return Disposables.create()
}
}

View File

@ -24,7 +24,7 @@ class JustScheduledSink<O: ObserverType> : Sink<O> {
self.forwardOn(.next(element))
return scheduler.schedule(()) { _ in
self.forwardOn(.completed)
return NopDisposable.instance
return Disposables.create()
}
}
}
@ -56,6 +56,6 @@ class Just<Element> : Producer<Element> {
override func subscribe<O : ObserverType where O.E == Element>(_ observer: O) -> Disposable {
observer.on(.next(_element))
observer.on(.completed)
return NopDisposable.instance
return Disposables.create()
}
}

View File

@ -30,12 +30,12 @@ class MulticastSink<S: SubjectType, O: ObserverType>: Sink<O>, ObserverType {
let subscription = observable.subscribe(self)
let connection = connectable.connect()
return BinaryDisposable(subscription, connection)
return Disposables.create(subscription, connection)
}
catch let e {
forwardOn(.error(e))
dispose()
return NopDisposable.instance
return Disposables.create()
}
}

View File

@ -10,6 +10,6 @@ import Foundation
class Never<Element> : Producer<Element> {
override func subscribe<O : ObserverType where O.E == Element>(_ observer: O) -> Disposable {
return NopDisposable.instance
return Disposables.create()
}
}

View File

@ -37,7 +37,7 @@ class ObserveOnSerialDispatchQueueSink<O: ObserverType> : ObserverBase<O.E> {
sink.dispose()
}
return NopDisposable.instance
return Disposables.create()
}
}

View File

@ -34,7 +34,7 @@ class RefCountSink<CO: ConnectableObservableType, O: ObserverType where CO.E ==
}
// }
return AnonymousDisposable {
return Disposables.create {
subscription.dispose()
self._parent._lock.lock(); defer { self._parent._lock.unlock() } // {
if self._parent._count == 1 {

View File

@ -127,7 +127,7 @@ class RetryWhenSequenceSink<S: Sequence, O: ObserverType, TriggerObservable: Obs
override func run(_ sources: SequenceGenerator) -> Disposable {
let triggerSubscription = _handler.subscribe(_notifier.asObserver())
let superSubscription = super.run(sources)
return StableCompositeDisposable.create(superSubscription, triggerSubscription)
return Disposables.create(superSubscription, triggerSubscription)
}
}

View File

@ -88,7 +88,7 @@ class SampleSequenceSink<O: ObserverType, SampleType>
_sourceSubscription.disposable = _parent._source.subscribe(self)
let samplerSubscription = _parent._sampler.subscribe(SamplerSink(parent: self))
return StableCompositeDisposable.create(_sourceSubscription, samplerSubscription)
return Disposables.create(_sourceSubscription, samplerSubscription)
}
func on(_ event: Event<Element>) {

View File

@ -42,7 +42,7 @@ final class ShareReplay1<Element>
if let stopEvent = self._stopEvent {
observer.on(stopEvent)
return NopDisposable.instance
return Disposables.create()
}
let initialCount = self._observers.count

View File

@ -100,12 +100,12 @@ class SkipTimeSink<ElementType, O: ObserverType where O.E == ElementType> : Sink
func run() -> Disposable {
let disposeTimer = parent.scheduler.scheduleRelative((), dueTime: self.parent.duration) {
self.tick()
return NopDisposable.instance
return Disposables.create()
}
let disposeSubscription = parent.source.subscribe(self)
return BinaryDisposable(disposeTimer, disposeSubscription)
return Disposables.create(disposeTimer, disposeSubscription)
}
}

View File

@ -103,7 +103,7 @@ class SkipUntilSink<ElementType, Other, O: ObserverType where O.E == ElementType
_sourceSubscription.disposable = sourceSubscription
otherObserver._subscription.disposable = otherSubscription
return StableCompositeDisposable.create(_sourceSubscription, otherObserver._subscription)
return Disposables.create(_sourceSubscription, otherObserver._subscription)
}
}

View File

@ -36,7 +36,7 @@ class SubscribeOnSink<Ob: ObservableType, O: ObserverType where Ob.E == O.E> : S
cancelSchedule.disposable = parent.scheduler.schedule(()) { (_) -> Disposable in
let subscription = self.parent.source.subscribe(self)
disposeEverything.disposable = ScheduledDisposable(scheduler: self.parent.scheduler, disposable: subscription)
return NopDisposable.instance
return Disposables.create()
}
return disposeEverything

View File

@ -32,7 +32,7 @@ class SwitchSink<SourceType, S: ObservableConvertibleType, O: ObserverType where
func run(_ source: Observable<SourceType>) -> Disposable {
let subscription = source.subscribe(self)
_subscriptions.disposable = subscription
return StableCompositeDisposable.create(_subscriptions, _innerSubscription)
return Disposables.create(_subscriptions, _innerSubscription)
}
func on(_ event: Event<E>) {

View File

@ -114,12 +114,12 @@ class TakeTimeSink<ElementType, O: ObserverType where O.E == ElementType>
func run() -> Disposable {
let disposeTimer = _parent._scheduler.scheduleRelative((), dueTime: _parent._duration) {
self.tick()
return NopDisposable.instance
return Disposables.create()
}
let disposeSubscription = _parent._source.subscribe(self)
return BinaryDisposable(disposeTimer, disposeSubscription)
return Disposables.create(disposeTimer, disposeSubscription)
}
}

View File

@ -98,7 +98,7 @@ class TakeUntilSink<ElementType, Other, O: ObserverType where O.E == ElementType
otherObserver._subscription.disposable = otherSubscription
let sourceSubscription = _parent._source.subscribe(self)
return StableCompositeDisposable.create(sourceSubscription, otherObserver._subscription)
return Disposables.create(sourceSubscription, otherObserver._subscription)
}
}

View File

@ -35,7 +35,7 @@ class ThrottleSink<O: ObserverType>
func run() -> Disposable {
let subscription = _parent._source.subscribe(self)
return StableCompositeDisposable.create(subscription, cancellable)
return Disposables.create(subscription, cancellable)
}
func on(_ event: Event<Element>) {
@ -79,7 +79,7 @@ class ThrottleSink<O: ObserverType>
forwardOn(.next(value))
}
// }
return NopDisposable.instance
return Disposables.create()
}
}

View File

@ -35,7 +35,7 @@ class TimeoutSink<ElementType, O: ObserverType where O.E == ElementType>: Sink<O
original.disposable = _parent._source.subscribeSafe(self)
return StableCompositeDisposable.create(_subscription, _timerD)
return Disposables.create(_subscription, _timerD)
}
func on(_ event: Event<E>) {
@ -92,7 +92,7 @@ class TimeoutSink<ElementType, O: ObserverType where O.E == ElementType>: Sink<O
self._subscription.disposable = self._parent._other.subscribeSafe(self.forwarder())
}
return NopDisposable.instance
return Disposables.create()
}
}
}

View File

@ -41,7 +41,7 @@ class TimerOneOffSink<O: ObserverType where O.E : SignedInteger> : Sink<O> {
self.forwardOn(.next(0))
self.forwardOn(.completed)
return NopDisposable.instance
return Disposables.create()
}
}
}

View File

@ -21,19 +21,19 @@ class UsingSink<SourceType, ResourceType: Disposable, O: ObserverType where O.E
}
func run() -> Disposable {
var disposable = NopDisposable.instance
var disposable = Disposables.create()
do {
let resource = try _parent._resourceFactory()
disposable = resource
let source = try _parent._observableFactory(resource)
return StableCompositeDisposable.create(
return Disposables.create(
source.subscribe(self),
disposable
)
} catch let error {
return StableCompositeDisposable.create(
return Disposables.create(
Observable.error(error).subscribe(self),
disposable
)

View File

@ -125,7 +125,7 @@ class WindowTimeCountSink<Element, O: ObserverType where O.E == Observable<Eleme
self.createTimer(newId)
return NopDisposable.instance
return Disposables.create()
}
}
}

View File

@ -35,7 +35,7 @@ class WithLatestFromSink<FirstType, SecondType, ResultType, O: ObserverType wher
sndSubscription.disposable = _parent._second.subscribe(sndO)
let fstSubscription = _parent._first.subscribe(self)
return StableCompositeDisposable.create(fstSubscription, sndSubscription)
return Disposables.create(fstSubscription, sndSubscription)
}
func on(_ event: Event<E>) {

View File

@ -112,7 +112,7 @@ class ZipCollectionTypeSink<C: Collection, R, O: ObserverType where C.Iterator.E
j += 1
}
return CompositeDisposable(disposables: _subscriptions.map { $0 })
return Disposables.create(_subscriptions)
}
}

View File

@ -69,7 +69,7 @@ class ZipSink2_<E1, E2, O: ObserverType> : ZipSink<O> {
subscription1.disposable = _parent.source1.subscribe(observer1)
subscription2.disposable = _parent.source2.subscribe(observer2)
return CompositeDisposable(disposables: [
return Disposables.create([
subscription1,
subscription2
])
@ -167,7 +167,7 @@ class ZipSink3_<E1, E2, E3, O: ObserverType> : ZipSink<O> {
subscription2.disposable = _parent.source2.subscribe(observer2)
subscription3.disposable = _parent.source3.subscribe(observer3)
return CompositeDisposable(disposables: [
return Disposables.create([
subscription1,
subscription2,
subscription3
@ -273,7 +273,7 @@ class ZipSink4_<E1, E2, E3, E4, O: ObserverType> : ZipSink<O> {
subscription3.disposable = _parent.source3.subscribe(observer3)
subscription4.disposable = _parent.source4.subscribe(observer4)
return CompositeDisposable(disposables: [
return Disposables.create([
subscription1,
subscription2,
subscription3,
@ -387,7 +387,7 @@ class ZipSink5_<E1, E2, E3, E4, E5, O: ObserverType> : ZipSink<O> {
subscription4.disposable = _parent.source4.subscribe(observer4)
subscription5.disposable = _parent.source5.subscribe(observer5)
return CompositeDisposable(disposables: [
return Disposables.create([
subscription1,
subscription2,
subscription3,
@ -509,7 +509,7 @@ class ZipSink6_<E1, E2, E3, E4, E5, E6, O: ObserverType> : ZipSink<O> {
subscription5.disposable = _parent.source5.subscribe(observer5)
subscription6.disposable = _parent.source6.subscribe(observer6)
return CompositeDisposable(disposables: [
return Disposables.create([
subscription1,
subscription2,
subscription3,
@ -639,7 +639,7 @@ class ZipSink7_<E1, E2, E3, E4, E5, E6, E7, O: ObserverType> : ZipSink<O> {
subscription6.disposable = _parent.source6.subscribe(observer6)
subscription7.disposable = _parent.source7.subscribe(observer7)
return CompositeDisposable(disposables: [
return Disposables.create([
subscription1,
subscription2,
subscription3,
@ -777,7 +777,7 @@ class ZipSink8_<E1, E2, E3, E4, E5, E6, E7, E8, O: ObserverType> : ZipSink<O> {
subscription7.disposable = _parent.source7.subscribe(observer7)
subscription8.disposable = _parent.source8.subscribe(observer8)
return CompositeDisposable(disposables: [
return Disposables.create([
subscription1,
subscription2,
subscription3,

View File

@ -72,7 +72,7 @@ class ZipSink<%= i %>_<<%= (Array(1...i).map { "E\($0)" }).joined(separator: ",
" subscription\($0).disposable = _parent.source\($0).subscribe(observer\($0))" }).joined(separator: "\n")
%>
return CompositeDisposable(disposables: [
return Disposables.create([
<%= (Array(1...i).map { " subscription\($0)" }).joined(separator: ",\n") %>
])
}

View File

@ -73,6 +73,6 @@ extension SchedulerType {
scheduler.schedule(state, dueTime: dueTime)
return AnonymousDisposable(scheduler.dispose)
return Disposables.create(with: scheduler.dispose)
}
}

View File

@ -145,6 +145,6 @@ public class CurrentThreadScheduler : ImmediateSchedulerType {
// In Xcode 7.3, `return scheduledItem` causes segmentation fault 11 on release build.
// To workaround this compiler issue, returns AnonymousDisposable that disposes scheduledItem.
return AnonymousDisposable(scheduledItem.dispose)
return Disposables.create(with: scheduledItem.dispose)
}
}

View File

@ -51,7 +51,7 @@ extension DispatchQueueConfiguration {
// It looks like just setting timer to fire and not holding a reference to it
// until deadline causes timer cancellation.
var timerReference: DispatchSourceTimer? = timer
let cancelTimer = AnonymousDisposable {
let cancelTimer = Disposables.create {
timerReference?.cancel()
timerReference = nil
}
@ -85,7 +85,7 @@ extension DispatchQueueConfiguration {
// It looks like just setting timer to fire and not holding a reference to it
// until deadline causes timer cancellation.
var timerReference: DispatchSourceTimer? = timer
let cancelTimer = AnonymousDisposable {
let cancelTimer = Disposables.create {
timerReference?.cancel()
timerReference = nil
}

View File

@ -49,7 +49,7 @@ public class OperationQueueScheduler: ImmediateSchedulerType {
self.operationQueue.addOperation(operation)
let _ = compositeDisposable.insert(AnonymousDisposable(operation.cancel))
let _ = compositeDisposable.insert(Disposables.create(with: operation.cancel))
return compositeDisposable
}

View File

@ -42,7 +42,7 @@ class AnyRecursiveScheduler<State> {
let d = _scheduler.scheduleRelative(state, dueTime: dueTime) { (state) -> Disposable in
// best effort
if self._group.isDisposed {
return NopDisposable.instance
return Disposables.create()
}
let action = self._lock.calculateLocked { () -> Action? in
@ -60,7 +60,7 @@ class AnyRecursiveScheduler<State> {
action(state: state, scheduler: self)
}
return NopDisposable.instance
return Disposables.create()
}
_lock.performLocked {
@ -85,7 +85,7 @@ class AnyRecursiveScheduler<State> {
let d = _scheduler.schedule(state) { (state) -> Disposable in
// best effort
if self._group.isDisposed {
return NopDisposable.instance
return Disposables.create()
}
let action = self._lock.calculateLocked { () -> Action? in
@ -103,7 +103,7 @@ class AnyRecursiveScheduler<State> {
action(state: state, scheduler: self)
}
return NopDisposable.instance
return Disposables.create()
}
_lock.performLocked {
@ -155,7 +155,7 @@ class RecursiveImmediateScheduler<State> {
let d = _scheduler.schedule(state) { (state) -> Disposable in
// best effort
if self._group.isDisposed {
return NopDisposable.instance
return Disposables.create()
}
let action = self._lock.calculateLocked { () -> Action? in
@ -173,7 +173,7 @@ class RecursiveImmediateScheduler<State> {
action(state: state, recurse: self.schedule)
}
return NopDisposable.instance
return Disposables.create()
}
_lock.performLocked {

View File

@ -114,12 +114,12 @@ public final class BehaviorSubject<Element>
func _synchronized_subscribe<O : ObserverType where O.E == E>(_ observer: O) -> Disposable {
if _isDisposed {
observer.on(.error(RxError.disposed(object: self)))
return NopDisposable.instance
return Disposables.create()
}
if let stoppedEvent = _stoppedEvent {
observer.on(stoppedEvent)
return NopDisposable.instance
return Disposables.create()
}
let key = _observers.insert(observer.asObserver())

View File

@ -95,12 +95,12 @@ final public class PublishSubject<Element>
func _synchronized_subscribe<O : ObserverType where O.E == E>(_ observer: O) -> Disposable {
if let stoppedEvent = _stoppedEvent {
observer.on(stoppedEvent)
return NopDisposable.instance
return Disposables.create()
}
if _isDisposed {
observer.on(.error(RxError.disposed(object: self)))
return NopDisposable.instance
return Disposables.create()
}
let key = _observers.insert(observer.asObserver())

View File

@ -139,7 +139,7 @@ class ReplayBufferBase<Element>
func _synchronized_subscribe<O : ObserverType where O.E == E>(_ observer: O) -> Disposable {
if _isDisposed {
observer.on(.error(RxError.disposed(object: self)))
return NopDisposable.instance
return Disposables.create()
}
let AnyObserver = observer.asObserver()
@ -147,7 +147,7 @@ class ReplayBufferBase<Element>
replayBuffer(AnyObserver)
if let stoppedEvent = _stoppedEvent {
observer.on(stoppedEvent)
return NopDisposable.instance
return Disposables.create()
}
else {
let key = _observers.insert(AnyObserver)

View File

@ -33,11 +33,11 @@ class ColdObservable<Element>
for recordedEvent in recordedEvents {
_ = testScheduler.scheduleRelativeVirtual((), dueTime: recordedEvent.time, action: { (_) in
observer.on(recordedEvent.value)
return NopDisposable.instance
return Disposables.create()
})
}
return AnonymousDisposable {
return Disposables.create {
let existing = self.subscriptions[i]
self.subscriptions[i] = Subscription(existing.subscribe, self.testScheduler.clock)
}

View File

@ -46,7 +46,7 @@ class HotObservable<Element>
let i = self.subscriptions.count - 1
return AnonymousDisposable {
return Disposables.create {
let removed = self._observers.removeKey(key)
assert(removed != nil)

View File

@ -84,7 +84,7 @@ public class TestScheduler : VirtualTimeScheduler<TestSchedulerVirtualTimeConver
public func scheduleAt(_ time: TestTime, action: () -> Void) {
_ = self.scheduleAbsoluteVirtual((), time: time, action: { () -> Disposable in
action()
return NopDisposable.instance
return Disposables.create()
})
}
@ -111,17 +111,17 @@ public class TestScheduler : VirtualTimeScheduler<TestSchedulerVirtualTimeConver
_ = self.scheduleAbsoluteVirtual((), time: created) {
source = create()
return NopDisposable.instance
return Disposables.create()
}
_ = self.scheduleAbsoluteVirtual((), time: subscribed) {
subscription = source!.subscribe(observer)
return NopDisposable.instance
return Disposables.create()
}
_ = self.scheduleAbsoluteVirtual((), time: disposed) {
subscription!.dispose()
return NopDisposable.instance
return Disposables.create()
}
start()

View File

@ -30,7 +30,7 @@ compareTwoImplementations(benchmarkTime: true, benchmarkMemory: false, first: {
for i in 0..<100 {
o.on(.Next(i))
}
return NopDisposable.instance
return Disposables.create()
}*/
//.retryWhen { $0 }
.shareReplay(1)

View File

@ -75,10 +75,10 @@ extension DriverTest {
// subscription because of serial nature of main scheduler.
_ = MainScheduler.instance.schedule(()) { _ in
subscribeFinished.fulfill()
return NopDisposable.instance
return Disposables.create()
}
return NopDisposable.instance
return Disposables.create()
}
waitForExpectations(timeout: 1.0) { error in

View File

@ -59,7 +59,7 @@ extension RxTest {
}
func ensureEventDeallocated<C, T where C: NSObject>(_ createControl: () -> C, _ eventSelector: (C) -> ControlEvent<T>) {
return ensureEventDeallocated({ () -> (C, Disposable) in (createControl(), NopDisposable.instance) }, eventSelector)
return ensureEventDeallocated({ () -> (C, Disposable) in (createControl(), Disposables.create()) }, eventSelector)
}
func ensureEventDeallocated<C, T where C: NSObject>(_ createControl: () -> (C, Disposable), _ eventSelector: (C) -> ControlEvent<T>) {

View File

@ -1063,7 +1063,7 @@ extension SentMessageTest {
let t = T.createInstance()
//let disposable = (t as! NSObject).rx_observe(NSArray.self, "messages").publish().connect()
(t as! NSObject).addObserver(self, forKeyPath: "messages", options: [], context: nil)
return (t, [AnonymousDisposable { (t as! NSObject).removeObserver(self, forKeyPath: "messages") }])
return (t, [Disposables.create { (t as! NSObject).removeObserver(self, forKeyPath: "messages") }])
}
}

View File

@ -45,7 +45,7 @@ class MySubject<Element where Element : Hashable> : SubjectType, ObserverType {
_subscribeCount += 1
_observer = AnyObserver(observer)
return AnonymousDisposable {
return Disposables.create {
self._observer = AnyObserver { _ -> Void in () }
self._isDisposed = true
}

View File

@ -44,7 +44,7 @@ class PrimitiveHotObservable<ElementType> : ObservableType {
let i = self.subscriptions.count - 1
return AnonymousDisposable {
return Disposables.create {
self.lock.lock()
defer { self.lock.unlock() }

View File

@ -19,7 +19,7 @@ extension AnonymousObservableTests {
var observer: AnyObserver<Int>!
let a = Observable.create { o in
observer = o
return NopDisposable.instance
return Disposables.create()
} as Observable<Int>
var elements = [Int]()
@ -43,7 +43,7 @@ extension AnonymousObservableTests {
var observer: AnyObserver<Int>!
let a = Observable.create { o in
observer = o
return NopDisposable.instance
return Disposables.create()
} as Observable<Int>
var elements = [Int]()
@ -67,7 +67,7 @@ extension AnonymousObservableTests {
var observer: AnyObserver<Int>!
let a = Observable.create { o in
observer = o
return NopDisposable.instance
return Disposables.create()
} as Observable<Int>
var elements = [Int]()

View File

@ -56,7 +56,7 @@ extension BagTest {
)
numberOfActionsAfter(i,
deletionsFromStart: j,
createNew: { () -> Disposable in AnonymousDisposable { numberDisposables += 1 } },
createNew: { () -> Disposable in Disposables.create { numberDisposables += 1 } },
bagAction: { (bag: RxMutableBox<Bag<Disposable>>) in disposeAll(in: bag.value); XCTAssertTrue(bag.value.count == i - j) }
)
@ -103,7 +103,7 @@ extension BagTest {
)
numberOfActionsAfter(i,
deletionsFromStart: j,
createNew: { () -> Disposable in AnonymousDisposable { numberDisposables += 1 } },
createNew: { () -> Disposable in Disposables.create { numberDisposables += 1 } },
bagAction: { (bag: RxMutableBox<Bag<Disposable>>) in disposeAll(in: bag.value); XCTAssertTrue(bag.value.count == i - j) }
)
@ -137,7 +137,7 @@ extension BagTest {
}
increment2 += 1
})
_ = bag3.value.insert(AnonymousDisposable { _ in
_ = bag3.value.insert(Disposables.create { _ in
if increment3 == breakAt {
bag3.value.removeAll()
}
@ -176,7 +176,7 @@ extension BagTest {
)
numberOfActionsAfter(100,
deletionsFromStart: 0,
createNew: { () -> Disposable in AnonymousDisposable { numberDisposables += 1 } },
createNew: { () -> Disposable in Disposables.create { numberDisposables += 1 } },
bagAction: { (bag: RxMutableBox<Bag<Disposable>>) in bag.value.removeAll(); disposeAll(in: bag.value); }
)
@ -194,7 +194,7 @@ extension BagTest {
var keys: [Bag<Disposable>.KeyType] = []
for _ in 0..<limit {
keys.append(bag.insert(AnonymousDisposable { increment += 1 }))
keys.append(bag.insert(Disposables.create { increment += 1 }))
}
for i in 0..<limit {
@ -211,7 +211,7 @@ extension BagTest {
var keys: [Bag<Disposable>.KeyType] = []
for _ in 0..<limit {
keys.append(bag.insert(AnonymousDisposable { increment += 1 }))
keys.append(bag.insert(Disposables.create { increment += 1 }))
}
for i in 0..<limit {

View File

@ -23,7 +23,7 @@ extension CurrentThreadSchedulerTest {
_ = CurrentThreadScheduler.instance.schedule(()) { s in
executed = true
XCTAssertTrue(!CurrentThreadScheduler.isScheduleRequired)
return NopDisposable.instance
return Disposables.create()
}
XCTAssertTrue(executed)
@ -40,13 +40,13 @@ extension CurrentThreadSchedulerTest {
messages.append(3)
_ = CurrentThreadScheduler.instance.schedule(()) {
messages.append(5)
return NopDisposable.instance
return Disposables.create()
}
messages.append(4)
return NopDisposable.instance
return Disposables.create()
}
messages.append(2)
return NopDisposable.instance
return Disposables.create()
}
XCTAssertEqual(messages, [1, 2, 3, 4, 5])
@ -63,7 +63,7 @@ extension CurrentThreadSchedulerTest {
messages.append(3)
let disposable = CurrentThreadScheduler.instance.schedule(()) {
messages.append(5)
return NopDisposable.instance
return Disposables.create()
}
disposable.dispose()
messages.append(4)
@ -87,7 +87,7 @@ extension CurrentThreadSchedulerTest {
messages.append(3)
let disposable = CurrentThreadScheduler.instance.schedule(()) {
messages.append(5)
return NopDisposable.instance
return Disposables.create()
}
messages.append(4)
return disposable

View File

@ -23,7 +23,7 @@ class DisposableTest : RxTest {
func testActionDisposable() {
var counter = 0
let disposable = AnonymousDisposable {
let disposable = Disposables.create {
counter = counter + 1
}
@ -73,11 +73,11 @@ class DisposableTest : RxTest {
var numberDisposed = 0
let compositeDisposable = CompositeDisposable()
let result1 = compositeDisposable.insert(AnonymousDisposable {
let result1 = compositeDisposable.insert(Disposables.create {
numberDisposed += 1
})
_ = compositeDisposable.insert(AnonymousDisposable {
_ = compositeDisposable.insert(Disposables.create {
numberDisposed += 1
})
@ -89,7 +89,7 @@ class DisposableTest : RxTest {
XCTAssertEqual(numberDisposed, 2)
XCTAssertEqual(compositeDisposable.count, 0)
let result = compositeDisposable.insert(AnonymousDisposable {
let result = compositeDisposable.insert(Disposables.create {
numberDisposed += 1
})
@ -101,19 +101,19 @@ class DisposableTest : RxTest {
func testCompositeDisposable_TestInitWithNumberOfDisposables() {
var numberDisposed = 0
let disposable1 = AnonymousDisposable {
let disposable1 = Disposables.create {
numberDisposed += 1
}
let disposable2 = AnonymousDisposable {
let disposable2 = Disposables.create {
numberDisposed += 1
}
let disposable3 = AnonymousDisposable {
let disposable3 = Disposables.create {
numberDisposed += 1
}
let disposable4 = AnonymousDisposable {
let disposable4 = Disposables.create {
numberDisposed += 1
}
let disposable5 = AnonymousDisposable {
let disposable5 = Disposables.create {
numberDisposed += 1
}
@ -131,11 +131,11 @@ class DisposableTest : RxTest {
var numberDisposed = 0
let compositeDisposable = CompositeDisposable()
let result1 = compositeDisposable.insert(AnonymousDisposable {
let result1 = compositeDisposable.insert(Disposables.create {
numberDisposed += 1
})
let result2 = compositeDisposable.insert(AnonymousDisposable {
let result2 = compositeDisposable.insert(Disposables.create {
numberDisposed += 1
})
@ -154,6 +154,33 @@ class DisposableTest : RxTest {
XCTAssertEqual(compositeDisposable.count, 0)
}
func testDisposables_TestCreateWithNumberOfDisposables() {
var numberDisposed = 0
let disposable1 = Disposables.create {
numberDisposed += 1
}
let disposable2 = Disposables.create {
numberDisposed += 1
}
let disposable3 = Disposables.create {
numberDisposed += 1
}
let disposable4 = Disposables.create {
numberDisposed += 1
}
let disposable5 = Disposables.create {
numberDisposed += 1
}
let disposable = Disposables.create(disposable1, disposable2, disposable3, disposable4, disposable5)
XCTAssertEqual(numberDisposed, 0)
disposable.dispose()
XCTAssertEqual(numberDisposed, 5)
}
func testRefCountDisposable_RefCounting() {
let d = BooleanDisposable()
let r = RefCountDisposable(disposable: d)

View File

@ -30,11 +30,11 @@ extension HistoricalSchedulerTest {
times.append(scheduler.now)
_ = scheduler.scheduleRelative((), dueTime: 20.0) { _ in
times.append(scheduler.now)
return NopDisposable.instance
return Disposables.create()
}
return scheduler.schedule(()) { _ in
times.append(scheduler.now)
return NopDisposable.instance
return Disposables.create()
}
}
@ -56,16 +56,16 @@ extension HistoricalSchedulerTest {
times.append(scheduler.now)
let d = scheduler.scheduleRelative((), dueTime: 20.0) { _ in
times.append(scheduler.now)
return NopDisposable.instance
return Disposables.create()
}
let d2 = scheduler.schedule(()) { _ in
times.append(scheduler.now)
return NopDisposable.instance
return Disposables.create()
}
d2.dispose()
d.dispose()
return NopDisposable.instance
return Disposables.create()
}
scheduler.start()
@ -84,11 +84,11 @@ extension HistoricalSchedulerTest {
times.append(scheduler.now)
_ = scheduler.scheduleRelative((), dueTime: 20.0) { _ in
times.append(scheduler.now)
return NopDisposable.instance
return Disposables.create()
}
return scheduler.schedule(()) { _ in
times.append(scheduler.now)
return NopDisposable.instance
return Disposables.create()
}
}
@ -110,11 +110,11 @@ extension HistoricalSchedulerTest {
times.append(scheduler!.now)
_ = scheduler!.scheduleRelative((), dueTime: 20.0) { _ in
times.append(scheduler!.now)
return NopDisposable.instance
return Disposables.create()
}
return scheduler!.schedule(()) { _ in
times.append(scheduler!.now)
return NopDisposable.instance
return Disposables.create()
}
}
@ -135,16 +135,16 @@ extension HistoricalSchedulerTest {
times.append(scheduler!.now)
let d1 = scheduler!.scheduleRelative((), dueTime: 20.0) { _ in
times.append(scheduler!.now)
return NopDisposable.instance
return Disposables.create()
}
let d2 = scheduler!.schedule(()) { _ in
times.append(scheduler!.now)
return NopDisposable.instance
return Disposables.create()
}
d1.dispose()
d2.dispose()
return NopDisposable.instance
return Disposables.create()
}
scheduler.advanceTo(Date(timeIntervalSince1970: 200.0))
@ -163,16 +163,16 @@ extension HistoricalSchedulerTest {
times.append(scheduler!.now)
_ = scheduler!.scheduleRelative((), dueTime: 20.0) { _ in
times.append(scheduler!.now)
return NopDisposable.instance
return Disposables.create()
}
_ = scheduler!.schedule(()) { _ in
times.append(scheduler!.now)
return NopDisposable.instance
return Disposables.create()
}
scheduler!.stop()
return NopDisposable.instance
return Disposables.create()
}
scheduler.start()
@ -193,15 +193,15 @@ extension HistoricalSchedulerTest {
_ = scheduler!.sleep(100)
_ = scheduler!.scheduleRelative((), dueTime: 20.0) { _ in
times.append(scheduler!.now)
return NopDisposable.instance
return Disposables.create()
}
_ = scheduler!.schedule(()) { _ in
times.append(scheduler!.now)
return NopDisposable.instance
return Disposables.create()
}
return NopDisposable.instance
return Disposables.create()
}
scheduler.start()

View File

@ -41,13 +41,13 @@ extension MainSchedulerTest {
messages.append(3)
_ = MainScheduler.instance.schedule(()) {
messages.append(5)
return NopDisposable.instance
return Disposables.create()
}
messages.append(4)
return NopDisposable.instance
return Disposables.create()
}
messages.append(2)
return NopDisposable.instance
return Disposables.create()
}
XCTAssertTrue(executedImmediatelly)
@ -66,7 +66,7 @@ extension MainSchedulerTest {
messages.append(3)
let disposable = MainScheduler.instance.schedule(()) {
messages.append(5)
return NopDisposable.instance
return Disposables.create()
}
disposable.dispose()
messages.append(4)
@ -90,7 +90,7 @@ extension MainSchedulerTest {
messages.append(3)
let disposable = MainScheduler.instance.schedule(()) {
messages.append(5)
return NopDisposable.instance
return Disposables.create()
}
messages.append(4)
return disposable

View File

@ -305,7 +305,7 @@ extension ObservableBindingTest {
let xs: Observable<Int> = Observable.deferred {
count += 1
return Observable.create { obs in
return AnonymousDisposable {
return Disposables.create {
disconnected = true
}
}

View File

@ -44,7 +44,7 @@ extension ObservableConcurrencyTest {
_ = scheduler.schedule(()) { s in
expectation.fulfill()
return NopDisposable.instance
return Disposables.create()
}
waitForExpectations(timeout: 1.0) { e in
@ -95,7 +95,7 @@ extension ObservableConcurrencyTest {
.observeOn(scheduler)
XCTAssertTrue(a == a) // shut up swift compiler :(, we only need to keep this in memory
XCTAssert(numberOfSerialDispatchQueueObservables == 1)
return NopDisposable.instance
return Disposables.create()
}
XCTAssert(numberOfSerialDispatchQueueObservables == 0)
@ -111,11 +111,11 @@ extension ObservableConcurrencyTest {
self.sleep(0.1) // should be enough to block the queue, so if it's concurrent, it will fail
XCTAssert(OSAtomicDecrement32(&numberOfConcurrentEvents) == 0)
OSAtomicIncrement32(&numberOfExecutions)
return NopDisposable.instance
return Disposables.create()
}
_ = scheduler.schedule((), action: action)
_ = scheduler.schedule((), action: action)
return NopDisposable.instance
return Disposables.create()
}
XCTAssert(numberOfSerialDispatchQueueObservables == 0)
@ -179,7 +179,7 @@ extension ObservableConcurrencyTest {
])
xs.on(.next(1))
xs.on(.next(2))
return NopDisposable.instance
return Disposables.create()
},
{ scheduler in
XCTAssertEqual(observer.events, [
@ -189,7 +189,7 @@ extension ObservableConcurrencyTest {
])
XCTAssert(xs.subscriptions == [SubscribedToHotObservable])
xs.on(.completed)
return NopDisposable.instance
return Disposables.create()
},
{ scheduler in
XCTAssertEqual(observer.events, [
@ -199,7 +199,7 @@ extension ObservableConcurrencyTest {
completed()
])
XCTAssert(xs.subscriptions == [UnsunscribedFromHotObservable])
return NopDisposable.instance
return Disposables.create()
},
])
}
@ -220,7 +220,7 @@ extension ObservableConcurrencyTest {
completed()
])
XCTAssert(xs.subscriptions == [UnsunscribedFromHotObservable])
return NopDisposable.instance
return Disposables.create()
}
])
}
@ -243,7 +243,7 @@ extension ObservableConcurrencyTest {
])
xs.on(.next(1))
xs.on(.next(2))
return NopDisposable.instance
return Disposables.create()
},
{ scheduler in
XCTAssertEqual(observer.events, [
@ -253,7 +253,7 @@ extension ObservableConcurrencyTest {
])
XCTAssert(xs.subscriptions == [SubscribedToHotObservable])
xs.on(.error(testError))
return NopDisposable.instance
return Disposables.create()
},
{ scheduler in
XCTAssertEqual(observer.events, [
@ -263,7 +263,7 @@ extension ObservableConcurrencyTest {
error(testError)
])
XCTAssert(xs.subscriptions == [UnsunscribedFromHotObservable])
return NopDisposable.instance
return Disposables.create()
},
])
}
@ -292,14 +292,14 @@ extension ObservableConcurrencyTest {
xs.on(.error(testError))
return NopDisposable.instance
return Disposables.create()
},
{ scheduler in
XCTAssertEqual(observer.events, [
next(0),
])
XCTAssert(xs.subscriptions == [UnsunscribedFromHotObservable])
return NopDisposable.instance
return Disposables.create()
}
])
}
@ -364,7 +364,7 @@ class ObservableConcurrentSchedulerConcurrencyTest: ObservableConcurrencyTestBas
stop.on(.completed)
return NopDisposable.instance
return Disposables.create()
}
_ = scheduler.schedule((), action: concurrent)
@ -579,7 +579,7 @@ extension ObservableConcurrencyTest {
let xs: Observable<Int> = Observable.create { observer in
scheduled = scheduler.clock
return AnonymousDisposable {
return Disposables.create {
disposed = scheduler.clock
}
}

View File

@ -4263,7 +4263,7 @@ extension ObservableMultipleTest {
])
let r: Observable<Int> = Observable.create { o in
return AnonymousDisposable {
return Disposables.create {
isDisposed = true
}
}

View File

@ -985,7 +985,7 @@ extension ObservableSingleTest {
observer.on(.next(5))
observer.on(.completed)
return NopDisposable.instance
return Disposables.create()
}
_ = sequenceSendingImmediateError
@ -1377,7 +1377,7 @@ extension ObservableSingleTest {
observer.on(.next(5))
observer.on(.completed)
return NopDisposable.instance
return Disposables.create()
}
_ = sequenceSendingImmediateError

View File

@ -560,7 +560,7 @@ extension ObservableTimeTest {
_ = scheduler.schedule(()) { _ in
cleanResources.fulfill()
return NopDisposable.instance
return Disposables.create()
}
waitForExpectations(timeout: 1.0) { e in

View File

@ -18,7 +18,7 @@ extension ObserverTests {
var observer: AnyObserver<Int>!
let a: Observable<Int> = Observable.create { o in
observer = o
return NopDisposable.instance
return Disposables.create()
}
var elements = [Int]()
@ -38,7 +38,7 @@ extension ObserverTests {
var observer: AnyObserver<Int>!
let a: Observable<Int> = Observable.create { o in
observer = o
return NopDisposable.instance
return Disposables.create()
}
var elements = [Int]()
@ -67,7 +67,7 @@ extension ObserverTests {
var observer: AnyObserver<Int>!
let a: Observable<Int> = Observable.create { o in
observer = o
return NopDisposable.instance
return Disposables.create()
}
var elements = [Int]()

View File

@ -37,7 +37,7 @@ extension ConcurrentDispatchQueueSchedulerTests {
_ = scheduler.scheduleRelative(1, dueTime: 0.5) { (_) -> Disposable in
interval = Date().timeIntervalSince(start)
expectScheduling.fulfill()
return NopDisposable.instance
return Disposables.create()
}
waitForExpectations(timeout: 1.0) { error in
@ -58,7 +58,7 @@ extension ConcurrentDispatchQueueSchedulerTests {
let disposable = scheduler.scheduleRelative(1, dueTime: 0.1) { (_) -> Disposable in
interval = Date().timeIntervalSince(start)
expectScheduling.fulfill()
return NopDisposable.instance
return Disposables.create()
}
disposable.dispose()

View File

@ -33,11 +33,11 @@ extension VirtualSchedulerTest {
times.append(scheduler.clock)
_ = scheduler.scheduleRelative((), dueTime: 20.0) { _ in
times.append(scheduler.clock)
return NopDisposable.instance
return Disposables.create()
}
return scheduler.schedule(()) { _ in
times.append(scheduler.clock)
return NopDisposable.instance
return Disposables.create()
}
}
@ -59,16 +59,16 @@ extension VirtualSchedulerTest {
times.append(scheduler.clock)
let d = scheduler.scheduleRelative((), dueTime: 20.0) { _ in
times.append(scheduler.clock)
return NopDisposable.instance
return Disposables.create()
}
let d2 = scheduler.schedule(()) { _ in
times.append(scheduler.clock)
return NopDisposable.instance
return Disposables.create()
}
d2.dispose()
d.dispose()
return NopDisposable.instance
return Disposables.create()
}
scheduler.start()
@ -87,11 +87,11 @@ extension VirtualSchedulerTest {
times.append(scheduler.clock)
_ = scheduler.scheduleRelative((), dueTime: 20.0) { _ in
times.append(scheduler.clock)
return NopDisposable.instance
return Disposables.create()
}
return scheduler.schedule(()) { _ in
times.append(scheduler.clock)
return NopDisposable.instance
return Disposables.create()
}
}
@ -113,11 +113,11 @@ extension VirtualSchedulerTest {
times.append(scheduler!.clock)
_ = scheduler!.scheduleRelative((), dueTime: 20.0) { _ in
times.append(scheduler!.clock)
return NopDisposable.instance
return Disposables.create()
}
return scheduler!.schedule(()) { _ in
times.append(scheduler!.clock)
return NopDisposable.instance
return Disposables.create()
}
}
@ -138,16 +138,16 @@ extension VirtualSchedulerTest {
times.append(scheduler!.clock)
let d1 = scheduler!.scheduleRelative((), dueTime: 20.0) { _ in
times.append(scheduler!.clock)
return NopDisposable.instance
return Disposables.create()
}
let d2 = scheduler!.schedule(()) { _ in
times.append(scheduler!.clock)
return NopDisposable.instance
return Disposables.create()
}
d1.dispose()
d2.dispose()
return NopDisposable.instance
return Disposables.create()
}
scheduler.advanceTo(20)
@ -166,16 +166,16 @@ extension VirtualSchedulerTest {
times.append(scheduler!.clock)
_ = scheduler!.scheduleRelative((), dueTime: 20.0) { _ in
times.append(scheduler!.clock)
return NopDisposable.instance
return Disposables.create()
}
_ = scheduler!.schedule(()) { _ in
times.append(scheduler!.clock)
return NopDisposable.instance
return Disposables.create()
}
scheduler!.stop()
return NopDisposable.instance
return Disposables.create()
}
scheduler.start()
@ -195,14 +195,14 @@ extension VirtualSchedulerTest {
scheduler!.sleep(10)
_ = scheduler!.scheduleRelative((), dueTime: 20.0) { _ in
times.append(scheduler!.clock)
return NopDisposable.instance
return Disposables.create()
}
_ = scheduler!.schedule(()) { _ in
times.append(scheduler!.clock)
return NopDisposable.instance
return Disposables.create()
}
return NopDisposable.instance
return Disposables.create()
}
scheduler.start()
@ -224,7 +224,7 @@ extension VirtualSchedulerTest {
times.append(random)
_ = scheduler.scheduleRelative((), dueTime: RxTimeInterval(10 * random)) { [weak scheduler] _ in
ticks.append(scheduler!.clock)
return NopDisposable.instance
return Disposables.create()
}
}