के पिछले संस्करणों के द्वारा संकलित मैक्रो का विस्तार नहीं कर सकते निम्नलिखित को देखते हुए:एसबीटी 0.13.0 - स्काला
src/मुख्य/स्केला/नेट/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)
}
}
निर्माण। एसबीटी
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"
परियोजना/build.properties
sbt.version=0.13.0
मैं सफलतापूर्वक संकलन कर सकते हैं, लेकिन निम्न परीक्षण चलाने की कोशिश कर रहा:
src/परीक्षण/स्केला/नेट/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
}
}
एक संकलन समय त्रुटि देता है:
.../Equals5Test.scala:11: can't expand macros compiled
by previous versions of Scala
[error] "Equals5(-555)" shouldNot compile
[error] ^
इस answer को देखते हुए, मैं उम्मीद है कि स्केला 0,123,223 का उपयोग कर Sbt 0.13.0
के साथइस समस्या को ठीक कर देगा।
कृपया मुझे बताएं कि इस संकलन-समय त्रुटि को कैसे हल करें।
आप "org.scalatest"% "scgatest_2.10" '' org.scalatest "के बजाय क्यों उपयोग कर रहे हैं %% "स्केलटेस्ट" '? क्या आपके पास कोई कारण है? – ymonad
मुझे भी इसी तरह की समस्या है। आश्चर्य है कि क्या आपने इसे हल किया है? मेरे मामले में, मैंने स्केलेटेस्ट संस्करण (एक बाधा हल) को टक्कर लगी है, लेकिन मुझे अभी भी क्रमबद्धता स्तर पर समस्या मिली है। – zochhuana
आपको स्कैला 2.10.4 या 2.10.x एफवाईआई का उपयोग करना चाहिए, http://stackoverflow.com/questions/27888182/cant-expand-macros-compiled-by-previous-versions-of-scala-scala-2-11- 4-एसबीटी -0 – gaozhidf