SBT 0.13.0 - cannot extend macros compiled by previous versions of Scala

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.

+6
source share
1 answer

You specifically request the version of ScalaTest that was compiled for Scala 2.10, so its macros, such as compile , will not be properly publicized (and most likely they will not be compatible with Scala 2.11 in other ways). (Also the current version of SBT is 0.13.9, so you can also upgrade it.)

+11
source

All Articles