| import org.checkerframework.checker.nullness.qual.Nullable; |
| |
| public 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) |
| Boxes.transform( |
| el -> { |
| return Mine.some(); |
| }); |
| |
| void bar(Function<String, Mine<@Nullable Integer>> fun) { |
| Box<Mine<@Nullable Integer>> h = Boxes.transform(fun); |
| } |
| } |
| } |