aboutsummaryrefslogtreecommitdiff
path: root/tests/pending/run/t7240/Macros_1.scala
diff options
context:
space:
mode:
Diffstat (limited to 'tests/pending/run/t7240/Macros_1.scala')
-rw-r--r--tests/pending/run/t7240/Macros_1.scala48
1 files changed, 0 insertions, 48 deletions
diff --git a/tests/pending/run/t7240/Macros_1.scala b/tests/pending/run/t7240/Macros_1.scala
deleted file mode 100644
index b24b607d1..000000000
--- a/tests/pending/run/t7240/Macros_1.scala
+++ /dev/null
@@ -1,48 +0,0 @@
-package bakery
-
-import scala.language.experimental.macros
-import scala.reflect.macros.blackbox.Context
-
-trait FailureCake {
- implicit def liftAnyFails[T: Manifest]: Any = ???
-
- // This works
- // implicit def liftAny[T]: Any = ???
-}
-
-object Bakery {
-
- def failure: Any = macro failureImpl
- def failureImpl(c: Context): c.Expr[Any] = {
- import c.universe._
-
- def dslTrait(dslName: String) = {
- val names = dslName.split("\\.").toList.reverse
- assert(names.length >= 1, "DSL trait name must be in the valid format. DSL trait name is " + dslName)
-
- val tpeName = newTypeName(names.head)
- names.tail.reverse match {
- case head :: tail ⇒
- Select(tail.foldLeft[Tree](Ident(newTermName(head)))((tree, name) ⇒ Select(tree, newTermName(name))), tpeName)
- case Nil ⇒
- Ident(tpeName)
- }
- }
-
- def composeDSL(transformedBody: Tree) =
- ClassDef(Modifiers(), newTypeName("eval"), List(), Template(
- List(dslTrait("bakery.FailureCake")),
- emptyValDef,
- List(
- DefDef(Modifiers(), termNames.CONSTRUCTOR, List(), List(List()), TypeTree(),
- Block(List(Apply(Select(Super(This(typeNames.EMPTY), typeNames.EMPTY), termNames.CONSTRUCTOR), List())), Literal(Constant(())))),
- DefDef(Modifiers(), newTermName("main"), List(), List(List()), Ident(newTypeName("Any")), transformedBody))))
-
- def constructor = Apply(Select(New(Ident(newTypeName("eval"))), termNames.CONSTRUCTOR), List())
-
- c.eval(c.Expr[Any](
- c.untypecheck(Block(composeDSL(Literal(Constant(1))), constructor))))
-
- c.Expr[Any](Literal(Constant(1)))
- }
-} \ No newline at end of file