IntelliJ внезапно перестает выделять ошибки в проекте Scala / Dotty - PullRequest
0 голосов
/ 01 апреля 2020

TLDR; IntelliJ не выделяет никаких ошибок (синтаксис / несоответствие типов) в моем Scala проекте. Я пробовал подсветку с учетом типов, установил уровень подсветки «Инспекции» и включил «Экспериментальные функции» в соответствии с ответами StackOverflow и перезагрузил проект.

У меня есть проект Scala 2.13 (sbt) это прекрасно работало в IntelliJ 2019.3. После этого я внес некоторые изменения (я не проверял, скомпилирован ли он, и в нем было несколько ошибок), а затем я решил перенести его на Dotty (а также обновил IntelliJ до 2020.1 EAP). Я создал новый проект Dotty, в котором явно не было ошибок.

Затем я скопировал все мои исходные файлы в этот проект и изменил файл build.sbt. Когда я это сделал, я увидел несколько выделенных синтаксических ошибок, и ключевое слово given не было обнаружено в качестве ключевого слова, скорее всего потому, что плагин думал, что язык должен был быть Scala 2, а не Scala 3.

После этого я импортировал проект из sbt, и неправильные синтаксические ошибки исчезли, поэтому я благополучно закрыл этот файл и начал исправлять остальные. Я не уверен, что подсвечивание ошибок сначала работало, а потом отключалось, или оно никогда не работало. Через некоторое время я понял, что неразрешенные ссылки не были выделены - например, когда я неправильно ввел имя класса и попытался go к объявлению, он ничего не сделал, хотя, когда я его исправил, он мог разрешить ссылка, вероятно, потому что это был один из файлов, в котором не было ошибок. Затем я увидел, что синтаксические ошибки также не распознаются.

У меня включена подсветка с учетом типов, и уровень подсветки установлен для проверок. Я использую 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 (этот всплывал несколько раз)

У меня такое чувство, что это просто ошибка с Дотти, которая скоро будет устранена. Плагин Scala Nightly имел похожее поведение, поэтому я переключился на EAP, а также создал совершенно новый проект, который, как я предполагал, будет менее глючным. Будем очень благодарны за любые предложения.

То же самое происходит с моим старым проектом Scala 2, когда я открываю его в IntelliJ 2020.1 EAP, но не в 2019.3. Теперь кажется, что это не вещь, определяемая Дотти c.

Ответы [ 2 ]

1 голос
/ 12 апреля 2020

Начиная с IntelliJ Scala Плагин 2020.1 Scala 3 / dotty получает поддержку

Плагин Scala теперь включает предварительную поддержку Scala 3: новый синтаксис, подсветка ошибок, навигация, информация о типе и многие другие функциональные возможности среды IDE.

Поскольку и язык, и языковая поддержка все еще работают, мы рекомендуем использовать плагин для ночных сборок, если Вы хотите получать новые функции и исправлять ошибки как можно быстрее.

Более подробную информацию можно найти в блоге плагинов IntelliJ Scala

1 голос
/ 01 апреля 2020

Dotty oficialy пока не поддерживается, потому что его синтаксис не заморожен, теперь изменяются такие вещи, как необязательные скобки. Единственное место, где все работает относительно хорошо, это официальный vscode, который используется разработчиками компиляторов. Итак, если вы хотите поиграть с dotty, vscode и все env, вероятно, будут вашим выбором: https://dotty.epfl.ch/docs/usage/ide-support.html

...