0
因此,可以說我的手之前,有幾件事情:推遲隱式解析,在宏
case class M[A](val value: A) {
def apply(as: M[A]*) = macro applyImpl[A]
}
def tpAware(implicit ev: Context[A]): M[A]
val ma: M[X] = ???
我想做的事:
ma(tpAware)
凡applyImpl
定義類似
def applyVG[A : c.WeakTypeTag, V](c: MacroContext)(vs: c.Expr[M[V]]*): c.Expr[M[A]] = {
import c.universe._
val container = c.prefix.tree.collect {
case [email protected](n, xs) => xs
}.flatten.apply(1)
val expr = reify {
M {
implicit val ev = Context[A]()
val container = c.Expr[A](container).splice
sequence(c)(vs).splice foreach { c =>
container.add(c.value)
}
container
}
}
expr
}
現在的問題是typer在宏展開前運行,而我的Context[A]
不是vis在應用012ble
之前可以嗎?