pickling icon indicating copy to clipboard operation
pickling copied to clipboard

diverging implicit expansion error

Open marklemay opened this issue 9 years ago • 0 comments

I get the error:

Description Resource    Path    Location    Type
diverging implicit expansion for type scala.pickling.Pickler[Map[scratch.pickletest.A,Int]] starting with macro method genPickler in trait GenPicklers  pickletest.scala    

on the file

package scratch

object pickletest {

  sealed abstract class A(val cs1: Seq[C], val cs2: Seq[C])

  case class B(override val cs1: Seq[C], override val cs2: Seq[C])
    extends A(cs1, cs2)

  sealed abstract trait C;

  case object Unresolved extends C

  sealed abstract trait NamedTrait extends C

  case class Named(val typeParams: Seq[C]) extends NamedTrait

  def main(args: Array[String]) {

    import scala.pickling.Defaults._
    import scala.pickling.json._

    val l: Map[A, Int] = Map(B(Seq(Unresolved), Seq(Unresolved)) -> 2)

    val wire: String = l.pickle.value

    println(wire)
  }
}

many small tweaks will make the above compile, for instance being more specific about the imports

package scratch

object pickletest {

  sealed abstract class A(val cs1: Seq[C], val cs2: Seq[C])

  case class B(override val cs1: Seq[C], override val cs2: Seq[C])
    extends A(cs1, cs2)

  sealed abstract trait C;

  case object Unresolved extends C

  sealed abstract trait NamedTrait extends C

  case class Named(val typeParams: Seq[C]) extends NamedTrait

  def main(args: Array[String]) {

    import scala.pickling.Defaults.genPickler
    import scala.pickling.Defaults.pickleOps
    import scala.pickling.json.pickleFormat

    val l: Map[A, Int] = Map(B(Seq(Unresolved), Seq(Unresolved)) -> 2)

    val wire: String = l.pickle.value

    println(wire)
  }
}

I am using scala 2.11.6 and scala-pickling_2.11 version 0.10.0.

marklemay avatar Apr 05 '15 04:04 marklemay