diff options
author | Jason Zaugg <jzaugg@gmail.com> | 2013-08-12 01:51:47 -0700 |
---|---|---|
committer | Jason Zaugg <jzaugg@gmail.com> | 2013-08-12 01:51:47 -0700 |
commit | b246c64fb7b0640ad54b60e87b26026e98818a58 (patch) | |
tree | ecb833ec58a329fc697eddbd038a5027a3d290ed /test | |
parent | fb3725c9427b91844155112e116e5f12a87e9e6a (diff) | |
parent | 26a86793596c331ec19a8a584c6ff66d8d2acaef (diff) | |
download | scala-b246c64fb7b0640ad54b60e87b26026e98818a58.tar.gz scala-b246c64fb7b0640ad54b60e87b26026e98818a58.tar.bz2 scala-b246c64fb7b0640ad54b60e87b26026e98818a58.zip |
Merge pull request #2817 from xeno-by/topic/toolbox-current-run-compiles
currentRun.compiles now correctly works in toolboxes
Diffstat (limited to 'test')
-rw-r--r-- | test/files/run/toolbox_current_run_compiles.check | 2 | ||||
-rw-r--r-- | test/files/run/toolbox_current_run_compiles.scala | 28 |
2 files changed, 30 insertions, 0 deletions
diff --git a/test/files/run/toolbox_current_run_compiles.check b/test/files/run/toolbox_current_run_compiles.check new file mode 100644 index 0000000000..da29283aaa --- /dev/null +++ b/test/files/run/toolbox_current_run_compiles.check @@ -0,0 +1,2 @@ +true +false diff --git a/test/files/run/toolbox_current_run_compiles.scala b/test/files/run/toolbox_current_run_compiles.scala new file mode 100644 index 0000000000..b48c998e64 --- /dev/null +++ b/test/files/run/toolbox_current_run_compiles.scala @@ -0,0 +1,28 @@ +package pkg { + import scala.reflect.macros.Context + import scala.language.experimental.macros + + object Macros { + def impl[T: c.WeakTypeTag](c: Context) = { + import c.universe._ + val sym = c.weakTypeOf[T].typeSymbol + val g = c.universe.asInstanceOf[scala.tools.nsc.Global] + c.Expr[Boolean](Literal(Constant(g.currentRun.compiles(sym.asInstanceOf[g.Symbol])))) + } + def compiles[T] = macro impl[T] + } +} + +import scala.reflect.runtime.universe._ +import scala.reflect.runtime.{universe => ru} +import scala.tools.reflect.ToolBox + +object Test extends App { + val cm = ru.runtimeMirror(getClass.getClassLoader) + val toolbox = cm.mkToolBox() + toolbox.eval(toolbox.parse("""{ + class C + println(pkg.Macros.compiles[C]) + println(pkg.Macros.compiles[Object]) + }""")) +}
\ No newline at end of file |