diff --git a/build.sbt b/build.sbt index 90eee3c9c..554ca6977 100644 --- a/build.sbt +++ b/build.sbt @@ -39,7 +39,12 @@ lazy val `lm-coursier` = project else lm2_13Version }, "org.scalatest" %% "scalatest" % "3.2.12" % Test - ), + ) ++ { + if (scalaBinaryVersion.value == "2.12") + Seq() + else + Seq("org.scala-lang.modules" %% "scala-parallel-collections" % "1.0.4") + }, Test / test := { (publishLocal in customProtocolForTest212).value (publishLocal in customProtocolForTest213).value diff --git a/modules/lm-coursier/src/main/scala/lmcoursier/internal/CompatParColls.scala b/modules/lm-coursier/src/main/scala/lmcoursier/internal/CompatParColls.scala new file mode 100644 index 000000000..3e9e762ae --- /dev/null +++ b/modules/lm-coursier/src/main/scala/lmcoursier/internal/CompatParColls.scala @@ -0,0 +1,20 @@ +package lmcoursier.internal + +// This is required for jscala 2.12/2.13 compatibility for parallel collections +// (see https://github.com/scala/scala-parallel-collections/issues/22) +private[internal] object CompatParColls { + val Converters = { + import Compat._ + + { + import scala.collection.parallel._ + + CollectionConverters + } + } + + object Compat { + object CollectionConverters + } +} + diff --git a/modules/lm-coursier/src/main/scala/lmcoursier/internal/SbtUpdateReport.scala b/modules/lm-coursier/src/main/scala/lmcoursier/internal/SbtUpdateReport.scala index 40c956b79..4ef599dd7 100644 --- a/modules/lm-coursier/src/main/scala/lmcoursier/internal/SbtUpdateReport.scala +++ b/modules/lm-coursier/src/main/scala/lmcoursier/internal/SbtUpdateReport.scala @@ -12,6 +12,7 @@ import coursier.maven.MavenAttributes import coursier.util.Artifact import sbt.librarymanagement.{Artifact => _, Configuration => _, _} import sbt.util.Logger +import CompatParColls.Converters._ private[internal] object SbtUpdateReport { @@ -303,7 +304,7 @@ private[internal] object SbtUpdateReport { classLoaders: Seq[ClassLoader], ): UpdateReport = { - val configReports = resolutions.map { + val configReports = resolutions.par.map { case (config, subRes) => val reports = moduleReports(