From 2d8bcc11ae1f7da39680b509af89aaf0f9c22684 Mon Sep 17 00:00:00 2001 From: "sebastian.sellmair" Date: Wed, 19 Jan 2022 16:25:40 +0100 Subject: [PATCH] [KPM] Split KotlinFragmentConfigurationDefinition source file ... and tweak names of extension functions to make them more coherent with Gradle APIs --- .../KotlinFragmentConfigurationDefinition.kt | 223 ------------------ ...linGradleFragmentConfigurationArtifacts.kt | 49 ++++ ...inGradleFragmentConfigurationAttributes.kt | 49 ++++ ...GradleFragmentConfigurationCapabilities.kt | 68 ++++++ ...inGradleFragmentConfigurationDefinition.kt | 49 ++++ ...tlinGradleFragmentConfigurationProvider.kt | 16 ++ ...tlinGradleFragmentConfigurationRelation.kt | 19 ++ .../mpp/pm20/KotlinGradleFragmentFactory.kt | 6 +- 8 files changed, 253 insertions(+), 226 deletions(-) delete mode 100644 libraries/tools/kotlin-gradle-plugin/src/main/kotlin/org/jetbrains/kotlin/gradle/plugin/mpp/pm20/KotlinFragmentConfigurationDefinition.kt create mode 100644 libraries/tools/kotlin-gradle-plugin/src/main/kotlin/org/jetbrains/kotlin/gradle/plugin/mpp/pm20/KotlinGradleFragmentConfigurationArtifacts.kt create mode 100644 libraries/tools/kotlin-gradle-plugin/src/main/kotlin/org/jetbrains/kotlin/gradle/plugin/mpp/pm20/KotlinGradleFragmentConfigurationAttributes.kt create mode 100644 libraries/tools/kotlin-gradle-plugin/src/main/kotlin/org/jetbrains/kotlin/gradle/plugin/mpp/pm20/KotlinGradleFragmentConfigurationCapabilities.kt create mode 100644 libraries/tools/kotlin-gradle-plugin/src/main/kotlin/org/jetbrains/kotlin/gradle/plugin/mpp/pm20/KotlinGradleFragmentConfigurationDefinition.kt create mode 100644 libraries/tools/kotlin-gradle-plugin/src/main/kotlin/org/jetbrains/kotlin/gradle/plugin/mpp/pm20/KotlinGradleFragmentConfigurationProvider.kt create mode 100644 libraries/tools/kotlin-gradle-plugin/src/main/kotlin/org/jetbrains/kotlin/gradle/plugin/mpp/pm20/KotlinGradleFragmentConfigurationRelation.kt diff --git a/libraries/tools/kotlin-gradle-plugin/src/main/kotlin/org/jetbrains/kotlin/gradle/plugin/mpp/pm20/KotlinFragmentConfigurationDefinition.kt b/libraries/tools/kotlin-gradle-plugin/src/main/kotlin/org/jetbrains/kotlin/gradle/plugin/mpp/pm20/KotlinFragmentConfigurationDefinition.kt deleted file mode 100644 index c721dbb4247..00000000000 --- a/libraries/tools/kotlin-gradle-plugin/src/main/kotlin/org/jetbrains/kotlin/gradle/plugin/mpp/pm20/KotlinFragmentConfigurationDefinition.kt +++ /dev/null @@ -1,223 +0,0 @@ -/* - * 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 - -import org.gradle.api.Project -import org.gradle.api.artifacts.Configuration -import org.gradle.api.artifacts.ConfigurationPublications -import org.gradle.api.attributes.AttributeContainer -import org.gradle.api.capabilities.Capability -import org.jetbrains.kotlin.gradle.plugin.mpp.pm20.util.KotlinNameDisambiguation - -/* Internal abbreviation */ -internal typealias ConfigurationDefinition = KotlinGradleFragmentConfigurationDefinition - -data class KotlinGradleFragmentConfigurationDefinition( - val provider: KotlinGradleFragmentConfigurationProvider, - val attributes: KotlinGradleFragmentConfigurationAttributes = KotlinGradleFragmentConfigurationAttributes.None, - val capabilities: KotlinGradleFragmentConfigurationCapabilities = KotlinGradleFragmentConfigurationCapabilities.None, - val artifacts: KotlinGradleFragmentConfigurationArtifacts = KotlinGradleFragmentConfigurationArtifacts.None, - val relations: KotlinGradleFragmentConfigurationRelation = KotlinGradleFragmentConfigurationRelation.None, -) - -/* Internal abbreviation */ -internal typealias ConfigurationContext = KotlinGradleFragmentConfigurationContext - -interface KotlinGradleFragmentConfigurationContext : KotlinNameDisambiguation { - val project: Project get() = module.project - val module: KotlinGradleModule - val dependencies: KotlinFragmentDependencyConfigurations -} - -internal class KotlinGradleFragmentConfigurationContextImpl( - override val module: KotlinGradleModule, - override val dependencies: KotlinFragmentDependencyConfigurations, - names: KotlinNameDisambiguation -) : KotlinGradleFragmentConfigurationContext, KotlinNameDisambiguation by names - -/* Internal abbreviation */ -internal typealias FragmentConfigurationProvider = KotlinGradleFragmentConfigurationProvider - -fun interface KotlinGradleFragmentConfigurationProvider { - fun KotlinGradleFragmentConfigurationContext.getConfiguration(): Configuration -} - -/* Internal abbreviation */ -internal typealias FragmentRelation = KotlinGradleFragmentConfigurationRelation - -fun interface KotlinGradleFragmentConfigurationRelation { - fun KotlinGradleFragmentConfigurationContext.setupExtendsFromRelations(configuration: Configuration) - - companion object { - val None = FragmentRelation {} - } -} - -/* Internal abbreviation */ -internal typealias FragmentAttributes = KotlinGradleFragmentConfigurationAttributes - -fun interface KotlinGradleFragmentConfigurationAttributes { - fun AttributeContainer.setAttributes(fragment: T) - - companion object { - val None = FragmentAttributes {} - } -} -/* Internal abbreviation */ -internal typealias FragmentCapabilities = KotlinGradleFragmentConfigurationCapabilities - -fun interface KotlinGradleFragmentConfigurationCapabilities { - interface Context { - fun capability(notation: Any) - val capabilities: List - } - - class ContextImpl internal constructor( - private val configuration: Configuration - ) : Context { - override fun capability(notation: Any) = configuration.outgoing.capability(notation) - override val capabilities: List get() = configuration.outgoing.capabilities.orEmpty().toList() - } - - fun Context.setCapabilities(fragment: T) - - companion object { - val None = FragmentCapabilities {} - } - -} - -/* Internal abbreviation */ -internal typealias FragmentArtifacts = KotlinGradleFragmentConfigurationArtifacts - -fun interface KotlinGradleFragmentConfigurationArtifacts { - fun ConfigurationPublications.addArtifacts(fragment: T) - - companion object { - val None = FragmentArtifacts {} - } -} - -/* -Definition Extensions - */ - -operator fun KotlinGradleFragmentConfigurationDefinition.plus(other: FragmentAttributes): - KotlinGradleFragmentConfigurationDefinition = copy(attributes = attributes + other) - -operator fun KotlinGradleFragmentConfigurationDefinition.plus(other: FragmentArtifacts): - KotlinGradleFragmentConfigurationDefinition = copy(artifacts = artifacts + other) - -/* -Provider Extensions - */ - -fun KotlinGradleFragmentConfigurationDefinition.withConfigurationProvider( - provider: KotlinGradleFragmentConfigurationContext.() -> Configuration -) = copy(provider = provider) - -fun KotlinGradleFragmentConfigurationProvider.getConfiguration(context: KotlinGradleFragmentConfigurationContext): Configuration { - return with(context) { getConfiguration() } -} - -/* -FragmentArtifacts Extensions - */ - -fun ConfigurationPublications.addArtifacts(artifacts: FragmentArtifacts, fragment: T) = with(artifacts) { - addArtifacts(fragment) -} - -operator fun FragmentArtifacts.plus(other: FragmentArtifacts): FragmentArtifacts { - if (this is CompositeFragmentArtifacts && other is CompositeFragmentArtifacts) { - return CompositeFragmentArtifacts(this.children + other.children) - } - - if (this is CompositeFragmentArtifacts) { - return CompositeFragmentArtifacts(this.children + other) - } - - if (other is CompositeFragmentArtifacts) { - return CompositeFragmentArtifacts(listOf(this) + other.children) - } - - return CompositeFragmentArtifacts(listOf(this, other)) -} - -internal class CompositeFragmentArtifacts(val children: List>) : - FragmentArtifacts { - override fun ConfigurationPublications.addArtifacts(fragment: T) { - children.forEach { child -> addArtifacts(child, fragment) } - } -} - -/* -FragmentAttributes Extensions - */ - -fun AttributeContainer.attribute(attributes: FragmentAttributes, fragment: T) = with(attributes) { - setAttributes(fragment) -} - -operator fun FragmentAttributes.plus(other: FragmentAttributes): FragmentAttributes { - if (this is CompositeFragmentAttributes && other is CompositeFragmentAttributes) { - return CompositeFragmentAttributes(this.children + other.children) - } - - if (this is CompositeFragmentAttributes) { - return CompositeFragmentAttributes(this.children + other) - } - - if (other is CompositeFragmentAttributes) { - return CompositeFragmentAttributes(listOf(this) + other.children) - } - - return CompositeFragmentAttributes(listOf(this, other)) -} - -internal class CompositeFragmentAttributes(val children: List>) : - FragmentAttributes { - override fun AttributeContainer.setAttributes(fragment: T) { - children.forEach { attribute -> attribute(attribute, fragment) } - } -} - -/* -FragmentCapabilities Extensions - */ - -fun KotlinGradleFragmentConfigurationCapabilities.onlyIfMadePublic(): KotlinGradleFragmentConfigurationCapabilities { - return KotlinGradleFragmentConfigurationCapabilities { fragment -> - fragment.containingModule.ifMadePublic { setCapabilities(this@onlyIfMadePublic, fragment) } - } -} - -fun KotlinGradleFragmentConfigurationCapabilities.Context.setCapabilities( - capabilities: KotlinGradleFragmentConfigurationCapabilities, fragment: T -) = with(capabilities) { setCapabilities(fragment) } - -operator fun FragmentCapabilities.plus(other: FragmentCapabilities): FragmentCapabilities { - if (this is CompositeFragmentCapabilities && other is CompositeFragmentCapabilities) { - return CompositeFragmentCapabilities(this.children + other.children) - } - - if (this is CompositeFragmentCapabilities) { - return CompositeFragmentCapabilities(this.children + other) - } - - if (other is CompositeFragmentCapabilities) { - return CompositeFragmentCapabilities(listOf(this) + other.children) - } - - return CompositeFragmentCapabilities(listOf(this, other)) -} - -internal class CompositeFragmentCapabilities(val children: List>) : - FragmentCapabilities { - override fun KotlinGradleFragmentConfigurationCapabilities.Context.setCapabilities(fragment: T) { - children.forEach { capability -> setCapabilities(capability, fragment) } - } -} diff --git a/libraries/tools/kotlin-gradle-plugin/src/main/kotlin/org/jetbrains/kotlin/gradle/plugin/mpp/pm20/KotlinGradleFragmentConfigurationArtifacts.kt b/libraries/tools/kotlin-gradle-plugin/src/main/kotlin/org/jetbrains/kotlin/gradle/plugin/mpp/pm20/KotlinGradleFragmentConfigurationArtifacts.kt new file mode 100644 index 00000000000..0af8502f146 --- /dev/null +++ b/libraries/tools/kotlin-gradle-plugin/src/main/kotlin/org/jetbrains/kotlin/gradle/plugin/mpp/pm20/KotlinGradleFragmentConfigurationArtifacts.kt @@ -0,0 +1,49 @@ +/* + * 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 + +import org.gradle.api.artifacts.ConfigurationPublications + +/* Internal abbreviation */ +internal typealias FragmentArtifacts = KotlinGradleFragmentConfigurationArtifacts + +fun interface KotlinGradleFragmentConfigurationArtifacts { + fun ConfigurationPublications.addArtifacts(fragment: T) + + companion object { + val None = FragmentArtifacts {} + } +} + +fun ConfigurationPublications.artifacts( + artifacts: FragmentArtifacts, fragment: T +) = with(artifacts) { addArtifacts(fragment) } + +operator fun FragmentArtifacts.plus(other: FragmentArtifacts): FragmentArtifacts { + if (this is CompositeFragmentArtifacts && other is CompositeFragmentArtifacts) { + return CompositeFragmentArtifacts(this.children + other.children) + } + + if (this === FragmentArtifacts.None) return other + if (other === FragmentArtifacts.None) return this + + if (this is CompositeFragmentArtifacts) { + return CompositeFragmentArtifacts(this.children + other) + } + + if (other is CompositeFragmentArtifacts) { + return CompositeFragmentArtifacts(listOf(this) + other.children) + } + + return CompositeFragmentArtifacts(listOf(this, other)) +} + +internal class CompositeFragmentArtifacts(val children: List>) : + FragmentArtifacts { + override fun ConfigurationPublications.addArtifacts(fragment: T) { + children.forEach { child -> artifacts(child, fragment) } + } +} diff --git a/libraries/tools/kotlin-gradle-plugin/src/main/kotlin/org/jetbrains/kotlin/gradle/plugin/mpp/pm20/KotlinGradleFragmentConfigurationAttributes.kt b/libraries/tools/kotlin-gradle-plugin/src/main/kotlin/org/jetbrains/kotlin/gradle/plugin/mpp/pm20/KotlinGradleFragmentConfigurationAttributes.kt new file mode 100644 index 00000000000..4512b335a85 --- /dev/null +++ b/libraries/tools/kotlin-gradle-plugin/src/main/kotlin/org/jetbrains/kotlin/gradle/plugin/mpp/pm20/KotlinGradleFragmentConfigurationAttributes.kt @@ -0,0 +1,49 @@ +/* + * 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 + +import org.gradle.api.attributes.AttributeContainer + +/* Internal abbreviation */ +internal typealias FragmentAttributes = KotlinGradleFragmentConfigurationAttributes + +fun interface KotlinGradleFragmentConfigurationAttributes { + fun AttributeContainer.setAttributes(fragment: T) + + companion object { + val None = FragmentAttributes {} + } +} + +fun AttributeContainer.attributes(attributes: FragmentAttributes, fragment: T) = with(attributes) { + setAttributes(fragment) +} + +operator fun FragmentAttributes.plus(other: FragmentAttributes): FragmentAttributes { + if (this is CompositeFragmentAttributes && other is CompositeFragmentAttributes) { + return CompositeFragmentAttributes(this.children + other.children) + } + + if (this === FragmentAttributes.None) return other + if (other === FragmentAttributes.None) return this + + if (this is CompositeFragmentAttributes) { + return CompositeFragmentAttributes(this.children + other) + } + + if (other is CompositeFragmentAttributes) { + return CompositeFragmentAttributes(listOf(this) + other.children) + } + + return CompositeFragmentAttributes(listOf(this, other)) +} + +internal class CompositeFragmentAttributes(val children: List>) : + FragmentAttributes { + override fun AttributeContainer.setAttributes(fragment: T) { + children.forEach { attribute -> attributes(attribute, fragment) } + } +} diff --git a/libraries/tools/kotlin-gradle-plugin/src/main/kotlin/org/jetbrains/kotlin/gradle/plugin/mpp/pm20/KotlinGradleFragmentConfigurationCapabilities.kt b/libraries/tools/kotlin-gradle-plugin/src/main/kotlin/org/jetbrains/kotlin/gradle/plugin/mpp/pm20/KotlinGradleFragmentConfigurationCapabilities.kt new file mode 100644 index 00000000000..04c45143c31 --- /dev/null +++ b/libraries/tools/kotlin-gradle-plugin/src/main/kotlin/org/jetbrains/kotlin/gradle/plugin/mpp/pm20/KotlinGradleFragmentConfigurationCapabilities.kt @@ -0,0 +1,68 @@ +/* + * 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 + +import org.gradle.api.artifacts.Configuration +import org.gradle.api.capabilities.Capability + +/* Internal abbreviation */ +internal typealias FragmentCapabilities = KotlinGradleFragmentConfigurationCapabilities + +fun interface KotlinGradleFragmentConfigurationCapabilities { + interface Context { + fun capability(notation: Any) + val capabilities: List + } + + class ContextImpl internal constructor( + private val configuration: Configuration + ) : Context { + override fun capability(notation: Any) = configuration.outgoing.capability(notation) + override val capabilities: List get() = configuration.outgoing.capabilities.orEmpty().toList() + } + + fun Context.setCapabilities(fragment: T) + + companion object { + val None = FragmentCapabilities {} + } +} + +fun KotlinGradleFragmentConfigurationCapabilities.onlyIfMadePublic(): KotlinGradleFragmentConfigurationCapabilities { + return KotlinGradleFragmentConfigurationCapabilities { fragment -> + fragment.containingModule.ifMadePublic { capabilities(this@onlyIfMadePublic, fragment) } + } +} + +fun KotlinGradleFragmentConfigurationCapabilities.Context.capabilities( + capabilities: KotlinGradleFragmentConfigurationCapabilities, fragment: T +) = with(capabilities) { setCapabilities(fragment) } + +operator fun FragmentCapabilities.plus(other: FragmentCapabilities): FragmentCapabilities { + if (this is CompositeFragmentCapabilities && other is CompositeFragmentCapabilities) { + return CompositeFragmentCapabilities(this.children + other.children) + } + + if (this === FragmentCapabilities.None) return other + if (other === FragmentCapabilities.None) return this + + if (this is CompositeFragmentCapabilities) { + return CompositeFragmentCapabilities(this.children + other) + } + + if (other is CompositeFragmentCapabilities) { + return CompositeFragmentCapabilities(listOf(this) + other.children) + } + + return CompositeFragmentCapabilities(listOf(this, other)) +} + +internal class CompositeFragmentCapabilities(val children: List>) : + FragmentCapabilities { + override fun KotlinGradleFragmentConfigurationCapabilities.Context.setCapabilities(fragment: T) { + children.forEach { capability -> capabilities(capability, fragment) } + } +} diff --git a/libraries/tools/kotlin-gradle-plugin/src/main/kotlin/org/jetbrains/kotlin/gradle/plugin/mpp/pm20/KotlinGradleFragmentConfigurationDefinition.kt b/libraries/tools/kotlin-gradle-plugin/src/main/kotlin/org/jetbrains/kotlin/gradle/plugin/mpp/pm20/KotlinGradleFragmentConfigurationDefinition.kt new file mode 100644 index 00000000000..67c5b529f92 --- /dev/null +++ b/libraries/tools/kotlin-gradle-plugin/src/main/kotlin/org/jetbrains/kotlin/gradle/plugin/mpp/pm20/KotlinGradleFragmentConfigurationDefinition.kt @@ -0,0 +1,49 @@ +/* + * 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 + +import org.gradle.api.Project +import org.gradle.api.artifacts.Configuration +import org.jetbrains.kotlin.gradle.plugin.mpp.pm20.util.KotlinNameDisambiguation + +/* Internal abbreviation */ +internal typealias ConfigurationDefinition = KotlinGradleFragmentConfigurationDefinition + +data class KotlinGradleFragmentConfigurationDefinition( + val provider: KotlinGradleFragmentConfigurationProvider, + val attributes: KotlinGradleFragmentConfigurationAttributes = KotlinGradleFragmentConfigurationAttributes.None, + val capabilities: KotlinGradleFragmentConfigurationCapabilities = KotlinGradleFragmentConfigurationCapabilities.None, + val artifacts: KotlinGradleFragmentConfigurationArtifacts = KotlinGradleFragmentConfigurationArtifacts.None, + val relations: KotlinGradleFragmentConfigurationRelation = KotlinGradleFragmentConfigurationRelation.None, +) + +/* Internal abbreviation */ +internal typealias ConfigurationContext = KotlinGradleFragmentConfigurationContext + +interface KotlinGradleFragmentConfigurationContext : KotlinNameDisambiguation { + val project: Project get() = module.project + val module: KotlinGradleModule + val dependencies: KotlinFragmentDependencyConfigurations +} + +internal class KotlinGradleFragmentConfigurationContextImpl( + override val module: KotlinGradleModule, + override val dependencies: KotlinFragmentDependencyConfigurations, + names: KotlinNameDisambiguation +) : KotlinGradleFragmentConfigurationContext, KotlinNameDisambiguation by names + +fun KotlinGradleFragmentConfigurationDefinition.withConfigurationProvider( + provider: KotlinGradleFragmentConfigurationContext.() -> Configuration +) = copy(provider = provider) + +operator fun KotlinGradleFragmentConfigurationDefinition.plus(other: FragmentAttributes): + KotlinGradleFragmentConfigurationDefinition = copy(attributes = attributes + other) + +operator fun KotlinGradleFragmentConfigurationDefinition.plus(other: FragmentArtifacts): + KotlinGradleFragmentConfigurationDefinition = copy(artifacts = artifacts + other) + +operator fun KotlinGradleFragmentConfigurationDefinition.plus(other: FragmentCapabilities): + KotlinGradleFragmentConfigurationDefinition = copy(capabilities = capabilities + other) diff --git a/libraries/tools/kotlin-gradle-plugin/src/main/kotlin/org/jetbrains/kotlin/gradle/plugin/mpp/pm20/KotlinGradleFragmentConfigurationProvider.kt b/libraries/tools/kotlin-gradle-plugin/src/main/kotlin/org/jetbrains/kotlin/gradle/plugin/mpp/pm20/KotlinGradleFragmentConfigurationProvider.kt new file mode 100644 index 00000000000..fc426812a55 --- /dev/null +++ b/libraries/tools/kotlin-gradle-plugin/src/main/kotlin/org/jetbrains/kotlin/gradle/plugin/mpp/pm20/KotlinGradleFragmentConfigurationProvider.kt @@ -0,0 +1,16 @@ +/* + * 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 + +import org.gradle.api.artifacts.Configuration + +fun interface KotlinGradleFragmentConfigurationProvider { + fun KotlinGradleFragmentConfigurationContext.getConfiguration(): Configuration +} + +internal fun KotlinGradleFragmentConfigurationProvider.getConfiguration(context: KotlinGradleFragmentConfigurationContext): Configuration { + return with(context) { getConfiguration() } +} diff --git a/libraries/tools/kotlin-gradle-plugin/src/main/kotlin/org/jetbrains/kotlin/gradle/plugin/mpp/pm20/KotlinGradleFragmentConfigurationRelation.kt b/libraries/tools/kotlin-gradle-plugin/src/main/kotlin/org/jetbrains/kotlin/gradle/plugin/mpp/pm20/KotlinGradleFragmentConfigurationRelation.kt new file mode 100644 index 00000000000..1548ec72ca6 --- /dev/null +++ b/libraries/tools/kotlin-gradle-plugin/src/main/kotlin/org/jetbrains/kotlin/gradle/plugin/mpp/pm20/KotlinGradleFragmentConfigurationRelation.kt @@ -0,0 +1,19 @@ +/* + * 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 + +import org.gradle.api.artifacts.Configuration + +/* Internal abbreviation */ +internal typealias FragmentRelation = KotlinGradleFragmentConfigurationRelation + +fun interface KotlinGradleFragmentConfigurationRelation { + fun KotlinGradleFragmentConfigurationContext.setupExtendsFromRelations(configuration: Configuration) + + companion object { + val None = FragmentRelation {} + } +} diff --git a/libraries/tools/kotlin-gradle-plugin/src/main/kotlin/org/jetbrains/kotlin/gradle/plugin/mpp/pm20/KotlinGradleFragmentFactory.kt b/libraries/tools/kotlin-gradle-plugin/src/main/kotlin/org/jetbrains/kotlin/gradle/plugin/mpp/pm20/KotlinGradleFragmentFactory.kt index e179f771c0f..a29cf3c57fd 100644 --- a/libraries/tools/kotlin-gradle-plugin/src/main/kotlin/org/jetbrains/kotlin/gradle/plugin/mpp/pm20/KotlinGradleFragmentFactory.kt +++ b/libraries/tools/kotlin-gradle-plugin/src/main/kotlin/org/jetbrains/kotlin/gradle/plugin/mpp/pm20/KotlinGradleFragmentFactory.kt @@ -54,9 +54,9 @@ internal fun Configuration.configure( definition: KotlinGradleFragmentConfigurationDefinition, fragment: T ) { - attributes.attribute(definition.attributes, fragment) - outgoing.addArtifacts(definition.artifacts, fragment) + attributes.attributes(definition.attributes, fragment) + outgoing.artifacts(definition.artifacts, fragment) KotlinGradleFragmentConfigurationCapabilities.ContextImpl(this) - .setCapabilities(definition.capabilities, fragment) + .capabilities(definition.capabilities, fragment) }