2
我註釋的性狀,如:斯卡拉宏觀與import語句不工作
@ScreenModel
trait TestTrait {
.......
}
然後我有@ScreenModel與類似的實現:
def impl(c: whitebox.Context)(annottees: c.Expr[Any]*): c.Expr[Any] = {
import c.universe._
val output : List[Tree] = annottees.map(_.tree) match {
case(cd @ q"$mods trait $name[..$tparams] extends ..$parents { ..$body }") :: Nil =>
val compObjVar = s"""{
import models.presentation.blocks.BlockModel;
class AAAA {
class BBBB {
}
}
}""";
val rawTree=c.parse(compObjVar)
val merged = q"{..$rawTree}";
merged :: Nil
case _ => c.abort(c.enclosingPosition, "Invalid test target")
}
c.Expr[Any](q"..$output")
}
所以,用我得到:
「沒有同伴的頂級班只能擴展到同名班級或成塊」
但是,如果我只是在AAA級之前移動進口AAA級裏面,那麼它的工作原理:
val compObjVar = s"""{
class AAAA {
import models.presentation.blocks.BlockModel;
class BBBB {
}
}
}""";
爲什麼?