diff options
author | Eugene Burmako <xeno.by@gmail.com> | 2014-01-08 11:17:08 -0800 |
---|---|---|
committer | Eugene Burmako <xeno.by@gmail.com> | 2014-01-08 11:17:08 -0800 |
commit | 4e4c15177b92ef25f098277dcce3f874c24640b2 (patch) | |
tree | f46a594ffb47c53cde502d3e172dd4b1c6c2e109 /test/files/run/macroPlugins-namerHooks.scala | |
parent | ada8d9156baad2d8a24c1a40e032eb4bc7154bac (diff) | |
parent | 87913661e199e3894190b7b8aa0900d7237feec0 (diff) | |
download | scala-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.scala | 38 |
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")) + } +} |