diff options
author | Mathias <mathias@decodified.com> | 2018-01-05 13:34:05 +0100 |
---|---|---|
committer | Mathias <mathias@decodified.com> | 2018-01-05 13:39:57 +0100 |
commit | 2e98161a4c18d8f56280437a775cf81df030c0cf (patch) | |
tree | 087a7f7a4e3f3513a8e5e797c5f9ca1c373e03a9 /core/shared/src/main/scala/magnolia.scala | |
parent | c2acc0fd2f4772ea1b6d3a59271fbe2d9063f69f (diff) | |
download | magnolia-2e98161a4c18d8f56280437a775cf81df030c0cf.tar.gz magnolia-2e98161a4c18d8f56280437a775cf81df030c0cf.tar.bz2 magnolia-2e98161a4c18d8f56280437a775cf81df030c0cf.zip |
Add support for `magnolia.debug` annotation
Diffstat (limited to 'core/shared/src/main/scala/magnolia.scala')
-rw-r--r-- | core/shared/src/main/scala/magnolia.scala | 8 |
1 files changed, 8 insertions, 0 deletions
diff --git a/core/shared/src/main/scala/magnolia.scala b/core/shared/src/main/scala/magnolia.scala index b4179f9..67e948e 100644 --- a/core/shared/src/main/scala/magnolia.scala +++ b/core/shared/src/main/scala/magnolia.scala @@ -69,6 +69,10 @@ object Magnolia { import c.universe._ import internal._ + val debug = c.macroApplication.symbol.annotations + .find(_.tree.tpe <:< typeOf[debug]) + .flatMap(_.tree.children.tail.collectFirst { case Literal(Constant(s: String)) => s }) + val magnoliaPkg = q"_root_.magnolia" val scalaPkg = q"_root_.scala" @@ -448,6 +452,10 @@ object Magnolia { if (currentStack.frames.isEmpty) recursionStack = ListMap() val dereferencedResult = result.map { tree => + if (debug.isDefined && genericType.toString.contains(debug.get)) { + c.echo(c.enclosingPosition, s"Magnolia macro expansion for $genericType") + c.echo(NoPosition, s"... = ${showCode(tree)}\n\n") + } if (currentStack.frames.isEmpty) c.untypecheck(removeDeferred.transform(tree)) else tree } |