[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.dsl.multiplatformExtensionOrNull
|
||||||
import org.jetbrains.kotlin.gradle.plugin.mpp.pm20.KotlinGradleModule
|
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.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.mpp.pm20.withRefinesClosure
|
||||||
import org.jetbrains.kotlin.gradle.plugin.sources.KotlinDependencyScope
|
import org.jetbrains.kotlin.gradle.plugin.sources.KotlinDependencyScope
|
||||||
import org.jetbrains.kotlin.gradle.plugin.sources.sourceSetDependencyConfigurationByScope
|
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) {
|
fun getOrCreate(fragment: KotlinGradleFragment): FragmentGranularMetadataResolver = resolvers.getOrPut(fragment) {
|
||||||
FragmentGranularMetadataResolver(fragment, lazy {
|
FragmentGranularMetadataResolver(fragment, lazy {
|
||||||
fragment.refinesClosure.minus(fragment).map { refinesFragment ->
|
fragment.refinesClosure.map { refinesFragment ->
|
||||||
getOrCreate(refinesFragment)
|
getOrCreate(refinesFragment)
|
||||||
}
|
}
|
||||||
})
|
})
|
||||||
|
|||||||
+3
-5
@@ -6,10 +6,8 @@
|
|||||||
package org.jetbrains.kotlin.gradle.plugin.mpp.pm20
|
package org.jetbrains.kotlin.gradle.plugin.mpp.pm20
|
||||||
|
|
||||||
import org.gradle.api.Project
|
import org.gradle.api.Project
|
||||||
import org.gradle.api.file.FileCollection
|
|
||||||
import org.gradle.api.provider.Provider
|
import org.gradle.api.provider.Provider
|
||||||
import org.gradle.language.base.plugins.LifecycleBasePlugin
|
import org.gradle.language.base.plugins.LifecycleBasePlugin
|
||||||
import org.jetbrains.kotlin.project.model.utils.variantsContainingFragment
|
|
||||||
import java.io.File
|
import java.io.File
|
||||||
|
|
||||||
typealias SourceRoots = Iterable<File>
|
typealias SourceRoots = Iterable<File>
|
||||||
@@ -33,7 +31,7 @@ open class FragmentSourcesProvider {
|
|||||||
getSourcesFromFragmentsAsMap(module.fragments)
|
getSourcesFromFragmentsAsMap(module.fragments)
|
||||||
|
|
||||||
open fun getSourcesFromRefinesClosureAsMap(fragment: KotlinGradleFragment): SourceRootsProvidersByFragment =
|
open fun getSourcesFromRefinesClosureAsMap(fragment: KotlinGradleFragment): SourceRootsProvidersByFragment =
|
||||||
getSourcesFromFragmentsAsMap(fragment.refinesClosure)
|
getSourcesFromFragmentsAsMap(fragment.withRefinesClosure)
|
||||||
|
|
||||||
open fun getSourcesFromRefinesClosure(fragment: KotlinGradleFragment): MultipleSourceRootsProvider =
|
open fun getSourcesFromRefinesClosure(fragment: KotlinGradleFragment): MultipleSourceRootsProvider =
|
||||||
fragment.project.provider { getSourcesFromRefinesClosureAsMap(fragment).values }
|
fragment.project.provider { getSourcesFromRefinesClosureAsMap(fragment).values }
|
||||||
@@ -43,9 +41,9 @@ open class FragmentSourcesProvider {
|
|||||||
val project = containingModule.project
|
val project = containingModule.project
|
||||||
getSourcesFromRefinesClosureAsMap(fragment)
|
getSourcesFromRefinesClosureAsMap(fragment)
|
||||||
return project.provider {
|
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
|
// 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 } }
|
}.map { project.provider { it.kotlinSourceRoots } }
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
-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.addExtendsFromRelation
|
||||||
import org.jetbrains.kotlin.gradle.utils.runProjectConfigurationHealthCheckWhenEvaluated
|
import org.jetbrains.kotlin.gradle.utils.runProjectConfigurationHealthCheckWhenEvaluated
|
||||||
import org.jetbrains.kotlin.project.model.KotlinModuleDependency
|
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
|
import javax.inject.Inject
|
||||||
|
|
||||||
open class KotlinGradleFragmentInternal @Inject constructor(
|
open class KotlinGradleFragmentInternal @Inject constructor(
|
||||||
@@ -114,6 +112,3 @@ open class KotlinGradleFragmentInternal @Inject constructor(
|
|||||||
).allChecks
|
).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.
|
* 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
|
package org.jetbrains.kotlin.gradle.plugin.mpp.pm20
|
||||||
|
|
||||||
import org.gradle.api.ExtensiblePolymorphicDomainObjectContainer
|
import org.gradle.api.ExtensiblePolymorphicDomainObjectContainer
|
||||||
@@ -10,6 +12,7 @@ import org.gradle.api.NamedDomainObjectSet
|
|||||||
import org.gradle.api.Project
|
import org.gradle.api.Project
|
||||||
import org.jetbrains.kotlin.gradle.utils.lowerCamelCaseName
|
import org.jetbrains.kotlin.gradle.utils.lowerCamelCaseName
|
||||||
import org.jetbrains.kotlin.project.model.*
|
import org.jetbrains.kotlin.project.model.*
|
||||||
|
import org.jetbrains.kotlin.project.model.utils.variantsContainingFragment
|
||||||
import javax.inject.Inject
|
import javax.inject.Inject
|
||||||
|
|
||||||
open class KotlinGradleModuleInternal(
|
open class KotlinGradleModuleInternal(
|
||||||
@@ -77,4 +80,4 @@ internal fun KotlinGradleModule.disambiguateName(simpleName: String) =
|
|||||||
lowerCamelCaseName(moduleClassifier, simpleName)
|
lowerCamelCaseName(moduleClassifier, simpleName)
|
||||||
|
|
||||||
internal fun KotlinGradleModule.variantsContainingFragment(fragment: KotlinModuleFragment): Iterable<KotlinGradleVariant> =
|
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,
|
project = project,
|
||||||
fromFiles = resolvableMetadataConfiguration(fragment.containingModule),
|
fromFiles = resolvableMetadataConfiguration(fragment.containingModule),
|
||||||
parentCompiledMetadataFiles = lazy {
|
parentCompiledMetadataFiles = lazy {
|
||||||
fragment.refinesClosure.minus(fragment).map {
|
fragment.refinesClosure.map {
|
||||||
val compilation = metadataCompilationRegistry.getForFragmentOrNull(it)
|
val compilation = metadataCompilationRegistry.getForFragmentOrNull(it)
|
||||||
?: return@map project.files()
|
?: return@map project.files()
|
||||||
compilation.output.classesDirs
|
compilation.output.classesDirs
|
||||||
@@ -95,7 +95,7 @@ internal abstract class AbstractKotlinFragmentMetadataCompilationData<T : Kotlin
|
|||||||
|
|
||||||
override val friendPaths: Iterable<FileCollection>
|
override val friendPaths: Iterable<FileCollection>
|
||||||
get() = metadataCompilationRegistry.run {
|
get() = metadataCompilationRegistry.run {
|
||||||
fragment.refinesClosure.minus(fragment)
|
fragment.refinesClosure
|
||||||
.map {
|
.map {
|
||||||
val compilation = metadataCompilationRegistry.getForFragmentOrNull(it)
|
val compilation = metadataCompilationRegistry.getForFragmentOrNull(it)
|
||||||
?: return@map project.files()
|
?: return@map project.files()
|
||||||
@@ -134,7 +134,7 @@ interface KotlinNativeFragmentMetadataCompilationData :
|
|||||||
KotlinNativeCompilationData<KotlinCommonOptions>
|
KotlinNativeCompilationData<KotlinCommonOptions>
|
||||||
|
|
||||||
internal fun KotlinGradleFragment.isNativeShared(): Boolean =
|
internal fun KotlinGradleFragment.isNativeShared(): Boolean =
|
||||||
containingModule.variantsContainingFragment(this).run {
|
containingVariants.run {
|
||||||
any() && all { it.platformType == KotlinPlatformType.native }
|
any() && all { it.platformType == KotlinPlatformType.native }
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
+2
-2
@@ -41,7 +41,7 @@ internal open class TransformKotlinGranularMetadataForFragment
|
|||||||
@Suppress("unused") // Gradle input
|
@Suppress("unused") // Gradle input
|
||||||
@get:Input
|
@get:Input
|
||||||
internal val inputFragmentsAndVariants: Map<String, Iterable<String>> by project.provider {
|
internal val inputFragmentsAndVariants: Map<String, Iterable<String>> by project.provider {
|
||||||
val participatingFragments = fragment.refinesClosure
|
val participatingFragments = fragment.withRefinesClosure
|
||||||
participatingFragments.associateWith { it.containingVariants }
|
participatingFragments.associateWith { it.containingVariants }
|
||||||
.entries.associate { (fragment, variants) ->
|
.entries.associate { (fragment, variants) ->
|
||||||
fragment.name to variants.map { it.fragmentName }.sorted()
|
fragment.name to variants.map { it.fragmentName }.sorted()
|
||||||
@@ -51,7 +51,7 @@ internal open class TransformKotlinGranularMetadataForFragment
|
|||||||
@Suppress("unused") // Gradle input
|
@Suppress("unused") // Gradle input
|
||||||
@get:Input
|
@get:Input
|
||||||
internal val inputVariantDependencies: Map<String, Set<List<String?>>> by project.provider {
|
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 }
|
val participatingCompilations = participatingFragments.flatMap { it.containingVariants }
|
||||||
participatingCompilations.associate { variant ->
|
participatingCompilations.associate { variant ->
|
||||||
variant.fragmentName to variant.compileDependenciesConfiguration
|
variant.fragmentName to variant.compileDependenciesConfiguration
|
||||||
|
|||||||
+2
-2
@@ -251,7 +251,7 @@ private class MetadataCompilationTasksConfigurator(project: Project) : KotlinCom
|
|||||||
}
|
}
|
||||||
|
|
||||||
private fun resolvedMetadataProviders(fragment: KotlinGradleFragment) =
|
private fun resolvedMetadataProviders(fragment: KotlinGradleFragment) =
|
||||||
fragment.refinesClosure.map {
|
fragment.withRefinesClosure.map {
|
||||||
FragmentResolvedMetadataProvider(
|
FragmentResolvedMetadataProvider(
|
||||||
fragment.project.tasks.withType<TransformKotlinGranularMetadataForFragment>().named(transformFragmentMetadataTaskName(it))
|
fragment.project.tasks.withType<TransformKotlinGranularMetadataForFragment>().named(transformFragmentMetadataTaskName(it))
|
||||||
)
|
)
|
||||||
@@ -269,7 +269,7 @@ private fun createExtractMetadataTask(
|
|||||||
transformation
|
transformation
|
||||||
).configure { task ->
|
).configure { task ->
|
||||||
task.dependsOn(Callable {
|
task.dependsOn(Callable {
|
||||||
fragment.refinesClosure.mapNotNull { refined ->
|
fragment.withRefinesClosure.mapNotNull { refined ->
|
||||||
if (refined !== fragment)
|
if (refined !== fragment)
|
||||||
project.tasks.named(transformFragmentMetadataTaskName(refined))
|
project.tasks.named(transformFragmentMetadataTaskName(refined))
|
||||||
else null
|
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.kpmModules
|
||||||
import org.jetbrains.kotlin.gradle.plugin.mpp.pm20.metadataCompilationRegistryByModuleId
|
import org.jetbrains.kotlin.gradle.plugin.mpp.pm20.metadataCompilationRegistryByModuleId
|
||||||
import org.jetbrains.kotlin.gradle.plugin.whenEvaluated
|
import org.jetbrains.kotlin.gradle.plugin.whenEvaluated
|
||||||
|
import org.jetbrains.kotlin.project.model.utils.variantsContainingFragment
|
||||||
|
|
||||||
internal class KpmMetadataTargetConfigurator(private val metadataTargetConfigurator: KotlinMetadataTargetConfigurator) :
|
internal class KpmMetadataTargetConfigurator(private val metadataTargetConfigurator: KotlinMetadataTargetConfigurator) :
|
||||||
KpmAwareTargetConfigurator<KotlinMetadataTarget>(metadataTargetConfigurator) {
|
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.AbstractKotlinFragmentMetadataCompilationData
|
||||||
import org.jetbrains.kotlin.gradle.plugin.mpp.pm20.KotlinCompilationData
|
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.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.plugin.sources.dependsOnClosure
|
||||||
import org.jetbrains.kotlin.gradle.utils.propertyWithConvention
|
import org.jetbrains.kotlin.gradle.utils.propertyWithConvention
|
||||||
import java.io.File
|
import java.io.File
|
||||||
@@ -71,7 +71,7 @@ abstract class KotlinCompileCommon @Inject constructor(
|
|||||||
is AbstractKotlinFragmentMetadataCompilationData -> {
|
is AbstractKotlinFragmentMetadataCompilationData -> {
|
||||||
val fragment = compilation.fragment
|
val fragment = compilation.fragment
|
||||||
project.files(
|
project.files(
|
||||||
fragment.refinesClosure.map {
|
fragment.withRefinesClosure.map {
|
||||||
val compilation = compilation.metadataCompilationRegistry.getForFragmentOrNull(it)
|
val compilation = compilation.metadataCompilationRegistry.getForFragmentOrNull(it)
|
||||||
?: return@map project.files()
|
?: return@map project.files()
|
||||||
compilation.output.classesDirs
|
compilation.output.classesDirs
|
||||||
|
|||||||
Reference in New Issue
Block a user