Skip to content

Commit b1884a3

Browse files
authored
Merge pull request #733 from nekrich/master
Fix Result extensions ambiguity
2 parents 2fa5f17 + 12cf820 commit b1884a3

File tree

8 files changed

+16
-14
lines changed

8 files changed

+16
-14
lines changed

CHANGELOG.md

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,7 @@
11
# master
22
*Please add new entries at the top.*
3+
1. Fixed Result extensions ambiguity (#733, kudos to @nekrich)
4+
35

46
# 6.0.0
57
1. Dropped support for Swift 4.2 (Xcode 9)

Sources/ResultExtensions.swift

Lines changed: 6 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -3,14 +3,14 @@ extension Result: SignalProducerConvertible {
33
return .init(result: self)
44
}
55

6-
public var value: Success? {
6+
internal var value: Success? {
77
switch self {
88
case let .success(value): return value
99
case .failure: return nil
1010
}
1111
}
1212

13-
public var error: Failure? {
13+
internal var error: Failure? {
1414
switch self {
1515
case .success: return nil
1616
case let .failure(error): return error
@@ -19,7 +19,7 @@ extension Result: SignalProducerConvertible {
1919
}
2020

2121
/// A protocol that can be used to constrain associated types as `Result`.
22-
public protocol ResultProtocol {
22+
internal protocol ResultProtocol {
2323
associatedtype Success
2424
associatedtype Failure: Swift.Error
2525

@@ -30,15 +30,15 @@ public protocol ResultProtocol {
3030
}
3131

3232
extension Result: ResultProtocol {
33-
public init(success: Success) {
33+
internal init(success: Success) {
3434
self = .success(success)
3535
}
3636

37-
public init(failure: Failure) {
37+
internal init(failure: Failure) {
3838
self = .failure(failure)
3939
}
4040

41-
public var result: Result<Success, Failure> {
41+
internal var result: Result<Success, Failure> {
4242
return self
4343
}
4444
}

Sources/Signal.swift

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -903,12 +903,12 @@ extension Signal where Value: EventProtocol, Error == Never {
903903
}
904904
}
905905

906-
extension Signal where Value: ResultProtocol, Error == Never {
906+
extension Signal where Error == Never {
907907
/// Translate a signal of `Result` _values_ into a signal of those events
908908
/// themselves.
909909
///
910910
/// - returns: A signal that sends values carried by `self` events.
911-
public func dematerializeResults() -> Signal<Value.Success, Value.Failure> {
911+
public func dematerializeResults<Success, Failure>() -> Signal<Success, Failure> where Value == Result<Success, Failure> {
912912
return flatMapEvent(Signal.Event.dematerializeResults)
913913
}
914914
}

Sources/SignalProducer.swift

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1748,12 +1748,12 @@ extension SignalProducer where Value: EventProtocol, Error == Never {
17481748
}
17491749
}
17501750

1751-
extension SignalProducer where Value: ResultProtocol, Error == Never {
1751+
extension SignalProducer where Error == Never {
17521752
/// The inverse of materializeResults(), this will translate a producer of `Result`
17531753
/// _values_ into a producer of those events themselves.
17541754
///
17551755
/// - returns: A producer that sends values carried by `self` results.
1756-
public func dematerializeResults() -> SignalProducer<Value.Success, Value.Failure> {
1756+
public func dematerializeResults<Success, Failure>() -> SignalProducer<Success, Failure> where Value == Result<Success, Failure> {
17571757
return core.flatMapEvent(Signal.Event.dematerializeResults)
17581758
}
17591759
}

Tests/ReactiveSwiftTests/ActionSpec.swift

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -10,7 +10,7 @@ import Foundation
1010
import Dispatch
1111
import Nimble
1212
import Quick
13-
import ReactiveSwift
13+
@testable import ReactiveSwift
1414

1515
class ActionSpec: QuickSpec {
1616
override func spec() {

Tests/ReactiveSwiftTests/FlattenSpec.swift

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -8,7 +8,7 @@
88

99
import Nimble
1010
import Quick
11-
import ReactiveSwift
11+
@testable import ReactiveSwift
1212
import Dispatch
1313

1414
private extension Signal {

Tests/ReactiveSwiftTests/ReactiveExtensionsSpec.swift

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
import Nimble
22
import Quick
3-
import ReactiveSwift
3+
@testable import ReactiveSwift
44

55
private final class TestExtensionProvider: ReactiveExtensionsProvider {
66
let instanceProperty = "instance"

Tests/ReactiveSwiftTests/SignalProducerSpec.swift

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -11,7 +11,7 @@ import Foundation
1111

1212
import Nimble
1313
import Quick
14-
import ReactiveSwift
14+
@testable import ReactiveSwift
1515

1616
class SignalProducerSpec: QuickSpec {
1717
override func spec() {

0 commit comments

Comments
 (0)