Я пытаюсь выполнить порт this answer от this question до scala-2.10. Это то, что я пробовал:scala macros error: not found: значение
Macros.scala
package myProject.macros
import scala.reflect.macros.Context
import scala.language.experimental.macros
class LoggerImpl(val c: Context) {
import c.universe._
def getClassSymbol(s: Symbol): Symbol = if (s.isClass) s else getClassSymbol(s.owner)
def logImpl(msg: Expr[String]): Unit = {
val cl = getClassSymbol(c.enclosingClass.symbol).toString
// Do something with cl
// For this case cl should be "SomeObject"
}
}
object Logger {
def warning(msg: String): Unit = macro LoggerImpl.logImpl
}
XYZ.scala
package myProject.XYZ
import myProject.macros.Logger
object SomeObject {
def doSomething(...) = {
// Some operations
Logger.warning("sss")
}
}
Но когда я пытаюсь построить я получаю эти ошибки:
[scalac-2.10] /../Macros.scala:20: error: not found: value LoggerImpl
[scalac-2.10] def warning(msg: String): Unit = macro LoggerImpl.logImpl
[scalac-2.10] ^
[scalac-2.10] /../XYZ.scala:18: error: not found: value LoggerImpl
[scalac-2.10] def warning(msg: String): Unit = macro LoggerImpl.logImpl
[scalac-2.10] ^
[scalac-2.10] two errors found
I посмотрел на this example, разве нет способа заставить макросы работать, если они находятся в разных пакетах?
Вы пытаетесь для резервного копирования этого значения в 2.10, или версия для версии 2.11 также вас устраивает? – Archeg
Мне нужно придерживаться только 2.10 ..:/ –