Skip to content

Commit 83ad987

Browse files
committed
sbt-dotty: Fix minimum sbt version check
This fixes #5671. Also bump the minimum version to 1.2.7 due to scalaCompilerBridgeBinaryJar usage, etc.
1 parent 42af574 commit 83ad987

File tree

1 file changed

+10
-20
lines changed

1 file changed

+10
-20
lines changed

sbt-dotty/src/dotty/tools/sbtplugin/DottyPlugin.scala

Lines changed: 10 additions & 20 deletions
Original file line numberDiff line numberDiff line change
@@ -2,7 +2,10 @@ package dotty.tools.sbtplugin
22

33
import sbt._
44
import sbt.Keys._
5-
import sbt.librarymanagement._
5+
import sbt.librarymanagement.{
6+
ivy, DependencyResolution, ScalaModuleInfo, SemanticSelector, UpdateConfiguration, UnresolvedWarningConfiguration,
7+
VersionNumber
8+
}
69
import sbt.internal.inc.ScalaInstance
710
import xsbti.compile._
811
import java.net.URLClassLoader
@@ -90,20 +93,6 @@ object DottyPlugin extends AutoPlugin {
9093
override def requires: Plugins = plugins.JvmPlugin
9194
override def trigger = allRequirements
9295

93-
// Adapted from CrossVersionUtil#sbtApiVersion
94-
private def sbtFullVersion(v: String): Option[(Int, Int, Int)] =
95-
{
96-
val ReleaseV = """(\d+)\.(\d+)\.(\d+)(-\d+)?""".r
97-
val CandidateV = """(\d+)\.(\d+)\.(\d+)(-RC\d+)""".r
98-
val NonReleaseV = """(\d+)\.(\d+)\.(\d+)([-\w+]*)""".r
99-
v match {
100-
case ReleaseV(x, y, z, ht) => Some((x.toInt, y.toInt, z.toInt))
101-
case CandidateV(x, y, z, ht) => Some((x.toInt, y.toInt, z.toInt))
102-
case NonReleaseV(x, y, z, ht) if z.toInt > 0 => Some((x.toInt, y.toInt, z.toInt))
103-
case _ => None
104-
}
105-
}
106-
10796
/** Patches the IncOptions so that .tasty and .hasTasty files are pruned as needed.
10897
*
10998
* This code is adapted from `scalaJSPatchIncOptions` in Scala.js, which needs
@@ -133,12 +122,13 @@ object DottyPlugin extends AutoPlugin {
133122

134123
override val globalSettings: Seq[Def.Setting[_]] = Seq(
135124
onLoad in Global := onLoad.in(Global).value.andThen { state =>
125+
126+
val requiredVersion = ">=1.2.7"
127+
136128
val sbtV = sbtVersion.value
137-
sbtFullVersion(sbtV) match {
138-
case Some((1, sbtMinor, sbtPatch)) if sbtMinor > 1 || (sbtMinor == 1 && sbtPatch >= 5) =>
139-
case _ =>
140-
sys.error(s"The sbt-dotty plugin cannot work with this version of sbt ($sbtV), sbt >= 1.1.5 is required.")
141-
}
129+
if (!VersionNumber(sbtV).matchesSemVer(SemanticSelector(requiredVersion)))
130+
sys.error(s"The sbt-dotty plugin cannot work with this version of sbt ($sbtV), sbt $requiredVersion is required.")
131+
142132
state
143133
}
144134
)

0 commit comments

Comments
 (0)