From 1f5b8867ac42b82b925aa457217fcedaf4578949 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Piotr=20Krzemi=C5=84ski?= Date: Mon, 27 Aug 2018 15:01:32 +0200 Subject: [PATCH 1/6] initial port to 2.13.0-M4 --- .travis.yml | 2 +- build.sbt | 6 ++---- .../io/scalaland/chimney/internal/DerivationGuards.scala | 8 ++++---- .../io/scalaland/chimney/internal/TransformerMacros.scala | 6 ++++++ 4 files changed, 13 insertions(+), 9 deletions(-) diff --git a/.travis.yml b/.travis.yml index 85bebf0ad..d0360010c 100644 --- a/.travis.yml +++ b/.travis.yml @@ -1,8 +1,8 @@ language: scala scala: - 2.11.12 - - 2.12.6 - 2.12.7 + - 2.13.0-M5 jdk: - openjdk8 - openjdk11 diff --git a/build.sbt b/build.sbt index eebdbb9c6..a003b1b06 100644 --- a/build.sbt +++ b/build.sbt @@ -8,7 +8,7 @@ val versions = new { val settings = Seq( version := "0.2.1", scalaVersion := versions.scalaVersion, - crossScalaVersions := Seq("2.11.12", "2.12.7"), + crossScalaVersions := Seq("2.11.12", "2.12.7", "2.13.0-M4"), scalacOptions ++= Seq( "-target:jvm-1.8", "-encoding", @@ -20,7 +20,6 @@ val settings = Seq( "-language:existentials", "-language:higherKinds", "-language:implicitConversions", - "-Yno-adapted-args", "-Ywarn-dead-code", "-Ywarn-inaccessible", "-Ywarn-infer-any", @@ -44,8 +43,7 @@ val settings = Seq( "-Xlint:stars-align", "-Xlint:type-parameter-shadow", "-Xlint:unsound-match", - "-Xexperimental" - ), + ) ++ (if (scalaVersion.value >= "2.13") Nil else Seq("-Yno-adapted-args", "-Xexperimental")), scalacOptions in (Compile, console) --= Seq("-Ywarn-unused:imports", "-Xfatal-warnings") ) diff --git a/chimney/src/main/scala/io/scalaland/chimney/internal/DerivationGuards.scala b/chimney/src/main/scala/io/scalaland/chimney/internal/DerivationGuards.scala index 0d6cff4ea..ed0e2735f 100644 --- a/chimney/src/main/scala/io/scalaland/chimney/internal/DerivationGuards.scala +++ b/chimney/src/main/scala/io/scalaland/chimney/internal/DerivationGuards.scala @@ -34,7 +34,7 @@ trait DerivationGuards { } def bothOfTraversableOrArray(from: Type, to: Type): Boolean = { - traversableOrArray(from) && traversableOrArray(to) + iterableOrArray(from) && iterableOrArray(to) } def destinationCaseClass(to: Type): Boolean = { @@ -57,8 +57,8 @@ trait DerivationGuards { bothSealedClasses(from, to) } - def traversableOrArray(t: Type): Boolean = { - t <:< traversableTpe || t <:< arrayTpe + def iterableOrArray(t: Type): Boolean = { + t <:< iterableTpe || t <:< arrayTpe } val optionTpe: Type = typeOf[Option[_]] @@ -68,6 +68,6 @@ trait DerivationGuards { val leftTpe: Type = typeOf[Left[_, _]] val rightTpe: Type = typeOf[Right[_, _]] val mapTpe: Type = typeOf[scala.collection.Map[_, _]] - val traversableTpe: Type = typeOf[Traversable[_]] + val iterableTpe: Type = typeOf[Iterable[_]] val arrayTpe: Type = typeOf[Array[_]] } diff --git a/chimney/src/main/scala/io/scalaland/chimney/internal/TransformerMacros.scala b/chimney/src/main/scala/io/scalaland/chimney/internal/TransformerMacros.scala index 33e789d3a..a97a274ca 100644 --- a/chimney/src/main/scala/io/scalaland/chimney/internal/TransformerMacros.scala +++ b/chimney/src/main/scala/io/scalaland/chimney/internal/TransformerMacros.scala @@ -207,6 +207,9 @@ trait TransformerMacros { if (fn == innerTransformerTree) { if (sameCollectionTypes) { srcPrefixTree + } else if (scala.util.Properties.versionNumberString >= "2.13") { + val ToCompanionRef = patchedCompanionRef(c)(To) + q"$srcPrefixTree.to($ToCompanionRef)" } else { q"$srcPrefixTree.to[${To.typeConstructor}]" } @@ -214,6 +217,9 @@ trait TransformerMacros { val f = q"($fn: $FromCollectionT) => $innerTransformerTree" if (sameCollectionTypes) { q"$srcPrefixTree.map($f)" + } else if (scala.util.Properties.versionNumberString >= "2.13") { + val ToCompanionRef = patchedCompanionRef(c)(To) + q"$srcPrefixTree.map($f).to($ToCompanionRef)" } else { q"$srcPrefixTree.map($f).to[${To.typeConstructor}]" } From 17e5c71372a3ed52217042c5b2ac33f4f743523d Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Piotr=20Krzemi=C5=84ski?= Date: Wed, 21 Nov 2018 15:13:50 +0100 Subject: [PATCH 2/6] rebase, bump to 2.13.0-M5 --- build.sbt | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/build.sbt b/build.sbt index a003b1b06..23f161a6a 100644 --- a/build.sbt +++ b/build.sbt @@ -8,7 +8,7 @@ val versions = new { val settings = Seq( version := "0.2.1", scalaVersion := versions.scalaVersion, - crossScalaVersions := Seq("2.11.12", "2.12.7", "2.13.0-M4"), + crossScalaVersions := Seq("2.11.12", "2.12.7", "2.13.0-M5"), scalacOptions ++= Seq( "-target:jvm-1.8", "-encoding", From ed2779980467523c7a1fcbcba2d0487c82649e4c Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Piotr=20Krzemi=C5=84ski?= Date: Wed, 21 Nov 2018 15:20:22 +0100 Subject: [PATCH 3/6] -Ywarn-accessible removed from 2.13 build --- build.sbt | 3 +-- 1 file changed, 1 insertion(+), 2 deletions(-) diff --git a/build.sbt b/build.sbt index 23f161a6a..c6483c2c1 100644 --- a/build.sbt +++ b/build.sbt @@ -21,7 +21,6 @@ val settings = Seq( "-language:higherKinds", "-language:implicitConversions", "-Ywarn-dead-code", - "-Ywarn-inaccessible", "-Ywarn-infer-any", "-Ywarn-nullary-override", "-Ywarn-nullary-unit", @@ -43,7 +42,7 @@ val settings = Seq( "-Xlint:stars-align", "-Xlint:type-parameter-shadow", "-Xlint:unsound-match", - ) ++ (if (scalaVersion.value >= "2.13") Nil else Seq("-Yno-adapted-args", "-Xexperimental")), + ) ++ (if (scalaVersion.value >= "2.13") Nil else Seq("-Yno-adapted-args", "-Xexperimental", "-Ywarn-inaccessible")), scalacOptions in (Compile, console) --= Seq("-Ywarn-unused:imports", "-Xfatal-warnings") ) From 297463c2d9685494a03caf683a32fa13d7044218 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Piotr=20Krzemi=C5=84ski?= Date: Wed, 21 Nov 2018 15:36:38 +0100 Subject: [PATCH 4/6] -Ywarn-infer-any removed from 2.13 build --- build.sbt | 13 +++++++++++-- 1 file changed, 11 insertions(+), 2 deletions(-) diff --git a/build.sbt b/build.sbt index c6483c2c1..b786484b4 100644 --- a/build.sbt +++ b/build.sbt @@ -21,7 +21,6 @@ val settings = Seq( "-language:higherKinds", "-language:implicitConversions", "-Ywarn-dead-code", - "-Ywarn-infer-any", "-Ywarn-nullary-override", "-Ywarn-nullary-unit", "-Ywarn-numeric-widen", @@ -42,7 +41,17 @@ val settings = Seq( "-Xlint:stars-align", "-Xlint:type-parameter-shadow", "-Xlint:unsound-match", - ) ++ (if (scalaVersion.value >= "2.13") Nil else Seq("-Yno-adapted-args", "-Xexperimental", "-Ywarn-inaccessible")), + ) ++ ( + if (scalaVersion.value >= "2.13") + Nil + else + Seq( + "-Xexperimental", + "-Yno-adapted-args", + "-Ywarn-inaccessible", + "-Ywarn-infer-any" + ) + ), scalacOptions in (Compile, console) --= Seq("-Ywarn-unused:imports", "-Xfatal-warnings") ) From 3454e41015bc3e5beb6baf1cf21d119cf742d50f Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Piotr=20Krzemi=C5=84ski?= Date: Wed, 21 Nov 2018 15:49:34 +0100 Subject: [PATCH 5/6] adjust compiler flags to support cross compilation between 2.11 - 2.13 --- build.sbt | 20 ++++++++------------ 1 file changed, 8 insertions(+), 12 deletions(-) diff --git a/build.sbt b/build.sbt index b786484b4..6c802aace 100644 --- a/build.sbt +++ b/build.sbt @@ -11,23 +11,16 @@ val settings = Seq( crossScalaVersions := Seq("2.11.12", "2.12.7", "2.13.0-M5"), scalacOptions ++= Seq( "-target:jvm-1.8", - "-encoding", - "UTF-8", + "-encoding", "UTF-8", "-unchecked", "-deprecation", "-explaintypes", "-feature", - "-language:existentials", - "-language:higherKinds", - "-language:implicitConversions", "-Ywarn-dead-code", - "-Ywarn-nullary-override", - "-Ywarn-nullary-unit", "-Ywarn-numeric-widen", - "-Xfatal-warnings", +// "-Xfatal-warnings", "-Xfuture", "-Xlint:adapted-args", - "-Xlint:by-name-right-associative", "-Xlint:delayedinit-select", "-Xlint:doc-detached", "-Xlint:inaccessible", @@ -39,8 +32,7 @@ val settings = Seq( "-Xlint:poly-implicit-overload", "-Xlint:private-shadow", "-Xlint:stars-align", - "-Xlint:type-parameter-shadow", - "-Xlint:unsound-match", + "-Xlint:type-parameter-shadow" ) ++ ( if (scalaVersion.value >= "2.13") Nil @@ -49,7 +41,11 @@ val settings = Seq( "-Xexperimental", "-Yno-adapted-args", "-Ywarn-inaccessible", - "-Ywarn-infer-any" + "-Ywarn-infer-any", + "-Ywarn-nullary-override", + "-Ywarn-nullary-unit", + "-Xlint:by-name-right-associative", + "-Xlint:unsound-match" ) ), scalacOptions in (Compile, console) --= Seq("-Ywarn-unused:imports", "-Xfatal-warnings") From 75ac59328e9d2a6cb97095b5835737cb8fa2c668 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Piotr=20Krzemi=C5=84ski?= Date: Wed, 21 Nov 2018 16:06:42 +0100 Subject: [PATCH 6/6] bump sbt-scoverage to 1.6.0-M5 support Scala 2.13 --- project/plugins.sbt | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/project/plugins.sbt b/project/plugins.sbt index 25dd56b38..8d297dffc 100644 --- a/project/plugins.sbt +++ b/project/plugins.sbt @@ -1,4 +1,4 @@ -addSbtPlugin("org.scoverage" % "sbt-scoverage" % "1.5.1") +addSbtPlugin("org.scoverage" % "sbt-scoverage" % "1.6.0-M5") addSbtPlugin("org.scala-js" % "sbt-scalajs" % "0.6.25") addSbtPlugin("org.portable-scala" % "sbt-scalajs-crossproject" % "0.6.0")