From c9fc72c61056f1c4391a73a0150da5ab3be9a8aa Mon Sep 17 00:00:00 2001 From: Eugene Yokota Date: Tue, 25 Jul 2017 13:02:24 -0400 Subject: [PATCH 1/2] Format enforcement --- main/settings/src/main/scala/sbt/sbtUnchecked.scala | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/main/settings/src/main/scala/sbt/sbtUnchecked.scala b/main/settings/src/main/scala/sbt/sbtUnchecked.scala index 1fb53b8c8..525a76c87 100644 --- a/main/settings/src/main/scala/sbt/sbtUnchecked.scala +++ b/main/settings/src/main/scala/sbt/sbtUnchecked.scala @@ -2,7 +2,8 @@ package sbt import scala.annotation.Annotation -/** An annotation to designate that the annotated entity +/** + * An annotation to designate that the annotated entity * should not be considered for additional sbt compiler checks. * These checks ensure that the DSL is predictable and prevents * users from doing dangerous things at the cost of a stricter From 23bfcf58a566ba63970acf356c2d54f976d11b4a Mon Sep 17 00:00:00 2001 From: Eugene Yokota Date: Tue, 25 Jul 2017 13:05:40 -0400 Subject: [PATCH 2/2] Fix ^^ and don't inject scalaVersion by default This no longer injects scalaVersion at the project level, which was interfering with crossScalaVersions delegation to ThisBuild scope. Fixes sbt/sbt#3353 --- main/src/main/scala/sbt/Defaults.scala | 1 - main/src/main/scala/sbt/PluginCross.scala | 7 ++++--- .../project/cross-plugins-defaults/build.sbt | 18 ++++++++++++++++++ .../project/cross-plugins-defaults/test | 2 +- 4 files changed, 23 insertions(+), 5 deletions(-) diff --git a/main/src/main/scala/sbt/Defaults.scala b/main/src/main/scala/sbt/Defaults.scala index 779fdadd8..b4b1c0f12 100755 --- a/main/src/main/scala/sbt/Defaults.scala +++ b/main/src/main/scala/sbt/Defaults.scala @@ -244,7 +244,6 @@ object Defaults extends BuildCommon { sbt.inc.ClassfileManager.transactional(crossTarget.value / "classes.bak", sbt.Logger.Null)), scalaInstance := scalaInstanceTask.value, crossVersion := (if (crossPaths.value) CrossVersion.binary else CrossVersion.Disabled), - scalaVersion := PluginCross.scalaVersionSetting.value, sbtBinaryVersion in pluginCrossBuild := binarySbtVersion((sbtVersion in pluginCrossBuild).value), crossSbtVersions := Vector((sbtVersion in pluginCrossBuild).value), crossTarget := makeCrossTarget(target.value, diff --git a/main/src/main/scala/sbt/PluginCross.scala b/main/src/main/scala/sbt/PluginCross.scala index 7324b7f0e..351e7d60e 100644 --- a/main/src/main/scala/sbt/PluginCross.scala +++ b/main/src/main/scala/sbt/PluginCross.scala @@ -41,9 +41,10 @@ private[sbt] object PluginCross { import x._ state.log.info(s"Setting `sbtVersion in pluginCrossBuild` to $version") val add = List(sbtVersion in GlobalScope in pluginCrossBuild :== version) ++ - inConfig(Compile)(List(scalaVersion := scalaVersionSetting.value)) ++ - inConfig(Test)(List(scalaVersion := scalaVersionSetting.value)) - + List(scalaVersion := scalaVersionSetting.value) ++ + inScope(GlobalScope.copy(project = Select(currentRef)))(Seq( + scalaVersion := scalaVersionSetting.value + )) val cleared = session.mergeSettings.filterNot(crossExclude) val newStructure = Load.reapply(cleared ++ add, structure) Project.setProject(session, newStructure, command :: state) diff --git a/sbt/src/sbt-test/project/cross-plugins-defaults/build.sbt b/sbt/src/sbt-test/project/cross-plugins-defaults/build.sbt index 5327d2d20..e33286bfb 100644 --- a/sbt/src/sbt-test/project/cross-plugins-defaults/build.sbt +++ b/sbt/src/sbt-test/project/cross-plugins-defaults/build.sbt @@ -1,5 +1,9 @@ val baseSbt = "0.13" +val buildCrossList = List("2.10.6", "2.11.11", "2.12.2") +scalaVersion in ThisBuild := "2.10.6" +crossScalaVersions in ThisBuild := buildCrossList + lazy val root = (project in file(".")) .settings( sbtPlugin := true, @@ -11,6 +15,12 @@ lazy val root = (project in file(".")) assert(sv == "2.10", s"Wrong e:scalaVersion: $sv") assert(scalaBinaryVersion.value == "2.10", s"Wrong Scala binary version: ${scalaBinaryVersion.value}") assert(crossV startsWith "0.13", s"Wrong `sbtVersion in pluginCrossBuild`: $crossV") + + // crossScalaVersions in app should not be affected + val appCrossScalaVersions = (crossScalaVersions in app).value.toList + val appScalaVersion = (scalaVersion in app).value + assert(appCrossScalaVersions == buildCrossList, s"Wrong `crossScalaVersions in app`: $appCrossScalaVersions") + assert(appScalaVersion startsWith "2.10", s"Wrong `scalaVersion in app`: $appScalaVersion") }, TaskKey[Unit]("check2") := { @@ -20,5 +30,13 @@ lazy val root = (project in file(".")) assert(sv == "2.12", s"Wrong e:scalaVersion: $sv") assert(scalaBinaryVersion.value == "2.12", s"Wrong Scala binary version: ${scalaBinaryVersion.value}") assert(crossV startsWith "1.0.", s"Wrong `sbtVersion in pluginCrossBuild`: $crossV") + + // ^^ should not affect app's crossScalaVersions + val appCrossScalaVersions = (crossScalaVersions in app).value.toList + val appScalaVersion = (scalaVersion in app).value + assert(appCrossScalaVersions == buildCrossList, s"Wrong `crossScalaVersions in app`: $appCrossScalaVersions") + assert(appScalaVersion startsWith "2.10", s"Wrong `scalaVersion in app`: $appScalaVersion") } ) + +lazy val app = (project in file("app")) diff --git a/sbt/src/sbt-test/project/cross-plugins-defaults/test b/sbt/src/sbt-test/project/cross-plugins-defaults/test index a1d9be762..bad640e3f 100644 --- a/sbt/src/sbt-test/project/cross-plugins-defaults/test +++ b/sbt/src/sbt-test/project/cross-plugins-defaults/test @@ -1,5 +1,5 @@ > check -> ^^ 1.0.0-M5 +> ^^ 1.0.0-RC2 > check2