blob: c8ff17b0a647833602bfb8dd955355ce4e970dad [file] [log] [blame]
// Some of these code was submitted in #1384.
// https://github.com/typetools/checker-framework/issues/1384
// Other parts are from the following comment.
// https://github.com/typetools/checker-framework/pull/1387#issuecomment-316147360
// The rest is from plume-lib.
import java.util.Arrays;
import java.util.List;
import java.util.Queue;
public class FalsePositives {
static class Partitioning<F> {}
public static <T> List<Partitioning<T>> partitionInto(Queue<T> elts, int k) {
if (elts.size() < k) {
throw new IllegalArgumentException();
}
return partitionIntoHelper(elts, Arrays.asList(new Partitioning<T>()), k, 0);
}
public static <T> List<Partitioning<T>> partitionIntoHelper(
Queue<T> elts, List<Partitioning<T>> resultSoFar, int numEmptyParts, int numNonemptyParts) {
throw new RuntimeException();
}
interface Box<T> {}
interface Function<P, R> {
R apply(P p);
}
interface Utils {
<I, O> Box<O> foo(Box<I> input, Function<? super I, ? extends O> function);
<I, O> Function<I, O> bar(Function<? super I, ? extends O> function);
}
class Test {
Box<Integer> demo(Utils u, Box<String> bs) {
return u.foo(bs, u.bar((String s) -> 5));
}
Integer ugh(String n) {
return 5;
}
Box<Integer> demo2(Utils u, Box<String> bs) {
return u.foo(bs, u.bar(this::ugh));
}
}
abstract class Test2 {
abstract <T> Box<Box<T>> foo(Box<? extends Box<? extends T>> p);
abstract <T> Box<Box<T>> bar(Function<Number, T> f);
abstract String baz(Number p);
Box<Box<String>> demo() {
return foo(bar(this::baz));
}
}
}