From b926f3ea2f9e9c0618e7e95e03939632b553fc10 Mon Sep 17 00:00:00 2001 From: Sergey Igushkin Date: Tue, 8 Feb 2022 16:22:48 +0400 Subject: [PATCH] KT-MR-5666 Keep dep graph utils internal; reuse transitive closure utils --- .../gradle/plugin/mpp/CompilationDetails.kt | 10 ++-------- .../plugin/mpp/pm20/DependencyGraphResolver.kt | 11 ----------- .../plugin/mpp/pm20/KotlinCompilationData.kt | 1 + .../mpp/pm20/util/dependencyGraphUtils.kt | 17 +++++++++++++++++ 4 files changed, 20 insertions(+), 19 deletions(-) create mode 100644 libraries/tools/kotlin-gradle-plugin/src/main/kotlin/org/jetbrains/kotlin/gradle/plugin/mpp/pm20/util/dependencyGraphUtils.kt diff --git a/libraries/tools/kotlin-gradle-plugin/src/main/kotlin/org/jetbrains/kotlin/gradle/plugin/mpp/CompilationDetails.kt b/libraries/tools/kotlin-gradle-plugin/src/main/kotlin/org/jetbrains/kotlin/gradle/plugin/mpp/CompilationDetails.kt index 1a51af8b59e..1b4fdd2df1b 100644 --- a/libraries/tools/kotlin-gradle-plugin/src/main/kotlin/org/jetbrains/kotlin/gradle/plugin/mpp/CompilationDetails.kt +++ b/libraries/tools/kotlin-gradle-plugin/src/main/kotlin/org/jetbrains/kotlin/gradle/plugin/mpp/CompilationDetails.kt @@ -15,6 +15,7 @@ import org.gradle.api.tasks.SourceSet import org.gradle.api.tasks.TaskProvider import org.gradle.api.tasks.bundling.AbstractArchiveTask import org.gradle.kotlin.dsl.withType +import org.jetbrains.kotlin.commonizer.util.transitiveClosure import org.jetbrains.kotlin.gradle.dsl.* import org.jetbrains.kotlin.gradle.dsl.KotlinJvmOptionsImpl import org.jetbrains.kotlin.gradle.plugin.* @@ -69,14 +70,7 @@ interface CompilationDetailsWithRuntime : CompilationDe } internal val CompilationDetails<*>.associateWithTransitiveClosure: Iterable> - get() = mutableSetOf>().apply { - fun visit(other: CompilationDetails<*>) { - if (add(other)) { - other.associateCompilations.forEach(::visit) - } - } - associateCompilations.forEach(::visit) - } + get() = transitiveClosure(this) { associateCompilations } open class DefaultCompilationDetails( final override val target: KotlinTarget, diff --git a/libraries/tools/kotlin-gradle-plugin/src/main/kotlin/org/jetbrains/kotlin/gradle/plugin/mpp/pm20/DependencyGraphResolver.kt b/libraries/tools/kotlin-gradle-plugin/src/main/kotlin/org/jetbrains/kotlin/gradle/plugin/mpp/pm20/DependencyGraphResolver.kt index 8fa6ce903f4..31acf413e75 100644 --- a/libraries/tools/kotlin-gradle-plugin/src/main/kotlin/org/jetbrains/kotlin/gradle/plugin/mpp/pm20/DependencyGraphResolver.kt +++ b/libraries/tools/kotlin-gradle-plugin/src/main/kotlin/org/jetbrains/kotlin/gradle/plugin/mpp/pm20/DependencyGraphResolver.kt @@ -112,14 +112,3 @@ class GradleDependencyGraph( override val root: GradleDependencyGraphNode ) : DependencyGraphResolution.DependencyGraph(requestingModule, root) -val GradleDependencyGraph.allGraphNodes: Iterable - get() = mutableSetOf().apply { - fun visit(node: GradleDependencyGraphNode) { - if (add(node)) - node.dependenciesByFragment.values.flatten().forEach(::visit) - } - visit(root) - } - -val GradleDependencyGraph.allDependencyModules: Iterable - get() = allGraphNodes.map { it.module }.filter { it != root.module } diff --git a/libraries/tools/kotlin-gradle-plugin/src/main/kotlin/org/jetbrains/kotlin/gradle/plugin/mpp/pm20/KotlinCompilationData.kt b/libraries/tools/kotlin-gradle-plugin/src/main/kotlin/org/jetbrains/kotlin/gradle/plugin/mpp/pm20/KotlinCompilationData.kt index 8de54b13061..971bd81b2a2 100644 --- a/libraries/tools/kotlin-gradle-plugin/src/main/kotlin/org/jetbrains/kotlin/gradle/plugin/mpp/pm20/KotlinCompilationData.kt +++ b/libraries/tools/kotlin-gradle-plugin/src/main/kotlin/org/jetbrains/kotlin/gradle/plugin/mpp/pm20/KotlinCompilationData.kt @@ -13,6 +13,7 @@ import org.jetbrains.kotlin.gradle.dsl.pm20Extension import org.jetbrains.kotlin.gradle.plugin.* import org.jetbrains.kotlin.gradle.plugin.mpp.GradleModuleVariantResolver import org.jetbrains.kotlin.gradle.plugin.mpp.isMain +import org.jetbrains.kotlin.gradle.plugin.mpp.pm20.util.allDependencyModules import org.jetbrains.kotlin.gradle.plugin.mpp.pm20.util.disambiguateName import org.jetbrains.kotlin.gradle.utils.filesProvider import org.jetbrains.kotlin.gradle.utils.lowerCamelCaseName diff --git a/libraries/tools/kotlin-gradle-plugin/src/main/kotlin/org/jetbrains/kotlin/gradle/plugin/mpp/pm20/util/dependencyGraphUtils.kt b/libraries/tools/kotlin-gradle-plugin/src/main/kotlin/org/jetbrains/kotlin/gradle/plugin/mpp/pm20/util/dependencyGraphUtils.kt new file mode 100644 index 00000000000..7d6139f76e9 --- /dev/null +++ b/libraries/tools/kotlin-gradle-plugin/src/main/kotlin/org/jetbrains/kotlin/gradle/plugin/mpp/pm20/util/dependencyGraphUtils.kt @@ -0,0 +1,17 @@ +/* + * Copyright 2010-2022 JetBrains s.r.o. and Kotlin Programming Language contributors. + * Use of this source code is governed by the Apache 2.0 license that can be found in the license/LICENSE.txt file. + */ + +package org.jetbrains.kotlin.gradle.plugin.mpp.pm20.util + +import org.jetbrains.kotlin.commonizer.util.transitiveClosure +import org.jetbrains.kotlin.gradle.plugin.mpp.pm20.GradleDependencyGraph +import org.jetbrains.kotlin.gradle.plugin.mpp.pm20.GradleDependencyGraphNode +import org.jetbrains.kotlin.project.model.KotlinModule + +internal val GradleDependencyGraph.allDependencyNodes: Iterable + get() = transitiveClosure(root) { dependenciesByFragment.values.flatten() } + +internal val GradleDependencyGraph.allDependencyModules: Iterable + get() = allDependencyNodes.map { it.module }