我有一个 sbt 插件,它需要从源文件中获取编译器 AST。我尝试使用以下代码创建一个新的编译器:
val settings = new Settings
settings.usejavacp.value = true
val compiler = new tools.nsc.interactive.Global(settings, new StoreReporter())
但我收到以下错误:
java.lang.Error: typeConstructor inapplicable for <none>
似乎它与 sbt 的内部编译器发生了冲突。
那么,有没有办法从 sbt 中获取这些文件的 AST?
或者也许可以直接从 sbt 的编译器中获取它们?(那会更好,因为我不需要每次都重新编译所有内容)
编辑:
似乎使用 tools.nsc.Global 而不是“交互式”不会引发错误,但我不知道如何从中获取 AST。
编辑:
好吧,tools.nsc.Global
当我尝试编译一些文件时失败并出现同样的错误:(
SBT FAQ指出我应该在初始化我的编译器时使用一些“代表性类型” - settings.embeddedDefaults[MyType]
. 但我无法确切地知道我应该发送给它什么。有人可以帮我吗?