我在 def 声明中使用了 Scalameta(v1.8.0) 注释:
trait MyTrait {
@MyDeclDef
def f2(): Int
}
定义的注释类只返回输入,如下所示:
import scala.meta._
class MyDeclDef extends scala.annotation.StaticAnnotation {
inline def apply(defn: Any): Any = meta {
defn match {
case defn: Decl.Def =>
defn
case _ =>
println(defn.structure)
abort("@MyDeclDef most annotate a Decl.Def")
}
}
}
遇到一些编译器错误:
Error:'=' expected but eof found.
def f2(): Unit
Error:illegal start of simple expression
def f2(): Unit
此外,如果我习惯Decl.Var
它var v2: Int
工作正常。
如何正确注释特征def
?谢谢