diff options
Diffstat (limited to 'src/compiler/scala/reflect/makro/runtime/Evals.scala')
-rw-r--r-- | src/compiler/scala/reflect/makro/runtime/Evals.scala | 18 |
1 files changed, 18 insertions, 0 deletions
diff --git a/src/compiler/scala/reflect/makro/runtime/Evals.scala b/src/compiler/scala/reflect/makro/runtime/Evals.scala new file mode 100644 index 0000000000..0574359a19 --- /dev/null +++ b/src/compiler/scala/reflect/makro/runtime/Evals.scala @@ -0,0 +1,18 @@ +package scala.reflect.makro +package runtime + +import scala.reflect.runtime.{universe => ru} +import scala.tools.reflect.ToolBox + +trait Evals { + self: Context => + + private lazy val evalMirror = ru.runtimeMirror(libraryClassLoader) + private lazy val evalToolBox = evalMirror.mkToolBox() + private lazy val evalImporter = ru.mkImporter(universe).asInstanceOf[ru.Importer { val from: universe.type }] + + def eval[T](expr: Expr[T]): T = { + val imported = evalImporter.importTree(expr.tree) + evalToolBox.runExpr(imported).asInstanceOf[T] + } +}
\ No newline at end of file |