I do not get the error on line 26:
override def companion = MySeq
Perhaps something else is causing this.
, , GenericCompanion[MySeq] ( SeqFactory). , GenericCompanion[Coll] , Coll[A] A (. newBuilder). MySeq[A] <: GenericTraversableTemplate[A, MySeq], genericBuilder . ; MySeq " ", , MyA.
, MySeq[B] <: GenericTraversableTemplate[B, Seq] ( extends Seq). companion. Seq, s.companion. ((as: MySeq[A]): Seq[A]).map(...) List ( , compiletime Seq). , as.s ( , , compiletime Seq). extends SetLike.
CanBuildFrom: MySeq.canBuildFrom[A <: MyA]: CanBuildFrom[MySeq[A], A, MySeq[A]] MySeq#newBuilder.
class MySeq[+B <: MyA](val s: Seq[B])
extends Seq[B]
with SeqLike[B, MySeq[B]]
{
override def iterator = s.iterator
override def apply(i: Int) = s(i)
override def length = s.length
override def toString = s.map(_.toString).mkString("\n")
override def companion = s.companion
protected[this] override def newBuilder: mutable.Builder[B, MySeq[B]] = new mutable.Builder[B, MySeq[B]] {
private[this] val base = s.genericBuilder[B]
override def +=(elem: B) = { base += elem; this }
override def clear() = base.clear()
override def result() = new MySeq[B](base.result())
}
}
object MySeq {
implicit def canBuildFrom[A <: MyA]: CanBuildFrom[MySeq[_], A, MySeq[A]] = ???
}
val list = List(new MyA, new MyA, new MyA, new MyA)
val vect = list.toVector
val mLst = new MySeq(list)
val mVec = new MySeq(vect)
{
val res = mLst.filter(_.hashCode != list.head.hashCode)
implicitly[res.type <:< MySeq[MyA]]
}
{
val res = (mVec: Seq[MyA]).map(identity)
assert(res.isInstanceOf[Vector[_]])
}
{
val res = (mLst: Seq[MyA]).map(identity)
assert(res.isInstanceOf[List[_]])
}