Skip to content

Commit b0c98a5

Browse files
Merge pull request ReactiveX#1577 from zsxwing/compose-covariance
Fix the compose covariance
2 parents 6c8ca2f + a0c52f1 commit b0c98a5

File tree

3 files changed

+7
-7
lines changed

3 files changed

+7
-7
lines changed

rxjava-core/src/main/java/rx/Observable.java

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -204,7 +204,7 @@ public void call(Subscriber<? super R> o) {
204204
* @see <a href="https://github.com/Netflix/RxJava/wiki/Implementing-Your-Own-Operators">RxJava wiki: Implementing Your Own Operators</a>
205205
* @since 0.20
206206
*/
207-
public <R> Observable<? extends R> compose(Transformer<? super T, ? extends R> transformer) {
207+
public <R> Observable<R> compose(Transformer<? super T, R> transformer) {
208208
return transformer.call(this);
209209
}
210210

@@ -213,7 +213,7 @@ public <R> Observable<? extends R> compose(Transformer<? super T, ? extends R> t
213213
* @warn more complete description needed
214214
* @since 0.20
215215
*/
216-
public static interface Transformer<T, R> extends Func1<Observable<? extends T>, Observable<? extends R>> {
216+
public static interface Transformer<T, R> extends Func1<Observable<? extends T>, Observable<R>> {
217217
// cover for generics insanity
218218
}
219219

rxjava-core/src/test/java/rx/CovarianceTest.java

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -62,10 +62,10 @@ public Integer call(Media t1, Media t2) {
6262
@Test
6363
public void testCovarianceOfCompose() {
6464
Observable<HorrorMovie> movie = Observable.<HorrorMovie> from(new HorrorMovie());
65-
movie.compose(new Transformer<Movie, Movie>() {
65+
Observable<Movie> movie2 = movie.compose(new Transformer<Movie, Movie>() {
6666

6767
@Override
68-
public Observable<? extends Movie> call(Observable<? extends Movie> t1) {
68+
public Observable<Movie> call(Observable<? extends Movie> t1) {
6969
return Observable.from(new Movie());
7070
}
7171

@@ -75,9 +75,9 @@ public Observable<? extends Movie> call(Observable<? extends Movie> t1) {
7575
@Test
7676
public void testCovarianceOfCompose2() {
7777
Observable<Movie> movie = Observable.<Movie> from(new HorrorMovie());
78-
movie.compose(new Transformer<Movie, Movie>() {
78+
Observable<HorrorMovie> movie2 = movie.compose(new Transformer<Movie, HorrorMovie>() {
7979
@Override
80-
public Observable<? extends Movie> call(Observable<? extends Movie> t1) {
80+
public Observable<HorrorMovie> call(Observable<? extends Movie> t1) {
8181
return Observable.from(new HorrorMovie());
8282
}
8383
});

rxjava-core/src/test/java/rx/ObservableTests.java

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1108,7 +1108,7 @@ public void testCompose() {
11081108
Observable.from(1, 2, 3).compose(new Transformer<Integer, String>() {
11091109

11101110
@Override
1111-
public Observable<? extends String> call(Observable<? extends Integer> t1) {
1111+
public Observable<String> call(Observable<? extends Integer> t1) {
11121112
return t1.map(new Func1<Integer, String>() {
11131113

11141114
@Override

0 commit comments

Comments
 (0)