IntelliJ突然停止突出显示Scala/Dotty项目中的错误



TLDR;IntelliJ没有在我的Scala项目中突出显示任何错误(语法/类型不匹配(。我尝试过类型识别高亮显示,将高亮显示级别设置为"Inspections",并根据StackOverflow的答案启用"Experimental Features",然后重新加载项目。

我有一个Scala 2.13项目(sbt(,它在IntelliJ 2019.3中运行得很好。在那之后,我做了一些更改(我没有检查它是否编译过,它有几个错误(,然后我决定将它移植到Dotty(并将IntelliJ更新为2020.1EAP(。我创建了一个新的Dotty项目,显然没有任何错误。

然后,我将所有的源文件复制到这个项目中,并修改了build.sbt文件。当我这样做的时候,我可以看到一些语法错误被突出显示,并且given关键字没有被检测为关键字,很可能是因为插件认为语言应该是Scala 2,而不是Scala 3。

之后,我从sbt导入了该项目,错误的语法错误消失了,所以我很高兴地关闭了该文件,并开始修复其他文件。我不确定错误突出显示最初是否起作用,然后关闭,或者它是否从未起作用。过了一段时间,我意识到未解析的引用没有突出显示——例如,当我拼写错误地输入类名并试图转到声明时,它什么也没做,尽管当我更正它时,它可以解析引用,大概是因为那是一个没有错误的文件。然后我发现语法错误也无法识别。

我启用了类型识别高亮显示,并且高亮显示级别设置为检查。我正在使用IntelliJ 2020.1 EAP和Scala插件build 2020.1.977(EAP(。build.sbt包含scala版本"0.23.0-RC1"。IntelliJ当时没有运行任何其他进程,我的计算机上也没有任何资源密集型程序。

我在右下角收到了多条错误消息,比如

  • java.lang.AssertionError: assertion failed(几次(

  • com.intellij.psi.PsiInvalidElementAccessException: Element: class org.jetbrains.plugins.scala.lang.psi.impl.statements.params.ScTypeParamImpl #Scala because: different providers: org.jetbrains.plugins.scala.lang.psi.ScFileViewProvider{vFile=file:<The path>/Pattern.scala, content=VirtualFileContent{size=1716}, eventSystemEnabled=true}(a24437); org.jetbrains.plugins.scala.lang.psi.ScFileViewProvider{vFile=file:<Same path>/Pattern.scala, content=VirtualFileContent{size=1716}, eventSystemEnabled=true}(b39181a) invalidated at(这个出现了好几次(

我有一种感觉,这只是Dotty的一个bug,很快就会得到解决。Scala Nightly插件也有类似的行为,这就是为什么我切换到EAP,并创建了一个全新的项目,我认为它不会那么bug。如有任何建议,我们将不胜感激

同样的事情也发生在我的旧Scala 2项目上,当我在IntelliJ 2020.1 EAP中打开它时,但在2019.3中没有。现在看来,这并不是多蒂特有的事情。

Dotty-ofcialy还不受支持,因为它的语法没有冻结,现在正在更改可选大括号之类的东西。唯一一个一切都相对良好的地方是官方的vscode,它被编译器开发人员使用。因此,如果你想玩dotty,vscode和所有env可能是你的选择:https://dotty.epfl.ch/docs/usage/ide-support.html

IntelliJ Scala插件2020.1Scala 3/dotty开始支持

Scala插件现在包括对Scala 3的初步支持:新语法、错误突出显示、导航、类型信息和许多其他基本IDE功能。

由于语言和语言支持仍在进行中,如果您想尽快获得新功能和错误修复,我们建议您使用插件夜间构建。

更多详细信息可以在IntelliJ Scala插件博客中找到

最新更新