Workaround for Swift bug when compiler optimizes away `driverObserveOnScheduler` and `driverSubscribeOnScheduler` even though there is testability turned on.
This commit is contained in:
parent
a66badfdb7
commit
77d452db34
|
|
@ -99,7 +99,7 @@ extension Driver {
|
|||
*/
|
||||
@warn_unused_result(message="http://git.io/rxs.uo")
|
||||
public static func empty() -> Driver<E> {
|
||||
return Driver(raw: Observable.empty().subscribeOn(driverSubscribeOnScheduler))
|
||||
return Driver(raw: Observable.empty().subscribeOn(driverSubscribeOnScheduler()))
|
||||
}
|
||||
|
||||
/**
|
||||
|
|
@ -109,7 +109,7 @@ extension Driver {
|
|||
*/
|
||||
@warn_unused_result(message="http://git.io/rxs.uo")
|
||||
public static func never() -> Driver<E> {
|
||||
return Driver(raw: Observable.never().subscribeOn(driverSubscribeOnScheduler))
|
||||
return Driver(raw: Observable.never().subscribeOn(driverSubscribeOnScheduler()))
|
||||
}
|
||||
|
||||
/**
|
||||
|
|
@ -120,7 +120,7 @@ extension Driver {
|
|||
*/
|
||||
@warn_unused_result(message="http://git.io/rxs.uo")
|
||||
public static func just(element: E) -> Driver<E> {
|
||||
return Driver(raw: Observable.just(element).subscribeOn(driverSubscribeOnScheduler))
|
||||
return Driver(raw: Observable.just(element).subscribeOn(driverSubscribeOnScheduler()))
|
||||
}
|
||||
|
||||
/**
|
||||
|
|
@ -137,7 +137,7 @@ extension Driver {
|
|||
|
||||
@warn_unused_result(message="http://git.io/rxs.uo")
|
||||
public static func of(elements: E ...) -> Driver<E> {
|
||||
let source = elements.toObservable().subscribeOn(driverSubscribeOnScheduler)
|
||||
let source = elements.toObservable().subscribeOn(driverSubscribeOnScheduler())
|
||||
return Driver(raw: source)
|
||||
}
|
||||
|
||||
|
|
@ -147,17 +147,17 @@ public struct Drive {
|
|||
|
||||
@available(*, deprecated=2.0.0, message="Please use `Driver.empty` (`r` at the end).")
|
||||
public static func empty<E>() -> Driver<E> {
|
||||
return Driver(raw: Observable.empty().subscribeOn(driverSubscribeOnScheduler))
|
||||
return Driver(raw: Observable.empty().subscribeOn(driverSubscribeOnScheduler()))
|
||||
}
|
||||
|
||||
@available(*, deprecated=2.0.0, message="Please use `Driver.never` (`r` at the end).")
|
||||
public static func never<E>() -> Driver<E> {
|
||||
return Driver(raw: Observable.never().subscribeOn(driverSubscribeOnScheduler))
|
||||
return Driver(raw: Observable.never().subscribeOn(driverSubscribeOnScheduler()))
|
||||
}
|
||||
|
||||
@available(*, deprecated=2.0.0, message="Please use `Driver.just` (`r` at the end).")
|
||||
public static func just<E>(element: E) -> Driver<E> {
|
||||
return Driver(raw: Observable.just(element).subscribeOn(driverSubscribeOnScheduler))
|
||||
return Driver(raw: Observable.just(element).subscribeOn(driverSubscribeOnScheduler()))
|
||||
}
|
||||
|
||||
@available(*, deprecated=2.0.0, message="Please use `Driver.deferred` (`r` at the end).")
|
||||
|
|
@ -168,7 +168,7 @@ public struct Drive {
|
|||
|
||||
@available(*, deprecated=2.0.0, message="Please use `Driver.of` (`r` at the end).")
|
||||
public static func sequenceOf<E>(elements: E ...) -> Driver<E> {
|
||||
let source = elements.toObservable().subscribeOn(driverSubscribeOnScheduler)
|
||||
let source = elements.toObservable().subscribeOn(driverSubscribeOnScheduler())
|
||||
return Driver(raw: source)
|
||||
}
|
||||
|
||||
|
|
@ -186,8 +186,8 @@ func driveOnScheduler(scheduler: SchedulerType, action: () -> ()) {
|
|||
let originalObserveOnScheduler = driverObserveOnScheduler
|
||||
let originalSubscribeOnScheduler = driverSubscribeOnScheduler
|
||||
|
||||
driverObserveOnScheduler = scheduler
|
||||
driverSubscribeOnScheduler = scheduler
|
||||
driverObserveOnScheduler = { scheduler }
|
||||
driverSubscribeOnScheduler = { scheduler }
|
||||
|
||||
action()
|
||||
|
||||
|
|
@ -195,5 +195,6 @@ func driveOnScheduler(scheduler: SchedulerType, action: () -> ()) {
|
|||
driverSubscribeOnScheduler = originalSubscribeOnScheduler
|
||||
}
|
||||
|
||||
var driverObserveOnScheduler: SchedulerType = MainScheduler.instance
|
||||
var driverSubscribeOnScheduler: SchedulerType = ConcurrentMainScheduler.instance
|
||||
// using lambas disables optimizations that break @testable (another Swift bug)
|
||||
var driverObserveOnScheduler: () -> SchedulerType = { MainScheduler.instance }
|
||||
var driverSubscribeOnScheduler: () -> SchedulerType = { ConcurrentMainScheduler.instance }
|
||||
|
|
|
|||
|
|
@ -22,7 +22,7 @@ extension ObservableConvertibleType {
|
|||
public func asDriver(onErrorJustReturn onErrorJustReturn: E) -> Driver<E> {
|
||||
let source = self
|
||||
.asObservable()
|
||||
.observeOn(driverObserveOnScheduler)
|
||||
.observeOn(driverObserveOnScheduler())
|
||||
.catchErrorJustReturn(onErrorJustReturn)
|
||||
return Driver(source)
|
||||
}
|
||||
|
|
@ -37,7 +37,7 @@ extension ObservableConvertibleType {
|
|||
public func asDriver(onErrorDriveWith onErrorDriveWith: Driver<E>) -> Driver<E> {
|
||||
let source = self
|
||||
.asObservable()
|
||||
.observeOn(driverObserveOnScheduler)
|
||||
.observeOn(driverObserveOnScheduler())
|
||||
.catchError { _ in
|
||||
onErrorDriveWith.asObservable()
|
||||
}
|
||||
|
|
@ -54,7 +54,7 @@ extension ObservableConvertibleType {
|
|||
public func asDriver(onErrorRecover onErrorRecover: (error: ErrorType) -> Driver<E>) -> Driver<E> {
|
||||
let source = self
|
||||
.asObservable()
|
||||
.observeOn(driverObserveOnScheduler)
|
||||
.observeOn(driverObserveOnScheduler())
|
||||
.catchError { error in
|
||||
onErrorRecover(error: error).asObservable()
|
||||
}
|
||||
|
|
|
|||
|
|
@ -20,7 +20,7 @@ extension Variable {
|
|||
@warn_unused_result(message="http://git.io/rxs.uo")
|
||||
public func asDriver() -> Driver<E> {
|
||||
let source = self
|
||||
.observeOn(driverObserveOnScheduler)
|
||||
.observeOn(driverObserveOnScheduler())
|
||||
return Driver(source)
|
||||
}
|
||||
}
|
||||
|
|
@ -42,7 +42,7 @@ extension TestScheduler {
|
|||
|
||||
*/
|
||||
func parseEventsAndTimes<T>(timeline: String, values: [String: T], errors: [String: ErrorType] = [:]) -> [[Recorded<Event<T>>]] {
|
||||
print("parsing: \(timeline)")
|
||||
//print("parsing: \(timeline)")
|
||||
typealias RecordedEvent = Recorded<Event<T>>
|
||||
let timelines = timeline.componentsSeparatedByString("|")
|
||||
|
||||
|
|
@ -82,7 +82,7 @@ extension TestScheduler {
|
|||
return (state.time + tickIncrement, state.events + [nextEvent])
|
||||
}
|
||||
|
||||
print("parsed: \(events)")
|
||||
//print("parsed: \(events)")
|
||||
return events
|
||||
}
|
||||
}
|
||||
|
|
|
|||
|
|
@ -23,7 +23,7 @@
|
|||
</BuildActionEntries>
|
||||
</BuildAction>
|
||||
<TestAction
|
||||
buildConfiguration = "Debug"
|
||||
buildConfiguration = "Release-Tests"
|
||||
selectedDebuggerIdentifier = "Xcode.DebuggerFoundation.Debugger.LLDB"
|
||||
selectedLauncherIdentifier = "Xcode.DebuggerFoundation.Launcher.LLDB"
|
||||
shouldUseLaunchSchemeArgsEnv = "YES">
|
||||
|
|
|
|||
Loading…
Reference in New Issue