blob: 4f0660dc456ab401ec096e8eba684611670b2f17 (
plain) (
blame)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
|
import scala.reflect.macros.blackbox.Context
import language.experimental.macros
class ann extends scala.annotation.StaticAnnotation
object Macros {
def impl(c: Context) = {
import c.universe._
// val tpt = Annotated(Apply(Select(New(Ident(newTypeName("ann"))), termNames.CONSTRUCTOR), List()), Ident(newTypeName("Int")))
val tpt = Annotated(Apply(Select(New(Ident(newTypeName("ann"))), termNames.CONSTRUCTOR), List()), TypeTree(weakTypeOf[Int]))
c.Expr[Unit](Block(
List(ValDef(Modifiers(), newTermName("x"), tpt, Literal(Constant(42)))),
Apply(Ident(newTermName("println")), List(Ident(newTermName("x"))))))
}
def foo = macro impl
}
|