Назад, когда отражение было все еще зарождающимся, в дни Scala 2.10.0 вехи, я задал вопрос о том, как я могу использовать его для просмотра деревьев фрагментов кода из REPL. Отличный ответ пошел дальше, чем я спросил, и показал, как их можно использовать для синтаксического анализа и оценки деревьев, поэтому я пошел дальше и попытался использовать это в небольшом проекте, который я собирался сегодня.
К сожалению, код, проанализированный и оцененный таким образом, похоже, не видит определения REPL:
scala> val x = 1
x: Int = 1
scala> import scala.tools.reflect.ToolBox
import scala.tools.reflect.ToolBox
scala> val tb = scala.reflect.runtime.universe.runtimeMirror(
getClass.getClassLoader).mkToolBox()
tb: scala.tools.reflect.ToolBox[reflect.runtime.universe.type] = ...
scala> tb.eval(tb.parse("x"))
scala.tools.reflect.ToolBoxError: reflective compilation has failed:
not found: value x
Есть ли способ распознать определения, сделанные в REPL?