【发布时间】:2020-07-12 14:40:14
【问题描述】:
TLDR; IntelliJ 没有突出显示我的 Scala 项目中的任何错误(语法/类型不匹配)。我已经尝试过类型感知突出显示,将突出显示级别设置为“检查”,并根据 StackOverflow 答案启用“实验功能”,然后重新加载项目。
我有一个在 IntelliJ 2019.3 中运行良好的 Scala 2.13 项目 (sbt)。之后我进行了一些更改(我没有检查它是否已编译,并且其中有几个错误),然后我决定将其移植到 Dotty(并将 IntelliJ 更新为 2020.1 EAP)。我新建了一个 Dotty 项目,显然没有错误。
然后我将我所有的源文件复制到这个项目并修改了 build.sbt 文件。当我这样做时,我可以看到一些语法错误突出显示,并且 given 关键字未被检测为关键字,很可能是因为插件认为该语言应该是 Scala 2,而不是 Scala 3。
之后,我从 sbt 导入项目,错误的语法错误消失了,所以我很高兴地关闭了该文件并开始修复其他文件。我不确定错误突出显示最初是否有效然后关闭,或者它是否从未有效。过了一会儿,我意识到未解析的引用没有突出显示——例如,当我拼错了一个类名并试图去声明时,它没有做任何事情,尽管当我更正它时,它可以解析引用,大概是因为那是没有错误的文件之一。然后我看到语法错误也没有被识别出来。
我启用了类型感知突出显示,并且突出显示级别设置为检查。我正在使用带有 Scala 插件版本 2020.1.977 (EAP) 的 IntelliJ 2020.1 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 的一个错误,很快就会解决。 Scala Nightly 插件有类似的行为,这就是为什么我切换到 EAP 并创建了一个全新的项目,我认为它的错误会更少。任何建议将不胜感激。
当我在 IntelliJ 2020.1 EAP 但不是在 2019.3 中打开旧的 Scala 2 项目时,也会发生同样的事情。现在看来,这不是 Dotty 特有的东西。
【问题讨论】:
标签: scala intellij-idea dotty intellij-scala scala-3