Scala 宏修改对象

Scala macro modify object

我有下一个宏注解

 class Foo(obj: String) extends StaticAnnotation {
    def macroTransform(annottees: Any*) = macro MacroImpl.impl
 }

 object MacroImpl {
    def impl(c: Context)(annottees: c.Expr[Any]*): c.Expr[Any] = {
      import c.universe._

      // i want find `obj` and modify body
    } 

 }

 // usage
 @Foo("pkg.myObject") class SomeClass {}

是否可以使用宏按名称查找对象并修改对象主体?

目前这是不可能的,因为 Scala 中的宏不能修改其范围之外的任何内容。例如。 def宏只能改写自己的应用,不能改写周围的代码,宏注解只能改写自己的注释者,不能改写周围的代码。