我正在使用macroparadise在我的项目中生成方法和案例类(宏本身是在我使用它们的核心文件的单独项目中定义的)。
Everything编译并按预期运行,但Eclipse无法解析由我的宏生成的变量和方法。但是,当我关闭并重新打开Eclipse时,它可以完美地识别所有内容;我可以将鼠标悬停在类和方法上并获取正确的信息。但是,只要我更改了任何内容,甚至只是关闭并重新打开引用生成方法的文件,Eclipse就会强调所有生成的变量和方法,并告诉我“not found:value {name}”(其中{name}是var name )。
更新
我已将行为与以下案例隔离开来:
问题:打开文件时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
答案 0 :(得分:0)
环顾四周后,似乎没有Intellij或Eclipse支持org.scala.macroparadise插件。我通过切换到了Intellij scala插件支持的org.scalameta.paradise插件解决了我的问题。
使用org.scalameta,我可以解析所有生成的变量,并且可以在IDE中扩展我的宏。