1

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 特有的东西。

4

2 回答 2

1

IntelliJ Scala Plugin 2020.1 起, Scala 3/dotty 获得支持

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

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

更多细节可以在IntelliJ Scala 插件博客中找到

于 2020-04-12T03:49:49.593 回答
1

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

于 2020-04-01T09:34:32.060 回答