summaryrefslogtreecommitdiff
path: root/scalalib
diff options
context:
space:
mode:
authorNikolay Tatarinov <5min4eq.unity@gmail.com>2018-03-20 18:20:38 +0300
committerGitHub <noreply@github.com>2018-03-20 18:20:38 +0300
commitcb30f1c42c818b2a2b1e216823ca09c8430da5f9 (patch)
treed1f7e50547ab10c28bff562924a53c31a86e728c /scalalib
parent672642e4694088c2c0aee6e408de079318bcd4db (diff)
downloadmill-cb30f1c42c818b2a2b1e216823ca09c8430da5f9.tar.gz
mill-cb30f1c42c818b2a2b1e216823ca09c8430da5f9.tar.bz2
mill-cb30f1c42c818b2a2b1e216823ca09c8430da5f9.zip
Support scala milestone releases (with fixes for 2.13.0-M3) (#247)
* return full scala version for milestone releases * complete support for scala 2.13.0-M2 * match 2.13 milestone releases for compiler bridge sources * add hello world test case for scala 2.13.0-M3
Diffstat (limited to 'scalalib')
-rw-r--r--scalalib/src/mill/scalalib/Lib.scala11
-rw-r--r--scalalib/src/mill/scalalib/ScalaModule.scala15
-rw-r--r--scalalib/src/mill/scalalib/ScalaWorkerApi.scala2
-rw-r--r--scalalib/test/resources/hello-world/core/src-2.13/Shim.scala5
-rw-r--r--scalalib/test/src/mill/scalalib/HelloWorldTests.scala3
5 files changed, 29 insertions, 7 deletions
diff --git a/scalalib/src/mill/scalalib/Lib.scala b/scalalib/src/mill/scalalib/Lib.scala
index d8fd9963..e6a7a255 100644
--- a/scalalib/src/mill/scalalib/Lib.scala
+++ b/scalalib/src/mill/scalalib/Lib.scala
@@ -16,7 +16,16 @@ case class CompilationResult(analysisFile: Path, classes: PathRef)
object Lib{
- def scalaBinaryVersion(scalaVersion: String) = scalaVersion.split('.').dropRight(1).mkString(".")
+ private val ReleaseVersion = raw"""(\d+)\.(\d+)\.(\d+)""".r
+ private val MinorSnapshotVersion = raw"""(\d+)\.(\d+)\.([1-9]\d*)-SNAPSHOT""".r
+
+ def scalaBinaryVersion(scalaVersion: String) = {
+ scalaVersion match {
+ case ReleaseVersion(major, minor, _) => s"$major.$minor"
+ case MinorSnapshotVersion(major, minor, _) => s"$major.$minor"
+ case _ => scalaVersion
+ }
+ }
def grepJar(classPath: Agg[Path], s: String) = {
classPath
diff --git a/scalalib/src/mill/scalalib/ScalaModule.scala b/scalalib/src/mill/scalalib/ScalaModule.scala
index 0fe7e3dc..b5106e3e 100644
--- a/scalalib/src/mill/scalalib/ScalaModule.scala
+++ b/scalalib/src/mill/scalalib/ScalaModule.scala
@@ -98,13 +98,20 @@ trait ScalaModule extends mill.Module with TaskModule { outer =>
def platformSuffix = T{ "" }
- def scalaCompilerBridgeSources = T{
+ private val Milestone213 = raw"""2.13.(\d+)-M(\d+)""".r
+
+ def scalaCompilerBridgeSources = T {
+ val (scalaVersion0, scalaBinaryVersion0) = scalaVersion() match {
+ case Milestone213(_, _) => ("2.13.0-M2", "2.13.0-M2")
+ case _ => (scalaVersion(), Lib.scalaBinaryVersion(scalaVersion()))
+ }
+
resolveDependencies(
repositories,
- scalaVersion(),
+ scalaVersion0,
Seq(ivy"org.scala-sbt::compiler-bridge:1.1.0"),
sources = true
- )
+ ).map(_.find(_.path.last == s"compiler-bridge_${scalaBinaryVersion0}-1.1.0-sources.jar").map(_.path).get)
}
def scalacPluginClasspath: T[Agg[PathRef]] = T {
@@ -154,7 +161,7 @@ trait ScalaModule extends mill.Module with TaskModule { outer =>
scalaWorker.worker().compileScala(
scalaVersion(),
allSourceFiles().map(_.path),
- scalaCompilerBridgeSources().map(_.path),
+ scalaCompilerBridgeSources(),
compileClasspath().map(_.path),
scalaCompilerClasspath().map(_.path),
scalacOptions(),
diff --git a/scalalib/src/mill/scalalib/ScalaWorkerApi.scala b/scalalib/src/mill/scalalib/ScalaWorkerApi.scala
index 84db1dd8..a3760aed 100644
--- a/scalalib/src/mill/scalalib/ScalaWorkerApi.scala
+++ b/scalalib/src/mill/scalalib/ScalaWorkerApi.scala
@@ -54,7 +54,7 @@ trait ScalaWorkerModule extends mill.Module{
trait ScalaWorkerApi {
def compileScala(scalaVersion: String,
sources: Agg[Path],
- compileBridgeSources: Agg[Path],
+ compilerBridgeSources: Path,
compileClasspath: Agg[Path],
compilerClasspath: Agg[Path],
scalacOptions: Seq[String],
diff --git a/scalalib/test/resources/hello-world/core/src-2.13/Shim.scala b/scalalib/test/resources/hello-world/core/src-2.13/Shim.scala
new file mode 100644
index 00000000..cedeb26b
--- /dev/null
+++ b/scalalib/test/resources/hello-world/core/src-2.13/Shim.scala
@@ -0,0 +1,5 @@
+object Shim{
+ def main(args: Array[String]): Unit = {
+ Main0(args(0), scala.util.Properties.versionNumberString + " idk")
+ }
+}
diff --git a/scalalib/test/src/mill/scalalib/HelloWorldTests.scala b/scalalib/test/src/mill/scalalib/HelloWorldTests.scala
index 61d2b724..8b7c459f 100644
--- a/scalalib/test/src/mill/scalalib/HelloWorldTests.scala
+++ b/scalalib/test/src/mill/scalalib/HelloWorldTests.scala
@@ -30,7 +30,7 @@ object HelloWorldTests extends TestSuite {
object core extends HelloWorldModule
}
object CrossHelloWorld extends HelloBase {
- object core extends Cross[HelloWorldCross]("2.10.6", "2.11.11", "2.12.3", "2.12.4")
+ object core extends Cross[HelloWorldCross]("2.10.6", "2.11.11", "2.12.3", "2.12.4", "2.13.0-M3")
class HelloWorldCross(val crossScalaVersion: String) extends CrossScalaModule
}
@@ -250,6 +250,7 @@ object HelloWorldTests extends TestSuite {
'v211 - TestUtil.disableInJava9OrAbove(workspaceTest(CrossHelloWorld)(cross(_, "2.11.11", "2.11.11 pwns")))
'v2123 - workspaceTest(CrossHelloWorld)(cross(_, "2.12.3", "2.12.3 leet"))
'v2124 - workspaceTest(CrossHelloWorld)(cross(_, "2.12.4", "2.12.4 leet"))
+ 'v2130M3 - workspaceTest(CrossHelloWorld)(cross(_, "2.13.0-M3", "2.13.0-M3 idk"))
}