Сбой компиляции sbt из-за неправильной опции: '-Ywarn-macros:after'

С файлом build.sbt, например:

ThisBuild / organization := "com.company"
ThisBuild / version := "1.0.0-SNAPSHOT"
ThisBuild / scalaVersion := "2.11.12"

Global / concurrentRestrictions += Tags.limit(Tags.Test, 1)

Global / scalacOptions ++= Seq("-Ypartial-unification",
                               "-unchecked",
                               "-Xfatal-warnings",
                               "-Ywarn-dead-code",
                               "-Ywarn-inaccessible",
                               "-Ywarn-unused",
                               "-Ywarn-unused-import",
                               "-Ywarn-macros:after")

Я получаю [error] bad option: '-Ywarn-macros:none' после запуска sbt clean compile

Без -Ywarn-macros:after предупреждение о неиспользованном импорте вызывает ложные предупреждения в файлах, использующих макросы Circe, например: import io.circe.{ Decoder, Encoder }.


person Metropolis    schedule 12.02.2019    source источник
comment
У вас есть пример, когда вы получаете ложные предупреждения с помощью circe?   -  person Travis Brown    schedule 13.02.2019
comment
Пытаясь создать небольшой пример того, как -Ywarn-unused-import создает ложное предупреждение при использовании Circe, я не увидел таких предупреждений. И теперь эти предупреждения также не появляются в моем реальном проекте. Я полагаю, что иногда хороший ночной сон — лучший отладчик.   -  person Metropolis    schedule 14.02.2019


Ответы (1)


-Ywarn-macros не добавлялся до Scala 2.12, поэтому ошибка ожидаема.

Можно ли перейти на Scala 2.12? Если вы застряли на 2.11, возможно, вам придется жить без -Ywarn-unused-import. (Неиспользуемые предупреждения в целом значительно улучшились по мере развития серии 2.12.x благодаря неустанной работе над ней Сома Снитта.)

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

Другой вариант — попробовать https://github.com/ghik/silencer.

person Seth Tisue    schedule 12.02.2019