aboutsummaryrefslogtreecommitdiff
path: root/tests/disabled/macro/run/macro-duplicate/Impls_Macros_1.scala
diff options
context:
space:
mode:
Diffstat (limited to 'tests/disabled/macro/run/macro-duplicate/Impls_Macros_1.scala')
-rw-r--r--tests/disabled/macro/run/macro-duplicate/Impls_Macros_1.scala29
1 files changed, 29 insertions, 0 deletions
diff --git a/tests/disabled/macro/run/macro-duplicate/Impls_Macros_1.scala b/tests/disabled/macro/run/macro-duplicate/Impls_Macros_1.scala
new file mode 100644
index 000000000..84fb2c5b6
--- /dev/null
+++ b/tests/disabled/macro/run/macro-duplicate/Impls_Macros_1.scala
@@ -0,0 +1,29 @@
+import scala.reflect.macros.blackbox.Context
+
+object Macros {
+ def impl(c: Context) = {
+ import c.universe._
+ val Expr(Block((cdef: ClassDef) :: Nil, _)) = reify { class C { def x = 2 } }
+ val cdef1 =
+ new Transformer {
+ override def transform(tree: Tree): Tree = tree match {
+ case Template(_, _, ctor :: defs) =>
+ val defs1 = defs collect {
+ case ddef @ DefDef(mods, name, tparams, vparamss, tpt, body) =>
+ val future = Select(Select(Ident(TermName("scala")), TermName("concurrent")), TermName("Future"))
+ val Future = Select(Select(Ident(TermName("scala")), TermName("concurrent")), TypeName("Future"))
+ val tpt1 = if (tpt.isEmpty) tpt else AppliedTypeTree(Future, List(tpt))
+ val body1 = Apply(future, List(body))
+ val name1 = TermName("async" + name.toString.capitalize)
+ DefDef(mods, name1, tparams, vparamss, tpt1, body1)
+ }
+ Template(Nil, emptyValDef, ctor +: defs ::: defs1)
+ case _ =>
+ super.transform(tree)
+ }
+ } transform cdef
+ c.Expr[Unit](Block(cdef1 :: Nil, Literal(Constant(()))))
+ }
+
+ def foo = macro impl
+}