1

我正在使用macroparadise 在我的项目中生成方法和案例类(宏本身是在与我使用它们的核心文件不同的项目中定义的)。

一切都按预期编译和运行,但 Eclipse 无法解析我的宏生成的变量和方法。但是,当我关闭并重新打开 Eclipse 时,它​​可以完美地识别所有内容;我可以将鼠标悬停在类和方法上并获取正确的信息。但是,只要我更改任何内容,甚至只是关闭并重新打开引用生成方法的文件,Eclipse 就会在所有生成的变量和方法下划线并告诉我“未找到:值 {name}”(其中 {name} 是 var 名称)。

更新
我已将行为隔离到以下情况:

  1. 我从一个文件中的带注释的对象 A 开始,以及在另一个文件中使用 A.hello 的对象 B。
  2. 我编译 A 的文件,将方法“hello”添加到对象 A。
  3. 一切正常,直到(!)我重新打开包含对象 A 的文件。

问题:当我打开一个文件时,Eclipse 会做什么?它是否尝试根据写入的文件而不是编译的文件重新索引一个类?
结束更新

Eclipse 如何解析变量?它是否正在查看我的目标/文件夹中的类文件?我的所有生成代码都有 *.class 文件,所以如果 Eclipse 正在查看这些文件,这些变量应该确实存在。

有没有人让 Eclipse 正确解决这些变量?我尝试了 IntelliJ IDEA,但 IDEA 无法使用隐式转换和宏来解决任何问题(我遵循了我在网上找到的指示,但没有运气)。

信息:
面向 Java 开发人员的 Eclipse IDE

版本:氧气发布 (4.7.0)内部版本
号: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
version
2.1.0

4

1 回答 1

0

环顾四周,Intellij 或 Eclipse 似乎不支持 org.scala.macroparadise 插件。我通过切换到 Intellij scala 插件支持的 org.scalameta.paradise 插件解决了我的问题。

使用 org.scalameta,我生成的所有变量都可以解析,并且我的宏可以在 IDE 中展开。

于 2017-08-02T17:15:16.410 回答