aboutsummaryrefslogtreecommitdiff
path: root/tests/untried/neg-with-implicits/t5903c/Macros_1.scala
blob: 4792f0045489bf274c7d1124d131078e906f67e6 (plain) (blame)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
import scala.reflect.macros.blackbox.Context
import language.experimental.macros

object Interpolation {
  implicit class TestInterpolation(c: StringContext) {
    object t {
      def unapply[T](x: T): Any = macro Macros.unapplyImpl[T]
    }
  }
}

object Macros {
  def unapplyImpl[T: c.WeakTypeTag](c: Context)(x: c.Tree) = {
    import c.universe._
    if (!(c.weakTypeOf[Int] =:= c.weakTypeOf[T])) c.abort(c.enclosingPosition, s"${c.weakTypeOf[T]} is not supported")
    else {
      q"""
        new {
          def isEmpty = false
          def get = 2
          def unapply(x: Int) = this
        }.unapply($x)
      """
    }
  }
}