Closed
Description
package collection
trait Map[K, +V] extends MapOps[K, V, Map]
trait MapOps[K, +V, +CC[_, _]] {
def collect[K2, V2](pf: PartialFunction[(K, V), (K2, V2)]): CC[K2, V2] = ???
}
trait SortedMapOps[K, +V, +CC[X, Y] <: Map[X, Y] with SortedMapOps[X, Y, CC]]
extends MapOps[K, V, Map]
trait StrictOptimizedMapOps[K, +V, +CC[_, _]] extends MapOps[K, V, CC] {
override def collect[K2, V2](pf: PartialFunction[(K, V), (K2, V2)]): CC[K2, V2] = ???
}
trait StrictOptimizedSortedMapOps[K, +V, +CC[X, Y] <: Map[X, Y] with SortedMapOps[X, Y, CC]]
extends SortedMapOps[K, V, CC] with StrictOptimizedMapOps[K, V, Map]
package immutable {
trait Map[K, +V] extends collection.Map[K, V] with MapOps[K, V, Map]
trait MapOps[K, +V, +CC[X, +Y] <: MapOps[X, Y, CC]] extends collection.MapOps[K, V, CC]
trait SortedMapOps[K, +V, +CC[X, +Y] <: Map[X, Y] with SortedMapOps[X, Y, CC]]
extends MapOps[K, V, Map] with collection.SortedMapOps[K, V, CC]
class TreeMap[K, +V] extends Map[K, V] with SortedMapOps[K, V, TreeMap]
with StrictOptimizedSortedMapOps[K, V, TreeMap]
}
-- Error: tests/allan/Test.scala:86:8 ------------------------------------------
86 | class TreeMap[K, +V] extends Map[K, V] with SortedMapOps[K, V, TreeMap]
| ^
|method collect in trait StrictOptimizedMapOps is not a legal implementation of `collect` in class TreeMap
| its type [K2, V2](pf: PartialFunction[(K, V), (K2, V2)]): collection.Map[K2, V2]
| does not conform to [K2, V2]
| (pf: PartialFunction[(K, V), (K2, V2)]): collection.immutable.Map[K2, V2]
one error found