summaryrefslogtreecommitdiff
path: root/test/files/run/macroPlugins-namerHooks.scala
diff options
context:
space:
mode:
authorEugene Burmako <xeno.by@gmail.com>2014-01-08 11:17:08 -0800
committerEugene Burmako <xeno.by@gmail.com>2014-01-08 11:17:08 -0800
commit4e4c15177b92ef25f098277dcce3f874c24640b2 (patch)
treef46a594ffb47c53cde502d3e172dd4b1c6c2e109 /test/files/run/macroPlugins-namerHooks.scala
parentada8d9156baad2d8a24c1a40e032eb4bc7154bac (diff)
parent87913661e199e3894190b7b8aa0900d7237feec0 (diff)
downloadscala-4e4c15177b92ef25f098277dcce3f874c24640b2.tar.gz
scala-4e4c15177b92ef25f098277dcce3f874c24640b2.tar.bz2
scala-4e4c15177b92ef25f098277dcce3f874c24640b2.zip
Merge pull request #3235 from xeno-by/topic/macro-plugin-interface
new hooks in AnalyzerPlugins to enable macro experimentation
Diffstat (limited to 'test/files/run/macroPlugins-namerHooks.scala')
-rw-r--r--test/files/run/macroPlugins-namerHooks.scala38
1 files changed, 38 insertions, 0 deletions
diff --git a/test/files/run/macroPlugins-namerHooks.scala b/test/files/run/macroPlugins-namerHooks.scala
new file mode 100644
index 0000000000..a71d685f7f
--- /dev/null
+++ b/test/files/run/macroPlugins-namerHooks.scala
@@ -0,0 +1,38 @@
+import scala.tools.partest._
+import scala.tools.nsc._
+
+object Test extends DirectTest {
+ override def extraSettings: String = "-usejavacp"
+
+ def code = """
+ case class C(x: Int, y: Int)
+ """.trim
+
+ def show() {
+ val global = newCompiler()
+ import global._
+ import analyzer._
+
+ val output = collection.mutable.ListBuffer[String]()
+
+ object macroPlugin extends MacroPlugin {
+ override def pluginsEnterSym(namer: Namer, tree: Tree): Boolean = {
+ output += s"enterSym(${tree.toString.replace('\n', ' ')})"
+ namer.standardEnterSym(tree)
+ true
+ }
+ override def pluginsEnsureCompanionObject(namer: Namer, cdef: ClassDef, creator: ClassDef => Tree = companionModuleDef(_)): Option[Symbol] = {
+ output += s"ensureCompanionObject(${cdef.toString.replace('\n', ' ')}, ...)"
+ Some(namer.standardEnsureCompanionObject(cdef, creator))
+ }
+ override def pluginsEnterStats(typer: Typer, stats: List[Tree]): List[Tree] = {
+ stats.foreach(stat => output += s"enterStat(${stat.toString.replace('\n', ' ')})")
+ stats
+ }
+ }
+
+ addMacroPlugin(macroPlugin)
+ compileString(global)(code)
+ println(output.mkString("\n"))
+ }
+}