Files
openide/java/java-tests/testData/codeInsight/daemonCodeAnalyzer/lambda/graphInference/MutualBoundPromotion.java
Anna Kozlova dea5a38f11 [java] [inference] limit bound promotion per one parameter (IDEA-277612)
GitOrigin-RevId: 0ed133250f1c68c5c14b5e6c5683b03084592e1d
2021-09-14 06:40:42 +00:00

25 lines
845 B
Java

import java.util.Collection;
import java.util.List;
interface Mappable<T> {
T map(Mapper mapper);
class Foo<B extends Foo.FooBuilder<B, U>, U extends Foo<B, U>> implements Mappable<Foo<B, U>> {
static class FooBuilder<B extends FooBuilder<B, U>, U extends Foo<B, U>> {}
@Override
public Foo<B, U> map(Mapper mapper) { return this; }
}
class Mapper {
<E extends Mappable<? extends E>> List<E> map(List<E> in) { return in; }
<E extends Mappable<? extends E>> Collection<E> map(Collection<E> in) { return in; }
}
class Counter implements Mappable<Counter> {
private final List<Foo<?, ?>> in;
Counter(List<Foo<?, ?>> in) { this.in = in; }
@Override
public Counter map(Mapper mapper) {
return new Counter(mapper.map(in));
}
}
}