Skip to content

Method in trait not a legal implementation in inheriting class (V2) #4839

Closed
@allanrenucci

Description

@allanrenucci
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

Metadata

Metadata

Assignees

No one assigned

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions