2017-07-20 53 views
1

我正在使用macroparadise在我的項目中生成方法和案例類(宏本身在我的核心文件中使用它們的單獨項目中定義)。Eclipse:在Scala中解決隱式轉換和宏註解的問題

所有內容都按預期編譯並運行,但Eclipse無法解析由我的宏生成的變量和方法。但是,當我關閉並重新打開Eclipse時,它可以完美地識別所有內容;我可以將鼠標懸停在類和方法上並獲取正確的信息。但是,只要我改變任何東西,甚至關閉並重新打開引用generate方法的文件,Eclipse就會強調所有生成的變量和方法,並告訴我「not found:value {name}」(其中{name}是var名稱)。

更新
我已經分離出的行爲的情況下這樣的:

  1. 我開始在一個文件中的註釋對象A,以及使用A.hello在另外一個對象B文件。
  2. 我編譯的文件,它增加了方法「你好」到對象A.
  3. 一切工作正常,直到我重新打開包含對象A.文件

問題(!):什麼是Eclipse的時候做我打開一個文件?它是否嘗試基於書面文件而不是編譯的類對類進行重新索引?
末更新

如何解決Eclipse的變量?它是否查看我的目標/文件夾中的類文件?我的所有生成的代碼都有* .class文件,因此如果Eclipse正在查看這些代碼,那麼這些變量實際上應該存在。

有沒有人得到Eclipse來正確解決這些變量?我嘗試了IntelliJ IDEA,但IDEA無法解決任何使用隱式轉換和宏的問題(我按照我在網上找到的指示,沒有運氣)。

信息:
Eclipse IDE的Java開發人員

版本:釋氧(4.7.0)
版本ID:20170620-1800

的Scala插件
scala-ide.org
4.4.1.v-2_11-201605041057-92a3ed3
org.scala-ide.sdt.feature

編譯器插件:
macroparadise
org.scalamacros
paradise_2.11.8
版本2.1.0

+0

並不令人感到意外,IDE通常不太適合使用高級語言功能,例如宏或依賴類型 – cchantep

回答

0

環顧四周後,它似乎像org.scala.macroparadise插件未通過的IntelliJ或支持蝕。我通過切換到Intellij scala插件支持的org.scalameta.paradise插件來解決我的問題。

使用org.scalameta,我所有生成的變量都可以解析,並且我的宏可以在IDE中進行擴展。