önceki sürümleri tarafından derlenen makro genişletmek olamaz:SBT 0.13.0 - Verilen aşağıdaki 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)
}
}
inşa. 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"
proje/build.properties
sbt.version=0.13.0
başarıyla derlemek, ancak aşağıdaki testi çalıştırmak için çalışıyor olabilir:/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
}
}
src/test/scala/net bir derleme zamanı hatası verir: Bu answer baktığımızda
.../Equals5Test.scala:11: can't expand macros compiled
by previous versions of Scala
[error] "Equals5(-555)" shouldNot compile
[error] ^
, beklediğimden o scalakullanarak Sbt 0.13.0
numaralı, bu sorunu giderdi.
Lütfen bu derleme zamanı hatasını nasıl çözeceğinizi bildirin.
Neden "org.scalatest" yerine "org.scalatest"% "scalatest_2.10" 'kullanıyorsunuz? %% "scalatest" '? bir sebebin var mı? – ymonad
Ben de benzer bir sorunum var. Bunu çözdüyseniz merak ediyorum. Benim durumumda, scalatest versiyonunu çarptım (bir engel çözüldü), fakat hala serileştirme seviyesinde problemim var. – zochhuana
scala 2.10.4 veya 2.10.x FYI kullanmalısınız, http://stackoverflow.com/questions/27888182/cant-expand-macros-compiled-by-previous-versions-of-scala-scala-2-11- 4-SBT-0 – gaozhidf