Dato il seguente:SBT 0.13.0 - non può espandersi macro compilati da versioni precedenti di Scala
src/main/Scala/net/Equals5.scala
package net
import scala.language.experimental.macros
import scala.reflect.macros.Context
case class Equals5(value: Int) {
require(value == 5)
}
object Equals5 {
implicit def wrapInt(n: Int): Equals5 = macro verifyIntEquals5
def verifyIntEquals5(c: Context)(n: c.Expr[Int]): c.Expr[Equals5] = {
import c.universe._
val tree = n.tree match {
case Literal(Constant(x: Int)) if x == 5 =>
q"_root_.net.Equals5($n)"
case Literal(Constant(x: Int)) =>
c.abort(c.enclosingPosition, s"$x != 0")
case _ =>
q"_root_.net.Equals5($n)"
}
c.Expr(tree)
}
}
build. SBT
val paradiseVersion = "2.1.0-M5"
scalaVersion := "2.11.7"
libraryDependencies += "org.scala-lang" % "scala-reflect" % "2.11.7"
libraryDependencies += "org.scalatest" % "scalatest_2.10" % "3.0.0-M7"
progetto/build.properties
sbt.version=0.13.0
posso compilare correttamente, ma il tentativo di eseguire il seguente test:
src/test/Scala/net/Equals5Test.scala
package net
import org.scalatest.Matchers
import org.scalatest._
import org.scalatest.prop.Checkers._
class Equals5Test extends FlatSpec with Matchers {
"Trying to create an `Equals5` case class with an invalid Int" should "fail to compile" in {
"Equals5(-555)" shouldNot compile
}
}
dà un errore di compilazione:
.../Equals5Test.scala:11: can't expand macros compiled
by previous versions of Scala
[error] "Equals5(-555)" shouldNot compile
[error] ^
Guardando questa answer, mi aspettavo che l'utilizzo di scala 0.123.con sbt 0.13.0
avrebbe risolto questo problema.
Per favore fatemi sapere come risolvere questo errore in fase di compilazione.
Perché stai usando "" org.scalatest "%" scalatest_2.10 "' invece di '" org.scalatest " %% "scalatest" '? hai qualche ragione? – ymonad
Ho anche un problema simile. Mi chiedo se l'hai risolto? Nel mio caso, ho urtato la versione più scalabile (un ostacolo risolto), ma ho ancora riscontrato il problema a livello di serializzazione. – zochhuana
dovresti usare scala 2.10.4 o 2.10.x FYI, http://stackoverflow.com/questions/27888182/cant-expand-macros-compiled-by-previous-versions-of-scala-scala-2-11- 4-SBT-0 – gaozhidf