从sbt访问@native方法

时间:2015-12-05 07:44:30

标签: scala sbt

我正在尝试访问sbt中的编译任务的信息。具体来说,我的目标是获得所有具有@native注释的类中的所有方法的列表。

要开始使用,我研究了Analysis API:

//print some info about the build structure
def printDefinition(definition: xsbti.api.Definition): Unit = definition match {
  case classDef: xsbti.api.ClassLike =>
    println("class " + classDef.name())
    classDef.structure.declared.foreach{ d =>
      printDefinition(d)
    }
  case otherDef: xsbti.api.Definition =>
    println("other: " + otherDef.name())
}

//list all declarations
compile := {
  val analysis = (compile in Compile).value
  analysis.apis.internal.foreach{ case (file, source) =>
    source.api().definitions() foreach printDefinition
  }
  analysis
}

但遗憾的是,未列出任何@native方法。编译器不会为本机方法生成代码,我猜他们因此在sbt的报告中省略了它们。但是,由于classDef.structure有一个declared字段(而不是definedimplemented),我想知道这是否是错误和/或是否有其他方式列出带有所述注释的所有方法?

0 个答案:

没有答案