From 00dda2a5f10e955371071e3520e9048afc2973f1 Mon Sep 17 00:00:00 2001 From: Eugene Yokota Date: Fri, 14 Oct 2016 14:19:53 -0400 Subject: [PATCH 1/2] Add "-deprecattion" flag to metabuild Fixes #2783 Ref #2716 `build.sbt` is treated a Scala source of metabuild, so to enable deprecation flag on build.sbt we set the option here. --- main/src/main/scala/sbt/Defaults.scala | 15 ++++++++++++--- 1 file changed, 12 insertions(+), 3 deletions(-) diff --git a/main/src/main/scala/sbt/Defaults.scala b/main/src/main/scala/sbt/Defaults.scala index a275d0d5b..b9fa0df96 100755 --- a/main/src/main/scala/sbt/Defaults.scala +++ b/main/src/main/scala/sbt/Defaults.scala @@ -1077,8 +1077,7 @@ object Defaults extends BuildCommon { lazy val runnerSettings: Seq[Setting[_]] = Seq(runnerTask) lazy val baseTasks: Seq[Setting[_]] = projectTasks ++ packageBase - - lazy val configSettings: Seq[Setting[_]] = Classpaths.configSettings ++ configTasks ++ configPaths ++ packageConfig ++ Classpaths.compilerPluginConfig + lazy val configSettings: Seq[Setting[_]] = Classpaths.configSettings ++ configTasks ++ configPaths ++ packageConfig ++ Classpaths.compilerPluginConfig ++ deprecationSettings lazy val compileSettings: Seq[Setting[_]] = configSettings ++ (mainRunMainTask +: mainRunTask +: addBaseSources) ++ Classpaths.addUnmanagedLibrary lazy val testSettings: Seq[Setting[_]] = configSettings ++ testTasks @@ -1093,7 +1092,17 @@ object Defaults extends BuildCommon { baseDirectory := thisProject.value.base, target := baseDirectory.value / "target" ) - + // build.sbt is treated a Scala source of metabuild, so to enable deprecation flag on build.sbt we set the option here. + lazy val deprecationSettings: Seq[Setting[_]] = + inConfig(Compile)(Seq( + scalacOptions := { + val old = scalacOptions.value + val existing = old.toSet + val d = "-deprecation" + if (sbtPlugin.value && !existing(d)) d :: old.toList + else old + } + )) } object Classpaths { import Keys._ From 38cf2cd1b25e1bea79dfa9bc4a728a7ac126cb13 Mon Sep 17 00:00:00 2001 From: Eugene Yokota Date: Fri, 14 Oct 2016 14:21:29 -0400 Subject: [PATCH 2/2] Improve deprecation message --- main-settings/src/main/scala/sbt/std/TaskMacro.scala | 10 ++++------ 1 file changed, 4 insertions(+), 6 deletions(-) diff --git a/main-settings/src/main/scala/sbt/std/TaskMacro.scala b/main-settings/src/main/scala/sbt/std/TaskMacro.scala index 1390145a8..c12900150 100644 --- a/main-settings/src/main/scala/sbt/std/TaskMacro.scala +++ b/main-settings/src/main/scala/sbt/std/TaskMacro.scala @@ -70,13 +70,11 @@ object TaskMacro { final val TransformInitName = "transform" final val InputTaskCreateDynName = "createDyn" final val InputTaskCreateFreeName = "createFree" - final val append1Migration = "Use `lhs += { x.value }`." - final val appendNMigration = "Use `lhs ++= { x.value }`." + final val append1Migration = "`<+=` operator is deprecated. Use `lhs += { x.value }`." + final val appendNMigration = "`<++=` operator is deprecated. Use `lhs ++= { x.value }`." final val assignMigration = - """Use `key := { x.value }` or `key ~= (old => { newValue })`. - |The RHS of `<<=` takes an `Initialize[_]` expression, which can be converted to `:=` style - |by wrapping the expression in parenthesis, and calling `.value` at the end. - |For example, `key := (key.dependsOn(compile in Test)).value`.""".stripMargin + """`<<=` operator is deprecated. Use `key := { x.value }` or `key ~= (old => { newValue })`. + |See http://www.scala-sbt.org/0.13/docs/Migrating-from-sbt-012x.html""".stripMargin def taskMacroImpl[T: c.WeakTypeTag](c: blackbox.Context)(t: c.Expr[T]): c.Expr[Initialize[Task[T]]] = Instance.contImpl[T, Id](c, FullInstance, FullConvert, MixedBuilder)(Left(t), Instance.idTransform[c.type])