From 56746d5792d81864b0457535679f26320ca65a62 Mon Sep 17 00:00:00 2001 From: Adrien Piquerez Date: Tue, 6 Apr 2021 13:22:55 +0200 Subject: [PATCH] Fix unused nowarn in sbt plugins --- .../main/scala/sbt/plugins/SbtPlugin.scala | 13 ++++++++++- .../actions/cross-multiproject/build.sbt | 1 - sbt/src/sbt-test/project/sbt-plugin/build.sbt | 6 +++++ .../src/main/scala/myplugin/MyPlugin.scala | 22 +++++++++++++++++++ sbt/src/sbt-test/project/sbt-plugin/test | 1 + 5 files changed, 41 insertions(+), 2 deletions(-) create mode 100644 sbt/src/sbt-test/project/sbt-plugin/build.sbt create mode 100644 sbt/src/sbt-test/project/sbt-plugin/src/main/scala/myplugin/MyPlugin.scala create mode 100644 sbt/src/sbt-test/project/sbt-plugin/test diff --git a/main/src/main/scala/sbt/plugins/SbtPlugin.scala b/main/src/main/scala/sbt/plugins/SbtPlugin.scala index 5873d24122..5bebadc1d1 100644 --- a/main/src/main/scala/sbt/plugins/SbtPlugin.scala +++ b/main/src/main/scala/sbt/plugins/SbtPlugin.scala @@ -10,11 +10,22 @@ package plugins import Keys._ import Def.Setting +import sbt.SlashSyntax0._ +import sbt.librarymanagement.Configurations.Compile +import sbt.librarymanagement.{ SemanticSelector, VersionNumber } object SbtPlugin extends AutoPlugin { override def requires = ScriptedPlugin override lazy val projectSettings: Seq[Setting[_]] = Seq( - sbtPlugin := true + sbtPlugin := true, + Compile / scalacOptions ++= { + // silence unused @nowarns in 2.12 because of https://github.com/sbt/sbt/issues/6398 + // the option is only available since 2.12.13 + if (VersionNumber(scalaVersion.value).matchesSemVer(SemanticSelector("=2.12 >=2.12.13"))) + Some("-Wconf:cat=unused-nowarn:s") + else + None + } ) } diff --git a/sbt/src/sbt-test/actions/cross-multiproject/build.sbt b/sbt/src/sbt-test/actions/cross-multiproject/build.sbt index 2dd090dad7..066ef1d1e7 100644 --- a/sbt/src/sbt-test/actions/cross-multiproject/build.sbt +++ b/sbt/src/sbt-test/actions/cross-multiproject/build.sbt @@ -1,5 +1,4 @@ lazy val scala212 = "2.12.12" -// keep this at M5 to test full version lazy val scala213 = "2.13.1" ThisBuild / crossScalaVersions := Seq(scala212, scala213) diff --git a/sbt/src/sbt-test/project/sbt-plugin/build.sbt b/sbt/src/sbt-test/project/sbt-plugin/build.sbt new file mode 100644 index 0000000000..072e6af4a8 --- /dev/null +++ b/sbt/src/sbt-test/project/sbt-plugin/build.sbt @@ -0,0 +1,6 @@ +lazy val root = project.in(file(".")) + .enablePlugins(SbtPlugin) + .settings( + scalaVersion := "2.12.13", + scalacOptions ++= Seq("-Xfatal-warnings", "-Xlint") + ) diff --git a/sbt/src/sbt-test/project/sbt-plugin/src/main/scala/myplugin/MyPlugin.scala b/sbt/src/sbt-test/project/sbt-plugin/src/main/scala/myplugin/MyPlugin.scala new file mode 100644 index 0000000000..981bc16005 --- /dev/null +++ b/sbt/src/sbt-test/project/sbt-plugin/src/main/scala/myplugin/MyPlugin.scala @@ -0,0 +1,22 @@ +package myplugin + +import sbt._ +import sbt.Keys._ + +case object MyPlugin extends AutoPlugin { + object autoImport { + val helloWorld = Def.taskKey[String]("log and return hello world") + } + import autoImport._ + override def projectSettings: Seq[Def.Setting[_]] = Seq( + // should not produce a "@nowarn annotation does not suppres any warnings" warning + helloWorld := { + streams.value.log("Hello world") + "Hello world" + }, + Compile / compile := { + helloWorld.value // shoult not produce "a pure expression does nothing" warning + (Compile / compile).value + } + ) +} diff --git a/sbt/src/sbt-test/project/sbt-plugin/test b/sbt/src/sbt-test/project/sbt-plugin/test new file mode 100644 index 0000000000..5df2af1f39 --- /dev/null +++ b/sbt/src/sbt-test/project/sbt-plugin/test @@ -0,0 +1 @@ +> compile