With Scala 2.10.4 the following code fails to compile:
package pickle
import upickle._
sealed trait Root
case class A(value: Int) extends Root
case class B(value: String) extends Root
object Main extends App {
println(write(A(10)))
println(write(B("a")))
}
Errors:
Error:(10, 16) uPickle does not know how to write [pickle.A]s; define an implicit Writer[pickle.A] to teach it how
println(write(A(10)))
^
Error:(11, 16) uPickle does not know how to write [pickle.B]s; define an implicit Writer[pickle.B] to teach it how
println(write(B("a")))
^
When passing macros explicitly:
object Main extends App {
println(write(A(10))(Writer.macroW))
println(write(B("a"))(Writer.macroW))
}
the errors turn out to be these:
Error:(10, 31) exception during macro expansion:
java.lang.ClassNotFoundException: scala.quasiquotes.QuasiquoteCompat$
at java.net.URLClassLoader$1.run(URLClassLoader.java:366)
at java.net.URLClassLoader$1.run(URLClassLoader.java:355)
at java.security.AccessController.doPrivileged(Native Method)
at java.net.URLClassLoader.findClass(URLClassLoader.java:354)
at java.lang.ClassLoader.loadClass(ClassLoader.java:425)
at java.lang.ClassLoader.loadClass(ClassLoader.java:358)
at upickle.Macros$.picklerFor(Macros.scala:161)
at upickle.Macros$.macroWImpl(Macros.scala:51)
println(write(A(10))(Writer.macroW))
^
Error:(11, 32) exception during macro expansion:
java.lang.NoClassDefFoundError: scala/quasiquotes/QuasiquoteCompat$
at upickle.Macros$.picklerFor(Macros.scala:161)
at upickle.Macros$.macroWImpl(Macros.scala:51)
println(write(B("a"))(Writer.macroW))
^
When I've added quasiquotes package to the dependency list in SBT:
With Scala 2.10.4 the following code fails to compile:
Errors:
When passing macros explicitly:
the errors turn out to be these:
When I've added quasiquotes package to the dependency list in SBT:
these errors go away completely, and implicits start to work again.
ID: 60 Original Author: netvl