[KPM] Remove duplicate KotlinGradleFragmentInternal.refinesClosure
KT-51386
This commit is contained in:
committed by
Space
parent
fc0b78e106
commit
ef3a3d71b9
-1
@@ -16,7 +16,6 @@ import org.gradle.api.tasks.Nested
|
||||
import org.jetbrains.kotlin.gradle.dsl.multiplatformExtensionOrNull
|
||||
import org.jetbrains.kotlin.gradle.plugin.mpp.pm20.KotlinGradleModule
|
||||
import org.jetbrains.kotlin.gradle.plugin.mpp.pm20.hasKpmModel
|
||||
import org.jetbrains.kotlin.gradle.plugin.mpp.pm20.refinesClosure
|
||||
import org.jetbrains.kotlin.gradle.plugin.mpp.pm20.withRefinesClosure
|
||||
import org.jetbrains.kotlin.gradle.plugin.sources.KotlinDependencyScope
|
||||
import org.jetbrains.kotlin.gradle.plugin.sources.sourceSetDependencyConfigurationByScope
|
||||
|
||||
+1
-1
@@ -10,7 +10,7 @@ internal class FragmentGranularMetadataResolverFactory {
|
||||
|
||||
fun getOrCreate(fragment: KotlinGradleFragment): FragmentGranularMetadataResolver = resolvers.getOrPut(fragment) {
|
||||
FragmentGranularMetadataResolver(fragment, lazy {
|
||||
fragment.refinesClosure.minus(fragment).map { refinesFragment ->
|
||||
fragment.refinesClosure.map { refinesFragment ->
|
||||
getOrCreate(refinesFragment)
|
||||
}
|
||||
})
|
||||
|
||||
+4
-6
@@ -6,10 +6,8 @@
|
||||
package org.jetbrains.kotlin.gradle.plugin.mpp.pm20
|
||||
|
||||
import org.gradle.api.Project
|
||||
import org.gradle.api.file.FileCollection
|
||||
import org.gradle.api.provider.Provider
|
||||
import org.gradle.language.base.plugins.LifecycleBasePlugin
|
||||
import org.jetbrains.kotlin.project.model.utils.variantsContainingFragment
|
||||
import java.io.File
|
||||
|
||||
typealias SourceRoots = Iterable<File>
|
||||
@@ -33,7 +31,7 @@ open class FragmentSourcesProvider {
|
||||
getSourcesFromFragmentsAsMap(module.fragments)
|
||||
|
||||
open fun getSourcesFromRefinesClosureAsMap(fragment: KotlinGradleFragment): SourceRootsProvidersByFragment =
|
||||
getSourcesFromFragmentsAsMap(fragment.refinesClosure)
|
||||
getSourcesFromFragmentsAsMap(fragment.withRefinesClosure)
|
||||
|
||||
open fun getSourcesFromRefinesClosure(fragment: KotlinGradleFragment): MultipleSourceRootsProvider =
|
||||
fragment.project.provider { getSourcesFromRefinesClosureAsMap(fragment).values }
|
||||
@@ -43,9 +41,9 @@ open class FragmentSourcesProvider {
|
||||
val project = containingModule.project
|
||||
getSourcesFromRefinesClosureAsMap(fragment)
|
||||
return project.provider {
|
||||
fragment.refinesClosure.filter {
|
||||
fragment.withRefinesClosure.filter {
|
||||
// Every fragment refined by some other fragment should be considered common, even if it is included in just one variant
|
||||
containingModule.variantsContainingFragment(it).toSet() != setOf(it)
|
||||
it.containingVariants != setOf(it)
|
||||
}.map { project.provider { it.kotlinSourceRoots } }
|
||||
}
|
||||
}
|
||||
@@ -59,4 +57,4 @@ open class LifecycleTasksManager(private val project: Project) {
|
||||
}
|
||||
project.tasks.named(LifecycleBasePlugin.BUILD_TASK_NAME).configure { it.dependsOn(classesTask) }
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
-5
@@ -23,8 +23,6 @@ import org.jetbrains.kotlin.gradle.plugin.sources.FragmentConsistencyChecks
|
||||
import org.jetbrains.kotlin.gradle.utils.addExtendsFromRelation
|
||||
import org.jetbrains.kotlin.gradle.utils.runProjectConfigurationHealthCheckWhenEvaluated
|
||||
import org.jetbrains.kotlin.project.model.KotlinModuleDependency
|
||||
import org.jetbrains.kotlin.project.model.KotlinModuleFragment
|
||||
import org.jetbrains.kotlin.project.model.withRefinesClosure
|
||||
import javax.inject.Inject
|
||||
|
||||
open class KotlinGradleFragmentInternal @Inject constructor(
|
||||
@@ -114,6 +112,3 @@ open class KotlinGradleFragmentInternal @Inject constructor(
|
||||
).allChecks
|
||||
)
|
||||
}
|
||||
|
||||
val KotlinGradleFragment.refinesClosure: Set<KotlinGradleFragment>
|
||||
get() = (this as KotlinModuleFragment).withRefinesClosure.map { it as KotlinGradleFragment }.toSet()
|
||||
|
||||
+4
-1
@@ -3,6 +3,8 @@
|
||||
* Use of this source code is governed by the Apache 2.0 license that can be found in the license/LICENSE.txt file.
|
||||
*/
|
||||
|
||||
@file:Suppress("UNCHECKED_CAST")
|
||||
|
||||
package org.jetbrains.kotlin.gradle.plugin.mpp.pm20
|
||||
|
||||
import org.gradle.api.ExtensiblePolymorphicDomainObjectContainer
|
||||
@@ -10,6 +12,7 @@ import org.gradle.api.NamedDomainObjectSet
|
||||
import org.gradle.api.Project
|
||||
import org.jetbrains.kotlin.gradle.utils.lowerCamelCaseName
|
||||
import org.jetbrains.kotlin.project.model.*
|
||||
import org.jetbrains.kotlin.project.model.utils.variantsContainingFragment
|
||||
import javax.inject.Inject
|
||||
|
||||
open class KotlinGradleModuleInternal(
|
||||
@@ -77,4 +80,4 @@ internal fun KotlinGradleModule.disambiguateName(simpleName: String) =
|
||||
lowerCamelCaseName(moduleClassifier, simpleName)
|
||||
|
||||
internal fun KotlinGradleModule.variantsContainingFragment(fragment: KotlinModuleFragment): Iterable<KotlinGradleVariant> =
|
||||
variants.filter { fragment in it.refinesClosure }
|
||||
(this as KotlinModule).variantsContainingFragment(fragment).onEach { it as KotlinGradleVariant } as Iterable<KotlinGradleVariant>
|
||||
|
||||
+3
-3
@@ -62,7 +62,7 @@ internal abstract class AbstractKotlinFragmentMetadataCompilationData<T : Kotlin
|
||||
project = project,
|
||||
fromFiles = resolvableMetadataConfiguration(fragment.containingModule),
|
||||
parentCompiledMetadataFiles = lazy {
|
||||
fragment.refinesClosure.minus(fragment).map {
|
||||
fragment.refinesClosure.map {
|
||||
val compilation = metadataCompilationRegistry.getForFragmentOrNull(it)
|
||||
?: return@map project.files()
|
||||
compilation.output.classesDirs
|
||||
@@ -95,7 +95,7 @@ internal abstract class AbstractKotlinFragmentMetadataCompilationData<T : Kotlin
|
||||
|
||||
override val friendPaths: Iterable<FileCollection>
|
||||
get() = metadataCompilationRegistry.run {
|
||||
fragment.refinesClosure.minus(fragment)
|
||||
fragment.refinesClosure
|
||||
.map {
|
||||
val compilation = metadataCompilationRegistry.getForFragmentOrNull(it)
|
||||
?: return@map project.files()
|
||||
@@ -134,7 +134,7 @@ interface KotlinNativeFragmentMetadataCompilationData :
|
||||
KotlinNativeCompilationData<KotlinCommonOptions>
|
||||
|
||||
internal fun KotlinGradleFragment.isNativeShared(): Boolean =
|
||||
containingModule.variantsContainingFragment(this).run {
|
||||
containingVariants.run {
|
||||
any() && all { it.platformType == KotlinPlatformType.native }
|
||||
}
|
||||
|
||||
|
||||
+2
-2
@@ -41,7 +41,7 @@ internal open class TransformKotlinGranularMetadataForFragment
|
||||
@Suppress("unused") // Gradle input
|
||||
@get:Input
|
||||
internal val inputFragmentsAndVariants: Map<String, Iterable<String>> by project.provider {
|
||||
val participatingFragments = fragment.refinesClosure
|
||||
val participatingFragments = fragment.withRefinesClosure
|
||||
participatingFragments.associateWith { it.containingVariants }
|
||||
.entries.associate { (fragment, variants) ->
|
||||
fragment.name to variants.map { it.fragmentName }.sorted()
|
||||
@@ -51,7 +51,7 @@ internal open class TransformKotlinGranularMetadataForFragment
|
||||
@Suppress("unused") // Gradle input
|
||||
@get:Input
|
||||
internal val inputVariantDependencies: Map<String, Set<List<String?>>> by project.provider {
|
||||
val participatingFragments = fragment.refinesClosure
|
||||
val participatingFragments = fragment.withRefinesClosure
|
||||
val participatingCompilations = participatingFragments.flatMap { it.containingVariants }
|
||||
participatingCompilations.associate { variant ->
|
||||
variant.fragmentName to variant.compileDependenciesConfiguration
|
||||
|
||||
+2
-2
@@ -251,7 +251,7 @@ private class MetadataCompilationTasksConfigurator(project: Project) : KotlinCom
|
||||
}
|
||||
|
||||
private fun resolvedMetadataProviders(fragment: KotlinGradleFragment) =
|
||||
fragment.refinesClosure.map {
|
||||
fragment.withRefinesClosure.map {
|
||||
FragmentResolvedMetadataProvider(
|
||||
fragment.project.tasks.withType<TransformKotlinGranularMetadataForFragment>().named(transformFragmentMetadataTaskName(it))
|
||||
)
|
||||
@@ -269,7 +269,7 @@ private fun createExtractMetadataTask(
|
||||
transformation
|
||||
).configure { task ->
|
||||
task.dependsOn(Callable {
|
||||
fragment.refinesClosure.mapNotNull { refined ->
|
||||
fragment.withRefinesClosure.mapNotNull { refined ->
|
||||
if (refined !== fragment)
|
||||
project.tasks.named(transformFragmentMetadataTaskName(refined))
|
||||
else null
|
||||
|
||||
+1
@@ -15,6 +15,7 @@ import org.jetbrains.kotlin.gradle.plugin.mpp.pm20.KpmAwareTargetConfigurator
|
||||
import org.jetbrains.kotlin.gradle.plugin.mpp.pm20.kpmModules
|
||||
import org.jetbrains.kotlin.gradle.plugin.mpp.pm20.metadataCompilationRegistryByModuleId
|
||||
import org.jetbrains.kotlin.gradle.plugin.whenEvaluated
|
||||
import org.jetbrains.kotlin.project.model.utils.variantsContainingFragment
|
||||
|
||||
internal class KpmMetadataTargetConfigurator(private val metadataTargetConfigurator: KotlinMetadataTargetConfigurator) :
|
||||
KpmAwareTargetConfigurator<KotlinMetadataTarget>(metadataTargetConfigurator) {
|
||||
|
||||
+2
-2
@@ -37,7 +37,7 @@ import org.jetbrains.kotlin.gradle.plugin.mpp.KotlinCommonCompilation
|
||||
import org.jetbrains.kotlin.gradle.plugin.mpp.pm20.AbstractKotlinFragmentMetadataCompilationData
|
||||
import org.jetbrains.kotlin.gradle.plugin.mpp.pm20.KotlinCompilationData
|
||||
import org.jetbrains.kotlin.gradle.plugin.mpp.pm20.KotlinMetadataCompilationData
|
||||
import org.jetbrains.kotlin.gradle.plugin.mpp.pm20.refinesClosure
|
||||
import org.jetbrains.kotlin.gradle.plugin.mpp.pm20.withRefinesClosure
|
||||
import org.jetbrains.kotlin.gradle.plugin.sources.dependsOnClosure
|
||||
import org.jetbrains.kotlin.gradle.utils.propertyWithConvention
|
||||
import java.io.File
|
||||
@@ -71,7 +71,7 @@ abstract class KotlinCompileCommon @Inject constructor(
|
||||
is AbstractKotlinFragmentMetadataCompilationData -> {
|
||||
val fragment = compilation.fragment
|
||||
project.files(
|
||||
fragment.refinesClosure.map {
|
||||
fragment.withRefinesClosure.map {
|
||||
val compilation = compilation.metadataCompilationRegistry.getForFragmentOrNull(it)
|
||||
?: return@map project.files()
|
||||
compilation.output.classesDirs
|
||||
|
||||
Reference in New Issue
Block a user