我有一個sbt插件,需要從源文件中獲取編譯器AST。我試圖創建下面的代碼一個新的編譯器:是否有可能在sbt插件中編譯文件?
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]
。但我無法弄清楚到底是什麼,我應該發送給它有人可以幫我一下吧
是的,我只是想通了:) – Rogach