Eclipse:解决Scala中隐式转换和宏注释的问题

时间:2017-07-20 20:55:55

标签: eclipse scala scala-macros scala-ide scala-macro-paradise

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

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

更新
我已将行为与以下案例隔离开来:

  1. 我从一个文件中的带注释的对象A开始,在另一个文件中使用A.hello的对象B.
  2. 我编译了A的文件,它将方法“hello”添加到对象A。
  3. 一切正常,直到(!)我重新打开包含对象A的文件。
  4. 问题:打开文件时Eclipse会做什么?它是否尝试基于写入的文件而不是编译的文件重新索引类?
    结束更新

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

    有没有人让Eclipse正确解决这些变量?我尝试过IntelliJ IDEA,但是IDEA无法使用隐式转换和宏来解决任何问题(我按照我在网上发现的方向没有运气)。

    的信息:
    Eclipse IDE for Java Developers

    版本:氧气释放(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

1 个答案:

答案 0 :(得分:0)

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

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