@@ -67,9 +67,8 @@ class CompletenessTest extends JUnitSuite {
6767 */
6868 def correspondenceChanges = Map (
6969 // manually added entries for Java instance methods
70- " aggregate(Func2[T, T, T])" -> " reduce((U, U) => U)" ,
71- " aggregate(R, Func2[R, _ >: T, R])" -> " foldLeft(R)((R, T) => R)" ,
7270 " all(Func1[_ >: T, Boolean])" -> " forall(T => Boolean)" ,
71+ " ambWith(Observable[_ <: T])" -> " amb(Observable[U])" ,
7372 " asObservable()" -> unnecessary,
7473 " buffer(Int)" -> " tumblingBuffer(Int)" ,
7574 " buffer(Int, Int)" -> " slidingBuffer(Int, Int)" ,
@@ -85,22 +84,25 @@ class CompletenessTest extends JUnitSuite {
8584 " buffer(Observable[_ <: TOpening], Func1[_ >: TOpening, _ <: Observable[_ <: TClosing]])" -> " slidingBuffer(Observable[Opening])(Opening => Observable[Any])" ,
8685 " cast(Class[R])" -> " [RxJava needs this one because `rx.Observable` is invariant. `Observable` in RxScala is covariant and does not need this operator.]" ,
8786 " collect(R, Action2[R, _ >: T])" -> " foldLeft(R)((R, T) => R)" ,
87+ " concatWith(Observable[_ <: T])" -> " [use `o1 ++ o2`]" ,
8888 " contains(Any)" -> " contains(U)" ,
8989 " count()" -> " length" ,
9090 " debounce(Func1[_ >: T, _ <: Observable[U]])" -> " debounce(T => Observable[Any])" ,
9191 " defaultIfEmpty(T)" -> " orElse(=> U)" ,
9292 " delay(Func0[_ <: Observable[U]], Func1[_ >: T, _ <: Observable[V]])" -> " delay(() => Observable[Any], T => Observable[Any])" ,
9393 " delay(Func1[_ >: T, _ <: Observable[U]])" -> " delay(T => Observable[Any])" ,
9494 " dematerialize()" -> " dematerialize(<:<[Observable[T], Observable[Notification[U]]])" ,
95+ " doOnCompleted(Action0)" -> " doOnCompleted(=> Unit)" ,
9596 " doOnEach(Action1[Notification[_ >: T]])" -> " [use `doOnEach(T => Unit, Throwable => Unit, () => Unit)`]" ,
97+ " doOnTerminate(Action0)" -> " doOnTerminate(=> Unit)" ,
9698 " elementAtOrDefault(Int, T)" -> " elementAtOrDefault(Int, U)" ,
99+ " finallyDo(Action0)" -> " finallyDo(=> Unit)" ,
97100 " first(Func1[_ >: T, Boolean])" -> commentForFirstWithPredicate,
98101 " firstOrDefault(T)" -> " firstOrElse(=> U)" ,
99102 " firstOrDefault(T, Func1[_ >: T, Boolean])" -> " [use `.filter(condition).firstOrElse(default)`]" ,
100103 " forEach(Action1[_ >: T])" -> " foreach(T => Unit)" ,
101104 " forEach(Action1[_ >: T], Action1[Throwable])" -> " foreach(T => Unit, Throwable => Unit)" ,
102105 " forEach(Action1[_ >: T], Action1[Throwable], Action0)" -> " foreach(T => Unit, Throwable => Unit, () => Unit)" ,
103- " groupBy(Func1[_ >: T, _ <: K], Func1[_ >: T, _ <: R])" -> " [use `groupBy` and `map`]" ,
104106 " groupByUntil(Func1[_ >: T, _ <: TKey], Func1[_ >: GroupedObservable[TKey, T], _ <: Observable[_ <: TDuration]])" -> " groupByUntil(T => K)((K, Observable[T]) => Observable[Any])" ,
105107 " groupByUntil(Func1[_ >: T, _ <: TKey], Func1[_ >: T, _ <: TValue], Func1[_ >: GroupedObservable[TKey, TValue], _ <: Observable[_ <: TDuration]])" -> " groupByUntil(T => K, T => V)((K, Observable[V]) => Observable[Any])" ,
106108 " groupJoin(Observable[T2], Func1[_ >: T, _ <: Observable[D1]], Func1[_ >: T2, _ <: Observable[D2]], Func2[_ >: T, _ >: Observable[T2], _ <: R])" -> " groupJoin(Observable[S])(T => Observable[Any], S => Observable[Any], (T, Observable[S]) => R)" ,
@@ -111,12 +113,12 @@ class CompletenessTest extends JUnitSuite {
111113 " lastOrDefault(T, Func1[_ >: T, Boolean])" -> " [use `filter(predicate).lastOrElse(default)`]" ,
112114 " lift(Operator[_ <: R, _ >: T])" -> " lift(Subscriber[R] => Subscriber[T])" ,
113115 " limit(Int)" -> " take(Int)" ,
114- " mapWithIndex(Func2[_ >: T, Integer, _ <: R])" -> " [combine `zipWithIndex` with `map` or with a for comprehension]" ,
115116 " mergeMap(Func1[_ >: T, _ <: Observable[_ <: R]])" -> " flatMap(T => Observable[R])" ,
116117 " mergeMap(Func1[_ >: T, _ <: Observable[_ <: R]], Func1[_ >: Throwable, _ <: Observable[_ <: R]], Func0[_ <: Observable[_ <: R]])" -> " flatMap(T => Observable[R], Throwable => Observable[R], () => Observable[R])" ,
117118 " mergeMap(Func1[_ >: T, _ <: Observable[_ <: U]], Func2[_ >: T, _ >: U, _ <: R])" -> " flatMapWith(T => Observable[U])((T, U) => R)" ,
118119 " mergeMapIterable(Func1[_ >: T, _ <: Iterable[_ <: R]])" -> " flatMapIterable(T => Iterable[R])" ,
119120 " mergeMapIterable(Func1[_ >: T, _ <: Iterable[_ <: U]], Func2[_ >: T, _ >: U, _ <: R])" -> " flatMapIterableWith(T => Iterable[U])((T, U) => R)" ,
121+ " mergeWith(Observable[_ <: T])" -> " merge(Observable[U])" ,
120122 " multicast(Subject[_ >: T, _ <: R])" -> " multicast(Subject[R])" ,
121123 " multicast(Func0[_ <: Subject[_ >: T, _ <: TIntermediate]], Func1[_ >: Observable[TIntermediate], _ <: Observable[TResult]])" -> " multicast(() => Subject[R])(Observable[R] => Observable[U])" ,
122124 " ofType(Class[R])" -> " [use `filter(_.isInstanceOf[Class])" ,
@@ -127,20 +129,19 @@ class CompletenessTest extends JUnitSuite {
127129 " onErrorFlatMap(Func1[OnErrorThrowable, _ <: Observable[_ <: T]])" -> " onErrorFlatMap((Throwable, Option[Any]) => Observable[U])" ,
128130 " parallel(Func1[Observable[T], Observable[R]])" -> " parallel(Observable[T] => Observable[R])" ,
129131 " parallel(Func1[Observable[T], Observable[R]], Scheduler)" -> " parallel(Observable[T] => Observable[R], Scheduler)" ,
130- " publish(T)" -> " publish(U)" ,
131- " publish(Func1[_ >: Observable[T], _ <: Observable[R]])" -> " publish(Observable[U] => Observable[R])" ,
132- " publish(Func1[_ >: Observable[T], _ <: Observable[R]], T)" -> " publish(Observable[U] => Observable[R], U)" ,
132+ " publish(Func1[_ >: Observable[T], _ <: Observable[R]])" -> " publish(Observable[T] => Observable[R])" ,
133+ " publish(Func1[_ >: Observable[T], _ <: Observable[R]], T)" -> " publish(Observable[T] => Observable[R], T @uncheckedVariance)" ,
133134 " publishLast(Func1[_ >: Observable[T], _ <: Observable[R]])" -> " publishLast(Observable[T] => Observable[R])" ,
134135 " reduce(Func2[T, T, T])" -> " reduce((U, U) => U)" ,
135136 " reduce(R, Func2[R, _ >: T, R])" -> " foldLeft(R)((R, T) => R)" ,
136- " replay(Func1[_ >: Observable[T], _ <: Observable[R]])" -> " replay(Observable[U ] => Observable[R])" ,
137- " replay(Func1[_ >: Observable[T], _ <: Observable[R]], Int)" -> " replay(Observable[U ] => Observable[R], Int)" ,
138- " replay(Func1[_ >: Observable[T], _ <: Observable[R]], Int, Long, TimeUnit)" -> " replay(Observable[U ] => Observable[R], Int, Duration)" ,
139- " replay(Func1[_ >: Observable[T], _ <: Observable[R]], Int, Long, TimeUnit, Scheduler)" -> " replay(Observable[U ] => Observable[R], Int, Duration, Scheduler)" ,
140- " replay(Func1[_ >: Observable[T], _ <: Observable[R]], Int, Scheduler)" -> " replay(Observable[U ] => Observable[R], Int, Scheduler)" ,
141- " replay(Func1[_ >: Observable[T], _ <: Observable[R]], Long, TimeUnit)" -> " replay(Observable[U ] => Observable[R], Duration)" ,
142- " replay(Func1[_ >: Observable[T], _ <: Observable[R]], Long, TimeUnit, Scheduler)" -> " replay(Observable[U ] => Observable[R], Duration, Scheduler)" ,
143- " replay(Func1[_ >: Observable[T], _ <: Observable[R]], Scheduler)" -> " replay(Observable[U ] => Observable[R], Scheduler)" ,
137+ " replay(Func1[_ >: Observable[T], _ <: Observable[R]])" -> " replay(Observable[T ] => Observable[R])" ,
138+ " replay(Func1[_ >: Observable[T], _ <: Observable[R]], Int)" -> " replay(Observable[T ] => Observable[R], Int)" ,
139+ " replay(Func1[_ >: Observable[T], _ <: Observable[R]], Int, Long, TimeUnit)" -> " replay(Observable[T ] => Observable[R], Int, Duration)" ,
140+ " replay(Func1[_ >: Observable[T], _ <: Observable[R]], Int, Long, TimeUnit, Scheduler)" -> " replay(Observable[T ] => Observable[R], Int, Duration, Scheduler)" ,
141+ " replay(Func1[_ >: Observable[T], _ <: Observable[R]], Int, Scheduler)" -> " replay(Observable[T ] => Observable[R], Int, Scheduler)" ,
142+ " replay(Func1[_ >: Observable[T], _ <: Observable[R]], Long, TimeUnit)" -> " replay(Observable[T ] => Observable[R], Duration)" ,
143+ " replay(Func1[_ >: Observable[T], _ <: Observable[R]], Long, TimeUnit, Scheduler)" -> " replay(Observable[T ] => Observable[R], Duration, Scheduler)" ,
144+ " replay(Func1[_ >: Observable[T], _ <: Observable[R]], Scheduler)" -> " replay(Observable[T ] => Observable[R], Scheduler)" ,
144145 " retry(Func2[Integer, Throwable, Boolean])" -> " retry((Int, Throwable) => Boolean)" ,
145146 " sample(Observable[U])" -> " sample(Observable[Any])" ,
146147 " scan(Func2[T, T, T])" -> unnecessary,
@@ -153,9 +154,8 @@ class CompletenessTest extends JUnitSuite {
153154 " skip(Long, TimeUnit, Scheduler)" -> " drop(Duration, Scheduler)" ,
154155 " skipWhile(Func1[_ >: T, Boolean])" -> " dropWhile(T => Boolean)" ,
155156 " skipWhileWithIndex(Func2[_ >: T, Integer, Boolean])" -> unnecessary,
156- " skipUntil(Observable[U])" -> " dropUntil(Observable[E ])" ,
157+ " skipUntil(Observable[U])" -> " dropUntil(Observable[Any ])" ,
157158 " startWith(T)" -> " [use `item +: o`]" ,
158- " startWith(Array[T])" -> " [use `Observable.items(items) ++ o`]" ,
159159 " startWith(Array[T], Scheduler)" -> " [use `Observable.items(items).subscribeOn(scheduler) ++ o`]" ,
160160 " startWith(Iterable[T])" -> " [use `Observable.from(iterable) ++ o`]" ,
161161 " startWith(Iterable[T], Scheduler)" -> " [use `Observable.from(iterable).subscribeOn(scheduler) ++ o`]" ,
@@ -175,9 +175,12 @@ class CompletenessTest extends JUnitSuite {
175175 " takeLastBuffer(Int, Long, TimeUnit, Scheduler)" -> commentForTakeLastBuffer,
176176 " takeLastBuffer(Long, TimeUnit)" -> commentForTakeLastBuffer,
177177 " takeLastBuffer(Long, TimeUnit, Scheduler)" -> commentForTakeLastBuffer,
178+ " takeUntil(Observable[_ <: E])" -> " takeUntil(Observable[Any])" ,
178179 " takeWhileWithIndex(Func2[_ >: T, _ >: Integer, Boolean])" -> " [use `.zipWithIndex.takeWhile{case (elem, index) => condition}.map(_._1)`]" ,
179- " timeout(Func0[_ <: Observable[U]], Func1[_ >: T, _ <: Observable[V]], Observable[_ <: T])" -> " timeout(() => Observable[U], T => Observable[V], Observable[O])" ,
180- " timeout(Func1[_ >: T, _ <: Observable[V]], Observable[_ <: T])" -> " timeout(() => Observable[U], T => Observable[V])" ,
180+ " timeout(Func0[_ <: Observable[U]], Func1[_ >: T, _ <: Observable[V]], Observable[_ <: T])" -> " timeout(() => Observable[Any], T => Observable[Any], Observable[U])" ,
181+ " timeout(Func1[_ >: T, _ <: Observable[V]], Observable[_ <: T])" -> " timeout(T => Observable[Any], Observable[U])" ,
182+ " timeout(Func0[_ <: Observable[U]], Func1[_ >: T, _ <: Observable[V]])" -> " timeout(() => Observable[Any], T => Observable[Any])" ,
183+ " timeout(Func1[_ >: T, _ <: Observable[V]])" -> " timeout(T => Observable[Any])" ,
181184 " timeout(Long, TimeUnit, Observable[_ <: T])" -> " timeout(Duration, Observable[U])" ,
182185 " timeout(Long, TimeUnit, Observable[_ <: T], Scheduler)" -> " timeout(Duration, Observable[U], Scheduler)" ,
183186 " timer(Long, Long, TimeUnit)" -> " timer(Duration, Duration)" ,
@@ -201,17 +204,12 @@ class CompletenessTest extends JUnitSuite {
201204
202205 // manually added entries for Java static methods
203206 " amb(Iterable[_ <: Observable[_ <: T]])" -> " amb(Observable[T]*)" ,
204- " average(Observable[Integer])" -> averageProblem,
205- " averageDoubles(Observable[Double])" -> averageProblem,
206- " averageFloats(Observable[Float])" -> averageProblem,
207- " averageLongs(Observable[Long])" -> averageProblem,
208207 " create(OnSubscribeFunc[T])" -> " create(Observer[T] => Subscription)" ,
209208 " create(OnSubscribe[T])" -> " apply(Subscriber[T] => Unit)" ,
210209 " combineLatest(Observable[_ <: T1], Observable[_ <: T2], Func2[_ >: T1, _ >: T2, _ <: R])" -> " combineLatest(Observable[U])" ,
211210 " combineLatest(List[_ <: Observable[_ <: T]], FuncN[_ <: R])" -> " combineLatest(Seq[Observable[T]])(Seq[T] => R)" ,
212211 " concat(Observable[_ <: Observable[_ <: T]])" -> " concat(<:<[Observable[T], Observable[Observable[U]]])" ,
213212 " defer(Func0[_ <: Observable[_ <: T]])" -> " defer(=> Observable[T])" ,
214- " from(Array[T])" -> " items(T*)" ,
215213 " from(<repeated...>[T])" -> " items(T*)" ,
216214 " from(Array[T], Scheduler)" -> " from(Iterable[T], Scheduler)" ,
217215 " from(Iterable[_ <: T])" -> " from(Iterable[T])" ,
@@ -233,16 +231,10 @@ class CompletenessTest extends JUnitSuite {
233231 " mergeDelayError(Observable[_ <: Observable[_ <: T]])" -> " flattenDelayError(<:<[Observable[T], Observable[Observable[U]]])" ,
234232 " parallelMerge(Observable[Observable[T]], Int)" -> " parallelMerge(Int)(<:<[Observable[T], Observable[Observable[U]]])" ,
235233 " parallelMerge(Observable[Observable[T]], Int, Scheduler)" -> " parallelMerge(Int, Scheduler)(<:<[Observable[T], Observable[Observable[U]]])" ,
236- " pivot(Observable[GroupedObservable[K1, GroupedObservable[K2, T]]])" -> " pivot(<:<[Observable[T], Observable[(K1, Observable[(K2, Observable[U])])]])" ,
237234 " sequenceEqual(Observable[_ <: T], Observable[_ <: T])" -> " sequenceEqual(Observable[U])" ,
238235 " sequenceEqual(Observable[_ <: T], Observable[_ <: T], Func2[_ >: T, _ >: T, Boolean])" -> " sequenceEqualWith(Observable[U])((U, U) => Boolean)" ,
239236 " range(Int, Int)" -> " [use `(start until (start + count)).toObservable` instead of `range(start, count)`]" ,
240237 " range(Int, Int, Scheduler)" -> " [use `(start until (start + count)).toObservable.subscribeOn(scheduler)` instead of `range(start, count, scheduler)`]`]" ,
241- " sum(Observable[Integer])" -> " sum(Numeric[U])" ,
242- " sumDoubles(Observable[Double])" -> " sum(Numeric[U])" ,
243- " sumFloats(Observable[Float])" -> " sum(Numeric[U])" ,
244- " sumLongs(Observable[Long])" -> " sum(Numeric[U])" ,
245- " switchDo(Observable[_ <: Observable[_ <: T]])" -> deprecated,
246238 " switchOnNext(Observable[_ <: Observable[_ <: T]])" -> " switch(<:<[Observable[T], Observable[Observable[U]]])" ,
247239 " zip(Observable[_ <: T1], Observable[_ <: T2], Func2[_ >: T1, _ >: T2, _ <: R])" -> " [use instance method `zip` and `map`]" ,
248240 " zip(Observable[_ <: Observable[_]], FuncN[_ <: R])" -> " [use `zip` in companion object and `map`]" ,
0 commit comments