0
Эта строка:Scala не найдено: значение макроса
"foo".assertNonFatal(_ equals "foo", "error message");
Эта ошибка:
Error:(120, 47) not found: value assertion
Этот крюк:
final implicit class ImplicitAssert[MyType](val me: MyType) {
final def assertNonFatal(assertion: (MyType) => Boolean, message: String)
: MyType = macro ImplicitAssertMacros.assertNonFatal[MyType]
}
Этот макрос:
object ImplicitAssertMacros {
def assertNonFatal[MyType](c: scala.reflect.macros.blackbox.Context)
(assertion: c.Tree, message: c.Tree): c.Tree = {
import c.universe._
val me = q"${c.prefix}.me" // "me" from ImplicitAssert class.
val numLines = q"Int.MaxValue"
val useStdOut = q"false"
val assertionTrue = q"assertion($me)"
val isFatal = q"false"
val toReturn = q"""
_root_.info.collaboration_station.debug.internal.Printer.traceInternalAssert($message, $numLines, $useStdOut, $assertionTrue, $isFatal);
$me;
"""
toReturn
}
}
^Я не могу понять, в чем причина этой ошибки компилятора или как ее исправить.
Обратите внимание, что это происходит только при компиляции исходного файла, а не макросов.
Вы компилируете макрос до, в сеансе компиляции, перед компиляцией кода, который вызывает макрос? – pedrofurla
@pedrofurla - запуск «компиляции» на макросах в sbt заканчивается на [success]. Запуск «test: compile» для «foo» .assertNonFatal (_ equals «foo», «сообщение об ошибке») заканчивается на «not found: value assertion» –