diff options
author | Eugene Burmako <xeno.by@gmail.com> | 2013-08-02 14:27:42 +0200 |
---|---|---|
committer | Eugene Burmako <xeno.by@gmail.com> | 2013-08-10 18:06:24 +0200 |
commit | 26a86793596c331ec19a8a584c6ff66d8d2acaef (patch) | |
tree | 0e38037f6916c764dcd49fef499e166dbd0c73a3 /test/files/run | |
parent | ed5c1abbfca18a880c79048cc7e9578ae932101d (diff) | |
download | scala-26a86793596c331ec19a8a584c6ff66d8d2acaef.tar.gz scala-26a86793596c331ec19a8a584c6ff66d8d2acaef.tar.bz2 scala-26a86793596c331ec19a8a584c6ff66d8d2acaef.zip |
currentRun.compiles now correctly works in toolboxes
Another random bug uncovered and extinguished when hacking macro annots.
Diffstat (limited to 'test/files/run')
-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 |