in multiversion/src/main/scala/multiversion/outputs/ResolutionIndex.scala [214:246]
def resolveVersions(
verForces: Set[VersionConfig],
compat: VersionCompatibility
): Set[VersionConfig] = {
def hasOverride(v: Version): Boolean = {
val lower = v.repr.toLowerCase(Locale.ENGLISH)
overrideTags.exists(t => lower.contains(t)) && !lower.contains("shaded")
}
def lessThan(v1: Version, v2: Version): Boolean =
(!hasOverride(v1) && hasOverride(v2)) || (v1 < v2 && hasOverride(v1) == hasOverride(v2))
// The "winners" are the highest or forced selected versions
val winners = mutable.Set.empty[VersionConfig]
verForces.foreach { case challenger @ VersionConfig(_, version, force) =>
val isCompatible = winners.exists { case w @ VersionConfig(_, wversion, wforce) =>
if (isCompat(version.repr, wversion.repr, compat)) {
if (
(lessThan(wversion, version) && force == wforce)
|| (force && !wforce)
) {
winners.remove(w)
winners.add(challenger)
}
true
} else {
false
}
}
if (!isCompatible) {
winners.add(challenger)
}
}
winners.toSet
}