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
2 changes: 2 additions & 0 deletions CHANGELOG.md
Original file line number Diff line number Diff line change
@@ -1,5 +1,7 @@
# master
*Please add new entries at the top.*
1. Fixed Result extensions ambiguity (#733, kudos to @nekrich)


# 6.0.0
1. Dropped support for Swift 4.2 (Xcode 9)
Expand Down
12 changes: 6 additions & 6 deletions Sources/ResultExtensions.swift
Original file line number Diff line number Diff line change
Expand Up @@ -3,14 +3,14 @@ extension Result: SignalProducerConvertible {
return .init(result: self)
}

public var value: Success? {
internal var value: Success? {
switch self {
case let .success(value): return value
case .failure: return nil
}
}

public var error: Failure? {
internal var error: Failure? {
switch self {
case .success: return nil
case let .failure(error): return error
Expand All @@ -19,7 +19,7 @@ extension Result: SignalProducerConvertible {
}

/// A protocol that can be used to constrain associated types as `Result`.
public protocol ResultProtocol {
internal protocol ResultProtocol {
associatedtype Success
associatedtype Failure: Swift.Error

Expand All @@ -30,15 +30,15 @@ public protocol ResultProtocol {
}

extension Result: ResultProtocol {
public init(success: Success) {
internal init(success: Success) {
self = .success(success)
}

public init(failure: Failure) {
internal init(failure: Failure) {
self = .failure(failure)
}

public var result: Result<Success, Failure> {
internal var result: Result<Success, Failure> {
return self
}
}
4 changes: 2 additions & 2 deletions Sources/Signal.swift
Original file line number Diff line number Diff line change
Expand Up @@ -903,12 +903,12 @@ extension Signal where Value: EventProtocol, Error == Never {
}
}

extension Signal where Value: ResultProtocol, Error == Never {
extension Signal where Error == Never {
/// Translate a signal of `Result` _values_ into a signal of those events
/// themselves.
///
/// - returns: A signal that sends values carried by `self` events.
public func dematerializeResults() -> Signal<Value.Success, Value.Failure> {
public func dematerializeResults<Success, Failure>() -> Signal<Success, Failure> where Value == Result<Success, Failure> {
return flatMapEvent(Signal.Event.dematerializeResults)
}
}
Expand Down
4 changes: 2 additions & 2 deletions Sources/SignalProducer.swift
Original file line number Diff line number Diff line change
Expand Up @@ -1748,12 +1748,12 @@ extension SignalProducer where Value: EventProtocol, Error == Never {
}
}

extension SignalProducer where Value: ResultProtocol, Error == Never {
extension SignalProducer where Error == Never {
/// The inverse of materializeResults(), this will translate a producer of `Result`
/// _values_ into a producer of those events themselves.
///
/// - returns: A producer that sends values carried by `self` results.
public func dematerializeResults() -> SignalProducer<Value.Success, Value.Failure> {
public func dematerializeResults<Success, Failure>() -> SignalProducer<Success, Failure> where Value == Result<Success, Failure> {
return core.flatMapEvent(Signal.Event.dematerializeResults)
}
}
Expand Down
2 changes: 1 addition & 1 deletion Tests/ReactiveSwiftTests/ActionSpec.swift
Original file line number Diff line number Diff line change
Expand Up @@ -10,7 +10,7 @@ import Foundation
import Dispatch
import Nimble
import Quick
import ReactiveSwift
@testable import ReactiveSwift

class ActionSpec: QuickSpec {
override func spec() {
Expand Down
2 changes: 1 addition & 1 deletion Tests/ReactiveSwiftTests/FlattenSpec.swift
Original file line number Diff line number Diff line change
Expand Up @@ -8,7 +8,7 @@

import Nimble
import Quick
import ReactiveSwift
@testable import ReactiveSwift
import Dispatch

private extension Signal {
Expand Down
2 changes: 1 addition & 1 deletion Tests/ReactiveSwiftTests/ReactiveExtensionsSpec.swift
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
import Nimble
import Quick
import ReactiveSwift
@testable import ReactiveSwift

private final class TestExtensionProvider: ReactiveExtensionsProvider {
let instanceProperty = "instance"
Expand Down
2 changes: 1 addition & 1 deletion Tests/ReactiveSwiftTests/SignalProducerSpec.swift
Original file line number Diff line number Diff line change
Expand Up @@ -11,7 +11,7 @@ import Foundation

import Nimble
import Quick
import ReactiveSwift
@testable import ReactiveSwift

class SignalProducerSpec: QuickSpec {
override func spec() {
Expand Down