Given the following:
SRC / Primary / 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"
Project /build.properties
sbt.version=0.13.0
I can successfully compile, but try to run the following 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 } }
gives a compile-time error:
.../Equals5Test.scala:11: can't expand macros compiled by previous versions of Scala [error] "Equals5(-555)" shouldNot compile [error] ^
Looking at this answer , I expected that using scala 2.11 with sbt 0.13.0 would fix this problem.
Please let me know how to solve this compile time error.
source share