blob: 772152f3b1048dc4b4742082492763a98fef9071 [file] [log] [blame]
class CyclicReferenceTest {
void test(Match<String, Integer> match) {
Match<String, Integer> matcher = match.or(s -> Optional.empty(), i -> 2);
Match<String, Integer> matcher1 = match.or(s -> s.startsWith("_") ? Optional.of(1) : Optional.empty(), i -> 2);
}
}
class Match<T, V> {
public <W> Match<T, V> or(Extractor<T, W> e, Function<W, V> c) {
return this;
}
}
interface Extractor<T, W> {
Optional<W> unapply(T t);
}
interface Function<W, V> {
public V apply(W t);
}
class Optional<W> {
public static <T> Optional<T> empty() {
return null;
}
public static <T> Optional<T> of(T value) {
return null;
}
}