【问题标题】:IntelliJ suddenly stops highlighting errors in Scala/Dotty project [closed]IntelliJ 突然停止突出显示 Scala/Dotty 项目中的错误 [关闭]
【发布时间】: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


    【解决方案1】:

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

    【讨论】:

    • 谢谢,只是VSCode要求你在加载项目之前用sbt编译,而我的项目没有编译。
    • 尝试注释掉大部分代码然后sbt run ide,然后逐部分取消注释,看看是哪部分代码出错了。
    【解决方案2】:

    截至 IntelliJ Scala Plugin 2020.1 Scala 3/dotty 正在获得支持

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

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

    更多详情请见IntelliJ Scala Plugin Blog

    【讨论】:

    • 我读到了,我在 IntelliJ 2020.1 中使用了 nightly 插件。不管是什么,在我更新了一次插件后它就停止了,一切正常,所以我暂时不会更新我的插件,以免它再次崩溃
    猜你喜欢
    • 2011-04-19
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-01-17
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-11-01
    相关资源
    最近更新 更多