【发布时间】:2012-09-04 17:21:04
【问题描述】:
我有一个 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]。但我无法确切地知道我应该发送给它什么。有人可以帮我吗?
【问题讨论】: