| /* |
| * @test |
| * @summary Test case for issue #2853: https://github.com/typetools/checker-framework/issues/2853 |
| * |
| * @compile/timeout=30 -XDrawDiagnostics -Xlint:unchecked -processor org.checkerframework.checker.nullness.NullnessChecker Issue2853.java |
| */ |
| public class Issue2853 { |
| |
| abstract static class A { |
| |
| abstract B getB(); |
| |
| public abstract C getC(); |
| |
| public abstract Object getD(); |
| |
| public abstract Object getE(); |
| |
| public abstract Object getF(); |
| |
| public abstract Object getG(); |
| |
| public abstract H getH(); |
| } |
| |
| abstract static class B {} |
| |
| abstract static class C { |
| |
| abstract Object getI(); |
| } |
| |
| static class I { |
| |
| static class J {} |
| } |
| |
| abstract static class H { |
| |
| abstract Object getK(); |
| |
| abstract Object getL(); |
| |
| abstract Object getM(); |
| |
| abstract Object getN(); |
| } |
| |
| abstract static class O {} |
| |
| abstract static class J { |
| |
| static O f(B b) { |
| throw new AssertionError(); |
| } |
| } |
| |
| abstract static class K { |
| |
| abstract Object getL(); |
| } |
| |
| abstract static class M { |
| |
| abstract N getN(); |
| } |
| |
| abstract static class N { |
| |
| abstract Object f(); |
| } |
| |
| static class Test { |
| |
| static final ImmutableSet<P> C = |
| new ImmutableSet.Builder<P>() |
| .add(R.c((A x) -> J.f(x.getB()))) |
| .add(R.c((A x) -> x.getC().getI())) |
| .add(R.c((M x) -> x.getN().f())) |
| .add(R.c((A x) -> x.getH().getK())) |
| .add(R.c((A x) -> x.getH().getM())) |
| .add(R.c((A x) -> x.getH().getL())) |
| .add(R.c((A x) -> x.getH().getN())) |
| .add(R.c((A x) -> x.getD())) |
| .add(R.c((A x) -> x.getE())) |
| .add(R.c((A x) -> x.getE())) |
| .add(R.c((A x) -> x.getG())) |
| .add(R.c((K x) -> x.getL())) |
| .build(); |
| |
| interface P {} |
| |
| interface Q<U, V> { |
| |
| V get(U message); |
| } |
| |
| private static class R<T, U> implements P { |
| |
| static <T, U> R<T, U> c(Q<T, U> x) { |
| throw new AssertionError(); |
| } |
| } |
| } |
| |
| abstract static class ImmutableSet<E> { |
| |
| static class Builder<E> { |
| |
| public Builder<E> add(E... elements) { |
| throw new AssertionError(); |
| } |
| |
| public ImmutableSet<E> build() { |
| throw new AssertionError(); |
| } |
| } |
| } |
| } |