From f1a99e5e4a9e377dec161da6204455c6579db22c Mon Sep 17 00:00:00 2001 From: Eugene Yokota Date: Thu, 11 Oct 2018 01:59:54 -0400 Subject: [PATCH 1/2] Fix the contains issue Fixes https://github.com/sbt/librarymanagement/issues/259 --- .../scala/sbt/librarymanagement/EvictionWarning.scala | 9 +++++---- .../sbt/internal/librarymanagement/IvyActions.scala | 2 +- .../sbt/internal/librarymanagement/IvyRetrieve.scala | 2 +- .../sbt/internal/librarymanagement/IvyScalaUtil.scala | 2 +- .../scala/sbt/internal/librarymanagement/MakePom.scala | 9 ++++++--- .../ivyint/CachedResolutionResolveEngine.scala | 8 ++++---- 6 files changed, 18 insertions(+), 14 deletions(-) diff --git a/core/src/main/scala/sbt/librarymanagement/EvictionWarning.scala b/core/src/main/scala/sbt/librarymanagement/EvictionWarning.scala index 2ec0e97f1..44e4465cb 100644 --- a/core/src/main/scala/sbt/librarymanagement/EvictionWarning.scala +++ b/core/src/main/scala/sbt/librarymanagement/EvictionWarning.scala @@ -226,7 +226,7 @@ object EvictionWarning { ): Seq[OrganizationArtifactReport] = { val buffer: mutable.ListBuffer[OrganizationArtifactReport] = mutable.ListBuffer() val confs = report.configurations filter { x => - options.configurations contains x.configuration + options.configurations.contains[ConfigRef](x.configuration) } confs flatMap { confReport => confReport.details map { detail => @@ -345,9 +345,10 @@ object EvictionWarning { val evo = a.options val out: mutable.ListBuffer[String] = mutable.ListBuffer() a.allEvictions foreach { ev => - if ((a.scalaEvictions contains ev) && evo.warnScalaVersionEviction) () - else if ((a.directEvictions contains ev) && evo.warnDirectEvictions) () - else if ((a.transitiveEvictions contains ev) && evo.warnTransitiveEvictions) () + if ((a.scalaEvictions.contains[EvictionPair](ev)) && evo.warnScalaVersionEviction) () + else if ((a.directEvictions.contains[EvictionPair](ev)) && evo.warnDirectEvictions) () + else if ((a.transitiveEvictions.contains[EvictionPair](ev)) && evo.warnTransitiveEvictions) + () else { out ++= ev.lines } diff --git a/ivy/src/main/scala/sbt/internal/librarymanagement/IvyActions.scala b/ivy/src/main/scala/sbt/internal/librarymanagement/IvyActions.scala index 700bc0ddb..29e9683d8 100644 --- a/ivy/src/main/scala/sbt/internal/librarymanagement/IvyActions.scala +++ b/ivy/src/main/scala/sbt/internal/librarymanagement/IvyActions.scala @@ -394,7 +394,7 @@ object IvyActions { val retReport = report retrieve { (conf: ConfigRef, mid, art, cached) => toRetrieve match { case None => performRetrieve(conf, mid, art, base, pattern, cached, copyChecksums, toCopy) - case Some(refs) if refs contains conf => + case Some(refs) if refs.contains[ConfigRef](conf) => performRetrieve(conf, mid, art, base, pattern, cached, copyChecksums, toCopy) case _ => cached } diff --git a/ivy/src/main/scala/sbt/internal/librarymanagement/IvyRetrieve.scala b/ivy/src/main/scala/sbt/internal/librarymanagement/IvyRetrieve.scala index e38618ddd..67ebaa521 100644 --- a/ivy/src/main/scala/sbt/internal/librarymanagement/IvyRetrieve.scala +++ b/ivy/src/main/scala/sbt/internal/librarymanagement/IvyRetrieve.scala @@ -254,7 +254,7 @@ object IvyRetrieve { val node = current.findNode(revId) if (revId == from) node :: path else if (node == node.getRoot) Nil - else if (path contains node) path + else if (path.contains[IvyNode](node)) path else doFindPath(node, node :: path) }) sortBy { _.size }).reverse paths.headOption getOrElse Nil diff --git a/ivy/src/main/scala/sbt/internal/librarymanagement/IvyScalaUtil.scala b/ivy/src/main/scala/sbt/internal/librarymanagement/IvyScalaUtil.scala index 3848bc0d1..e318eb6c2 100644 --- a/ivy/src/main/scala/sbt/internal/librarymanagement/IvyScalaUtil.scala +++ b/ivy/src/main/scala/sbt/internal/librarymanagement/IvyScalaUtil.scala @@ -138,7 +138,7 @@ object IvyScalaUtil { val id = dep.getDependencyRevisionId val depBinaryVersion = CrossVersion.binaryScalaVersion(id.getRevision) def isScalaLangOrg = id.getOrganisation == scalaOrganization - def isScalaArtifact = scalaArtifacts.contains(id.getName) + def isScalaArtifact = scalaArtifacts.contains[String](id.getName) def hasBinVerMismatch = depBinaryVersion != scalaBinaryVersion def matchesOneOfTheConfigs = dep.getModuleConfigurations exists { scalaVersionConfigs } val mismatched = isScalaLangOrg && isScalaArtifact && hasBinVerMismatch && matchesOneOfTheConfigs diff --git a/ivy/src/main/scala/sbt/internal/librarymanagement/MakePom.scala b/ivy/src/main/scala/sbt/internal/librarymanagement/MakePom.scala index f91589c9d..86f514e69 100644 --- a/ivy/src/main/scala/sbt/internal/librarymanagement/MakePom.scala +++ b/ivy/src/main/scala/sbt/internal/librarymanagement/MakePom.scala @@ -407,7 +407,9 @@ class MakePom(val log: Logger) { def getScopeAndOptional(confs: Array[String]): (Option[String], Boolean) = { val (opt, notOptional) = confs.partition(_ == Optional.name) val defaultNotOptional = - Configurations.defaultMavenConfigurations.find(notOptional contains _.name) + Configurations.defaultMavenConfigurations.find({ c: Configuration => + notOptional contains c.name + }) val scope = defaultNotOptional.map(_.name) (scope, opt.nonEmpty) } @@ -495,9 +497,10 @@ class MakePom(val log: Logger) { configurations: Option[Iterable[Configuration]] ): Seq[DependencyDescriptor] = { val keepConfigurations = IvySbt.getConfigurations(module, configurations) - val keepSet = Set(keepConfigurations.toSeq: _*) + val keepSet: Set[String] = Set(keepConfigurations.toSeq: _*) def translate(dependency: DependencyDescriptor) = { - val keep = dependency.getModuleConfigurations.filter(keepSet.contains) + val keep = dependency.getModuleConfigurations + .filter((conf: String) => keepSet.contains(conf)) if (keep.isEmpty) None else // TODO: translate the dependency to contain only configurations to keep diff --git a/ivy/src/main/scala/sbt/internal/librarymanagement/ivyint/CachedResolutionResolveEngine.scala b/ivy/src/main/scala/sbt/internal/librarymanagement/ivyint/CachedResolutionResolveEngine.scala index cf24d61d3..14635136c 100644 --- a/ivy/src/main/scala/sbt/internal/librarymanagement/ivyint/CachedResolutionResolveEngine.scala +++ b/ivy/src/main/scala/sbt/internal/librarymanagement/ivyint/CachedResolutionResolveEngine.scala @@ -593,7 +593,7 @@ private[sbt] trait CachedResolutionResolveEngine extends ResolveEngine { c <- mr.callers } yield (c.caller.organization, c.caller.name)).distinct callers foreach { c => - if (history contains c) { + if (history.contains[(String, String)](c)) { val loop = (c :: history.takeWhile(_ != c)) ::: List(c) if (!loopSets(loop.toSet)) { loopSets += loop.toSet @@ -801,7 +801,7 @@ private[sbt] trait CachedResolutionResolveEngine extends ResolveEngine { } val reports: Seq[((String, String), Vector[OrganizationArtifactReport])] = reports0.toSeq flatMap { - case (k, _) if !(pairs contains k) => Seq() + case (k, _) if !(pairs.contains[(String, String)](k)) => Seq() case ((organization, name), oars0) => val oars = oars0 map { oar => val (affected, unaffected) = oar.modules partition { mr => @@ -967,8 +967,8 @@ private[sbt] trait CachedResolutionResolveEngine extends ResolveEngine { } log.debug(s"::: remapped configs $remappedConfigs") val configurations = rootModuleConfs map { conf0 => - val remappedCRs = configurations0 filter { cr => - remappedConfigs(conf0.getName) contains cr.configuration + val remappedCRs: Vector[ConfigurationReport] = configurations0 filter { cr => + remappedConfigs(conf0.getName).contains[String](cr.configuration.name) } mergeConfigurationReports(ConfigRef(conf0.getName), remappedCRs, os, log) } From cb92556c7ff5dac1735e0c0bc52cfbf30458a5ff Mon Sep 17 00:00:00 2001 From: Eugene Yokota Date: Mon, 15 Oct 2018 03:10:00 -0400 Subject: [PATCH 2/2] sbt-scalafmt 0.15 to align with sbt/sbt --- project/plugins.sbt | 7 ++++--- 1 file changed, 4 insertions(+), 3 deletions(-) diff --git a/project/plugins.sbt b/project/plugins.sbt index 335c8fb18..1ebc7fc01 100644 --- a/project/plugins.sbt +++ b/project/plugins.sbt @@ -1,5 +1,6 @@ -addSbtPlugin("org.scala-sbt" % "sbt-houserules" % "0.3.8") -addSbtPlugin("org.scala-sbt" % "sbt-contraband" % "0.4.1") -addSbtPlugin("com.lightbend" % "sbt-whitesource" % "0.1.9") +addSbtPlugin("org.scala-sbt" % "sbt-houserules" % "0.3.8") +addSbtPlugin("com.lucidchart" % "sbt-scalafmt" % "1.15") +addSbtPlugin("org.scala-sbt" % "sbt-contraband" % "0.4.1") +addSbtPlugin("com.lightbend" % "sbt-whitesource" % "0.1.9") scalacOptions += "-language:postfixOps"