in extractor-legacy-0.13/src/main/scala/org/jetbrains/sbt/extractors/DependenciesExtractor.scala [169:189]
private def processDependencies[D, F](
dependencies: Seq[(D, Seq[Configuration])]
)(mapToTargetType: ((D, Seq[Configuration])) => F): Dependencies[F] = {
val productionDependencies = mutable.Map.empty[D, Seq[Configuration]]
val testDependencies = mutable.Map.empty[D, Seq[Configuration]]
def updateDependenciesInProductionAndTest(project: D, configsForProduction: Seq[Configuration], configsForTest: Seq[Configuration]): Unit = {
Seq((productionDependencies, configsForProduction), (testDependencies, configsForTest))
.filterNot(_._2.isEmpty)
.foreach { case(dependencies, configs) =>
val existingConfigurations = dependencies.getOrElse(project, Seq.empty)
dependencies.update(project, existingConfigurations ++ configs)
}
}
dependencies.foreach { case(dependency, configurations) =>
val cs = splitConfigurationsToDifferentSourceSets(configurations)
updateDependenciesInProductionAndTest(dependency, cs.forProduction, cs.forTest)
}
Dependencies(productionDependencies.toSeq.map(mapToTargetType), testDependencies.toSeq.map(mapToTargetType))
}