mirror of https://github.com/sbt/sbt.git
Merge pull request #6939 from eed3si9n/wip/cross-fix
[1.7.x] Filter incompatible Scala 3 projects in cross switch commands, take 2
This commit is contained in:
commit
7cc6ad3d00
|
|
@ -339,16 +339,18 @@ object Cross {
|
||||||
)
|
)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
} else {
|
} else
|
||||||
val binaryVersion = CrossVersion.binaryScalaVersion(version)
|
// This is the default implementation for ++ <sv> <command1>
|
||||||
|
// It checks that <sv> is backward compatible with one of the Scala versions listed
|
||||||
|
// in crossScalaVersions setting. Note this must account for the fact that in Scala 3.x
|
||||||
|
// 3.1.0 is not compatible with 3.0.0.
|
||||||
projectScalaVersions.map {
|
projectScalaVersions.map {
|
||||||
case (project, scalaVersions) =>
|
case (project, scalaVersions) =>
|
||||||
if (scalaVersions.exists(v => CrossVersion.binaryScalaVersion(v) == binaryVersion))
|
if (scalaVersions.exists(CrossVersion.isScalaBinaryCompatibleWith(version, _)))
|
||||||
(project, Some(version), scalaVersions)
|
(project, Some(version), scalaVersions)
|
||||||
else
|
else
|
||||||
(project, None, scalaVersions)
|
(project, None, scalaVersions)
|
||||||
}
|
}
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
|
||||||
val included = projects.collect {
|
val included = projects.collect {
|
||||||
|
|
|
||||||
|
|
@ -0,0 +1,8 @@
|
||||||
|
[@ruippeixotog]: https://github.com/ruippeixotog
|
||||||
|
|
||||||
|
[#6915]: https://github.com/sbt/sbt/issues/6915
|
||||||
|
[#6926]: https://github.com/sbt/sbt/pull/6926
|
||||||
|
|
||||||
|
### Bug Fixes
|
||||||
|
|
||||||
|
- Make `++ <scala-version> <command>` run `<command>` only on compatible Scala 3 subprojects. [#6915][]/[#6926][] by [@ruippeixotog][]
|
||||||
|
|
@ -14,7 +14,7 @@ object Dependencies {
|
||||||
// sbt modules
|
// sbt modules
|
||||||
private val ioVersion = nightlyVersion.getOrElse("1.6.0")
|
private val ioVersion = nightlyVersion.getOrElse("1.6.0")
|
||||||
private val lmVersion =
|
private val lmVersion =
|
||||||
sys.props.get("sbt.build.lm.version").orElse(nightlyVersion).getOrElse("1.7.0-M1")
|
sys.props.get("sbt.build.lm.version").orElse(nightlyVersion).getOrElse("1.7.0-M3")
|
||||||
val zincVersion = nightlyVersion.getOrElse("1.7.0-M2")
|
val zincVersion = nightlyVersion.getOrElse("1.7.0-M2")
|
||||||
|
|
||||||
private val sbtIO = "org.scala-sbt" %% "io" % ioVersion
|
private val sbtIO = "org.scala-sbt" %% "io" % ioVersion
|
||||||
|
|
|
||||||
|
|
@ -0,0 +1,14 @@
|
||||||
|
scalaVersion := "2.12.16"
|
||||||
|
|
||||||
|
lazy val core = project
|
||||||
|
.settings(
|
||||||
|
crossScalaVersions := Seq("2.12.16", "3.0.2", "3.1.2")
|
||||||
|
)
|
||||||
|
|
||||||
|
lazy val subproj = project
|
||||||
|
.dependsOn(core)
|
||||||
|
.settings(
|
||||||
|
crossScalaVersions := Seq("2.12.16", "3.1.2"),
|
||||||
|
// a random library compiled against Scala 3.1
|
||||||
|
libraryDependencies += "org.http4s" %% "http4s-core" % "0.23.12"
|
||||||
|
)
|
||||||
|
|
@ -0,0 +1,6 @@
|
||||||
|
import org.http4s.Uri
|
||||||
|
|
||||||
|
object A {
|
||||||
|
// Just using something from http4s
|
||||||
|
Uri.fromString("example.com")
|
||||||
|
}
|
||||||
|
|
@ -0,0 +1,14 @@
|
||||||
|
> ++3.0.2 compile
|
||||||
|
|
||||||
|
$ exists core/target/scala-3.0.2
|
||||||
|
-$ exists core/target/scala-3.1.2
|
||||||
|
-$ exists subproj/target/scala-3.0.2
|
||||||
|
-$ exists subproj/target/scala-3.1.2
|
||||||
|
|
||||||
|
> clean
|
||||||
|
> ++3.1.2 compile
|
||||||
|
|
||||||
|
-$ exists core/target/scala-3.0.2
|
||||||
|
$ exists core/target/scala-3.1.2
|
||||||
|
-$ exists subproj/target/scala-3.0.2
|
||||||
|
$ exists subproj/target/scala-3.1.2
|
||||||
Loading…
Reference in New Issue