Files
openide/java/java-tests/testData/codeInsight/daemonCodeAnalyzer/lambda/methodRef/ConstructorAssignability.java
2014-02-19 09:46:15 +01:00

44 lines
1.0 KiB
Java

class Foo<R> {
public interface Factory<U> {
U make();
}
interface ASink<R, K extends ASink<R, K>> {
public void combine(K other);
}
static <R, S extends ASink<R, S>> R reduce(Factory<S> factory) {
return null;
}
public void foo() {
reduce(Moo::new);
<error descr="Inferred type 'Foo<R>.AMoo' for type parameter 'S' is not within its bound; should implement 'Foo.ASink<java.lang.Object,Foo<R>.AMoo>'">reduce(AMoo::new)</error>;
reduce(AAMoo::new);
reduce(AAAMoo::new);
}
private class Moo implements ASink<R, Moo> {
@Override
public void combine(Moo other) {
}
}
private class AMoo {
}
private class AAMoo implements ASink<AAMoo, AAMoo> {
@Override
public void combine(AAMoo other) {
}
}
private class AAAMoo implements ASink<R, AAAMoo> {
private AAAMoo() {
}
@Override
public void combine(AAAMoo other) {
}
}
}