amnaredo / test

0 stars 0 forks source link

Missing quasiquotes dependency on 2.10.4 causes compilation errors #106

Open amnaredo opened 3 years ago

amnaredo commented 3 years ago

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:

libraryDependencies ++= Seq(
  "com.lihaoyi" %% "upickle" % "0.2.6-RC1",
  "org.scalamacros" %% "quasiquotes" % "2.0.1",
)

these errors go away completely, and implicits start to work again.

ID: 60 Original Author: netvl

amnaredo commented 3 years ago

Yeah you have to add this thing

https://github.com/lihaoyi/upickle#scala-210

Original Author: lihaoyi

amnaredo commented 3 years ago

Awww, sorry, somehow I missed that piece >_<

Original Author: netvl