From faf2f3e48da5cbf2b74f7858dcd411678bca4d0b Mon Sep 17 00:00:00 2001 From: Sergey Igushkin Date: Tue, 8 Feb 2022 16:25:08 +0400 Subject: [PATCH] KT-MR-5666 Use SetProperty for artifacts in place of ListProperty --- .../kotlin/gradle/plugin/mpp/KotlinSoftwareComponent.kt | 7 ++++--- .../kotlin/gradle/targets/android/KotlinAndroidTarget.kt | 3 ++- .../jetbrains/kotlin/gradle/targets/js/KotlinJsTarget.kt | 3 ++- .../kotlin/gradle/targets/js/ir/KotlinJsIrTarget.kt | 3 ++- .../jetbrains/kotlin/gradle/utils/providerApiUtils.kt | 9 +++++++-- 5 files changed, 17 insertions(+), 8 deletions(-) diff --git a/libraries/tools/kotlin-gradle-plugin/src/main/kotlin/org/jetbrains/kotlin/gradle/plugin/mpp/KotlinSoftwareComponent.kt b/libraries/tools/kotlin-gradle-plugin/src/main/kotlin/org/jetbrains/kotlin/gradle/plugin/mpp/KotlinSoftwareComponent.kt index 721db65f36b..33723d155b6 100644 --- a/libraries/tools/kotlin-gradle-plugin/src/main/kotlin/org/jetbrains/kotlin/gradle/plugin/mpp/KotlinSoftwareComponent.kt +++ b/libraries/tools/kotlin-gradle-plugin/src/main/kotlin/org/jetbrains/kotlin/gradle/plugin/mpp/KotlinSoftwareComponent.kt @@ -16,7 +16,7 @@ import org.gradle.api.component.ComponentWithVariants import org.gradle.api.component.SoftwareComponent import org.gradle.api.internal.component.SoftwareComponentInternal import org.gradle.api.internal.component.UsageContext -import org.gradle.api.provider.ListProperty +import org.gradle.api.provider.SetProperty import org.gradle.api.publish.maven.MavenPublication import org.jetbrains.kotlin.gradle.dsl.kotlinExtension import org.jetbrains.kotlin.gradle.dsl.multiplatformExtension @@ -29,6 +29,7 @@ import org.jetbrains.kotlin.gradle.targets.metadata.KotlinMetadataTargetConfigur import org.jetbrains.kotlin.gradle.targets.metadata.isCompatibilityMetadataVariantEnabled import org.jetbrains.kotlin.gradle.targets.metadata.isKotlinGranularMetadataEnabled import org.jetbrains.kotlin.gradle.utils.listProperty +import org.jetbrains.kotlin.gradle.utils.setProperty abstract class KotlinSoftwareComponent( private val project: Project, @@ -69,7 +70,7 @@ abstract class KotlinSoftwareComponent( compilation = metadataTarget.compilations.getByName(MAIN_COMPILATION_NAME), usage = javaApiUsage, dependencyConfigurationName = metadataTarget.apiElementsConfigurationName, - overrideConfigurationArtifacts = project.listProperty { listOf(allMetadataArtifact) } + overrideConfigurationArtifacts = project.setProperty { listOf(allMetadataArtifact) } ) @@ -128,7 +129,7 @@ class DefaultKotlinUsageContext( override val compilation: KotlinCompilation<*>, private val usage: Usage, override val dependencyConfigurationName: String, - internal val overrideConfigurationArtifacts: ListProperty? = null, + internal val overrideConfigurationArtifacts: SetProperty? = null, internal val overrideConfigurationAttributes: AttributeContainer? = null, override val includeIntoProjectStructureMetadata: Boolean = true ) : KotlinUsageContext { diff --git a/libraries/tools/kotlin-gradle-plugin/src/main/kotlin/org/jetbrains/kotlin/gradle/targets/android/KotlinAndroidTarget.kt b/libraries/tools/kotlin-gradle-plugin/src/main/kotlin/org/jetbrains/kotlin/gradle/targets/android/KotlinAndroidTarget.kt index 9ac013fbcf2..677af549b64 100644 --- a/libraries/tools/kotlin-gradle-plugin/src/main/kotlin/org/jetbrains/kotlin/gradle/targets/android/KotlinAndroidTarget.kt +++ b/libraries/tools/kotlin-gradle-plugin/src/main/kotlin/org/jetbrains/kotlin/gradle/targets/android/KotlinAndroidTarget.kt @@ -17,6 +17,7 @@ import org.jetbrains.kotlin.gradle.plugin.* import org.jetbrains.kotlin.gradle.utils.dashSeparatedName import org.jetbrains.kotlin.gradle.utils.listProperty import org.jetbrains.kotlin.gradle.utils.lowerCamelCaseName +import org.jetbrains.kotlin.gradle.utils.setProperty open class KotlinAndroidTarget( override val targetName: String, @@ -206,7 +207,7 @@ open class KotlinAndroidTarget( compilation, project.usageByName(usageName), dependencyConfigurationName, - overrideConfigurationArtifacts = project.listProperty { listOf(artifact) }, + overrideConfigurationArtifacts = project.setProperty { listOf(artifact) }, overrideConfigurationAttributes = HierarchyAttributeContainer(configuration.attributes) { val valueString = run { val value = configuration.attributes.getAttribute(it) diff --git a/libraries/tools/kotlin-gradle-plugin/src/main/kotlin/org/jetbrains/kotlin/gradle/targets/js/KotlinJsTarget.kt b/libraries/tools/kotlin-gradle-plugin/src/main/kotlin/org/jetbrains/kotlin/gradle/targets/js/KotlinJsTarget.kt index 339b606cf1b..23f26d6993e 100644 --- a/libraries/tools/kotlin-gradle-plugin/src/main/kotlin/org/jetbrains/kotlin/gradle/targets/js/KotlinJsTarget.kt +++ b/libraries/tools/kotlin-gradle-plugin/src/main/kotlin/org/jetbrains/kotlin/gradle/targets/js/KotlinJsTarget.kt @@ -31,6 +31,7 @@ import org.jetbrains.kotlin.gradle.testing.testTaskName import org.jetbrains.kotlin.gradle.utils.dashSeparatedName import org.jetbrains.kotlin.gradle.utils.listProperty import org.jetbrains.kotlin.gradle.utils.lowerCamelCaseName +import org.jetbrains.kotlin.gradle.utils.setProperty import javax.inject.Inject open class KotlinJsTarget @@ -102,7 +103,7 @@ constructor( compilation = compilations.getByName(KotlinCompilation.MAIN_COMPILATION_NAME), usage = project.usageByName("java-api-jars"), dependencyConfigurationName = commonFakeApiElementsConfigurationName, - overrideConfigurationArtifacts = project.listProperty { emptyList() } + overrideConfigurationArtifacts = project.setProperty { emptyList() } ) } diff --git a/libraries/tools/kotlin-gradle-plugin/src/main/kotlin/org/jetbrains/kotlin/gradle/targets/js/ir/KotlinJsIrTarget.kt b/libraries/tools/kotlin-gradle-plugin/src/main/kotlin/org/jetbrains/kotlin/gradle/targets/js/ir/KotlinJsIrTarget.kt index 158908e7423..78a166ecaa2 100644 --- a/libraries/tools/kotlin-gradle-plugin/src/main/kotlin/org/jetbrains/kotlin/gradle/targets/js/ir/KotlinJsIrTarget.kt +++ b/libraries/tools/kotlin-gradle-plugin/src/main/kotlin/org/jetbrains/kotlin/gradle/targets/js/ir/KotlinJsIrTarget.kt @@ -28,6 +28,7 @@ import org.jetbrains.kotlin.gradle.tasks.locateOrRegisterTask import org.jetbrains.kotlin.gradle.tasks.registerTask import org.jetbrains.kotlin.gradle.utils.listProperty import org.jetbrains.kotlin.gradle.utils.lowerCamelCaseName +import org.jetbrains.kotlin.gradle.utils.setProperty import javax.inject.Inject open class KotlinJsIrTarget @@ -68,7 +69,7 @@ constructor( compilation = compilations.getByName(MAIN_COMPILATION_NAME), usage = project.usageByName("java-api-jars"), dependencyConfigurationName = commonFakeApiElementsConfigurationName, - overrideConfigurationArtifacts = project.listProperty { emptyList() } + overrideConfigurationArtifacts = project.setProperty { emptyList() } ) } diff --git a/libraries/tools/kotlin-gradle-plugin/src/main/kotlin/org/jetbrains/kotlin/gradle/utils/providerApiUtils.kt b/libraries/tools/kotlin-gradle-plugin/src/main/kotlin/org/jetbrains/kotlin/gradle/utils/providerApiUtils.kt index a7a80261ee1..368b54363dd 100644 --- a/libraries/tools/kotlin-gradle-plugin/src/main/kotlin/org/jetbrains/kotlin/gradle/utils/providerApiUtils.kt +++ b/libraries/tools/kotlin-gradle-plugin/src/main/kotlin/org/jetbrains/kotlin/gradle/utils/providerApiUtils.kt @@ -10,8 +10,10 @@ import org.gradle.api.Task import org.gradle.api.file.ConfigurableFileCollection import org.gradle.api.file.RegularFileProperty import org.gradle.api.model.ObjectFactory +import org.gradle.api.provider.ListProperty import org.gradle.api.provider.Property import org.gradle.api.provider.Provider +import org.gradle.api.provider.SetProperty import org.gradle.api.tasks.TaskProvider import java.io.File import kotlin.properties.ReadOnlyProperty @@ -98,5 +100,8 @@ internal fun T.outputFilesProvider(provider: T.() -> Any): Configurab return project.filesProvider(this) { provider() } } -internal inline fun Project.listProperty(noinline itemsProvider: () -> Iterable) = - objects.listProperty(T::class.java).apply { set(provider(itemsProvider)) } \ No newline at end of file +internal inline fun Project.listProperty(noinline itemsProvider: () -> Iterable): ListProperty = + objects.listProperty(T::class.java).apply { set(provider(itemsProvider)) } + +internal inline fun Project.setProperty(noinline itemsProvider: () -> Iterable): SetProperty = + objects.setProperty(T::class.java).apply { set(provider(itemsProvider)) } \ No newline at end of file