summaryrefslogblamecommitdiff
path: root/test/files/run/typed-annotated/Macros_1.scala
blob: 4f0660dc456ab401ec096e8eba684611670b2f17 (plain) (tree)
1
2
3
4
5
6
7
8
9
10
                                            




                                                   
                          
                       

                                                                                                                                   






                                                                              
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
}