summaryrefslogblamecommitdiff
path: root/test/files/run/reify_this.scala
blob: 38ef72b6eb570be3ca2dbdc6e0f9caf3c4a2a8b7 (plain) (tree)






























                                                                     
import scala.reflect._
import scala.reflect.Code._
import scala.tools.nsc.reporters._
import scala.tools.nsc.Settings
import reflect.runtime.Mirror.ToolBox

trait Eval {
  def eval(code: Code[_]): Any = eval(code.tree)

  def eval(tree: Tree): Any = {
    val settings = new Settings
    val reporter = new ConsoleReporter(settings)
    val toolbox = new ToolBox(reporter)
    val ttree = toolbox.typeCheck(tree)
    toolbox.runExpr(ttree)
  }
}

object Test extends App with Eval {
  // select a value from package
  eval(lift{println("foo")})
  eval(lift{println((new Object).toString == (new Object).toString)})

  // select a type from package
  eval(lift{val x: Any = 2; println(x)})
  eval(lift{val x: Object = "bar"; println(x)})

  // select a value from module
  val x = 2
  eval(lift{println(x)})
}