Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
71 changes: 69 additions & 2 deletions Sources/Deprecations+Removals.swift
Original file line number Diff line number Diff line change
Expand Up @@ -3,6 +3,73 @@ import Dispatch
import enum Result.NoError

// MARK: Unavailable methods in ReactiveSwift 2.0.
extension PropertyProtocol {
@available(*, unavailable, renamed:"flatMap(_:_:)")
public func flatMap<P: PropertyProtocol>(_ strategy: FlattenStrategy, transform: @escaping (Value) -> P) -> Property<P.Value> { fatalError() }
}

extension Signal {
@available(*, unavailable, renamed:"flatMap(_:_:)")
public func flatMap<U>(_ strategy: FlattenStrategy, transform: @escaping (Value) -> SignalProducer<U, Error>) -> Signal<U, Error> { fatalError() }

@available(*, unavailable, renamed:"flatMap(_:_:)")
public func flatMap<U>(_ strategy: FlattenStrategy, transform: @escaping (Value) -> SignalProducer<U, NoError>) -> Signal<U, Error> { fatalError() }

@available(*, unavailable, renamed:"flatMap(_:_:)")
public func flatMap<U>(_ strategy: FlattenStrategy, transform: @escaping (Value) -> Signal<U, Error>) -> Signal<U, Error> { fatalError() }

@available(*, unavailable, renamed:"flatMap(_:_:)")
public func flatMap<U>(_ strategy: FlattenStrategy, transform: @escaping (Value) -> Signal<U, NoError>) -> Signal<U, Error> { fatalError() }

@available(*, unavailable, renamed:"flatMap(_:_:)")
public func flatMap<P: PropertyProtocol>(_ strategy: FlattenStrategy, transform: @escaping (Value) -> P) -> Signal<P.Value, Error> { fatalError() }
}

extension Signal where Error == NoError {
@available(*, unavailable, renamed:"flatMap(_:_:)")
public func flatMap<U, E>(_ strategy: FlattenStrategy, transform: @escaping (Value) -> SignalProducer<U, E>) -> Signal<U, E> { fatalError() }

@available(*, unavailable, renamed:"flatMap(_:_:)")
public func flatMap<U>(_ strategy: FlattenStrategy, transform: @escaping (Value) -> SignalProducer<U, NoError>) -> Signal<U, NoError> { fatalError() }

@available(*, unavailable, renamed:"flatMap(_:_:)")
public func flatMap<U, E>(_ strategy: FlattenStrategy, transform: @escaping (Value) -> Signal<U, E>) -> Signal<U, E> { fatalError() }

@available(*, unavailable, renamed:"flatMap(_:_:)")
public func flatMap<U>(_ strategy: FlattenStrategy, transform: @escaping (Value) -> Signal<U, NoError>) -> Signal<U, NoError> { fatalError() }
}

extension SignalProducer {
@available(*, unavailable, renamed:"flatMap(_:_:)")
public func flatMap<U>(_ strategy: FlattenStrategy, transform: @escaping (Value) -> SignalProducer<U, Error>) -> SignalProducer<U, Error> { fatalError() }

@available(*, unavailable, renamed:"flatMap(_:_:)")
public func flatMap<U>(_ strategy: FlattenStrategy, transform: @escaping (Value) -> SignalProducer<U, NoError>) -> SignalProducer<U, Error> { fatalError() }

@available(*, unavailable, renamed:"flatMap(_:_:)")
public func flatMap<U>(_ strategy: FlattenStrategy, transform: @escaping (Value) -> Signal<U, Error>) -> SignalProducer<U, Error> { fatalError() }

@available(*, unavailable, renamed:"flatMap(_:_:)")
public func flatMap<U>(_ strategy: FlattenStrategy, transform: @escaping (Value) -> Signal<U, NoError>) -> SignalProducer<U, Error> { fatalError() }

@available(*, unavailable, renamed:"flatMap(_:_:)")
public func flatMap<P: PropertyProtocol>(_ strategy: FlattenStrategy, transform: @escaping (Value) -> P) -> SignalProducer<P.Value, Error> { fatalError() }
}

extension SignalProducer where Error == NoError {
@available(*, unavailable, renamed:"flatMap(_:_:)")
public func flatMap<U, E>(_ strategy: FlattenStrategy, transform: @escaping (Value) -> SignalProducer<U, E>) -> SignalProducer<U, E> { fatalError() }

@available(*, unavailable, renamed:"flatMap(_:_:)")
public func flatMap<U>(_ strategy: FlattenStrategy, transform: @escaping (Value) -> SignalProducer<U, NoError>) -> SignalProducer<U, NoError> { fatalError() }

@available(*, unavailable, renamed:"flatMap(_:_:)")
public func flatMap<U, E>(_ strategy: FlattenStrategy, transform: @escaping (Value) -> Signal<U, E>) -> SignalProducer<U, E> { fatalError() }

@available(*, unavailable, renamed:"flatMap(_:_:)")
public func flatMap<U>(_ strategy: FlattenStrategy, transform: @escaping (Value) -> Signal<U, NoError>) -> SignalProducer<U, NoError> { fatalError() }
}

extension ComposableMutablePropertyProtocol {
@available(*, unavailable, renamed:"withValue(_:)")
public func withValue<Result>(action: (Value) throws -> Result) rethrows -> Result { fatalError() }
Expand Down Expand Up @@ -312,7 +379,7 @@ extension Signal where Error == NoError {
extension Signal where Value: Sequence {
@available(*, deprecated, message: "Use flatten() instead")
public func flatten(_ strategy: FlattenStrategy) -> Signal<Value.Iterator.Element, Error> {
return self.flatMap(strategy, transform: SignalProducer.init)
return self.flatMap(strategy, SignalProducer.init)
}
}

Expand Down Expand Up @@ -394,7 +461,7 @@ extension SignalProducer where Error == NoError {
extension SignalProducer where Value: Sequence {
@available(*, deprecated, message: "Use flatten() instead")
public func flatten(_ strategy: FlattenStrategy) -> SignalProducer<Value.Iterator.Element, Error> {
return self.flatMap(strategy, transform: SignalProducer<Value.Iterator.Element, NoError>.init)
return self.flatMap(strategy, SignalProducer<Value.Iterator.Element, NoError>.init)
}
}

Expand Down
56 changes: 28 additions & 28 deletions Sources/Flatten.swift
Original file line number Diff line number Diff line change
Expand Up @@ -313,7 +313,7 @@ extension Signal where Value: SignalProtocol, Value.Error == NoError {
extension Signal where Value: Sequence {
/// Flattens the `sequence` value sent by `signal`.
public func flatten() -> Signal<Value.Iterator.Element, Error> {
return self.flatMap(.merge, transform: SignalProducer.init)
return self.flatMap(.merge, SignalProducer.init)
}
}

Expand Down Expand Up @@ -391,7 +391,7 @@ extension SignalProducer where Value: SignalProtocol, Value.Error == NoError {
extension SignalProducer where Value: Sequence {
/// Flattens the `sequence` value sent by `signal`.
public func flatten() -> SignalProducer<Value.Iterator.Element, Error> {
return self.flatMap(.merge, transform: SignalProducer<Value.Iterator.Element, NoError>.init)
return self.flatMap(.merge, SignalProducer<Value.Iterator.Element, NoError>.init)
}
}

Expand Down Expand Up @@ -921,7 +921,7 @@ extension Signal {
/// - strategy: Strategy used when flattening signals.
/// - transform: A closure that takes a value emitted by `self` and
/// returns a signal producer with transformed value.
public func flatMap<U>(_ strategy: FlattenStrategy, transform: @escaping (Value) -> SignalProducer<U, Error>) -> Signal<U, Error> {
public func flatMap<U>(_ strategy: FlattenStrategy, _ transform: @escaping (Value) -> SignalProducer<U, Error>) -> Signal<U, Error> {
return map(transform).flatten(strategy)
}

Expand All @@ -936,7 +936,7 @@ extension Signal {
/// - strategy: Strategy used when flattening signals.
/// - transform: A closure that takes a value emitted by `self` and
/// returns a signal producer with transformed value.
public func flatMap<U>(_ strategy: FlattenStrategy, transform: @escaping (Value) -> SignalProducer<U, NoError>) -> Signal<U, Error> {
public func flatMap<U>(_ strategy: FlattenStrategy, _ transform: @escaping (Value) -> SignalProducer<U, NoError>) -> Signal<U, Error> {
return map(transform).flatten(strategy)
}

Expand All @@ -951,7 +951,7 @@ extension Signal {
/// - strategy: Strategy used when flattening signals.
/// - transform: A closure that takes a value emitted by `self` and
/// returns a signal with transformed value.
public func flatMap<U>(_ strategy: FlattenStrategy, transform: @escaping (Value) -> Signal<U, Error>) -> Signal<U, Error> {
public func flatMap<U>(_ strategy: FlattenStrategy, _ transform: @escaping (Value) -> Signal<U, Error>) -> Signal<U, Error> {
return map(transform).flatten(strategy)
}

Expand All @@ -966,7 +966,7 @@ extension Signal {
/// - strategy: Strategy used when flattening signals.
/// - transform: A closure that takes a value emitted by `self` and
/// returns a signal with transformed value.
public func flatMap<U>(_ strategy: FlattenStrategy, transform: @escaping (Value) -> Signal<U, NoError>) -> Signal<U, Error> {
public func flatMap<U>(_ strategy: FlattenStrategy, _ transform: @escaping (Value) -> Signal<U, NoError>) -> Signal<U, Error> {
return map(transform).flatten(strategy)
}

Expand All @@ -981,7 +981,7 @@ extension Signal {
/// - strategy: Strategy used when flattening signals.
/// - transform: A closure that takes a value emitted by `self` and
/// returns a property with transformed value.
public func flatMap<P: PropertyProtocol>(_ strategy: FlattenStrategy, transform: @escaping (Value) -> P) -> Signal<P.Value, Error> {
public func flatMap<P: PropertyProtocol>(_ strategy: FlattenStrategy, _ transform: @escaping (Value) -> P) -> Signal<P.Value, Error> {
return map(transform).flatten(strategy)
}
}
Expand All @@ -998,7 +998,7 @@ extension Signal where Error == NoError {
/// - strategy: Strategy used when flattening signals.
/// - transform: A closure that takes a value emitted by `self` and
/// returns a signal producer with transformed value.
public func flatMap<U, E>(_ strategy: FlattenStrategy, transform: @escaping (Value) -> SignalProducer<U, E>) -> Signal<U, E> {
public func flatMap<U, E>(_ strategy: FlattenStrategy, _ transform: @escaping (Value) -> SignalProducer<U, E>) -> Signal<U, E> {
return map(transform).flatten(strategy)
}

Expand All @@ -1010,7 +1010,7 @@ extension Signal where Error == NoError {
/// - strategy: Strategy used when flattening signals.
/// - transform: A closure that takes a value emitted by `self` and
/// returns a signal producer with transformed value.
public func flatMap<U>(_ strategy: FlattenStrategy, transform: @escaping (Value) -> SignalProducer<U, NoError>) -> Signal<U, NoError> {
public func flatMap<U>(_ strategy: FlattenStrategy, _ transform: @escaping (Value) -> SignalProducer<U, NoError>) -> Signal<U, NoError> {
return map(transform).flatten(strategy)
}

Expand All @@ -1025,7 +1025,7 @@ extension Signal where Error == NoError {
/// - strategy: Strategy used when flattening signals.
/// - transform: A closure that takes a value emitted by `self` and
/// returns a signal with transformed value.
public func flatMap<U, E>(_ strategy: FlattenStrategy, transform: @escaping (Value) -> Signal<U, E>) -> Signal<U, E> {
public func flatMap<U, E>(_ strategy: FlattenStrategy, _ transform: @escaping (Value) -> Signal<U, E>) -> Signal<U, E> {
return map(transform).flatten(strategy)
}

Expand All @@ -1037,7 +1037,7 @@ extension Signal where Error == NoError {
/// - strategy: Strategy used when flattening signals.
/// - transform: A closure that takes a value emitted by `self` and
/// returns a signal with transformed value.
public func flatMap<U>(_ strategy: FlattenStrategy, transform: @escaping (Value) -> Signal<U, NoError>) -> Signal<U, NoError> {
public func flatMap<U>(_ strategy: FlattenStrategy, _ transform: @escaping (Value) -> Signal<U, NoError>) -> Signal<U, NoError> {
return map(transform).flatten(strategy)
}
}
Expand All @@ -1054,7 +1054,7 @@ extension SignalProducer {
/// - strategy: Strategy used when flattening signals.
/// - transform: A closure that takes a value emitted by `self` and
/// returns a signal producer with transformed value.
public func flatMap<U>(_ strategy: FlattenStrategy, transform: @escaping (Value) -> SignalProducer<U, Error>) -> SignalProducer<U, Error> {
public func flatMap<U>(_ strategy: FlattenStrategy, _ transform: @escaping (Value) -> SignalProducer<U, Error>) -> SignalProducer<U, Error> {
return map(transform).flatten(strategy)
}

Expand All @@ -1069,7 +1069,7 @@ extension SignalProducer {
/// - strategy: Strategy used when flattening signals.
/// - transform: A closure that takes a value emitted by `self` and
/// returns a signal producer with transformed value.
public func flatMap<U>(_ strategy: FlattenStrategy, transform: @escaping (Value) -> SignalProducer<U, NoError>) -> SignalProducer<U, Error> {
public func flatMap<U>(_ strategy: FlattenStrategy, _ transform: @escaping (Value) -> SignalProducer<U, NoError>) -> SignalProducer<U, Error> {
return map(transform).flatten(strategy)
}

Expand All @@ -1084,7 +1084,7 @@ extension SignalProducer {
/// - strategy: Strategy used when flattening signals.
/// - transform: A closure that takes a value emitted by `self` and
/// returns a signal with transformed value.
public func flatMap<U>(_ strategy: FlattenStrategy, transform: @escaping (Value) -> Signal<U, Error>) -> SignalProducer<U, Error> {
public func flatMap<U>(_ strategy: FlattenStrategy, _ transform: @escaping (Value) -> Signal<U, Error>) -> SignalProducer<U, Error> {
return map(transform).flatten(strategy)
}

Expand All @@ -1099,7 +1099,7 @@ extension SignalProducer {
/// - strategy: Strategy used when flattening signals.
/// - transform: A closure that takes a value emitted by `self` and
/// returns a signal with transformed value.
public func flatMap<U>(_ strategy: FlattenStrategy, transform: @escaping (Value) -> Signal<U, NoError>) -> SignalProducer<U, Error> {
public func flatMap<U>(_ strategy: FlattenStrategy, _ transform: @escaping (Value) -> Signal<U, NoError>) -> SignalProducer<U, Error> {
return map(transform).flatten(strategy)
}

Expand All @@ -1114,7 +1114,7 @@ extension SignalProducer {
/// - strategy: Strategy used when flattening signals.
/// - transform: A closure that takes a value emitted by `self` and
/// returns a property with transformed value.
public func flatMap<P: PropertyProtocol>(_ strategy: FlattenStrategy, transform: @escaping (Value) -> P) -> SignalProducer<P.Value, Error> {
public func flatMap<P: PropertyProtocol>(_ strategy: FlattenStrategy, _ transform: @escaping (Value) -> P) -> SignalProducer<P.Value, Error> {
return map(transform).flatten(strategy)
}
}
Expand All @@ -1131,7 +1131,7 @@ extension SignalProducer where Error == NoError {
/// - strategy: Strategy used when flattening signals.
/// - transform: A closure that takes a value emitted by `self` and
/// returns a signal producer with transformed value.
public func flatMap<U, E>(_ strategy: FlattenStrategy, transform: @escaping (Value) -> SignalProducer<U, E>) -> SignalProducer<U, E> {
public func flatMap<U, E>(_ strategy: FlattenStrategy, _ transform: @escaping (Value) -> SignalProducer<U, E>) -> SignalProducer<U, E> {
return map(transform).flatten(strategy)
}

Expand All @@ -1143,7 +1143,7 @@ extension SignalProducer where Error == NoError {
/// - strategy: Strategy used when flattening signals.
/// - transform: A closure that takes a value emitted by `self` and
/// returns a signal producer with transformed value.
public func flatMap<U>(_ strategy: FlattenStrategy, transform: @escaping (Value) -> SignalProducer<U, NoError>) -> SignalProducer<U, NoError> {
public func flatMap<U>(_ strategy: FlattenStrategy, _ transform: @escaping (Value) -> SignalProducer<U, NoError>) -> SignalProducer<U, NoError> {
return map(transform).flatten(strategy)
}

Expand All @@ -1158,7 +1158,7 @@ extension SignalProducer where Error == NoError {
/// - strategy: Strategy used when flattening signals.
/// - transform: A closure that takes a value emitted by `self` and
/// returns a signal with transformed value.
public func flatMap<U, E>(_ strategy: FlattenStrategy, transform: @escaping (Value) -> Signal<U, E>) -> SignalProducer<U, E> {
public func flatMap<U, E>(_ strategy: FlattenStrategy, _ transform: @escaping (Value) -> Signal<U, E>) -> SignalProducer<U, E> {
return map(transform).flatten(strategy)
}

Expand All @@ -1170,7 +1170,7 @@ extension SignalProducer where Error == NoError {
/// - strategy: Strategy used when flattening signals.
/// - transform: A closure that takes a value emitted by `self` and
/// returns a signal with transformed value.
public func flatMap<U>(_ strategy: FlattenStrategy, transform: @escaping (Value) -> Signal<U, NoError>) -> SignalProducer<U, NoError> {
public func flatMap<U>(_ strategy: FlattenStrategy, _ transform: @escaping (Value) -> Signal<U, NoError>) -> SignalProducer<U, NoError> {
return map(transform).flatten(strategy)
}
}
Expand All @@ -1181,11 +1181,11 @@ extension Signal {
/// producer that starts in its place.
///
/// - parameters:
/// - handler: A closure that accepts emitted error and returns a signal
/// producer with a different type of error.
public func flatMapError<F>(_ handler: @escaping (Error) -> SignalProducer<Value, F>) -> Signal<Value, F> {
/// - transform: A closure that accepts emitted error and returns a signal
/// producer with a different type of error.
public func flatMapError<F>(_ transform: @escaping (Error) -> SignalProducer<Value, F>) -> Signal<Value, F> {
return Signal<Value, F> { observer in
self.observeFlatMapError(handler, observer, SerialDisposable())
self.observeFlatMapError(transform, observer, SerialDisposable())
}
}

Expand Down Expand Up @@ -1213,17 +1213,17 @@ extension SignalProducer {
/// new producer that starts in its place.
///
/// - parameters:
/// - handler: A closure that accepts emitted error and returns a signal
/// producer with a different type of error.
public func flatMapError<F>(_ handler: @escaping (Error) -> SignalProducer<Value, F>) -> SignalProducer<Value, F> {
/// - transform: A closure that accepts emitted error and returns a signal
/// producer with a different type of error.
public func flatMapError<F>(_ transform: @escaping (Error) -> SignalProducer<Value, F>) -> SignalProducer<Value, F> {
return SignalProducer<Value, F> { observer, disposable in
let serialDisposable = SerialDisposable()
disposable += serialDisposable

self.startWithSignal { signal, signalDisposable in
serialDisposable.inner = signalDisposable

_ = signal.observeFlatMapError(handler, observer, serialDisposable)
_ = signal.observeFlatMapError(transform, observer, serialDisposable)
}
}
}
Expand Down
2 changes: 1 addition & 1 deletion Sources/Property.swift
Original file line number Diff line number Diff line change
Expand Up @@ -184,7 +184,7 @@ extension PropertyProtocol {
/// - transform: The transform to be applied on `self` before flattening.
///
/// - returns: A property that sends the values of its inner properties.
public func flatMap<P: PropertyProtocol>(_ strategy: FlattenStrategy, transform: @escaping (Value) -> P) -> Property<P.Value> {
public func flatMap<P: PropertyProtocol>(_ strategy: FlattenStrategy, _ transform: @escaping (Value) -> P) -> Property<P.Value> {
return lift { $0.flatMap(strategy) { transform($0).producer } }
}

Expand Down