diff --git a/core/src/main/scala/coursier/core/Orders.scala b/core/src/main/scala/coursier/core/Orders.scala index 1653e99d7..569596bae 100644 --- a/core/src/main/scala/coursier/core/Orders.scala +++ b/core/src/main/scala/coursier/core/Orders.scala @@ -107,6 +107,13 @@ object Orders { .groupBy(dep => (dep.optional, dep.scope)) .toList + /* + * Iterates over all pairs (xDep, yDep) from `dependencies`. + * If xDep < yDep (all that yDep brings is already brought by xDep), remove yDep. + * + * The (partial) order on dependencies is made of the ones on scope, optional, and exclusions. + */ + val remove = for { List(((xOpt, xScope), xDeps), ((yOpt, yScope), yDeps)) <- groupedDependencies.combinations(2)