summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorGuillaume Martres <smarter@ubuntu.com>2019-09-09 19:58:15 +0200
committerTobias Roeser <le.petit.fou@web.de>2019-09-09 19:58:15 +0200
commitf9a9991687d6aa70e50ff2ec5ad4d9e039b7f723 (patch)
tree6a9a0dc4dcef369e3757abbab28ea7985616d101
parente6f6a9559b79cf6ade1a85b483119ee8b5b37abb (diff)
downloadmill-f9a9991687d6aa70e50ff2ec5ad4d9e039b7f723.tar.gz
mill-f9a9991687d6aa70e50ff2ec5ad4d9e039b7f723.tar.bz2
mill-f9a9991687d6aa70e50ff2ec5ad4d9e039b7f723.zip
Properly support Dotty >= 0.18.1 (#682)
Dotty now uses the 2.13 standard library, so `withDottyCompat` needs to use the correct suffix depending on the Dotty version.
-rw-r--r--scalalib/api/src/ZincWorkerApi.scala11
-rw-r--r--scalalib/src/Dep.scala19
-rw-r--r--scalalib/test/resources/dotty213/foo/src/Main.scala6
-rw-r--r--scalalib/test/src/HelloWorldTests.scala15
4 files changed, 44 insertions, 7 deletions
diff --git a/scalalib/api/src/ZincWorkerApi.scala b/scalalib/api/src/ZincWorkerApi.scala
index 418b18c6..53a98c24 100644
--- a/scalalib/api/src/ZincWorkerApi.scala
+++ b/scalalib/api/src/ZincWorkerApi.scala
@@ -64,11 +64,12 @@ object Util {
.getOrElse(throw new Exception(s"Cannot find $mavenStylePath or $ivyStylePath in ${classPath.mkString("[", ", ", "]")}"))
}
- private val ReleaseVersion = raw"""(\d+)\.(\d+)\.(\d+)""".r
- private val MinorSnapshotVersion = raw"""(\d+)\.(\d+)\.([1-9]\d*)-SNAPSHOT""".r
- private val DottyVersion = raw"""(0|3)\.(\d+)\.(\d+).*""".r
- private val DottyNightlyVersion = raw"""(0|3)\.(\d+)\.(\d+)-bin-(.*)-NIGHTLY""".r
- private val TypelevelVersion = raw"""(\d+)\.(\d+)\.(\d+)-bin-typelevel.*""".r
+ val PartialVersion = raw"""(\d+)\.(\d+)\.*""".r
+ val ReleaseVersion = raw"""(\d+)\.(\d+)\.(\d+)""".r
+ val MinorSnapshotVersion = raw"""(\d+)\.(\d+)\.([1-9]\d*)-SNAPSHOT""".r
+ val DottyVersion = raw"""(0|3)\.(\d+)\.(\d+).*""".r
+ val DottyNightlyVersion = raw"""(0|3)\.(\d+)\.(\d+)-bin-(.*)-NIGHTLY""".r
+ val TypelevelVersion = raw"""(\d+)\.(\d+)\.(\d+)-bin-typelevel.*""".r
def scalaBinaryVersion(scalaVersion: String) = scalaVersion match {
diff --git a/scalalib/src/Dep.scala b/scalalib/src/Dep.scala
index a6c77bfc..8429829c 100644
--- a/scalalib/src/Dep.scala
+++ b/scalalib/src/Dep.scala
@@ -5,7 +5,7 @@ import upickle.default.{macroRW, ReadWriter => RW}
import CrossVersion._
case class Dep(dep: coursier.Dependency, cross: CrossVersion, force: Boolean) {
- import mill.scalalib.api.Util.isDotty
+ import mill.scalalib.api.Util.{isDotty, DottyVersion}
def artifactName(binaryVersion: String, fullVersion: String, platformSuffix: String) = {
val suffix = cross.suffixString(binaryVersion, fullVersion, platformSuffix)
@@ -56,7 +56,22 @@ case class Dep(dep: coursier.Dependency, cross: CrossVersion, force: Boolean) {
def withDottyCompat(scalaVersion: String): Dep =
cross match {
case cross: Binary if isDotty(scalaVersion) =>
- copy(cross = Constant(value = "_2.12", platformed = cross.platformed))
+ val compatSuffix =
+ scalaVersion match {
+ case DottyVersion("3", _) =>
+ "_2.13"
+ case DottyVersion("0", minor, patch) =>
+ if (minor.toInt > 18 || minor.toInt == 18 && patch.toInt >= 1)
+ "_2.13"
+ else
+ "_2.12"
+ case _ =>
+ ""
+ }
+ if (compatSuffix.nonEmpty)
+ copy(cross = Constant(value = compatSuffix, platformed = cross.platformed))
+ else
+ this
case _ =>
this
}
diff --git a/scalalib/test/resources/dotty213/foo/src/Main.scala b/scalalib/test/resources/dotty213/foo/src/Main.scala
new file mode 100644
index 00000000..653e65fd
--- /dev/null
+++ b/scalalib/test/resources/dotty213/foo/src/Main.scala
@@ -0,0 +1,6 @@
+object Main {
+ def main(args: Array[String]): Unit = {
+ assert(collection.immutable.ArraySeq(1).toString == "ArraySeq(1)")
+ assert(scala.xml.Node.EmptyNamespace == "")
+ }
+}
diff --git a/scalalib/test/src/HelloWorldTests.scala b/scalalib/test/src/HelloWorldTests.scala
index 957709eb..80beb6b1 100644
--- a/scalalib/test/src/HelloWorldTests.scala
+++ b/scalalib/test/src/HelloWorldTests.scala
@@ -270,6 +270,13 @@ object HelloWorldTests extends TestSuite {
}
}
+ object Dotty213 extends HelloBase {
+ object foo extends ScalaModule {
+ def scalaVersion = "0.18.1-RC1"
+ def ivyDeps = Agg(ivy"org.scala-lang.modules::scala-xml:1.2.0".withDottyCompat(scalaVersion()))
+ }
+ }
+
val resourcePath = os.pwd / 'scalalib / 'test / 'resources / "hello-world"
def jarMainClass(jar: JarFile): Option[String] = {
@@ -935,5 +942,13 @@ object HelloWorldTests extends TestSuite {
assert(evalCount > 0)
}
}
+
+ 'dotty213 - workspaceTest(
+ Dotty213,
+ resourcePath = os.pwd / 'scalalib / 'test / 'resources / "dotty213"
+ ){ eval =>
+ val Right((_, evalCount)) = eval.apply(Dotty213.foo.run())
+ assert(evalCount > 0)
+ }
}
}