File: InLambdaAnnotated.java

package info (click to toggle)
checker-framework-java 3.2.0%2Bds-3
  • links: PTS, VCS
  • area: main
  • in suites: forky, sid, trixie
  • size: 23,104 kB
  • sloc: java: 145,916; xml: 839; sh: 518; makefile: 404; perl: 26
file content (38 lines) | stat: -rw-r--r-- 1,062 bytes parent folder | download | duplicates (3)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
import org.checkerframework.checker.nullness.qual.Nullable;

class InLambdaAnnotated {
    static class Mine<T> {
        @SuppressWarnings("nullness") // just a utility
        static <S> Mine<S> some() {
            return null;
        }
    }

    interface Function<T, R> {
        R apply(T t);
    }

    interface Box<V> {}

    static class Boxes {
        @SuppressWarnings("nullness") // just a utility
        static <O> Box<O> transform(Function<String, ? extends O> function) {
            return null;
        }
    }

    class Infer {
        // The nested Mine.some() needs to infer the right type.
        Box<Mine<@Nullable Integer>> g =
                // TODO: This is a false positive.
                // :: error: (assignment.type.incompatible)
                Boxes.transform(
                        el -> {
                            return Mine.some();
                        });

        void bar(Function<String, Mine<@Nullable Integer>> fun) {
            Box<Mine<@Nullable Integer>> h = Boxes.transform(fun);
        }
    }
}