@@ -90,7 +90,9 @@ extension PropertyProtocol {
9090 return Property ( unsafeProducer: transform ( self . producer) ( other. producer) )
9191 }
9292 }
93+ }
9394
95+ extension PropertyProtocol where Error == NoError {
9496 /// Maps the current value and all subsequent values to a new property.
9597 ///
9698 /// - parameters:
@@ -123,7 +125,7 @@ extension PropertyProtocol {
123125 ///
124126 /// - returns: A property that holds a tuple containing values of `self` and
125127 /// the given property.
126- public func combineLatest< P: PropertyProtocol > ( with other: P ) -> Property < ( Value , P . Value ) > {
128+ public func combineLatest< P: PropertyProtocol > ( with other: P ) -> Property < ( Value , P . Value ) > where P . Error == NoError {
127129 return Property . combineLatest ( self , other)
128130 }
129131
@@ -135,7 +137,7 @@ extension PropertyProtocol {
135137 ///
136138 /// - returns: A property that holds a tuple containing values of `self` and
137139 /// the given property.
138- public func zip< P: PropertyProtocol > ( with other: P ) -> Property < ( Value , P . Value ) > {
140+ public func zip< P: PropertyProtocol > ( with other: P ) -> Property < ( Value , P . Value ) > where P . Error == NoError {
139141 return Property . zip ( self , other)
140142 }
141143
@@ -239,56 +241,56 @@ extension PropertyProtocol where Value: Hashable {
239241extension PropertyProtocol {
240242 /// Combines the values of all the given properties, in the manner described
241243 /// by `combineLatest(with:)`.
242- public static func combineLatest< A: PropertyProtocol , B: PropertyProtocol > ( _ a: A , _ b: B ) -> Property < ( A . Value , B . Value ) > where Value == A . Value {
243- return a. lift { SignalProducer . combineLatest ( $0, b. producer ) }
244+ public static func combineLatest< A: PropertyProtocol , B: PropertyProtocol > ( _ a: A , _ b: B ) -> Property < ( A . Value , B . Value ) > where A . Value == Value , A . Error == NoError , A . Error == B . Error {
245+ return a. lift { SignalProducer . combineLatest ( $0, b) }
244246 }
245247
246248 /// Combines the values of all the given properties, in the manner described
247249 /// by `combineLatest(with:)`.
248- public static func combineLatest< A: PropertyProtocol , B: PropertyProtocol , C: PropertyProtocol > ( _ a: A , _ b: B , _ c: C ) -> Property < ( A . Value , B . Value , C . Value ) > where Value == A . Value {
249- return a. lift { SignalProducer . combineLatest ( $0, b. producer , c. producer ) }
250+ public static func combineLatest< A: PropertyProtocol , B: PropertyProtocol , C: PropertyProtocol > ( _ a: A , _ b: B , _ c: C ) -> Property < ( Value , B . Value , C . Value ) > where A . Value == Value , A . Error == NoError , A . Error == B . Error , A . Error == C . Error {
251+ return a. lift { SignalProducer . combineLatest ( $0, b, c) }
250252 }
251253
252254 /// Combines the values of all the given properties, in the manner described
253255 /// by `combineLatest(with:)`.
254- public static func combineLatest< A: PropertyProtocol , B: PropertyProtocol , C: PropertyProtocol , D: PropertyProtocol > ( _ a: A , _ b: B , _ c: C , _ d: D ) -> Property < ( A . Value , B . Value , C . Value , D . Value ) > where Value == A . Value {
255- return a. lift { SignalProducer . combineLatest ( $0, b. producer , c. producer , d. producer ) }
256+ public static func combineLatest< A: PropertyProtocol , B: PropertyProtocol , C: PropertyProtocol , D: PropertyProtocol > ( _ a: A , _ b: B , _ c: C , _ d: D ) -> Property < ( Value , B . Value , C . Value , D . Value ) > where A . Value == Value , A . Error == NoError , A . Error == B . Error , A . Error == C . Error , A . Error == D . Error {
257+ return a. lift { SignalProducer . combineLatest ( $0, b, c, d) }
256258 }
257259
258260 /// Combines the values of all the given properties, in the manner described
259261 /// by `combineLatest(with:)`.
260- public static func combineLatest< A: PropertyProtocol , B: PropertyProtocol , C: PropertyProtocol , D: PropertyProtocol , E: PropertyProtocol > ( _ a: A , _ b: B , _ c: C , _ d: D , _ e: E ) -> Property < ( A . Value , B . Value , C . Value , D . Value , E . Value ) > where Value == A . Value {
261- return a. lift { SignalProducer . combineLatest ( $0, b. producer , c. producer , d. producer , e. producer ) }
262+ public static func combineLatest< A: PropertyProtocol , B: PropertyProtocol , C: PropertyProtocol , D: PropertyProtocol , E: PropertyProtocol > ( _ a: A , _ b: B , _ c: C , _ d: D , _ e: E ) -> Property < ( Value , B . Value , C . Value , D . Value , E . Value ) > where A . Value == Value , A . Error == NoError , A . Error == B . Error , A . Error == C . Error , A . Error == D . Error , A . Error == E . Error {
263+ return a. lift { SignalProducer . combineLatest ( $0, b, c, d, e) }
262264 }
263265
264266 /// Combines the values of all the given properties, in the manner described
265267 /// by `combineLatest(with:)`.
266- public static func combineLatest< A: PropertyProtocol , B: PropertyProtocol , C: PropertyProtocol , D: PropertyProtocol , E: PropertyProtocol , F: PropertyProtocol > ( _ a: A , _ b: B , _ c: C , _ d: D , _ e: E , _ f: F ) -> Property < ( A . Value , B . Value , C . Value , D . Value , E . Value , F . Value ) > where Value == A . Value {
267- return a. lift { SignalProducer . combineLatest ( $0, b. producer , c. producer , d. producer , e. producer , f. producer ) }
268+ public static func combineLatest< A: PropertyProtocol , B: PropertyProtocol , C: PropertyProtocol , D: PropertyProtocol , E: PropertyProtocol , F: PropertyProtocol > ( _ a: A , _ b: B , _ c: C , _ d: D , _ e: E , _ f: F ) -> Property < ( Value , B . Value , C . Value , D . Value , E . Value , F . Value ) > where A . Value == Value , A . Error == NoError , A . Error == B . Error , A . Error == C . Error , A . Error == D . Error , A . Error == E . Error , A . Error == F . Error {
269+ return a. lift { SignalProducer . combineLatest ( $0, b, c, d, e, f) }
268270 }
269271
270272 /// Combines the values of all the given properties, in the manner described
271273 /// by `combineLatest(with:)`.
272- public static func combineLatest< A: PropertyProtocol , B: PropertyProtocol , C: PropertyProtocol , D: PropertyProtocol , E: PropertyProtocol , F: PropertyProtocol , G: PropertyProtocol > ( _ a: A , _ b: B , _ c: C , _ d: D , _ e: E , _ f: F , _ g: G ) -> Property < ( A . Value , B . Value , C . Value , D . Value , E . Value , F . Value , G . Value ) > where Value == A . Value {
273- return a. lift { SignalProducer . combineLatest ( $0, b. producer , c. producer , d. producer , e. producer , f. producer , g. producer ) }
274+ public static func combineLatest< A: PropertyProtocol , B: PropertyProtocol , C: PropertyProtocol , D: PropertyProtocol , E: PropertyProtocol , F: PropertyProtocol , G: PropertyProtocol > ( _ a: A , _ b: B , _ c: C , _ d: D , _ e: E , _ f: F , _ g: G ) -> Property < ( Value , B . Value , C . Value , D . Value , E . Value , F . Value , G . Value ) > where A . Value == Value , A . Error == NoError , A . Error == B . Error , A . Error == C . Error , A . Error == D . Error , A . Error == E . Error , A . Error == F . Error , A . Error == G . Error {
275+ return a. lift { SignalProducer . combineLatest ( $0, b, c, d, e, f, g) }
274276 }
275277
276278 /// Combines the values of all the given properties, in the manner described
277279 /// by `combineLatest(with:)`.
278- public static func combineLatest< A: PropertyProtocol , B: PropertyProtocol , C: PropertyProtocol , D: PropertyProtocol , E: PropertyProtocol , F: PropertyProtocol , G: PropertyProtocol , H: PropertyProtocol > ( _ a: A , _ b: B , _ c: C , _ d: D , _ e: E , _ f: F , _ g: G , _ h: H ) -> Property < ( A . Value , B . Value , C . Value , D . Value , E . Value , F . Value , G . Value , H . Value ) > where Value == A . Value {
279- return a. lift { SignalProducer . combineLatest ( $0, b. producer , c. producer , d. producer , e. producer , f. producer , g. producer , h. producer ) }
280+ public static func combineLatest< A: PropertyProtocol , B: PropertyProtocol , C: PropertyProtocol , D: PropertyProtocol , E: PropertyProtocol , F: PropertyProtocol , G: PropertyProtocol , H: PropertyProtocol > ( _ a: A , _ b: B , _ c: C , _ d: D , _ e: E , _ f: F , _ g: G , _ h: H ) -> Property < ( Value , B . Value , C . Value , D . Value , E . Value , F . Value , G . Value , H . Value ) > where A . Value == Value , A . Error == NoError , A . Error == B . Error , A . Error == C . Error , A . Error == D . Error , A . Error == E . Error , A . Error == F . Error , A . Error == G . Error , A . Error == H . Error {
281+ return a. lift { SignalProducer . combineLatest ( $0, b, c, d, e, f, g, h) }
280282 }
281283
282284 /// Combines the values of all the given properties, in the manner described
283285 /// by `combineLatest(with:)`.
284- public static func combineLatest< A: PropertyProtocol , B: PropertyProtocol , C: PropertyProtocol , D: PropertyProtocol , E: PropertyProtocol , F: PropertyProtocol , G: PropertyProtocol , H: PropertyProtocol , I: PropertyProtocol > ( _ a: A , _ b: B , _ c: C , _ d: D , _ e: E , _ f: F , _ g: G , _ h: H , _ i: I ) -> Property < ( A . Value , B . Value , C . Value , D . Value , E . Value , F . Value , G . Value , H . Value , I . Value ) > where Value == A . Value {
285- return a. lift { SignalProducer . combineLatest ( $0, b. producer , c. producer , d. producer , e. producer , f. producer , g. producer , h. producer , i. producer ) }
286+ public static func combineLatest< A: PropertyProtocol , B: PropertyProtocol , C: PropertyProtocol , D: PropertyProtocol , E: PropertyProtocol , F: PropertyProtocol , G: PropertyProtocol , H: PropertyProtocol , I: PropertyProtocol > ( _ a: A , _ b: B , _ c: C , _ d: D , _ e: E , _ f: F , _ g: G , _ h: H , _ i: I ) -> Property < ( Value , B . Value , C . Value , D . Value , E . Value , F . Value , G . Value , H . Value , I . Value ) > where A . Value == Value , A . Error == NoError , A . Error == B . Error , A . Error == C . Error , A . Error == D . Error , A . Error == E . Error , A . Error == F . Error , A . Error == G . Error , A . Error == H . Error , A . Error == I . Error {
287+ return a. lift { SignalProducer . combineLatest ( $0, b, c, d, e, f, g, h, i) }
286288 }
287289
288290 /// Combines the values of all the given properties, in the manner described
289291 /// by `combineLatest(with:)`.
290- public static func combineLatest< A: PropertyProtocol , B: PropertyProtocol , C: PropertyProtocol , D: PropertyProtocol , E: PropertyProtocol , F: PropertyProtocol , G: PropertyProtocol , H: PropertyProtocol , I: PropertyProtocol , J: PropertyProtocol > ( _ a: A , _ b: B , _ c: C , _ d: D , _ e: E , _ f: F , _ g: G , _ h: H , _ i: I , _ j: J ) -> Property < ( A . Value , B . Value , C . Value , D . Value , E . Value , F . Value , G . Value , H . Value , I . Value , J . Value ) > where Value == A . Value {
291- return a. lift { SignalProducer . combineLatest ( $0, b. producer , c. producer , d. producer , e. producer , f. producer , g. producer , h. producer , i. producer , j. producer ) }
292+ public static func combineLatest< A: PropertyProtocol , B: PropertyProtocol , C: PropertyProtocol , D: PropertyProtocol , E: PropertyProtocol , F: PropertyProtocol , G: PropertyProtocol , H: PropertyProtocol , I: PropertyProtocol , J: PropertyProtocol > ( _ a: A , _ b: B , _ c: C , _ d: D , _ e: E , _ f: F , _ g: G , _ h: H , _ i: I , _ j: J ) -> Property < ( Value , B . Value , C . Value , D . Value , E . Value , F . Value , G . Value , H . Value , I . Value , J . Value ) > where A . Value == Value , A . Error == NoError , A . Error == B . Error , A . Error == C . Error , A . Error == D . Error , A . Error == E . Error , A . Error == F . Error , A . Error == G . Error , A . Error == H . Error , A . Error == I . Error , A . Error == J . Error {
293+ return a. lift { SignalProducer . combineLatest ( $0, b, c, d, e, f, g, h, i, j) }
292294 }
293295
294296 /// Combines the values of all the given producers, in the manner described by
@@ -304,56 +306,56 @@ extension PropertyProtocol {
304306
305307 /// Zips the values of all the given properties, in the manner described by
306308 /// `zip(with:)`.
307- public static func zip< A: PropertyProtocol , B: PropertyProtocol > ( _ a: A , _ b: B ) -> Property < ( A . Value , B . Value ) > where Value == A . Value {
308- return a. lift { SignalProducer . zip ( $0, b. producer ) }
309+ public static func zip< A: PropertyProtocol , B: PropertyProtocol > ( _ a: A , _ b: B ) -> Property < ( Value , B . Value ) > where A . Value == Value , A . Error == NoError , A . Error == B . Error {
310+ return a. lift { SignalProducer . zip ( $0, b) }
309311 }
310312
311313 /// Zips the values of all the given properties, in the manner described by
312314 /// `zip(with:)`.
313- public static func zip< A: PropertyProtocol , B: PropertyProtocol , C: PropertyProtocol > ( _ a: A , _ b: B , _ c: C ) -> Property < ( A . Value , B . Value , C . Value ) > where Value == A . Value {
314- return a. lift { SignalProducer . zip ( $0, b. producer , c. producer ) }
315+ public static func zip< A: PropertyProtocol , B: PropertyProtocol , C: PropertyProtocol > ( _ a: A , _ b: B , _ c: C ) -> Property < ( Value , B . Value , C . Value ) > where A . Value == Value , A . Error == NoError , A . Error == B . Error , A . Error == C . Error {
316+ return a. lift { SignalProducer . zip ( $0, b, c) }
315317 }
316318
317319 /// Zips the values of all the given properties, in the manner described by
318320 /// `zip(with:)`.
319- public static func zip< A: PropertyProtocol , B: PropertyProtocol , C: PropertyProtocol , D: PropertyProtocol > ( _ a: A , _ b: B , _ c: C , _ d: D ) -> Property < ( A . Value , B . Value , C . Value , D . Value ) > where Value == A . Value {
320- return a. lift { SignalProducer . zip ( $0, b. producer , c. producer , d. producer ) }
321+ public static func zip< A: PropertyProtocol , B: PropertyProtocol , C: PropertyProtocol , D: PropertyProtocol > ( _ a: A , _ b: B , _ c: C , _ d: D ) -> Property < ( Value , B . Value , C . Value , D . Value ) > where A . Value == Value , A . Error == NoError , A . Error == B . Error , A . Error == C . Error , A . Error == D . Error {
322+ return a. lift { SignalProducer . zip ( $0, b, c, d) }
321323 }
322324
323325 /// Zips the values of all the given properties, in the manner described by
324326 /// `zip(with:)`.
325- public static func zip< A: PropertyProtocol , B: PropertyProtocol , C: PropertyProtocol , D: PropertyProtocol , E: PropertyProtocol > ( _ a: A , _ b: B , _ c: C , _ d: D , _ e: E ) -> Property < ( A . Value , B . Value , C . Value , D . Value , E . Value ) > where Value == A . Value {
326- return a. lift { SignalProducer . zip ( $0, b. producer , c. producer , d. producer , e. producer ) }
327+ public static func zip< A: PropertyProtocol , B: PropertyProtocol , C: PropertyProtocol , D: PropertyProtocol , E: PropertyProtocol > ( _ a: A , _ b: B , _ c: C , _ d: D , _ e: E ) -> Property < ( Value , B . Value , C . Value , D . Value , E . Value ) > where A . Value == Value , A . Error == NoError , A . Error == B . Error , A . Error == C . Error , A . Error == D . Error , A . Error == E . Error {
328+ return a. lift { SignalProducer . zip ( $0, b, c, d, e) }
327329 }
328330
329331 /// Zips the values of all the given properties, in the manner described by
330332 /// `zip(with:)`.
331- public static func zip< A: PropertyProtocol , B: PropertyProtocol , C: PropertyProtocol , D: PropertyProtocol , E: PropertyProtocol , F: PropertyProtocol > ( _ a: A , _ b: B , _ c: C , _ d: D , _ e: E , _ f: F ) -> Property < ( A . Value , B . Value , C . Value , D . Value , E . Value , F . Value ) > where Value == A . Value {
332- return a. lift { SignalProducer . zip ( $0, b. producer , c. producer , d. producer , e. producer , f. producer ) }
333+ public static func zip< A: PropertyProtocol , B: PropertyProtocol , C: PropertyProtocol , D: PropertyProtocol , E: PropertyProtocol , F: PropertyProtocol > ( _ a: A , _ b: B , _ c: C , _ d: D , _ e: E , _ f: F ) -> Property < ( Value , B . Value , C . Value , D . Value , E . Value , F . Value ) > where A . Value == Value , A . Error == NoError , A . Error == B . Error , A . Error == C . Error , A . Error == D . Error , A . Error == E . Error , A . Error == F . Error {
334+ return a. lift { SignalProducer . zip ( $0, b, c, d, e, f) }
333335 }
334336
335337 /// Zips the values of all the given properties, in the manner described by
336338 /// `zip(with:)`.
337- public static func zip< A: PropertyProtocol , B: PropertyProtocol , C: PropertyProtocol , D: PropertyProtocol , E: PropertyProtocol , F: PropertyProtocol , G: PropertyProtocol > ( _ a: A , _ b: B , _ c: C , _ d: D , _ e: E , _ f: F , _ g: G ) -> Property < ( A . Value , B . Value , C . Value , D . Value , E . Value , F . Value , G . Value ) > where Value == A . Value {
338- return a. lift { SignalProducer . zip ( $0, b. producer , c. producer , d. producer , e. producer , f. producer , g. producer ) }
339+ public static func zip< A: PropertyProtocol , B: PropertyProtocol , C: PropertyProtocol , D: PropertyProtocol , E: PropertyProtocol , F: PropertyProtocol , G: PropertyProtocol > ( _ a: A , _ b: B , _ c: C , _ d: D , _ e: E , _ f: F , _ g: G ) -> Property < ( Value , B . Value , C . Value , D . Value , E . Value , F . Value , G . Value ) > where A . Value == Value , A . Error == NoError , A . Error == B . Error , A . Error == C . Error , A . Error == D . Error , A . Error == E . Error , A . Error == F . Error , A . Error == G . Error {
340+ return a. lift { SignalProducer . zip ( $0, b, c, d, e, f, g) }
339341 }
340342
341343 /// Zips the values of all the given properties, in the manner described by
342344 /// `zip(with:)`.
343- public static func zip< A: PropertyProtocol , B: PropertyProtocol , C: PropertyProtocol , D: PropertyProtocol , E: PropertyProtocol , F: PropertyProtocol , G: PropertyProtocol , H: PropertyProtocol > ( _ a: A , _ b: B , _ c: C , _ d: D , _ e: E , _ f: F , _ g: G , _ h: H ) -> Property < ( A . Value , B . Value , C . Value , D . Value , E . Value , F . Value , G . Value , H . Value ) > where Value == A . Value {
344- return a. lift { SignalProducer . zip ( $0, b. producer , c. producer , d. producer , e. producer , f. producer , g. producer , h. producer ) }
345+ public static func zip< A: PropertyProtocol , B: PropertyProtocol , C: PropertyProtocol , D: PropertyProtocol , E: PropertyProtocol , F: PropertyProtocol , G: PropertyProtocol , H: PropertyProtocol > ( _ a: A , _ b: B , _ c: C , _ d: D , _ e: E , _ f: F , _ g: G , _ h: H ) -> Property < ( Value , B . Value , C . Value , D . Value , E . Value , F . Value , G . Value , H . Value ) > where A . Value == Value , A . Error == NoError , A . Error == B . Error , A . Error == C . Error , A . Error == D . Error , A . Error == E . Error , A . Error == F . Error , A . Error == G . Error , A . Error == H . Error {
346+ return a. lift { SignalProducer . zip ( $0, b, c, d, e, f, g, h) }
345347 }
346348
347349 /// Zips the values of all the given properties, in the manner described by
348350 /// `zip(with:)`.
349- public static func zip< A: PropertyProtocol , B: PropertyProtocol , C: PropertyProtocol , D: PropertyProtocol , E: PropertyProtocol , F: PropertyProtocol , G: PropertyProtocol , H: PropertyProtocol , I: PropertyProtocol > ( _ a: A , _ b: B , _ c: C , _ d: D , _ e: E , _ f: F , _ g: G , _ h: H , _ i: I ) -> Property < ( A . Value , B . Value , C . Value , D . Value , E . Value , F . Value , G . Value , H . Value , I . Value ) > where Value == A . Value {
350- return a. lift { SignalProducer . zip ( $0, b. producer , c. producer , d. producer , e. producer , f. producer , g. producer , h. producer , i. producer ) }
351+ public static func zip< A: PropertyProtocol , B: PropertyProtocol , C: PropertyProtocol , D: PropertyProtocol , E: PropertyProtocol , F: PropertyProtocol , G: PropertyProtocol , H: PropertyProtocol , I: PropertyProtocol > ( _ a: A , _ b: B , _ c: C , _ d: D , _ e: E , _ f: F , _ g: G , _ h: H , _ i: I ) -> Property < ( Value , B . Value , C . Value , D . Value , E . Value , F . Value , G . Value , H . Value , I . Value ) > where A . Value == Value , A . Error == NoError , A . Error == B . Error , A . Error == C . Error , A . Error == D . Error , A . Error == E . Error , A . Error == F . Error , A . Error == G . Error , A . Error == H . Error , A . Error == I . Error {
352+ return a. lift { SignalProducer . zip ( $0, b, c, d, e, f, g, h, i) }
351353 }
352354
353355 /// Zips the values of all the given properties, in the manner described by
354356 /// `zip(with:)`.
355- public static func zip< A: PropertyProtocol , B: PropertyProtocol , C: PropertyProtocol , D: PropertyProtocol , E: PropertyProtocol , F: PropertyProtocol , G: PropertyProtocol , H: PropertyProtocol , I: PropertyProtocol , J: PropertyProtocol > ( _ a: A , _ b: B , _ c: C , _ d: D , _ e: E , _ f: F , _ g: G , _ h: H , _ i: I , _ j: J ) -> Property < ( A . Value , B . Value , C . Value , D . Value , E . Value , F . Value , G . Value , H . Value , I . Value , J . Value ) > where Value == A . Value {
356- return a. lift { SignalProducer . zip ( $0, b. producer , c. producer , d. producer , e. producer , f. producer , g. producer , h. producer , i. producer , j. producer ) }
357+ public static func zip< A: PropertyProtocol , B: PropertyProtocol , C: PropertyProtocol , D: PropertyProtocol , E: PropertyProtocol , F: PropertyProtocol , G: PropertyProtocol , H: PropertyProtocol , I: PropertyProtocol , J: PropertyProtocol > ( _ a: A , _ b: B , _ c: C , _ d: D , _ e: E , _ f: F , _ g: G , _ h: H , _ i: I , _ j: J ) -> Property < ( Value , B . Value , C . Value , D . Value , E . Value , F . Value , G . Value , H . Value , I . Value , J . Value ) > where A . Value == Value , A . Error == NoError , A . Error == B . Error , A . Error == C . Error , A . Error == D . Error , A . Error == E . Error , A . Error == F . Error , A . Error == G . Error , A . Error == H . Error , A . Error == I . Error , A . Error == J . Error {
358+ return a. lift { SignalProducer . zip ( $0, b, c, d, e, f, g, h, i, j) }
357359 }
358360
359361 /// Zips the values of all the given properties, in the manner described by
0 commit comments