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);
}
}
}
|