From eb238c0da702bdcad25e2025861c69a3ba654a1c Mon Sep 17 00:00:00 2001 From: Anton Lakotka Date: Tue, 4 Jul 2023 16:45:24 +0200 Subject: [PATCH] [Gradle] Remove maybeRegister in favor of getOrCreate It had a little use and even this use was causing a problem. Since inside `maybeRegister { }` this block Gradle forbids creation of other entities. Because this block is part of "entity configuration". So it is recommended to replace with either * `getOrCreate("foo", invokeWhenCreated = {})` * or just getOrCreate("foo").apply {} --- .../plugin/sources/KotlinSourceSetFactory.kt | 4 ++-- .../kotlin/gradle/utils/ObjectCollectionExt.kt | 14 -------------- 2 files changed, 2 insertions(+), 16 deletions(-) diff --git a/libraries/tools/kotlin-gradle-plugin/src/common/kotlin/org/jetbrains/kotlin/gradle/plugin/sources/KotlinSourceSetFactory.kt b/libraries/tools/kotlin-gradle-plugin/src/common/kotlin/org/jetbrains/kotlin/gradle/plugin/sources/KotlinSourceSetFactory.kt index 4d468d73c71..7e1a202c512 100644 --- a/libraries/tools/kotlin-gradle-plugin/src/common/kotlin/org/jetbrains/kotlin/gradle/plugin/sources/KotlinSourceSetFactory.kt +++ b/libraries/tools/kotlin-gradle-plugin/src/common/kotlin/org/jetbrains/kotlin/gradle/plugin/sources/KotlinSourceSetFactory.kt @@ -19,7 +19,7 @@ import org.jetbrains.kotlin.gradle.targets.js.KotlinJsCompilerAttribute import org.jetbrains.kotlin.gradle.targets.js.KotlinJsTarget import org.jetbrains.kotlin.gradle.targets.js.ir.KotlinJsIrTarget import org.jetbrains.kotlin.gradle.targets.metadata.isKotlinGranularMetadataEnabled -import org.jetbrains.kotlin.gradle.utils.maybeRegister +import org.jetbrains.kotlin.gradle.utils.getOrCreate import java.io.File internal abstract class KotlinSourceSetFactory internal constructor( @@ -94,7 +94,7 @@ internal class DefaultKotlinSourceSetFactory( } dependencyConfigurationWithMetadata.forEach { (configurationName, metadataName) -> - project.configurations.maybeRegister(metadataName) { + project.configurations.getOrCreate(metadataName).apply { attributes.attribute(KotlinPlatformType.attribute, KotlinPlatformType.common) attributes.attribute(Usage.USAGE_ATTRIBUTE, project.usageByName(KotlinUsages.KOTLIN_API)) attributes.attribute(Category.CATEGORY_ATTRIBUTE, project.categoryByName(Category.LIBRARY)) diff --git a/libraries/tools/kotlin-gradle-plugin/src/common/kotlin/org/jetbrains/kotlin/gradle/utils/ObjectCollectionExt.kt b/libraries/tools/kotlin-gradle-plugin/src/common/kotlin/org/jetbrains/kotlin/gradle/utils/ObjectCollectionExt.kt index 6051f987382..a0c66514dc8 100644 --- a/libraries/tools/kotlin-gradle-plugin/src/common/kotlin/org/jetbrains/kotlin/gradle/utils/ObjectCollectionExt.kt +++ b/libraries/tools/kotlin-gradle-plugin/src/common/kotlin/org/jetbrains/kotlin/gradle/utils/ObjectCollectionExt.kt @@ -29,18 +29,4 @@ internal fun NamedDomainObjectContainer.getOrCreate( }.get() else (if (configure != null) create(name, configure) else create(name)).also { value -> if (invokeWhenCreated != null) invokeWhenCreated(value) } -} - -internal fun NamedDomainObjectContainer.maybeRegister( - name: String, - configure: (T.() -> Unit)? = null -): NamedDomainObjectProvider { - val entity = if (name in names) { - named(name) - } else { - register(name) - } - - if (configure != null) entity.configure(configure) - return entity } \ No newline at end of file