Skip to content

Commit bc1dbd6

Browse files
committed
Fix errors in Completeness.scala and also improve it
1 parent b58860b commit bc1dbd6

File tree

2 files changed

+18
-15
lines changed

2 files changed

+18
-15
lines changed

language-adaptors/rxjava-scala/src/main/scala/rx/lang/scala/Observable.scala

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -3138,7 +3138,7 @@ trait Observable[+T]
31383138
* Number of retry attempts before failing.
31393139
* @return Observable with retry logic.
31403140
*/
3141-
def retry(retryCount: Int): Observable[T] = {
3141+
def retry(retryCount: Long): Observable[T] = {
31423142
toScalaObservable[T](asJavaObservable.retry(retryCount))
31433143
}
31443144

@@ -4507,7 +4507,7 @@ object Observable {
45074507
* factory function
45084508
*/
45094509
def defer[T](observable: => Observable[T]): Observable[T] = {
4510-
toScalaObservable[T](rx.Observable.defer[T](() => observable.asJavaObservable))
4510+
toScalaObservable[T](rx.Observable.defer[T](() => observable.asJavaObservable.asInstanceOf[rx.Observable[T]]))
45114511
}
45124512

45134513
/**

language-adaptors/rxjava-scala/src/test/scala/rx/lang/scala/CompletenessTest.scala

Lines changed: 16 additions & 13 deletions
Original file line numberDiff line numberDiff line change
@@ -113,27 +113,25 @@ class CompletenessTest extends JUnitSuite {
113113
"lastOrDefault(T, Func1[_ >: T, Boolean])" -> "[use `filter(predicate).lastOrElse(default)`]",
114114
"lift(Operator[_ <: R, _ >: T])" -> "lift(Subscriber[R] => Subscriber[T])",
115115
"limit(Int)" -> "take(Int)",
116-
"mergeMap(Func1[_ >: T, _ <: Observable[_ <: R]])" -> "flatMap(T => Observable[R])",
117-
"mergeMap(Func1[_ >: T, _ <: Observable[_ <: R]], Func1[_ >: Throwable, _ <: Observable[_ <: R]], Func0[_ <: Observable[_ <: R]])" -> "flatMap(T => Observable[R], Throwable => Observable[R], () => Observable[R])",
118-
"mergeMap(Func1[_ >: T, _ <: Observable[_ <: U]], Func2[_ >: T, _ >: U, _ <: R])" -> "flatMapWith(T => Observable[U])((T, U) => R)",
119-
"mergeMapIterable(Func1[_ >: T, _ <: Iterable[_ <: R]])" -> "flatMapIterable(T => Iterable[R])",
120-
"mergeMapIterable(Func1[_ >: T, _ <: Iterable[_ <: U]], Func2[_ >: T, _ >: U, _ <: R])" -> "flatMapIterableWith(T => Iterable[U])((T, U) => R)",
116+
"flatMap(Func1[_ >: T, _ <: Observable[_ <: U]], Func2[_ >: T, _ >: U, _ <: R])" -> "flatMapWith(T => Observable[U])((T, U) => R)",
117+
"flatMapIterable(Func1[_ >: T, _ <: Iterable[_ <: U]], Func2[_ >: T, _ >: U, _ <: R])" -> "flatMapIterableWith(T => Iterable[U])((T, U) => R)",
121118
"mergeWith(Observable[_ <: T])" -> "merge(Observable[U])",
122119
"multicast(Subject[_ >: T, _ <: R])" -> "multicast(Subject[R])",
123120
"multicast(Func0[_ <: Subject[_ >: T, _ <: TIntermediate]], Func1[_ >: Observable[TIntermediate], _ <: Observable[TResult]])" -> "multicast(() => Subject[R])(Observable[R] => Observable[U])",
124-
"ofType(Class[R])" -> "[use `filter(_.isInstanceOf[Class])",
121+
"ofType(Class[R])" -> "[use `filter(_.isInstanceOf[Class])`]",
125122
"onErrorResumeNext(Func1[Throwable, _ <: Observable[_ <: T]])" -> "onErrorResumeNext(Throwable => Observable[U])",
126123
"onErrorResumeNext(Observable[_ <: T])" -> "onErrorResumeNext(Observable[U])",
127124
"onErrorReturn(Func1[Throwable, _ <: T])" -> "onErrorReturn(Throwable => U)",
128125
"onExceptionResumeNext(Observable[_ <: T])" -> "onExceptionResumeNext(Observable[U])",
129-
"onErrorFlatMap(Func1[OnErrorThrowable, _ <: Observable[_ <: T]])" -> "onErrorFlatMap((Throwable, Option[Any]) => Observable[U])",
130126
"parallel(Func1[Observable[T], Observable[R]])" -> "parallel(Observable[T] => Observable[R])",
131127
"parallel(Func1[Observable[T], Observable[R]], Scheduler)" -> "parallel(Observable[T] => Observable[R], Scheduler)",
132128
"publish(Func1[_ >: Observable[T], _ <: Observable[R]])" -> "publish(Observable[T] => Observable[R])",
133129
"publish(Func1[_ >: Observable[T], _ <: Observable[R]], T)" -> "publish(Observable[T] => Observable[R], T @uncheckedVariance)",
134130
"publishLast(Func1[_ >: Observable[T], _ <: Observable[R]])" -> "publishLast(Observable[T] => Observable[R])",
135131
"reduce(Func2[T, T, T])" -> "reduce((U, U) => U)",
136132
"reduce(R, Func2[R, _ >: T, R])" -> "foldLeft(R)((R, T) => R)",
133+
"repeatWhen(Func1[_ >: Observable[_ <: Notification[_]], _ <: Observable[_ <: Notification[_]]])" -> "repeatWhen(Observable[Notification[Any]] => Observable[Notification[Any]])",
134+
"repeatWhen(Func1[_ >: Observable[_ <: Notification[_]], _ <: Observable[_ <: Notification[_]]], Scheduler)" -> "repeatWhen(Observable[Notification[Any]] => Observable[Notification[Any]], Scheduler)",
137135
"replay(Func1[_ >: Observable[T], _ <: Observable[R]])" -> "replay(Observable[T] => Observable[R])",
138136
"replay(Func1[_ >: Observable[T], _ <: Observable[R]], Int)" -> "replay(Observable[T] => Observable[R], Int)",
139137
"replay(Func1[_ >: Observable[T], _ <: Observable[R]], Int, Long, TimeUnit)" -> "replay(Observable[T] => Observable[R], Int, Duration)",
@@ -143,6 +141,8 @@ class CompletenessTest extends JUnitSuite {
143141
"replay(Func1[_ >: Observable[T], _ <: Observable[R]], Long, TimeUnit, Scheduler)" -> "replay(Observable[T] => Observable[R], Duration, Scheduler)",
144142
"replay(Func1[_ >: Observable[T], _ <: Observable[R]], Scheduler)" -> "replay(Observable[T] => Observable[R], Scheduler)",
145143
"retry(Func2[Integer, Throwable, Boolean])" -> "retry((Int, Throwable) => Boolean)",
144+
"retryWhen(Func1[_ >: Observable[_ <: Notification[_]], _ <: Observable[_ <: Notification[_]]], Scheduler)" -> "retryWhen(Observable[Notification[Any]] => Observable[Notification[Any]], Scheduler)",
145+
"retryWhen(Func1[_ >: Observable[_ <: Notification[_]], _ <: Observable[_]])" -> "retryWhen(Observable[Notification[Any]] => Observable[Any])",
146146
"sample(Observable[U])" -> "sample(Observable[Any])",
147147
"scan(Func2[T, T, T])" -> unnecessary,
148148
"scan(R, Func2[R, _ >: T, R])" -> "scan(R)((R, T) => R)",
@@ -204,12 +204,11 @@ class CompletenessTest extends JUnitSuite {
204204

205205
// manually added entries for Java static methods
206206
"amb(Iterable[_ <: Observable[_ <: T]])" -> "amb(Observable[T]*)",
207-
"create(OnSubscribeFunc[T])" -> "create(Observer[T] => Subscription)",
208207
"create(OnSubscribe[T])" -> "apply(Subscriber[T] => Unit)",
209208
"combineLatest(Observable[_ <: T1], Observable[_ <: T2], Func2[_ >: T1, _ >: T2, _ <: R])" -> "combineLatest(Observable[U])",
210209
"combineLatest(List[_ <: Observable[_ <: T]], FuncN[_ <: R])" -> "combineLatest(Seq[Observable[T]])(Seq[T] => R)",
211210
"concat(Observable[_ <: Observable[_ <: T]])" -> "concat(<:<[Observable[T], Observable[Observable[U]]])",
212-
"defer(Func0[_ <: Observable[_ <: T]])" -> "defer(=> Observable[T])",
211+
"defer(Func0[Observable[T]])" -> "defer(=> Observable[T])",
213212
"from(<repeated...>[T])" -> "items(T*)",
214213
"from(Array[T], Scheduler)" -> "from(Iterable[T], Scheduler)",
215214
"from(Iterable[_ <: T])" -> "from(Iterable[T])",
@@ -225,7 +224,7 @@ class CompletenessTest extends JUnitSuite {
225224
"merge(Array[Observable[_ <: T]], Scheduler)" -> "[use `Observable.from(array, scheduler).flatten`]",
226225
"merge(Iterable[_ <: Observable[_ <: T]])" -> "[use `Observable.from(iter).flatten`]",
227226
"merge(Iterable[_ <: Observable[_ <: T]], Int)" -> "[use `Observable.from(iter).flatten(n)`]",
228-
"merge(Iterable[_ <: Observable[_ <: T]], Int, Scheduler)" -> "[use `Observable.from(iter, scheduler).flatten(n)]",
227+
"merge(Iterable[_ <: Observable[_ <: T]], Int, Scheduler)" -> "[use `Observable.from(iter, scheduler).flatten(n)`]",
229228
"merge(Iterable[_ <: Observable[_ <: T]], Scheduler)" -> "[use `Observable.from(iter, scheduler).flatten`]",
230229
"mergeDelayError(Observable[_ <: T], Observable[_ <: T])" -> "mergeDelayError(Observable[U])",
231230
"mergeDelayError(Observable[_ <: Observable[_ <: T]])" -> "flattenDelayError(<:<[Observable[T], Observable[Observable[U]]])",
@@ -234,12 +233,12 @@ class CompletenessTest extends JUnitSuite {
234233
"sequenceEqual(Observable[_ <: T], Observable[_ <: T])" -> "sequenceEqual(Observable[U])",
235234
"sequenceEqual(Observable[_ <: T], Observable[_ <: T], Func2[_ >: T, _ >: T, Boolean])" -> "sequenceEqualWith(Observable[U])((U, U) => Boolean)",
236235
"range(Int, Int)" -> "[use `(start until (start + count)).toObservable` instead of `range(start, count)`]",
237-
"range(Int, Int, Scheduler)" -> "[use `(start until (start + count)).toObservable.subscribeOn(scheduler)` instead of `range(start, count, scheduler)`]`]",
236+
"range(Int, Int, Scheduler)" -> "[use `(start until (start + count)).toObservable.subscribeOn(scheduler)` instead of `range(start, count, scheduler)`]",
238237
"switchOnNext(Observable[_ <: Observable[_ <: T]])" -> "switch(<:<[Observable[T], Observable[Observable[U]]])",
239238
"zip(Observable[_ <: T1], Observable[_ <: T2], Func2[_ >: T1, _ >: T2, _ <: R])" -> "[use instance method `zip` and `map`]",
240239
"zip(Observable[_ <: Observable[_]], FuncN[_ <: R])" -> "[use `zip` in companion object and `map`]",
241240
"zip(Iterable[_ <: Observable[_]], FuncN[_ <: R])" -> "[use `zip` in companion object and `map`]",
242-
"zip(Observable[_ <: T2], Func2[_ >: T, _ >: T2, _ <: R])" -> "zipWith(Observable[U])((T, U) => R)",
241+
"zipWith(Observable[_ <: T2], Func2[_ >: T, _ >: T2, _ <: R])" -> "zipWith(Observable[U])((T, U) => R)",
243242
"zip(Iterable[_ <: T2], Func2[_ >: T, _ >: T2, _ <: R])" -> "zipWith(Iterable[U])((T, U) => R)"
244243
) ++ List.iterate("T, T", 8)(s => s + ", T").map(
245244
// all 9 overloads of startWith:
@@ -290,7 +289,11 @@ class CompletenessTest extends JUnitSuite {
290289
def getPublicInstanceMethods(tp: Type): Iterable[String] = {
291290
// declarations: => only those declared in Observable
292291
// members => also those of superclasses
293-
methodMembersToMethodStrings(tp.declarations.filter(m => m.isMethod && m.isPublic))
292+
methodMembersToMethodStrings(tp.declarations.filter {
293+
m =>
294+
m.isMethod && m.isPublic &&
295+
m.annotations.forall(_.toString != "java.lang.Deprecated") // don't check deprecated classes
296+
})
294297
// TODO how can we filter out instance methods which were put into companion because
295298
// of extends AnyVal in a way which does not depend on implementation-chosen name '$extension'?
296299
.filter(! _.contains("$extension"))

0 commit comments

Comments
 (0)