我在Scala中创建一个注释,创建一个伴侣类(如果它还不存在)并在伴侣类中放置一些方法.当我有一个注释时它工作正常,但是当我在类上放置两个注释时,不会生成伴随类($ file)的类文件.此外,在已经有伴随对象的类上有两个注释也可以使用o_O.
这是我的注释宏:
class Foo extends StaticAnnotation{
def macroTransform(annottees: Any*): Any = macro Foo.impl
}
object Foo {
def impl(c: whitebox.Context)(annottees: c.Expr[Any]*): c.Expr[Any] = {
import c.universe._
def addFooFunctionality(module: Tree): Tree = {
val fooerType = weakTypeOf[Fooer].typeSymbol
module match {
case q"object $className { ..$body }" =>
q"""
object $className extends $fooerType {
..$body
val doFoo: String = "Foo"
}
"""
case q"object $className extends ..$parents { ..$body }" =>
q"""
object $className extends ..$parents with $fooerType {
..$body
val …Run Code Online (Sandbox Code Playgroud)