diff --git a/main/src/main/scala/sbt/Defaults.scala b/main/src/main/scala/sbt/Defaults.scala index 9553e3b65..2073f6feb 100644 --- a/main/src/main/scala/sbt/Defaults.scala +++ b/main/src/main/scala/sbt/Defaults.scala @@ -3134,17 +3134,16 @@ object Classpaths { }).value), csrSameVersions ++= { partialVersion(scalaVersion.value) match { - // See https://github.com/sbt/sbt/issues/8224 - // Scala 3.8+ should align only Scala3_8Artifacts - case Some((3, minor)) if minor >= 8 => - ScalaArtifacts.Scala3_8Artifacts - .map(a => InclExclRule(scalaOrganization.value, a)) - .toSet :: Nil - case Some((major, minor)) if major == 2 || major == 3 => + case Some((major, minor)) if major == 2 && minor < 13 => ScalaArtifacts.Artifacts .map(a => InclExclRule(scalaOrganization.value, a)) .toSet :: Nil - case _ => Nil + // Due to the Scala 2.13-3.x sandwich, the absence of scala-reflect + // that corresponds with scala-library 3.8.x propagates to 2.13 builds as well. + case _ => + ScalaArtifacts.Scala3_8Artifacts + .map(a => InclExclRule(scalaOrganization.value, a)) + .toSet :: Nil } }, moduleName := normalizedName.value, diff --git a/sbt-app/src/sbt-test/dependency-management/stdlib-3.8/build.sbt b/sbt-app/src/sbt-test/dependency-management/stdlib-3.8/build.sbt new file mode 100644 index 000000000..58ef2f92f --- /dev/null +++ b/sbt-app/src/sbt-test/dependency-management/stdlib-3.8/build.sbt @@ -0,0 +1,12 @@ +lazy val a = project + .settings( + scalaVersion := "3.8.1" + ) + +// (b / update) sbt.librarymanagement.ResolveException: Error downloading org.scala-lang:scala-reflect:3.8.1 +lazy val b = project + .dependsOn(a) + .settings( + scalaVersion := "2.13.10", + libraryDependencies += "org.scala-lang" % "scala-reflect" % "2.13.10", + ) diff --git a/sbt-app/src/sbt-test/dependency-management/stdlib-3.8/test b/sbt-app/src/sbt-test/dependency-management/stdlib-3.8/test new file mode 100644 index 000000000..103bd8d2f --- /dev/null +++ b/sbt-app/src/sbt-test/dependency-management/stdlib-3.8/test @@ -0,0 +1 @@ +> update diff --git a/sbt-app/src/sbt-test/dependency-management/stdlib-unfreeze/build.sbt b/sbt-app/src/sbt-test/dependency-management/stdlib-unfreeze/build.sbt index ab04ff427..6d4696357 100644 --- a/sbt-app/src/sbt-test/dependency-management/stdlib-unfreeze/build.sbt +++ b/sbt-app/src/sbt-test/dependency-management/stdlib-unfreeze/build.sbt @@ -3,12 +3,12 @@ import sbt.librarymanagement.InclExclRule lazy val a = project.settings( scalaVersion := "2.13.11", libraryDependencies += "org.scala-lang" % "scala-reflect" % scalaVersion.value, - TaskKey[Unit]("checkLibs") := checkLibs("2.13.11", (Compile/dependencyClasspath).value, ".*scala-(library|reflect).*"), + TaskKey[Unit]("checkLibs") := checkLibs("2.13.11", (Compile/dependencyClasspath).value, ".*scala-library.*"), ) lazy val b = project.dependsOn(a).settings( scalaVersion := "2.13.12", - TaskKey[Unit]("checkLibs") := checkLibs("2.13.12", (Compile/dependencyClasspath).value, ".*scala-(library|reflect).*"), + TaskKey[Unit]("checkLibs") := checkLibs("2.13.12", (Compile/dependencyClasspath).value, ".*scala-library.*"), ) lazy val a3 = project.settings( diff --git a/sbt-app/src/sbt-test/dependency-management/stdlib-unfreeze/test b/sbt-app/src/sbt-test/dependency-management/stdlib-unfreeze/test index 8eb173463..2504dd508 100644 --- a/sbt-app/src/sbt-test/dependency-management/stdlib-unfreeze/test +++ b/sbt-app/src/sbt-test/dependency-management/stdlib-unfreeze/test @@ -15,6 +15,5 @@ $ delete s2.13.14.txt # without the default `csrSameVersions`, scala-reflect in b stays at 2.13.11 > set b/csrSameVersions := Nil > b/update --> b/checkLibs > ak/checkLibs