| package inference.guava; |
| |
| import java.io.Serializable; |
| import java.util.Map; |
| import java.util.function.Function; |
| import java.util.stream.Collector; |
| |
| @SuppressWarnings("all") // Just check for crashes. |
| public class Bug7 { |
| static <T, K, V> Collector<T, ?, MyMap<K, V>> toMap( |
| Function<? super T, ? extends K> keyFunction, |
| Function<? super T, ? extends V> valueFunction) { |
| return Collector.of( |
| MyMap.Builder<K, V>::new, |
| (builder, input) -> builder.put(keyFunction.apply(input), valueFunction.apply(input)), |
| MyMap.Builder::combine, |
| MyMap.Builder::build); |
| } |
| |
| public abstract static class MyMap<K, V> implements Map<K, V>, Serializable { |
| public static class Builder<K, V> { |
| |
| public Builder() {} |
| |
| public Builder<K, V> put(K key, V value) { |
| throw new RuntimeException(); |
| } |
| |
| Builder<K, V> combine(Builder<K, V> other) { |
| throw new RuntimeException(); |
| } |
| |
| public MyMap<K, V> build() { |
| throw new RuntimeException(); |
| } |
| } |
| } |
| } |