diff --git a/libraries/tools/kotlin-gradle-plugin-api/src/common/kotlin/org/jetbrains/kotlin/gradle/plugin/mpp/pm20/GradleKpmCompilerPlugin.kt b/libraries/tools/kotlin-gradle-plugin-api/src/common/kotlin/org/jetbrains/kotlin/gradle/plugin/mpp/pm20/GradleKpmCompilerPlugin.kt index 5ec7df7d7a2..706c962e868 100644 --- a/libraries/tools/kotlin-gradle-plugin-api/src/common/kotlin/org/jetbrains/kotlin/gradle/plugin/mpp/pm20/GradleKpmCompilerPlugin.kt +++ b/libraries/tools/kotlin-gradle-plugin-api/src/common/kotlin/org/jetbrains/kotlin/gradle/plugin/mpp/pm20/GradleKpmCompilerPlugin.kt @@ -14,4 +14,4 @@ import org.jetbrains.kotlin.project.model.* */ interface GradleKpmCompilerPlugin : Plugin { val kpmCompilerPlugin: KpmCompilerPlugin -} \ No newline at end of file +} diff --git a/libraries/tools/kotlin-gradle-plugin-api/src/common/kotlin/org/jetbrains/kotlin/gradle/plugin/mpp/pm20/GradleKpmSingleMavenPublishedModuleHolder.kt b/libraries/tools/kotlin-gradle-plugin-api/src/common/kotlin/org/jetbrains/kotlin/gradle/plugin/mpp/pm20/GradleKpmSingleMavenPublishedModuleHolder.kt new file mode 100644 index 00000000000..e7a7fdd9516 --- /dev/null +++ b/libraries/tools/kotlin-gradle-plugin-api/src/common/kotlin/org/jetbrains/kotlin/gradle/plugin/mpp/pm20/GradleKpmSingleMavenPublishedModuleHolder.kt @@ -0,0 +1,15 @@ +/* + * 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.publish.maven.MavenPublication + +interface GradleKpmSingleMavenPublishedModuleHolder { + fun assignMavenPublication(publication: MavenPublication) + fun whenPublicationAssigned(handlePublication: (MavenPublication) -> Unit) + val defaultPublishedModuleSuffix: String? + val publishedMavenModuleCoordinates: PublishedModuleCoordinatesProvider +} diff --git a/libraries/tools/kotlin-gradle-plugin-api/src/common/kotlin/org/jetbrains/kotlin/gradle/plugin/mpp/pm20/GradleKpmVariantCompilationData.kt b/libraries/tools/kotlin-gradle-plugin-api/src/common/kotlin/org/jetbrains/kotlin/gradle/plugin/mpp/pm20/GradleKpmVariantCompilationData.kt new file mode 100644 index 00000000000..554fcce027f --- /dev/null +++ b/libraries/tools/kotlin-gradle-plugin-api/src/common/kotlin/org/jetbrains/kotlin/gradle/plugin/mpp/pm20/GradleKpmVariantCompilationData.kt @@ -0,0 +1,46 @@ +/* + * 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.file.FileCollection +import org.gradle.api.file.SourceDirectorySet +import org.jetbrains.kotlin.gradle.dsl.KotlinCommonOptions +import org.jetbrains.kotlin.gradle.plugin.KotlinCompilationOutput +import org.jetbrains.kotlin.gradle.plugin.KotlinPlatformType +import org.jetbrains.kotlin.project.model.LanguageSettings + +interface GradleKpmVariantCompilationData : KotlinCompilationData { + override val owner: GradleKpmVariant + + override val project: Project get() = owner.containingModule.project + + override val compilationPurpose: String + get() = owner.containingModule.name + + override val compilationClassifier: String + get() = owner.name + + override val output: KotlinCompilationOutput + get() = owner.compilationOutputs + + override val compileKotlinTaskName: String + + override val compileAllTaskName: String + + override val kotlinSourceDirectoriesByFragmentName: Map + + override val compileDependencyFiles: FileCollection + get() = owner.compileDependencyFiles + + override val languageSettings: LanguageSettings + get() = owner.languageSettings + + override val platformType: KotlinPlatformType + get() = owner.platformType + + override val ownModuleName: String +} diff --git a/libraries/tools/kotlin-gradle-plugin-api/src/common/kotlin/org/jetbrains/kotlin/gradle/plugin/mpp/pm20/KotlinCompilationData.kt b/libraries/tools/kotlin-gradle-plugin-api/src/common/kotlin/org/jetbrains/kotlin/gradle/plugin/mpp/pm20/KotlinCompilationData.kt index 9e15643eb4f..db802b47e1c 100644 --- a/libraries/tools/kotlin-gradle-plugin-api/src/common/kotlin/org/jetbrains/kotlin/gradle/plugin/mpp/pm20/KotlinCompilationData.kt +++ b/libraries/tools/kotlin-gradle-plugin-api/src/common/kotlin/org/jetbrains/kotlin/gradle/plugin/mpp/pm20/KotlinCompilationData.kt @@ -38,34 +38,3 @@ interface KotlinCompilationData { val friendPaths: Iterable } -interface KotlinVariantCompilationData : KotlinCompilationData { - override val owner: KpmGradleVariant - - override val project: Project get() = owner.containingModule.project - - override val compilationPurpose: String - get() = owner.containingModule.name - - override val compilationClassifier: String - get() = owner.name - - override val output: KotlinCompilationOutput - get() = owner.compilationOutputs - - override val compileKotlinTaskName: String - - override val compileAllTaskName: String - - override val kotlinSourceDirectoriesByFragmentName: Map - - override val compileDependencyFiles: FileCollection - get() = owner.compileDependencyFiles - - override val languageSettings: LanguageSettings - get() = owner.languageSettings - - override val platformType: KotlinPlatformType - get() = owner.platformType - - override val ownModuleName: String -} diff --git a/libraries/tools/kotlin-gradle-plugin-api/src/common/kotlin/org/jetbrains/kotlin/gradle/plugin/mpp/pm20/KotlinDependencyConfigurations.kt b/libraries/tools/kotlin-gradle-plugin-api/src/common/kotlin/org/jetbrains/kotlin/gradle/plugin/mpp/pm20/KotlinDependencyConfigurations.kt index 100dc20ad08..cb2cb150c82 100644 --- a/libraries/tools/kotlin-gradle-plugin-api/src/common/kotlin/org/jetbrains/kotlin/gradle/plugin/mpp/pm20/KotlinDependencyConfigurations.kt +++ b/libraries/tools/kotlin-gradle-plugin-api/src/common/kotlin/org/jetbrains/kotlin/gradle/plugin/mpp/pm20/KotlinDependencyConfigurations.kt @@ -7,7 +7,7 @@ package org.jetbrains.kotlin.gradle.plugin.mpp.pm20 import org.gradle.api.artifacts.Configuration -interface KotlinDependencyConfigurations { +interface GradleKpmDependencyConfigurations { val apiConfiguration: Configuration val implementationConfiguration: Configuration val compileOnlyConfiguration: Configuration diff --git a/libraries/tools/kotlin-gradle-plugin-api/src/common/kotlin/org/jetbrains/kotlin/gradle/plugin/mpp/pm20/KotlinFragmentDependencyConfigurations.kt b/libraries/tools/kotlin-gradle-plugin-api/src/common/kotlin/org/jetbrains/kotlin/gradle/plugin/mpp/pm20/KotlinFragmentDependencyConfigurations.kt index 9df002893da..d7840ca0e4b 100644 --- a/libraries/tools/kotlin-gradle-plugin-api/src/common/kotlin/org/jetbrains/kotlin/gradle/plugin/mpp/pm20/KotlinFragmentDependencyConfigurations.kt +++ b/libraries/tools/kotlin-gradle-plugin-api/src/common/kotlin/org/jetbrains/kotlin/gradle/plugin/mpp/pm20/KotlinFragmentDependencyConfigurations.kt @@ -7,7 +7,7 @@ package org.jetbrains.kotlin.gradle.plugin.mpp.pm20 import org.gradle.api.artifacts.Configuration -interface KotlinFragmentDependencyConfigurations : KotlinDependencyConfigurations { +interface GradleKpmFragmentDependencyConfigurations : GradleKpmDependencyConfigurations { /** This configuration includes the dependencies from the refines-parents */ val transitiveApiConfiguration: Configuration @@ -25,7 +25,7 @@ interface KotlinFragmentDependencyConfigurations : KotlinDependencyConfiguration override val transitiveApiConfiguration: Configuration, override val transitiveImplementationConfiguration: Configuration, override val transitiveRuntimeOnlyConfiguration: Configuration - ) : KotlinFragmentDependencyConfigurations + ) : GradleKpmFragmentDependencyConfigurations companion object { fun create( @@ -36,7 +36,7 @@ interface KotlinFragmentDependencyConfigurations : KotlinDependencyConfiguration transitiveApiConfiguration: Configuration, transitiveImplementationConfiguration: Configuration, transitiveRuntimeOnlyConfiguration: Configuration - ): KotlinFragmentDependencyConfigurations = Impl( + ): GradleKpmFragmentDependencyConfigurations = Impl( apiConfiguration = apiConfiguration, implementationConfiguration = implementationConfiguration, compileOnlyConfiguration = compileOnlyConfiguration, diff --git a/libraries/tools/kotlin-gradle-plugin-api/src/common/kotlin/org/jetbrains/kotlin/gradle/plugin/mpp/pm20/KpmGradleFragment.kt b/libraries/tools/kotlin-gradle-plugin-api/src/common/kotlin/org/jetbrains/kotlin/gradle/plugin/mpp/pm20/KpmGradleFragment.kt index 4bcac311a3b..36861fa616b 100644 --- a/libraries/tools/kotlin-gradle-plugin-api/src/common/kotlin/org/jetbrains/kotlin/gradle/plugin/mpp/pm20/KpmGradleFragment.kt +++ b/libraries/tools/kotlin-gradle-plugin-api/src/common/kotlin/org/jetbrains/kotlin/gradle/plugin/mpp/pm20/KpmGradleFragment.kt @@ -18,10 +18,10 @@ import org.jetbrains.kotlin.tooling.core.MutableExtras import org.jetbrains.kotlin.tooling.core.closure import org.jetbrains.kotlin.tooling.core.withClosure -interface KpmGradleFragment : KpmFragment, HasKotlinDependencies, KotlinFragmentDependencyConfigurations, Named { +interface GradleKpmFragment : KpmFragment, HasKotlinDependencies, GradleKpmFragmentDependencyConfigurations, Named { override val kotlinSourceRoots: SourceDirectorySet - override val containingModule: KpmGradleModule + override val containingModule: GradleKpmModule override fun getName(): String = fragmentName @@ -32,16 +32,16 @@ interface KpmGradleFragment : KpmFragment, HasKotlinDependencies, KotlinFragment val extras: MutableExtras - fun refines(other: KpmGradleFragment) + fun refines(other: GradleKpmFragment) - fun refines(other: NamedDomainObjectProvider) + fun refines(other: NamedDomainObjectProvider) - override val declaredRefinesDependencies: Iterable + override val declaredRefinesDependencies: Iterable - override val refinesClosure: Set + override val refinesClosure: Set get() = this.closure { it.declaredRefinesDependencies } - override val withRefinesClosure: Set + override val withRefinesClosure: Set get() = this.withClosure { it.declaredRefinesDependencies } override fun dependencies(configureClosure: Closure) = @@ -69,8 +69,8 @@ interface KpmGradleFragment : KpmFragment, HasKotlinDependencies, KotlinFragment listOf(transitiveApiConfiguration.name, transitiveImplementationConfiguration.name) } -val KpmGradleFragment.path: String +val GradleKpmFragment.path: String get() = "${project.path}/${containingModule.name}/$fragmentName" -val KpmGradleFragment.containingVariants: Set - get() = containingModule.variantsContainingFragment(this).map { it as KpmGradleVariant }.toSet() +val GradleKpmFragment.containingVariants: Set + get() = containingModule.variantsContainingFragment(this).map { it as GradleKpmVariant }.toSet() diff --git a/libraries/tools/kotlin-gradle-plugin-api/src/common/kotlin/org/jetbrains/kotlin/gradle/plugin/mpp/pm20/KpmGradleModule.kt b/libraries/tools/kotlin-gradle-plugin-api/src/common/kotlin/org/jetbrains/kotlin/gradle/plugin/mpp/pm20/KpmGradleModule.kt index a29930d4166..9cc0371ab20 100644 --- a/libraries/tools/kotlin-gradle-plugin-api/src/common/kotlin/org/jetbrains/kotlin/gradle/plugin/mpp/pm20/KpmGradleModule.kt +++ b/libraries/tools/kotlin-gradle-plugin-api/src/common/kotlin/org/jetbrains/kotlin/gradle/plugin/mpp/pm20/KpmGradleModule.kt @@ -16,14 +16,14 @@ import org.jetbrains.kotlin.project.model.KpmModule import org.jetbrains.kotlin.project.model.KpmModuleIdentifier import org.jetbrains.kotlin.project.model.KpmCompilerPlugin -interface KpmGradleModule : KpmModule, Named, HasKotlinDependencies { +interface GradleKpmModule : KpmModule, Named, HasKotlinDependencies { val project: Project val moduleClassifier: String? - override val fragments: ExtensiblePolymorphicDomainObjectContainer + override val fragments: ExtensiblePolymorphicDomainObjectContainer // TODO DSL & build script model: find a way to create a flexible typed view on fragments? - override val variants: NamedDomainObjectSet + override val variants: NamedDomainObjectSet override val plugins: Set @@ -47,10 +47,10 @@ interface KpmGradleModule : KpmModule, Named, HasKotlinDependencies { // DSL - val common: KpmGradleFragment - get() = fragments.getByName(KpmGradleFragment.COMMON_FRAGMENT_NAME) + val common: GradleKpmFragment + get() = fragments.getByName(GradleKpmFragment.COMMON_FRAGMENT_NAME) - fun common(configure: KpmGradleFragment.() -> Unit) = + fun common(configure: GradleKpmFragment.() -> Unit) = common.configure() override fun dependencies(configure: KotlinDependencyHandler.() -> Unit) = diff --git a/libraries/tools/kotlin-gradle-plugin-api/src/common/kotlin/org/jetbrains/kotlin/gradle/plugin/mpp/pm20/KpmGradleVariant.kt b/libraries/tools/kotlin-gradle-plugin-api/src/common/kotlin/org/jetbrains/kotlin/gradle/plugin/mpp/pm20/KpmGradleVariant.kt index e90cd1aea29..509848b3d60 100644 --- a/libraries/tools/kotlin-gradle-plugin-api/src/common/kotlin/org/jetbrains/kotlin/gradle/plugin/mpp/pm20/KpmGradleVariant.kt +++ b/libraries/tools/kotlin-gradle-plugin-api/src/common/kotlin/org/jetbrains/kotlin/gradle/plugin/mpp/pm20/KpmGradleVariant.kt @@ -8,12 +8,11 @@ package org.jetbrains.kotlin.gradle.plugin.mpp.pm20 import org.gradle.api.artifacts.Configuration import org.gradle.api.file.ConfigurableFileCollection import org.gradle.api.file.FileCollection -import org.gradle.api.publish.maven.MavenPublication import org.jetbrains.kotlin.gradle.plugin.KotlinCompilationOutput import org.jetbrains.kotlin.gradle.plugin.KotlinPlatformType import org.jetbrains.kotlin.project.model.KpmVariant -interface KpmGradleVariant : KpmGradleFragment, KpmVariant { +interface GradleKpmVariant : GradleKpmFragment, KpmVariant { val platformType: KotlinPlatformType // TODO generalize with KotlinCompilation? @@ -33,7 +32,7 @@ interface KpmGradleVariant : KpmGradleFragment, KpmVariant { val gradleVariantNames: Set } -interface KpmGradleVariantWithRuntime : KpmGradleVariant { +interface GradleKpmVariantWithRuntime : GradleKpmVariant { // TODO deduplicate with KotlinCompilation? val runtimeDependenciesConfiguration: Configuration @@ -45,7 +44,7 @@ interface KpmGradleVariantWithRuntime : KpmGradleVariant { val runtimeElementsConfiguration: Configuration } -interface KpmNativeVariant : KpmGradleVariant { +interface GradleKpmNativeVariant : GradleKpmVariant { override val platformType: KotlinPlatformType get() = KotlinPlatformType.native @@ -54,13 +53,6 @@ interface KpmNativeVariant : KpmGradleVariant { var enableEndorsedLibraries: Boolean } -interface SingleMavenPublishedModuleHolder { - fun assignMavenPublication(publication: MavenPublication) - fun whenPublicationAssigned(handlePublication: (MavenPublication) -> Unit) - val defaultPublishedModuleSuffix: String? - val publishedMavenModuleCoordinates: PublishedModuleCoordinatesProvider -} - interface PublishedModuleCoordinatesProvider { val group: String val name: String diff --git a/libraries/tools/kotlin-gradle-plugin-dsl-codegen/build.gradle.kts b/libraries/tools/kotlin-gradle-plugin-dsl-codegen/build.gradle.kts index b0153bdccc2..c3e5e4d3ec9 100644 --- a/libraries/tools/kotlin-gradle-plugin-dsl-codegen/build.gradle.kts +++ b/libraries/tools/kotlin-gradle-plugin-dsl-codegen/build.gradle.kts @@ -45,7 +45,7 @@ val generateKpmNativeVariants by generator( listOf(generateMppTargetContainerWithPresets, generateAbstractBinaryContainer, generateKpmNativeVariants).forEach { it.systemProperty( "org.jetbrains.kotlin.generators.gradle.dsl.outputSourceRoot", - project(":kotlin-gradle-plugin").projectDir.resolve("src/main/kotlin").absolutePath + project(":kotlin-gradle-plugin").projectDir.resolve("src/common/kotlin").absolutePath ) } diff --git a/libraries/tools/kotlin-gradle-plugin-dsl-codegen/src/main/kotlin/org/jetbrains/kotlin/generators/gradle/dsl/kpmNativeVariantCodegen.kt b/libraries/tools/kotlin-gradle-plugin-dsl-codegen/src/main/kotlin/org/jetbrains/kotlin/generators/gradle/dsl/kpmNativeVariantCodegen.kt index 99e7ab70acc..6d03eca4609 100644 --- a/libraries/tools/kotlin-gradle-plugin-dsl-codegen/src/main/kotlin/org/jetbrains/kotlin/generators/gradle/dsl/kpmNativeVariantCodegen.kt +++ b/libraries/tools/kotlin-gradle-plugin-dsl-codegen/src/main/kotlin/org/jetbrains/kotlin/generators/gradle/dsl/kpmNativeVariantCodegen.kt @@ -41,7 +41,7 @@ fun kpmNativeVariantsSourceCode() = """ ${kpmVariantClassFunction().indented(skipFirstLine = true)} """.trimIndent() -private val fileName = "KpmNativeVariants.kt" +private val fileName = "nativeVariants.kt" private val packageName = "org.jetbrains.kotlin.gradle.plugin.mpp.pm20" @@ -53,13 +53,13 @@ private fun variantClasses() = allKonanTargets() private fun variantClass(konanTarget: KonanTarget) = """ open class ${konanTarget.variantClassName} @Inject constructor( - containingModule: KotlinGradleModule, + containingModule: GradleKpmModule, fragmentName: String, - dependencyConfigurations: KotlinFragmentDependencyConfigurations, + dependencyConfigurations: GradleKpmFragmentDependencyConfigurations, compileDependencyConfiguration: Configuration, apiElementsConfiguration: Configuration, hostSpecificMetadataElementsConfiguration: Configuration? - ) : KotlinNativeVariantInternal( + ) : GradleKpmNativeVariantInternal( containingModule = containingModule, fragmentName = fragmentName, konanTarget = KonanTarget.${konanTarget.className}, @@ -69,7 +69,7 @@ private fun variantClass(konanTarget: KonanTarget) = """ hostSpecificMetadataElementsConfiguration = hostSpecificMetadataElementsConfiguration ) { companion object { - val constructor = KotlinNativeVariantConstructor( + val constructor = GradleKpmNativeVariantConstructor( KonanTarget.${konanTarget.className}, ${konanTarget.variantClassName}::class.java, ::${konanTarget.variantClassName} ) } @@ -81,7 +81,7 @@ private fun kpmVariantClassFunction(): String { .joinToString("\n") { "KonanTarget.${it.className} -> ${it.variantClassName}::class.java" } return """ - internal fun kpmVariantClass(konanTarget: KonanTarget): Class? = when (konanTarget) { + internal fun kpmNativeVariantClass(konanTarget: KonanTarget): Class? = when (konanTarget) { ${konanTargetToVariant.indented(nSpaces = 12, skipFirstLine = true)} else -> null } @@ -98,6 +98,6 @@ private fun allVariantConstructors() = allKonanTargets() private val KonanTarget.variantClassName get() = presetName .capitalizeUS() - .let { "Kotlin${it}Variant" } + .let { "GradleKpm${it}Variant" } -private val KonanTarget.className get() = javaClass.simpleName \ No newline at end of file +private val KonanTarget.className get() = javaClass.simpleName diff --git a/libraries/tools/kotlin-gradle-plugin-idea/src/test/kotlin/org/jetbrains/kotlin/gradle/kpm/idea/BackwardsCompatibilityDeserializationTest.kt b/libraries/tools/kotlin-gradle-plugin-idea/src/test/kotlin/org/jetbrains/kotlin/gradle/kpm/idea/BackwardsCompatibilityDeserializationTest.kt index 4fecd821b81..fc2fd89f543 100644 --- a/libraries/tools/kotlin-gradle-plugin-idea/src/test/kotlin/org/jetbrains/kotlin/gradle/kpm/idea/BackwardsCompatibilityDeserializationTest.kt +++ b/libraries/tools/kotlin-gradle-plugin-idea/src/test/kotlin/org/jetbrains/kotlin/gradle/kpm/idea/BackwardsCompatibilityDeserializationTest.kt @@ -17,8 +17,8 @@ import org.jetbrains.kotlin.gradle.kpm.external.ExternalVariantApi import org.jetbrains.kotlin.gradle.kpm.idea.testFixtures.deserialize import org.jetbrains.kotlin.gradle.kpm.idea.testFixtures.serialize import org.jetbrains.kotlin.gradle.plugin.KotlinPm20PluginWrapper -import org.jetbrains.kotlin.gradle.plugin.mpp.pm20.KpmIosX64Variant -import org.jetbrains.kotlin.gradle.plugin.mpp.pm20.KpmLinuxX64Variant +import org.jetbrains.kotlin.gradle.plugin.mpp.pm20.GradleKpmIosX64Variant +import org.jetbrains.kotlin.gradle.plugin.mpp.pm20.GradleKpmLinuxX64Variant import org.jetbrains.kotlin.gradle.plugin.mpp.pm20.KotlinPm20ProjectExtension import org.jetbrains.kotlin.gradle.plugin.mpp.pm20.jvm import org.jetbrains.kotlin.tooling.core.extrasKeyOf @@ -49,8 +49,8 @@ class BackwardsCompatibilityDeserializationTest { kotlinExtension.mainAndTest { jvm val native = fragments.create("native") - val linux = fragments.create("linuxX64") - val ios = fragments.create("iosX64") + val linux = fragments.create("linuxX64") + val ios = fragments.create("iosX64") native.refines(common) linux.refines(native) ios.refines(native) diff --git a/libraries/tools/kotlin-gradle-plugin-integration-tests/src/test/kotlin/org/jetbrains/kotlin/gradle/KotlinToolingMetadataIT.kt b/libraries/tools/kotlin-gradle-plugin-integration-tests/src/test/kotlin/org/jetbrains/kotlin/gradle/KotlinToolingMetadataIT.kt index 9bbc3c2282b..7db3a39e1d1 100644 --- a/libraries/tools/kotlin-gradle-plugin-integration-tests/src/test/kotlin/org/jetbrains/kotlin/gradle/KotlinToolingMetadataIT.kt +++ b/libraries/tools/kotlin-gradle-plugin-integration-tests/src/test/kotlin/org/jetbrains/kotlin/gradle/KotlinToolingMetadataIT.kt @@ -6,7 +6,7 @@ package org.jetbrains.kotlin.gradle import org.jetbrains.kotlin.gradle.plugin.KotlinPlatformType -import org.jetbrains.kotlin.gradle.plugin.mpp.pm20.KpmGradleModule +import org.jetbrains.kotlin.gradle.plugin.mpp.pm20.GradleKpmModule import org.jetbrains.kotlin.gradle.tooling.BuildKotlinToolingMetadataTask import org.jetbrains.kotlin.gradle.tooling.BuildKotlinToolingMetadataTask.Companion.taskNameForKotlinModule import org.jetbrains.kotlin.konan.target.KonanTarget @@ -29,7 +29,7 @@ class KotlinToolingMetadataMppIT : BaseGradleIT() { private val buildKotlinToolingMetadataTaskName get() = if (isKpmModelMappingEnabled) { - taskNameForKotlinModule(KpmGradleModule.MAIN_MODULE_NAME) + taskNameForKotlinModule(GradleKpmModule.MAIN_MODULE_NAME) } else { BuildKotlinToolingMetadataTask.defaultTaskName } @@ -122,7 +122,7 @@ class KotlinToolingMetadataMppIT : BaseGradleIT() { with(transformProjectWithPluginsDsl("kpm-multi-module-published")) { val expectedMetadataByModule = mapOf Unit>( - KpmGradleModule.MAIN_MODULE_NAME to { + GradleKpmModule.MAIN_MODULE_NAME to { val nativeTarget = projectTargets.single { it.platformType == KotlinPlatformType.native.name } assertEquals(KonanTarget.LINUX_X64.name, nativeTarget.extras.native?.konanTarget) }, diff --git a/libraries/tools/kotlin-gradle-plugin-integration-tests/src/test/resources/testProject/kpm-multi-module-published/build.gradle.kts b/libraries/tools/kotlin-gradle-plugin-integration-tests/src/test/resources/testProject/kpm-multi-module-published/build.gradle.kts index 983f52c1bf3..ec3689092b6 100644 --- a/libraries/tools/kotlin-gradle-plugin-integration-tests/src/test/resources/testProject/kpm-multi-module-published/build.gradle.kts +++ b/libraries/tools/kotlin-gradle-plugin-integration-tests/src/test/resources/testProject/kpm-multi-module-published/build.gradle.kts @@ -17,12 +17,12 @@ kotlin { // feel free to add more modules, variants and fragments mainAndTest { jvm - val linuxX64 by fragments.creating(KpmLinuxX64Variant::class) + val linuxX64 by fragments.creating(GradleKpmLinuxX64Variant::class) } val secondaryModule by modules.creating { jvm - val linuxArm64 by fragments.creating(KpmLinuxArm64Variant::class) + val linuxArm64 by fragments.creating(GradleKpmLinuxArm64Variant::class) makePublic() } @@ -34,7 +34,7 @@ kotlin { val integrationTest by modules.creating { jvm - val linuxX64 by fragments.creating(KpmLinuxX64Variant::class) + val linuxX64 by fragments.creating(GradleKpmLinuxX64Variant::class) } } diff --git a/libraries/tools/kotlin-gradle-plugin-integration-tests/src/test/resources/testProject/kpmTransientPluginOptions/build.gradle.kts b/libraries/tools/kotlin-gradle-plugin-integration-tests/src/test/resources/testProject/kpmTransientPluginOptions/build.gradle.kts index ccb131ae451..ac6d1f7719b 100644 --- a/libraries/tools/kotlin-gradle-plugin-integration-tests/src/test/resources/testProject/kpmTransientPluginOptions/build.gradle.kts +++ b/libraries/tools/kotlin-gradle-plugin-integration-tests/src/test/resources/testProject/kpmTransientPluginOptions/build.gradle.kts @@ -11,7 +11,7 @@ repositories { mavenCentral() } -plugins.apply(GradleKpmPluginWithTransientPluginOptions::class.java) +plugins.apply(KpmGradlePluginWithTransientPluginOptions::class.java) configure { main { @@ -38,7 +38,7 @@ class KpmPluginWithTransientPluginOptions( override fun forPlatformCompilation(variant: KpmVariant) = pluginData() } -class GradleKpmPluginWithTransientPluginOptions : GradleKpmCompilerPlugin { +class KpmGradlePluginWithTransientPluginOptions : GradleKpmCompilerPlugin { private lateinit var project: Project override fun apply(target: Project) { diff --git a/libraries/tools/kotlin-gradle-plugin-kpm-android/src/main/kotlin/org/jetbrains/kotlin/gradle/android/AndroidDsl.kt b/libraries/tools/kotlin-gradle-plugin-kpm-android/src/main/kotlin/org/jetbrains/kotlin/gradle/android/AndroidDsl.kt index c069b2b45df..efd96f26885 100644 --- a/libraries/tools/kotlin-gradle-plugin-kpm-android/src/main/kotlin/org/jetbrains/kotlin/gradle/android/AndroidDsl.kt +++ b/libraries/tools/kotlin-gradle-plugin-kpm-android/src/main/kotlin/org/jetbrains/kotlin/gradle/android/AndroidDsl.kt @@ -6,13 +6,13 @@ package org.jetbrains.kotlin.gradle.android -import org.jetbrains.kotlin.gradle.plugin.mpp.pm20.KpmGradleFragment +import org.jetbrains.kotlin.gradle.plugin.mpp.pm20.GradleKpmFragment import org.jetbrains.kotlin.tooling.core.extrasKeyOf import java.io.File import java.io.Serializable internal val androidDslKey = extrasKeyOf() -val KpmGradleFragment.androidDsl: AndroidDsl? get() = this.extras[androidDslKey] +val GradleKpmFragment.androidDsl: AndroidDsl? get() = this.extras[androidDslKey] class AndroidDsl : Serializable { var compileSdk = 0 diff --git a/libraries/tools/kotlin-gradle-plugin-kpm-android/src/main/kotlin/org/jetbrains/kotlin/gradle/android/KotlinAndroidVariantFactory.kt b/libraries/tools/kotlin-gradle-plugin-kpm-android/src/main/kotlin/org/jetbrains/kotlin/gradle/android/KotlinAndroidVariantFactory.kt index 4cd4b229382..d9cb4986b71 100644 --- a/libraries/tools/kotlin-gradle-plugin-kpm-android/src/main/kotlin/org/jetbrains/kotlin/gradle/android/KotlinAndroidVariantFactory.kt +++ b/libraries/tools/kotlin-gradle-plugin-kpm-android/src/main/kotlin/org/jetbrains/kotlin/gradle/android/KotlinAndroidVariantFactory.kt @@ -20,8 +20,8 @@ import org.jetbrains.kotlin.gradle.kpm.external.createExternalJvmVariant import org.jetbrains.kotlin.gradle.plugin.KotlinPlatformType import org.jetbrains.kotlin.gradle.plugin.mpp.pm20.* -fun KpmGradleModule.createKotlinAndroidVariant(androidVariant: BaseVariant) { - val androidOutgoingArtifacts = FragmentArtifacts { +fun GradleKpmModule.createKotlinAndroidVariant(androidVariant: BaseVariant) { + val androidOutgoingArtifacts = GradleKpmConfigurationArtifactsSetup { variants.create("classes") { variant -> variant.attributes.attribute(AndroidArtifacts.ARTIFACT_TYPE, AndroidArtifacts.ArtifactType.CLASSES_JAR.type) variant.artifact(project.provider { fragment.compilationOutputs.classesDirs.singleFile }) { @@ -37,16 +37,16 @@ fun KpmGradleModule.createKotlinAndroidVariant(androidVariant: BaseVariant) { } } - val androidElementsAttributes = FragmentAttributes { + val androidElementsAttributes = GradleKpmConfigurationAttributesSetup { attribute(BuildTypeAttr.ATTRIBUTE, project.objects.named(androidVariant.buildType.name)) attribute(TARGET_JVM_ENVIRONMENT_ATTRIBUTE, project.objects.named(TargetJvmEnvironment.ANDROID)) } val kotlinVariant = createExternalJvmVariant( - "android${androidVariant.buildType.name.replaceFirstChar { it.uppercase() }}", KotlinJvmVariantConfig( + "android${androidVariant.buildType.name.replaceFirstChar { it.uppercase() }}", GradleKpmJvmVariantConfig( /* Only swap out configuration that is used. Default setup shall still be applied */ compileDependencies = (DefaultKotlinCompileDependenciesDefinition + - FragmentAttributes { + GradleKpmConfigurationAttributesSetup { namedAttribute(TARGET_JVM_ENVIRONMENT_ATTRIBUTE, TargetJvmEnvironment.ANDROID) attribute(KotlinPlatformType.attribute, KotlinPlatformType.androidJvm) }) @@ -63,8 +63,8 @@ fun KpmGradleModule.createKotlinAndroidVariant(androidVariant: BaseVariant) { runtimeElements = DefaultKotlinRuntimeElementsDefinition + androidElementsAttributes + androidOutgoingArtifacts, /* For now: Just publish 'release' (non-debuggable) variants */ - publicationConfigurator = if (androidVariant.buildType.isDebuggable) KotlinPublicationConfigurator.NoPublication else - KotlinPublicationConfigurator.SingleVariantPublication + publicationConfigurator = if (androidVariant.buildType.isDebuggable) GradleKpmPublicationConfigurator.NoPublication else + GradleKpmPublicationConfigurator.SingleVariantPublication ) ) diff --git a/libraries/tools/kotlin-gradle-plugin-kpm-android/src/main/kotlin/org/jetbrains/kotlin/gradle/android/androidCommonFragment.kt b/libraries/tools/kotlin-gradle-plugin-kpm-android/src/main/kotlin/org/jetbrains/kotlin/gradle/android/androidCommonFragment.kt index 0cb0f50567d..1dc26ba90cd 100644 --- a/libraries/tools/kotlin-gradle-plugin-kpm-android/src/main/kotlin/org/jetbrains/kotlin/gradle/android/androidCommonFragment.kt +++ b/libraries/tools/kotlin-gradle-plugin-kpm-android/src/main/kotlin/org/jetbrains/kotlin/gradle/android/androidCommonFragment.kt @@ -5,10 +5,10 @@ package org.jetbrains.kotlin.gradle.android -import org.jetbrains.kotlin.gradle.plugin.mpp.pm20.KpmGradleFragmentInternal -import org.jetbrains.kotlin.gradle.plugin.mpp.pm20.KpmGradleModule +import org.jetbrains.kotlin.gradle.plugin.mpp.pm20.GradleKpmFragmentInternal +import org.jetbrains.kotlin.gradle.plugin.mpp.pm20.GradleKpmModule -val KpmGradleModule.androidCommon: KpmGradleFragmentInternal +val GradleKpmModule.androidCommon: GradleKpmFragmentInternal get() = (fragments.findByName("androidCommon") ?: fragments.create("androidCommon") { fragment -> fragment.refines(common) - }) as KpmGradleFragmentInternal + }) as GradleKpmFragmentInternal diff --git a/libraries/tools/kotlin-gradle-plugin-kpm-android/src/main/kotlin/org/jetbrains/kotlin/gradle/android/instrumentedTest.kt b/libraries/tools/kotlin-gradle-plugin-kpm-android/src/main/kotlin/org/jetbrains/kotlin/gradle/android/instrumentedTest.kt index bd97d358947..15f06d8690f 100644 --- a/libraries/tools/kotlin-gradle-plugin-kpm-android/src/main/kotlin/org/jetbrains/kotlin/gradle/android/instrumentedTest.kt +++ b/libraries/tools/kotlin-gradle-plugin-kpm-android/src/main/kotlin/org/jetbrains/kotlin/gradle/android/instrumentedTest.kt @@ -5,12 +5,12 @@ package org.jetbrains.kotlin.gradle.android -import org.jetbrains.kotlin.gradle.plugin.mpp.pm20.KpmGradleModule +import org.jetbrains.kotlin.gradle.plugin.mpp.pm20.GradleKpmModule import org.jetbrains.kotlin.gradle.plugin.mpp.pm20.KotlinPm20ProjectExtension val KotlinPm20ProjectExtension.instrumentedTest get() = modules.maybeCreate("instrumentedTest") -fun KotlinPm20ProjectExtension.instrumentedTest(configure: KpmGradleModule.() -> Unit) { +fun KotlinPm20ProjectExtension.instrumentedTest(configure: GradleKpmModule.() -> Unit) { instrumentedTest.apply(configure) } diff --git a/libraries/tools/kotlin-gradle-plugin/src/common/kotlin/org/jetbrains/kotlin/gradle/dsl/KotlinProjectExtension.kt b/libraries/tools/kotlin-gradle-plugin/src/common/kotlin/org/jetbrains/kotlin/gradle/dsl/KotlinProjectExtension.kt index 4c8faef3312..1654436242f 100644 --- a/libraries/tools/kotlin-gradle-plugin/src/common/kotlin/org/jetbrains/kotlin/gradle/dsl/KotlinProjectExtension.kt +++ b/libraries/tools/kotlin-gradle-plugin/src/common/kotlin/org/jetbrains/kotlin/gradle/dsl/KotlinProjectExtension.kt @@ -17,7 +17,7 @@ import org.jetbrains.kotlin.gradle.plugin.PropertiesProvider.Companion.kotlinPro import org.jetbrains.kotlin.gradle.plugin.mpp.KotlinAndroidTarget import org.jetbrains.kotlin.gradle.plugin.mpp.KotlinJsSingleTargetPreset import org.jetbrains.kotlin.gradle.plugin.mpp.KotlinWithJavaTarget -import org.jetbrains.kotlin.gradle.plugin.mpp.pm20.DefaultKpmGradleProjectModelContainer +import org.jetbrains.kotlin.gradle.plugin.mpp.pm20.GradleKpmDefaultProjectModelContainer import org.jetbrains.kotlin.gradle.plugin.mpp.pm20.KotlinPm20ProjectExtension import org.jetbrains.kotlin.gradle.plugin.statistics.KotlinBuildStatsService import org.jetbrains.kotlin.gradle.targets.js.calculateJsCompilerType @@ -113,7 +113,7 @@ open class KotlinProjectExtension @Inject constructor(project: Project) : Kotlin internal val kpmModelContainer by lazy { if (project.kotlinPropertiesProvider.experimentalKpmModelMapping) { - DefaultKpmGradleProjectModelContainer.create(project) + GradleKpmDefaultProjectModelContainer.create(project) } else error("Model mapping is not enabled.") } } diff --git a/libraries/tools/kotlin-gradle-plugin/src/common/kotlin/org/jetbrains/kotlin/gradle/internal/KotlinDependenciesManagement.kt b/libraries/tools/kotlin-gradle-plugin/src/common/kotlin/org/jetbrains/kotlin/gradle/internal/KotlinDependenciesManagement.kt index c4e19b061ea..c5c856c4f48 100644 --- a/libraries/tools/kotlin-gradle-plugin/src/common/kotlin/org/jetbrains/kotlin/gradle/internal/KotlinDependenciesManagement.kt +++ b/libraries/tools/kotlin-gradle-plugin/src/common/kotlin/org/jetbrains/kotlin/gradle/internal/KotlinDependenciesManagement.kt @@ -22,8 +22,8 @@ import org.jetbrains.kotlin.gradle.execution.KotlinAggregateExecutionSource import org.jetbrains.kotlin.gradle.plugin.* import org.jetbrains.kotlin.gradle.plugin.PropertiesProvider import org.jetbrains.kotlin.gradle.plugin.mpp.* -import org.jetbrains.kotlin.gradle.plugin.mpp.pm20.KpmGradleFragment -import org.jetbrains.kotlin.gradle.plugin.mpp.pm20.KpmGradleModule +import org.jetbrains.kotlin.gradle.plugin.mpp.pm20.GradleKpmFragment +import org.jetbrains.kotlin.gradle.plugin.mpp.pm20.GradleKpmModule import org.jetbrains.kotlin.gradle.plugin.mpp.pm20.hasKpmModel import org.jetbrains.kotlin.gradle.plugin.mpp.pm20.kpmModules import org.jetbrains.kotlin.gradle.plugin.sources.KotlinDependencyScope @@ -134,8 +134,8 @@ internal fun configureStdlibDefaultDependency(project: Project) = with(project) private fun addStdlibToKpmProject( project: Project ) { - project.kpmModules.matching { it.name == KpmGradleModule.MAIN_MODULE_NAME }.configureEach { main -> - main.fragments.matching { it.name == KpmGradleFragment.COMMON_FRAGMENT_NAME }.configureEach { common -> + project.kpmModules.matching { it.name == GradleKpmModule.MAIN_MODULE_NAME }.configureEach { main -> + main.fragments.matching { it.name == GradleKpmFragment.COMMON_FRAGMENT_NAME }.configureEach { common -> common.dependencies { api(project.kotlinDependency("kotlin-stdlib-common", project.topLevelExtension.coreLibrariesVersion)) } diff --git a/libraries/tools/kotlin-gradle-plugin/src/common/kotlin/org/jetbrains/kotlin/gradle/kpm/external/ExternalVariantApi.kt b/libraries/tools/kotlin-gradle-plugin/src/common/kotlin/org/jetbrains/kotlin/gradle/kpm/external/ExternalVariantApi.kt index 94e5a5edda4..f095e649534 100644 --- a/libraries/tools/kotlin-gradle-plugin/src/common/kotlin/org/jetbrains/kotlin/gradle/kpm/external/ExternalVariantApi.kt +++ b/libraries/tools/kotlin-gradle-plugin/src/common/kotlin/org/jetbrains/kotlin/gradle/kpm/external/ExternalVariantApi.kt @@ -22,15 +22,15 @@ val KotlinPm20ProjectExtension.ideaKotlinProjectModelBuilder: IdeaKotlinProjectM get() = this.ideaKotlinProjectModelBuilder @ExternalVariantApi -fun KpmGradleModule.createExternalJvmVariant( +fun GradleKpmModule.createExternalJvmVariant( name: String, - config: KotlinJvmVariantConfig -): KpmJvmVariant { - val variant = KotlinJvmVariantFactory(this, config).create(name) + config: GradleKpmJvmVariantConfig +): GradleKpmJvmVariant { + val variant = GradleKpmJvmVariantFactory(this, config).create(name) fragments.add(variant) return variant } @ExternalVariantApi -val KpmGradleVariantInternal.compilationData +val GradleKpmVariantInternal.compilationData get() = this.compilationData diff --git a/libraries/tools/kotlin-gradle-plugin/src/common/kotlin/org/jetbrains/kotlin/gradle/kpm/idea/ExternalVariantPlatformDependencyResolutionDsl.kt b/libraries/tools/kotlin-gradle-plugin/src/common/kotlin/org/jetbrains/kotlin/gradle/kpm/idea/ExternalVariantPlatformDependencyResolutionDsl.kt index 250e12a56b0..dfc170ac645 100644 --- a/libraries/tools/kotlin-gradle-plugin/src/common/kotlin/org/jetbrains/kotlin/gradle/kpm/idea/ExternalVariantPlatformDependencyResolutionDsl.kt +++ b/libraries/tools/kotlin-gradle-plugin/src/common/kotlin/org/jetbrains/kotlin/gradle/kpm/idea/ExternalVariantPlatformDependencyResolutionDsl.kt @@ -11,7 +11,7 @@ import org.jetbrains.kotlin.gradle.kpm.external.ExternalVariantApi import org.jetbrains.kotlin.gradle.kpm.idea.IdeaKotlinPlatformDependencyResolver.ArtifactResolution import org.jetbrains.kotlin.gradle.kpm.idea.IdeaKotlinProjectModelBuilder.* import org.jetbrains.kotlin.gradle.plugin.mpp.pm20.* -import org.jetbrains.kotlin.gradle.plugin.mpp.pm20.FragmentAttributes +import org.jetbrains.kotlin.gradle.plugin.mpp.pm20.GradleKpmConfigurationAttributesSetup @DslMarker @ExternalVariantApi @@ -35,7 +35,7 @@ class IdeaKotlinPlatformDependencyResolutionDslHandle internal constructor( private val additionalDependencies = mutableListOf() @ExternalVariantPlatformDependencyResolutionDsl - var platformResolutionAttributes: FragmentAttributes? = null + var platformResolutionAttributes: GradleKpmConfigurationAttributesSetup? = null @ExternalVariantPlatformDependencyResolutionDsl class ArtifactViewDslHandle( @@ -43,11 +43,11 @@ class IdeaKotlinPlatformDependencyResolutionDslHandle internal constructor( var binaryType: String ) { @ExternalVariantPlatformDependencyResolutionDsl - var attributes: FragmentAttributes = FragmentAttributes { } + var attributes: GradleKpmConfigurationAttributesSetup = GradleKpmConfigurationAttributesSetup.None @ExternalVariantPlatformDependencyResolutionDsl - fun attributes(setAttributes: KotlinGradleFragmentConfigurationAttributesContext.() -> Unit) { - attributes += FragmentAttributes(setAttributes) + fun attributes(setAttributes: GradleKpmConfigurationAttributesSetupContext.() -> Unit) { + attributes += GradleKpmConfigurationAttributesSetup(setAttributes) } } @@ -64,9 +64,9 @@ class IdeaKotlinPlatformDependencyResolutionDslHandle internal constructor( @ExternalVariantPlatformDependencyResolutionDsl fun withPlatformResolutionAttributes( - setAttributes: KotlinGradleFragmentConfigurationAttributesContext.() -> Unit + setAttributes: GradleKpmConfigurationAttributesSetupContext.() -> Unit ) { - val additionalAttributes = FragmentAttributes(setAttributes) + val additionalAttributes = GradleKpmConfigurationAttributesSetup(setAttributes) this.platformResolutionAttributes = platformResolutionAttributes?.plus(additionalAttributes) ?: additionalAttributes } @@ -76,7 +76,7 @@ class IdeaKotlinPlatformDependencyResolutionDslHandle internal constructor( } @ExternalVariantPlatformDependencyResolutionDsl - fun additionalDependencies(dependencyProvider: (KpmGradleFragment) -> List) { + fun additionalDependencies(dependencyProvider: (GradleKpmFragment) -> List) { this.additionalDependencies += IdeaKotlinDependencyResolver { fragment -> dependencyProvider(fragment).toSet() } } @@ -130,7 +130,7 @@ class IdeaKotlinPlatformDependencyResolutionDslHandle internal constructor( return parentConstraint and this.constraint } - private fun buildPlatformResolutionAttributes(): FragmentAttributes? { + private fun buildPlatformResolutionAttributes(): GradleKpmConfigurationAttributesSetup? { val parentAttributes = parent?.buildPlatformResolutionAttributes() ?: return this.platformResolutionAttributes return parentAttributes + (this.platformResolutionAttributes ?: return parentAttributes) } diff --git a/libraries/tools/kotlin-gradle-plugin/src/common/kotlin/org/jetbrains/kotlin/gradle/kpm/idea/IdeaKotlinDependencyEffect.kt b/libraries/tools/kotlin-gradle-plugin/src/common/kotlin/org/jetbrains/kotlin/gradle/kpm/idea/IdeaKotlinDependencyEffect.kt index c81095eecfb..1001ef8c884 100644 --- a/libraries/tools/kotlin-gradle-plugin/src/common/kotlin/org/jetbrains/kotlin/gradle/kpm/idea/IdeaKotlinDependencyEffect.kt +++ b/libraries/tools/kotlin-gradle-plugin/src/common/kotlin/org/jetbrains/kotlin/gradle/kpm/idea/IdeaKotlinDependencyEffect.kt @@ -5,7 +5,7 @@ package org.jetbrains.kotlin.gradle.kpm.idea -import org.jetbrains.kotlin.gradle.plugin.mpp.pm20.KpmGradleFragment +import org.jetbrains.kotlin.gradle.plugin.mpp.pm20.GradleKpmFragment /** * An [IdeaKotlinDependencyEffect] is invoked last in the dependency resolution pipeline. @@ -13,7 +13,7 @@ import org.jetbrains.kotlin.gradle.plugin.mpp.pm20.KpmGradleFragment * that the dependency resolution result is final. */ fun interface IdeaKotlinDependencyEffect { - operator fun invoke(fragment: KpmGradleFragment, dependencies: Set) + operator fun invoke(fragment: GradleKpmFragment, dependencies: Set) } fun IdeaKotlinDependencyResolver.withEffect(effect: IdeaKotlinDependencyEffect) = IdeaKotlinDependencyResolver { fragment -> diff --git a/libraries/tools/kotlin-gradle-plugin/src/common/kotlin/org/jetbrains/kotlin/gradle/kpm/idea/IdeaKotlinDependencyLogger.kt b/libraries/tools/kotlin-gradle-plugin/src/common/kotlin/org/jetbrains/kotlin/gradle/kpm/idea/IdeaKotlinDependencyLogger.kt index 45e616e7eda..2bd42ea7414 100644 --- a/libraries/tools/kotlin-gradle-plugin/src/common/kotlin/org/jetbrains/kotlin/gradle/kpm/idea/IdeaKotlinDependencyLogger.kt +++ b/libraries/tools/kotlin-gradle-plugin/src/common/kotlin/org/jetbrains/kotlin/gradle/kpm/idea/IdeaKotlinDependencyLogger.kt @@ -5,12 +5,12 @@ package org.jetbrains.kotlin.gradle.kpm.idea -import org.jetbrains.kotlin.gradle.plugin.mpp.pm20.KpmGradleFragment +import org.jetbrains.kotlin.gradle.plugin.mpp.pm20.GradleKpmFragment import org.jetbrains.kotlin.gradle.plugin.mpp.pm20.path internal object IdeaKotlinDependencyLogger : IdeaKotlinDependencyEffect { override fun invoke( - fragment: KpmGradleFragment, dependencies: Set + fragment: GradleKpmFragment, dependencies: Set ) { val fragmentPathRegex = fragment.project.properties["idea.kotlin.log.dependencies"]?.toString() ?: return if (!fragment.path.matches(Regex(fragmentPathRegex))) return diff --git a/libraries/tools/kotlin-gradle-plugin/src/common/kotlin/org/jetbrains/kotlin/gradle/kpm/idea/IdeaKotlinDependencyResolver.kt b/libraries/tools/kotlin-gradle-plugin/src/common/kotlin/org/jetbrains/kotlin/gradle/kpm/idea/IdeaKotlinDependencyResolver.kt index beeedf56e94..13c42114b7b 100644 --- a/libraries/tools/kotlin-gradle-plugin/src/common/kotlin/org/jetbrains/kotlin/gradle/kpm/idea/IdeaKotlinDependencyResolver.kt +++ b/libraries/tools/kotlin-gradle-plugin/src/common/kotlin/org/jetbrains/kotlin/gradle/kpm/idea/IdeaKotlinDependencyResolver.kt @@ -5,13 +5,13 @@ package org.jetbrains.kotlin.gradle.kpm.idea -import org.jetbrains.kotlin.gradle.plugin.mpp.pm20.KpmGradleFragment +import org.jetbrains.kotlin.gradle.plugin.mpp.pm20.GradleKpmFragment fun interface IdeaKotlinDependencyResolver { - fun resolve(fragment: KpmGradleFragment): Set + fun resolve(fragment: GradleKpmFragment): Set object Empty : IdeaKotlinDependencyResolver { - override fun resolve(fragment: KpmGradleFragment): Set = emptySet() + override fun resolve(fragment: GradleKpmFragment): Set = emptySet() } } @@ -48,7 +48,7 @@ operator fun IdeaKotlinDependencyResolver.plus( private class CompositeIdeaKotlinDependencyResolver( val children: List ) : IdeaKotlinDependencyResolver { - override fun resolve(fragment: KpmGradleFragment): Set { + override fun resolve(fragment: GradleKpmFragment): Set { return children.flatMap { child -> child.resolve(fragment) }.toSet() } } diff --git a/libraries/tools/kotlin-gradle-plugin/src/common/kotlin/org/jetbrains/kotlin/gradle/kpm/idea/IdeaKotlinDependencyTransformer.kt b/libraries/tools/kotlin-gradle-plugin/src/common/kotlin/org/jetbrains/kotlin/gradle/kpm/idea/IdeaKotlinDependencyTransformer.kt index e286bf1e136..ab5449d1b71 100644 --- a/libraries/tools/kotlin-gradle-plugin/src/common/kotlin/org/jetbrains/kotlin/gradle/kpm/idea/IdeaKotlinDependencyTransformer.kt +++ b/libraries/tools/kotlin-gradle-plugin/src/common/kotlin/org/jetbrains/kotlin/gradle/kpm/idea/IdeaKotlinDependencyTransformer.kt @@ -5,7 +5,7 @@ package org.jetbrains.kotlin.gradle.kpm.idea -import org.jetbrains.kotlin.gradle.plugin.mpp.pm20.KpmGradleFragment +import org.jetbrains.kotlin.gradle.plugin.mpp.pm20.GradleKpmFragment /** * An [IdeaKotlinDependencyTransformer] will be invoked after all [IdeaKotlinDependencyResolver] finished. @@ -17,7 +17,7 @@ import org.jetbrains.kotlin.gradle.plugin.mpp.pm20.KpmGradleFragment */ fun interface IdeaKotlinDependencyTransformer { fun transform( - fragment: KpmGradleFragment, dependencies: Set + fragment: GradleKpmFragment, dependencies: Set ): Set } @@ -54,7 +54,7 @@ private class CompositeIdeaKotlinDependencyTransformer( val transformers: List ) : IdeaKotlinDependencyTransformer { override fun transform( - fragment: KpmGradleFragment, dependencies: Set + fragment: GradleKpmFragment, dependencies: Set ): Set { return transformers.fold(dependencies) { currentDependencies, transformer -> transformer.transform(fragment, currentDependencies) } } diff --git a/libraries/tools/kotlin-gradle-plugin/src/common/kotlin/org/jetbrains/kotlin/gradle/kpm/idea/IdeaKotlinFragmentBuilder.kt b/libraries/tools/kotlin-gradle-plugin/src/common/kotlin/org/jetbrains/kotlin/gradle/kpm/idea/IdeaKotlinFragmentBuilder.kt index 35cbaa0e9af..df2ef322832 100644 --- a/libraries/tools/kotlin-gradle-plugin/src/common/kotlin/org/jetbrains/kotlin/gradle/kpm/idea/IdeaKotlinFragmentBuilder.kt +++ b/libraries/tools/kotlin-gradle-plugin/src/common/kotlin/org/jetbrains/kotlin/gradle/kpm/idea/IdeaKotlinFragmentBuilder.kt @@ -8,12 +8,12 @@ package org.jetbrains.kotlin.gradle.kpm.idea import org.jetbrains.kotlin.gradle.plugin.mpp.pm20.* import org.jetbrains.kotlin.tooling.core.emptyExtras -internal fun IdeaKotlinProjectModelBuildingContext.IdeaKotlinFragment(fragment: KpmGradleFragment): IdeaKotlinFragment { - return if (fragment is KpmGradleVariant) buildIdeaKotlinVariant(fragment) +internal fun IdeaKotlinProjectModelBuildingContext.IdeaKotlinFragment(fragment: GradleKpmFragment): IdeaKotlinFragment { + return if (fragment is GradleKpmVariant) buildIdeaKotlinVariant(fragment) else buildIdeaKotlinFragment(fragment) } -private fun IdeaKotlinProjectModelBuildingContext.buildIdeaKotlinFragment(fragment: KpmGradleFragment): IdeaKotlinFragment { +private fun IdeaKotlinProjectModelBuildingContext.buildIdeaKotlinFragment(fragment: GradleKpmFragment): IdeaKotlinFragment { return IdeaKotlinFragmentImpl( coordinates = IdeaKotlinFragmentCoordinates(fragment), platforms = fragment.containingVariants.map { variant -> IdeaKotlinPlatform(variant) }.toSet(), @@ -25,7 +25,7 @@ private fun IdeaKotlinProjectModelBuildingContext.buildIdeaKotlinFragment(fragme ) } -private fun IdeaKotlinProjectModelBuildingContext.buildIdeaKotlinVariant(variant: KpmGradleVariant): IdeaKotlinVariant { +private fun IdeaKotlinProjectModelBuildingContext.buildIdeaKotlinVariant(variant: GradleKpmVariant): IdeaKotlinVariant { return IdeaKotlinVariantImpl( fragment = buildIdeaKotlinFragment(variant), platform = IdeaKotlinPlatform(variant), diff --git a/libraries/tools/kotlin-gradle-plugin/src/common/kotlin/org/jetbrains/kotlin/gradle/kpm/idea/IdeaKotlinFragmentCoordinatesBuilder.kt b/libraries/tools/kotlin-gradle-plugin/src/common/kotlin/org/jetbrains/kotlin/gradle/kpm/idea/IdeaKotlinFragmentCoordinatesBuilder.kt index 1e6a7052006..5e6cd18e437 100644 --- a/libraries/tools/kotlin-gradle-plugin/src/common/kotlin/org/jetbrains/kotlin/gradle/kpm/idea/IdeaKotlinFragmentCoordinatesBuilder.kt +++ b/libraries/tools/kotlin-gradle-plugin/src/common/kotlin/org/jetbrains/kotlin/gradle/kpm/idea/IdeaKotlinFragmentCoordinatesBuilder.kt @@ -5,9 +5,9 @@ package org.jetbrains.kotlin.gradle.kpm.idea -import org.jetbrains.kotlin.gradle.plugin.mpp.pm20.KpmGradleFragment +import org.jetbrains.kotlin.gradle.plugin.mpp.pm20.GradleKpmFragment -internal fun IdeaKotlinFragmentCoordinates(fragment: KpmGradleFragment): IdeaKotlinFragmentCoordinates { +internal fun IdeaKotlinFragmentCoordinates(fragment: GradleKpmFragment): IdeaKotlinFragmentCoordinates { return IdeaKotlinFragmentCoordinatesImpl( module = IdeaKotlinModuleCoordinates(fragment.containingModule), fragmentName = fragment.name diff --git a/libraries/tools/kotlin-gradle-plugin/src/common/kotlin/org/jetbrains/kotlin/gradle/kpm/idea/IdeaKotlinGranularFragmentDependencyResolver.kt b/libraries/tools/kotlin-gradle-plugin/src/common/kotlin/org/jetbrains/kotlin/gradle/kpm/idea/IdeaKotlinGranularFragmentDependencyResolver.kt index 47b93eb8091..84c53d3cd5f 100644 --- a/libraries/tools/kotlin-gradle-plugin/src/common/kotlin/org/jetbrains/kotlin/gradle/kpm/idea/IdeaKotlinGranularFragmentDependencyResolver.kt +++ b/libraries/tools/kotlin-gradle-plugin/src/common/kotlin/org/jetbrains/kotlin/gradle/kpm/idea/IdeaKotlinGranularFragmentDependencyResolver.kt @@ -7,25 +7,25 @@ package org.jetbrains.kotlin.gradle.kpm.idea import org.gradle.api.artifacts.component.ProjectComponentIdentifier import org.jetbrains.kotlin.gradle.plugin.mpp.MetadataDependencyResolution.ChooseVisibleSourceSets -import org.jetbrains.kotlin.gradle.plugin.mpp.pm20.FragmentGranularMetadataResolverFactory -import org.jetbrains.kotlin.gradle.plugin.mpp.pm20.KpmGradleFragment -import org.jetbrains.kotlin.gradle.plugin.mpp.pm20.KpmGradleModule.Companion.moduleName -import org.jetbrains.kotlin.gradle.plugin.mpp.pm20.currentBuildId -import org.jetbrains.kotlin.gradle.plugin.mpp.pm20.toModuleDependency +import org.jetbrains.kotlin.gradle.plugin.mpp.pm20.GradleKpmFragmentGranularMetadataResolverFactory +import org.jetbrains.kotlin.gradle.plugin.mpp.pm20.GradleKpmFragment +import org.jetbrains.kotlin.gradle.plugin.mpp.pm20.GradleKpmModule.Companion.moduleName +import org.jetbrains.kotlin.gradle.plugin.mpp.pm20.util.currentBuildId +import org.jetbrains.kotlin.gradle.plugin.mpp.pm20.toKpmModuleDependency internal class IdeaKotlinGranularFragmentDependencyResolver( - private val fragmentGranularMetadataResolverFactory: FragmentGranularMetadataResolverFactory + private val fragmentGranularMetadataResolverFactory: GradleKpmFragmentGranularMetadataResolverFactory ) : IdeaKotlinDependencyResolver { - override fun resolve(fragment: KpmGradleFragment): Set { + override fun resolve(fragment: GradleKpmFragment): Set { return fragmentGranularMetadataResolverFactory.getOrCreate(fragment).resolutions .filterIsInstance() .flatMap { resolution -> resolve(fragment, resolution) } .toSet() } - private fun resolve(fragment: KpmGradleFragment, resolution: ChooseVisibleSourceSets): Iterable { + private fun resolve(fragment: GradleKpmFragment, resolution: ChooseVisibleSourceSets): Iterable { val gradleProjectIdentifier = resolution.dependency.id as? ProjectComponentIdentifier ?: return emptyList() - val kotlinModuleIdentifier = resolution.dependency.toModuleDependency().moduleIdentifier + val kotlinModuleIdentifier = resolution.dependency.toKpmModuleDependency().moduleIdentifier return resolution.allVisibleSourceSetNames.map { visibleFragmentName -> IdeaKotlinFragmentDependencyImpl( type = if ( diff --git a/libraries/tools/kotlin-gradle-plugin/src/common/kotlin/org/jetbrains/kotlin/gradle/kpm/idea/IdeaKotlinMetadataBinaryDependencyResolver.kt b/libraries/tools/kotlin-gradle-plugin/src/common/kotlin/org/jetbrains/kotlin/gradle/kpm/idea/IdeaKotlinMetadataBinaryDependencyResolver.kt index 1ff68d6a262..2e079caf97f 100644 --- a/libraries/tools/kotlin-gradle-plugin/src/common/kotlin/org/jetbrains/kotlin/gradle/kpm/idea/IdeaKotlinMetadataBinaryDependencyResolver.kt +++ b/libraries/tools/kotlin-gradle-plugin/src/common/kotlin/org/jetbrains/kotlin/gradle/kpm/idea/IdeaKotlinMetadataBinaryDependencyResolver.kt @@ -9,25 +9,25 @@ import org.gradle.api.artifacts.component.ModuleComponentIdentifier import org.jetbrains.kotlin.gradle.plugin.mpp.MetadataDependencyResolution.ChooseVisibleSourceSets import org.jetbrains.kotlin.gradle.plugin.mpp.MetadataDependencyResolution.ChooseVisibleSourceSets.MetadataProvider.JarMetadataProvider import org.jetbrains.kotlin.gradle.plugin.mpp.MetadataDependencyResolution.ChooseVisibleSourceSets.MetadataProvider.ProjectMetadataProvider -import org.jetbrains.kotlin.gradle.plugin.mpp.pm20.FragmentGranularMetadataResolverFactory -import org.jetbrains.kotlin.gradle.plugin.mpp.pm20.KpmGradleFragment -import org.jetbrains.kotlin.gradle.plugin.mpp.pm20.KpmGradleModule.Companion.moduleName -import org.jetbrains.kotlin.gradle.plugin.mpp.pm20.toModuleDependency +import org.jetbrains.kotlin.gradle.plugin.mpp.pm20.GradleKpmFragmentGranularMetadataResolverFactory +import org.jetbrains.kotlin.gradle.plugin.mpp.pm20.GradleKpmFragment +import org.jetbrains.kotlin.gradle.plugin.mpp.pm20.GradleKpmModule.Companion.moduleName +import org.jetbrains.kotlin.gradle.plugin.mpp.pm20.toKpmModuleDependency import org.jetbrains.kotlin.gradle.utils.withTemporaryDirectory internal class IdeaKotlinMetadataBinaryDependencyResolver( - private val fragmentGranularMetadataResolverFactory: FragmentGranularMetadataResolverFactory + private val fragmentGranularMetadataResolverFactory: GradleKpmFragmentGranularMetadataResolverFactory ) : IdeaKotlinDependencyResolver { - override fun resolve(fragment: KpmGradleFragment): Set { + override fun resolve(fragment: GradleKpmFragment): Set { return fragmentGranularMetadataResolverFactory.getOrCreate(fragment).resolutions .filterIsInstance() .flatMap { resolution -> resolve(fragment, resolution) } .toSet() } - private fun resolve(fragment: KpmGradleFragment, resolution: ChooseVisibleSourceSets): Iterable { + private fun resolve(fragment: GradleKpmFragment, resolution: ChooseVisibleSourceSets): Iterable { val gradleModuleIdentifier = resolution.dependency.id as? ModuleComponentIdentifier ?: return emptySet() - val kotlinModuleIdentifier = resolution.dependency.toModuleDependency().moduleIdentifier + val kotlinModuleIdentifier = resolution.dependency.toKpmModuleDependency().moduleIdentifier /* Project to project metadata dependencies shall be resolved as source dependencies, somewhere else */ val metadataProvider = when (resolution.metadataProvider) { diff --git a/libraries/tools/kotlin-gradle-plugin/src/common/kotlin/org/jetbrains/kotlin/gradle/kpm/idea/IdeaKotlinMissingFileDependencyLogger.kt b/libraries/tools/kotlin-gradle-plugin/src/common/kotlin/org/jetbrains/kotlin/gradle/kpm/idea/IdeaKotlinMissingFileDependencyLogger.kt index 93abdb0bb2e..da8205db390 100644 --- a/libraries/tools/kotlin-gradle-plugin/src/common/kotlin/org/jetbrains/kotlin/gradle/kpm/idea/IdeaKotlinMissingFileDependencyLogger.kt +++ b/libraries/tools/kotlin-gradle-plugin/src/common/kotlin/org/jetbrains/kotlin/gradle/kpm/idea/IdeaKotlinMissingFileDependencyLogger.kt @@ -5,18 +5,18 @@ package org.jetbrains.kotlin.gradle.kpm.idea -import org.jetbrains.kotlin.gradle.plugin.mpp.pm20.KpmGradleFragment +import org.jetbrains.kotlin.gradle.plugin.mpp.pm20.GradleKpmFragment import org.jetbrains.kotlin.gradle.plugin.mpp.pm20.path import org.jetbrains.kotlin.utils.addToStdlib.ifNotEmpty internal object IdeaKotlinMissingFileDependencyLogger : IdeaKotlinDependencyEffect { - override fun invoke(fragment: KpmGradleFragment, dependencies: Set) { + override fun invoke(fragment: GradleKpmFragment, dependencies: Set) { dependencies.filterIsInstance() .filter { !it.binaryFile.exists() } .ifNotEmpty { fragment.project.logger.warn(buildWarningMessage(fragment, this)) } } - private fun buildWarningMessage(fragment: KpmGradleFragment, dependencies: List) = buildString { + private fun buildWarningMessage(fragment: GradleKpmFragment, dependencies: List) = buildString { append("[WARNING] ${fragment.path}: Missing dependency files") dependencies.forEach { dependency -> appendLine(dependency.binaryFile) diff --git a/libraries/tools/kotlin-gradle-plugin/src/common/kotlin/org/jetbrains/kotlin/gradle/kpm/idea/IdeaKotlinModuleBuilder.kt b/libraries/tools/kotlin-gradle-plugin/src/common/kotlin/org/jetbrains/kotlin/gradle/kpm/idea/IdeaKotlinModuleBuilder.kt index b7b0830534b..f8fc97726f9 100644 --- a/libraries/tools/kotlin-gradle-plugin/src/common/kotlin/org/jetbrains/kotlin/gradle/kpm/idea/IdeaKotlinModuleBuilder.kt +++ b/libraries/tools/kotlin-gradle-plugin/src/common/kotlin/org/jetbrains/kotlin/gradle/kpm/idea/IdeaKotlinModuleBuilder.kt @@ -5,9 +5,9 @@ package org.jetbrains.kotlin.gradle.kpm.idea -import org.jetbrains.kotlin.gradle.plugin.mpp.pm20.KpmGradleModule +import org.jetbrains.kotlin.gradle.plugin.mpp.pm20.GradleKpmModule -internal fun IdeaKotlinProjectModelBuildingContext.IdeaKotlinModule(module: KpmGradleModule): IdeaKotlinModule { +internal fun IdeaKotlinProjectModelBuildingContext.IdeaKotlinModule(module: GradleKpmModule): IdeaKotlinModule { return IdeaKotlinModuleImpl( coordinates = IdeaKotlinModuleCoordinates(module), fragments = module.fragments.toList().map { fragment -> IdeaKotlinFragment(fragment) } diff --git a/libraries/tools/kotlin-gradle-plugin/src/common/kotlin/org/jetbrains/kotlin/gradle/kpm/idea/IdeaKotlinModuleCoordinatesBuilder.kt b/libraries/tools/kotlin-gradle-plugin/src/common/kotlin/org/jetbrains/kotlin/gradle/kpm/idea/IdeaKotlinModuleCoordinatesBuilder.kt index d458a0326b8..032242ea0ef 100644 --- a/libraries/tools/kotlin-gradle-plugin/src/common/kotlin/org/jetbrains/kotlin/gradle/kpm/idea/IdeaKotlinModuleCoordinatesBuilder.kt +++ b/libraries/tools/kotlin-gradle-plugin/src/common/kotlin/org/jetbrains/kotlin/gradle/kpm/idea/IdeaKotlinModuleCoordinatesBuilder.kt @@ -5,10 +5,10 @@ package org.jetbrains.kotlin.gradle.kpm.idea -import org.jetbrains.kotlin.gradle.plugin.mpp.pm20.KpmGradleModule -import org.jetbrains.kotlin.gradle.plugin.mpp.pm20.currentBuildId +import org.jetbrains.kotlin.gradle.plugin.mpp.pm20.GradleKpmModule +import org.jetbrains.kotlin.gradle.plugin.mpp.pm20.util.currentBuildId -internal fun IdeaKotlinModuleCoordinates(module: KpmGradleModule): IdeaKotlinModuleCoordinates { +internal fun IdeaKotlinModuleCoordinates(module: GradleKpmModule): IdeaKotlinModuleCoordinates { return IdeaKotlinModuleCoordinatesImpl( buildId = module.project.currentBuildId().name, projectPath = module.project.path, diff --git a/libraries/tools/kotlin-gradle-plugin/src/common/kotlin/org/jetbrains/kotlin/gradle/kpm/idea/IdeaKotlinNativePlatformDependencyResolver.kt b/libraries/tools/kotlin-gradle-plugin/src/common/kotlin/org/jetbrains/kotlin/gradle/kpm/idea/IdeaKotlinNativePlatformDependencyResolver.kt index 9202906deb6..50acff545d7 100644 --- a/libraries/tools/kotlin-gradle-plugin/src/common/kotlin/org/jetbrains/kotlin/gradle/kpm/idea/IdeaKotlinNativePlatformDependencyResolver.kt +++ b/libraries/tools/kotlin-gradle-plugin/src/common/kotlin/org/jetbrains/kotlin/gradle/kpm/idea/IdeaKotlinNativePlatformDependencyResolver.kt @@ -10,8 +10,8 @@ import org.jetbrains.kotlin.commonizer.KonanDistribution import org.jetbrains.kotlin.commonizer.platformLibsDir import org.jetbrains.kotlin.compilerRunner.konanHome import org.jetbrains.kotlin.gradle.plugin.getKotlinPluginVersion -import org.jetbrains.kotlin.gradle.plugin.mpp.pm20.KpmGradleFragment -import org.jetbrains.kotlin.gradle.plugin.mpp.pm20.KpmNativeVariantInternal +import org.jetbrains.kotlin.gradle.plugin.mpp.pm20.GradleKpmFragment +import org.jetbrains.kotlin.gradle.plugin.mpp.pm20.GradleKpmNativeVariantInternal import org.jetbrains.kotlin.gradle.plugin.mpp.pm20.containingVariants import org.jetbrains.kotlin.library.ToolingSingleFileKlibResolveStrategy import org.jetbrains.kotlin.library.resolveSingleFileKlib @@ -20,9 +20,9 @@ import org.jetbrains.kotlin.library.uniqueName import java.io.File internal class IdeaKotlinNativePlatformDependencyResolver : IdeaKotlinDependencyResolver { - override fun resolve(fragment: KpmGradleFragment): Set { + override fun resolve(fragment: GradleKpmFragment): Set { val konanTargets = fragment.containingVariants - .map { it as? KpmNativeVariantInternal ?: return emptySet() } + .map { it as? GradleKpmNativeVariantInternal ?: return emptySet() } .map { it.konanTarget } .toSet() diff --git a/libraries/tools/kotlin-gradle-plugin/src/common/kotlin/org/jetbrains/kotlin/gradle/kpm/idea/IdeaKotlinNativeStdlibDependencyResolver.kt b/libraries/tools/kotlin-gradle-plugin/src/common/kotlin/org/jetbrains/kotlin/gradle/kpm/idea/IdeaKotlinNativeStdlibDependencyResolver.kt index 1d8ba868e2a..25a597a5cac 100644 --- a/libraries/tools/kotlin-gradle-plugin/src/common/kotlin/org/jetbrains/kotlin/gradle/kpm/idea/IdeaKotlinNativeStdlibDependencyResolver.kt +++ b/libraries/tools/kotlin-gradle-plugin/src/common/kotlin/org/jetbrains/kotlin/gradle/kpm/idea/IdeaKotlinNativeStdlibDependencyResolver.kt @@ -9,10 +9,10 @@ import org.jetbrains.kotlin.commonizer.KonanDistribution import org.jetbrains.kotlin.commonizer.stdlib import org.jetbrains.kotlin.compilerRunner.konanHome import org.jetbrains.kotlin.gradle.plugin.getKotlinPluginVersion -import org.jetbrains.kotlin.gradle.plugin.mpp.pm20.KpmGradleFragment +import org.jetbrains.kotlin.gradle.plugin.mpp.pm20.GradleKpmFragment internal object IdeaKotlinNativeStdlibDependencyResolver : IdeaKotlinDependencyResolver { - override fun resolve(fragment: KpmGradleFragment): Set { + override fun resolve(fragment: GradleKpmFragment): Set { return setOf( IdeaKotlinResolvedBinaryDependencyImpl( binaryType = IdeaKotlinDependency.CLASSPATH_BINARY_TYPE, diff --git a/libraries/tools/kotlin-gradle-plugin/src/common/kotlin/org/jetbrains/kotlin/gradle/kpm/idea/IdeaKotlinOriginalMetadataDependencyResolver.kt b/libraries/tools/kotlin-gradle-plugin/src/common/kotlin/org/jetbrains/kotlin/gradle/kpm/idea/IdeaKotlinOriginalMetadataDependencyResolver.kt index 274e2cf18c2..17b354e3393 100644 --- a/libraries/tools/kotlin-gradle-plugin/src/common/kotlin/org/jetbrains/kotlin/gradle/kpm/idea/IdeaKotlinOriginalMetadataDependencyResolver.kt +++ b/libraries/tools/kotlin-gradle-plugin/src/common/kotlin/org/jetbrains/kotlin/gradle/kpm/idea/IdeaKotlinOriginalMetadataDependencyResolver.kt @@ -6,16 +6,15 @@ package org.jetbrains.kotlin.gradle.kpm.idea import org.gradle.api.artifacts.component.ModuleComponentIdentifier -import org.jetbrains.kotlin.gradle.plugin.KotlinPlatformType import org.jetbrains.kotlin.gradle.plugin.mpp.MetadataDependencyResolution.KeepOriginalDependency -import org.jetbrains.kotlin.gradle.plugin.mpp.pm20.FragmentGranularMetadataResolverFactory -import org.jetbrains.kotlin.gradle.plugin.mpp.pm20.KpmGradleFragment +import org.jetbrains.kotlin.gradle.plugin.mpp.pm20.GradleKpmFragmentGranularMetadataResolverFactory +import org.jetbrains.kotlin.gradle.plugin.mpp.pm20.GradleKpmFragment import org.jetbrains.kotlin.gradle.plugin.mpp.pm20.resolvableMetadataConfigurationName internal class IdeaKotlinOriginalMetadataDependencyResolver( - private val fragmentGranularMetadataResolverFactory: FragmentGranularMetadataResolverFactory + private val fragmentGranularMetadataResolverFactory: GradleKpmFragmentGranularMetadataResolverFactory ) : IdeaKotlinDependencyResolver { - override fun resolve(fragment: KpmGradleFragment): Set { + override fun resolve(fragment: GradleKpmFragment): Set { val dependencyIdentifiers = fragmentGranularMetadataResolverFactory.getOrCreate(fragment).resolutions .filterIsInstance() .mapNotNull { resolution -> resolution.dependency.id as? ModuleComponentIdentifier } diff --git a/libraries/tools/kotlin-gradle-plugin/src/common/kotlin/org/jetbrains/kotlin/gradle/kpm/idea/IdeaKotlinPlatformBuilder.kt b/libraries/tools/kotlin-gradle-plugin/src/common/kotlin/org/jetbrains/kotlin/gradle/kpm/idea/IdeaKotlinPlatformBuilder.kt index 1589bf390cc..e092c3d43cc 100644 --- a/libraries/tools/kotlin-gradle-plugin/src/common/kotlin/org/jetbrains/kotlin/gradle/kpm/idea/IdeaKotlinPlatformBuilder.kt +++ b/libraries/tools/kotlin-gradle-plugin/src/common/kotlin/org/jetbrains/kotlin/gradle/kpm/idea/IdeaKotlinPlatformBuilder.kt @@ -14,11 +14,11 @@ import org.jetbrains.kotlin.konan.target.HostManager @Suppress("unused") /* Receiver acts as scope, or key to that function */ -internal fun IdeaKotlinProjectModelBuildingContext.IdeaKotlinPlatform(variant: KpmGradleVariant): IdeaKotlinPlatform { +internal fun IdeaKotlinProjectModelBuildingContext.IdeaKotlinPlatform(variant: GradleKpmVariant): IdeaKotlinPlatform { when (variant) { - is KpmJvmVariant -> return IdeaKotlinPlatform.jvm(variant.compilationData.kotlinOptions.jvmTarget ?: JvmTarget.DEFAULT.name) - is KpmNativeVariantInternal -> return IdeaKotlinPlatform.native(variant.konanTarget.name) - is LegacyMappedVariant -> when (val compilation = variant.compilation) { + is GradleKpmJvmVariant -> return IdeaKotlinPlatform.jvm(variant.compilationData.kotlinOptions.jvmTarget ?: JvmTarget.DEFAULT.name) + is GradleKpmNativeVariantInternal -> return IdeaKotlinPlatform.native(variant.konanTarget.name) + is GradleKpmLegacyMappedVariant -> when (val compilation = variant.compilation) { is KotlinJvmCompilation -> return IdeaKotlinPlatform.jvm(compilation.kotlinOptions.jvmTarget ?: JvmTarget.DEFAULT.name) is KotlinJvmAndroidCompilation -> return IdeaKotlinPlatform.jvm(compilation.kotlinOptions.jvmTarget ?: JvmTarget.DEFAULT.name) is KotlinNativeCompilation -> return IdeaKotlinPlatform.native(compilation.konanTarget.name) diff --git a/libraries/tools/kotlin-gradle-plugin/src/common/kotlin/org/jetbrains/kotlin/gradle/kpm/idea/IdeaKotlinPlatformDependencyResolver.kt b/libraries/tools/kotlin-gradle-plugin/src/common/kotlin/org/jetbrains/kotlin/gradle/kpm/idea/IdeaKotlinPlatformDependencyResolver.kt index 779f2ea4b47..737bf224d09 100644 --- a/libraries/tools/kotlin-gradle-plugin/src/common/kotlin/org/jetbrains/kotlin/gradle/kpm/idea/IdeaKotlinPlatformDependencyResolver.kt +++ b/libraries/tools/kotlin-gradle-plugin/src/common/kotlin/org/jetbrains/kotlin/gradle/kpm/idea/IdeaKotlinPlatformDependencyResolver.kt @@ -14,13 +14,13 @@ import org.gradle.api.artifacts.component.ProjectComponentIdentifier import org.gradle.internal.resolve.ModuleVersionResolveException import org.jetbrains.kotlin.gradle.kpm.idea.IdeaKotlinPlatformDependencyResolver.* import org.jetbrains.kotlin.gradle.plugin.mpp.pm20.* -import org.jetbrains.kotlin.gradle.plugin.mpp.pm20.FragmentAttributes +import org.jetbrains.kotlin.gradle.plugin.mpp.pm20.GradleKpmConfigurationAttributesSetup /** * Resolves 'platform' binary dependencies for a given variant or fragment. * 'platform' binaries refer to actually linkable/executable artifacts (like .class files bundled as jar, or linkable native klibs) * This resolver is capable of resolving those artifacts even for non-variant "platform-like" fragments. - * It will then use the [KpmGradleFragment.transitiveApiConfiguration] and [KpmGradleFragment.transitiveImplementationConfiguratione]'s + * It will then use the [GradleKpmFragment.transitiveApiConfiguration] and [GradleKpmFragment.transitiveImplementationConfiguratione]'s * to resolve those binaries. See [IdeaKotlinPlatformDependencyResolver.ArtifactResolution.PlatformFragment] */ class IdeaKotlinPlatformDependencyResolver( @@ -30,28 +30,28 @@ class IdeaKotlinPlatformDependencyResolver( sealed class ArtifactResolution { /** - * Resolve the artifacts from a [KpmGradleVariant] using its [KpmGradleVariant.compileDependenciesConfiguration], + * Resolve the artifacts from a [GradleKpmVariant] using its [GradleKpmVariant.compileDependenciesConfiguration], * which already knows how to resolve platform artifacts. * @param artifactViewAttributes: Additional attributes that will be used to create an [ArtifactView] for resolving the dependencies. */ data class Variant( - internal val artifactViewAttributes: FragmentAttributes = FragmentAttributes { } + internal val artifactViewAttributes: GradleKpmConfigurationAttributesSetup = GradleKpmConfigurationAttributesSetup.None ) : ArtifactResolution() /** - * Capable of resolving artifacts from a plain [KpmGradleFragment] which does not have to implement [KpmGradleVariant]. + * Capable of resolving artifacts from a plain [GradleKpmFragment] which does not have to implement [GradleKpmVariant]. * Such fragments are called 'platform-like', since they still resolve the linkable platform dependencies. * @param platformResolutionAttributes: Attributes describing how to resolve platform artifacts in general. * @param artifactViewAttributes: Additional attributes that will be used to create an [ArtifactView] for * resolving the dependencies */ data class PlatformFragment( - internal val platformResolutionAttributes: FragmentAttributes, - internal val artifactViewAttributes: FragmentAttributes = FragmentAttributes { }, + internal val platformResolutionAttributes: GradleKpmConfigurationAttributesSetup, + internal val artifactViewAttributes: GradleKpmConfigurationAttributesSetup = GradleKpmConfigurationAttributesSetup { }, ) : ArtifactResolution() } - override fun resolve(fragment: KpmGradleFragment): Set { + override fun resolve(fragment: GradleKpmFragment): Set { val artifacts = artifactResolution.createArtifactView(fragment)?.artifacts ?: return emptySet() val unresolvedDependencies = artifacts.failures @@ -87,15 +87,15 @@ private val ComponentIdentifier.ideaKotlinBinaryCoordinates: IdeaKotlinBinaryCoo else -> null } -private fun ArtifactResolution.createArtifactView(fragment: KpmGradleFragment): ArtifactView? { +private fun ArtifactResolution.createArtifactView(fragment: GradleKpmFragment): ArtifactView? { return when (this) { is ArtifactResolution.Variant -> createVariantArtifactView(fragment) is ArtifactResolution.PlatformFragment -> createPlatformFragmentArtifactView(fragment) } } -private fun ArtifactResolution.Variant.createVariantArtifactView(fragment: KpmGradleFragment): ArtifactView? { - if (fragment !is KpmGradleVariant) return null +private fun ArtifactResolution.Variant.createVariantArtifactView(fragment: GradleKpmFragment): ArtifactView? { + if (fragment !is GradleKpmVariant) return null return fragment.compileDependenciesConfiguration.incoming.artifactView { view -> view.isLenient = true view.componentFilter { id -> id !is ProjectComponentIdentifier } @@ -103,7 +103,7 @@ private fun ArtifactResolution.Variant.createVariantArtifactView(fragment: KpmGr } } -private fun ArtifactResolution.PlatformFragment.createPlatformFragmentArtifactView(fragment: KpmGradleFragment): ArtifactView { +private fun ArtifactResolution.PlatformFragment.createPlatformFragmentArtifactView(fragment: GradleKpmFragment): ArtifactView { val fragmentCompileDependencies = fragment.project.configurations.detachedConfiguration() fragmentCompileDependencies.dependencies.addAll( diff --git a/libraries/tools/kotlin-gradle-plugin/src/common/kotlin/org/jetbrains/kotlin/gradle/kpm/idea/IdeaKotlinProjectModelBuilder.kt b/libraries/tools/kotlin-gradle-plugin/src/common/kotlin/org/jetbrains/kotlin/gradle/kpm/idea/IdeaKotlinProjectModelBuilder.kt index abdad3d6872..3ee1a869b95 100644 --- a/libraries/tools/kotlin-gradle-plugin/src/common/kotlin/org/jetbrains/kotlin/gradle/kpm/idea/IdeaKotlinProjectModelBuilder.kt +++ b/libraries/tools/kotlin-gradle-plugin/src/common/kotlin/org/jetbrains/kotlin/gradle/kpm/idea/IdeaKotlinProjectModelBuilder.kt @@ -7,7 +7,7 @@ import org.jetbrains.kotlin.gradle.kpm.external.ExternalVariantApi import org.jetbrains.kotlin.gradle.kpm.idea.IdeaKotlinProjectModelBuilder.FragmentConstraint import org.jetbrains.kotlin.gradle.plugin.KotlinPlatformType.native import org.jetbrains.kotlin.gradle.plugin.getKotlinPluginVersion -import org.jetbrains.kotlin.gradle.plugin.mpp.pm20.KpmGradleFragment +import org.jetbrains.kotlin.gradle.plugin.mpp.pm20.GradleKpmFragment import org.jetbrains.kotlin.gradle.plugin.mpp.pm20.KotlinPm20ProjectExtension import org.jetbrains.kotlin.gradle.plugin.mpp.pm20.containingVariants import org.jetbrains.kotlin.project.model.KpmVariant @@ -94,7 +94,7 @@ interface IdeaKotlinProjectModelBuilder { * Used for scoping [IdeaKotlinDependencyResolver], [IdeaKotlinDependencyTransformer] and [IdeaKotlinDependencyEffect] */ fun interface FragmentConstraint { - operator fun invoke(fragment: KpmGradleFragment): Boolean + operator fun invoke(fragment: GradleKpmFragment): Boolean companion object { val unconstrained = FragmentConstraint { true } diff --git a/libraries/tools/kotlin-gradle-plugin/src/common/kotlin/org/jetbrains/kotlin/gradle/kpm/idea/IdeaKotlinProjectModelBuilderFactory.kt b/libraries/tools/kotlin-gradle-plugin/src/common/kotlin/org/jetbrains/kotlin/gradle/kpm/idea/IdeaKotlinProjectModelBuilderFactory.kt index 1b822a74a83..7ec52998985 100644 --- a/libraries/tools/kotlin-gradle-plugin/src/common/kotlin/org/jetbrains/kotlin/gradle/kpm/idea/IdeaKotlinProjectModelBuilderFactory.kt +++ b/libraries/tools/kotlin-gradle-plugin/src/common/kotlin/org/jetbrains/kotlin/gradle/kpm/idea/IdeaKotlinProjectModelBuilderFactory.kt @@ -8,7 +8,7 @@ package org.jetbrains.kotlin.gradle.kpm.idea import org.jetbrains.kotlin.gradle.kpm.external.ExternalVariantApi -import org.jetbrains.kotlin.gradle.plugin.mpp.pm20.FragmentGranularMetadataResolverFactory +import org.jetbrains.kotlin.gradle.plugin.mpp.pm20.GradleKpmFragmentGranularMetadataResolverFactory import org.jetbrains.kotlin.gradle.plugin.mpp.pm20.KotlinPm20ProjectExtension import org.jetbrains.kotlin.tooling.core.UnsafeApi @@ -16,7 +16,7 @@ import org.jetbrains.kotlin.tooling.core.UnsafeApi internal fun IdeaKotlinProjectModelBuilder.Companion.default( extension: KotlinPm20ProjectExtension ) = IdeaKotlinProjectModelBuilderImpl(extension).apply { - val fragmentMetadataResolverFactory = FragmentGranularMetadataResolverFactory() + val fragmentMetadataResolverFactory = GradleKpmFragmentGranularMetadataResolverFactory() registerDependencyResolver( resolver = IdeaKotlinRefinesDependencyResolver, diff --git a/libraries/tools/kotlin-gradle-plugin/src/common/kotlin/org/jetbrains/kotlin/gradle/kpm/idea/IdeaKotlinRefinesDependencyResolver.kt b/libraries/tools/kotlin-gradle-plugin/src/common/kotlin/org/jetbrains/kotlin/gradle/kpm/idea/IdeaKotlinRefinesDependencyResolver.kt index ac79f8a62fd..e1371815a7b 100644 --- a/libraries/tools/kotlin-gradle-plugin/src/common/kotlin/org/jetbrains/kotlin/gradle/kpm/idea/IdeaKotlinRefinesDependencyResolver.kt +++ b/libraries/tools/kotlin-gradle-plugin/src/common/kotlin/org/jetbrains/kotlin/gradle/kpm/idea/IdeaKotlinRefinesDependencyResolver.kt @@ -5,13 +5,13 @@ package org.jetbrains.kotlin.gradle.kpm.idea -import org.jetbrains.kotlin.gradle.plugin.mpp.pm20.KpmGradleFragment +import org.jetbrains.kotlin.gradle.plugin.mpp.pm20.GradleKpmFragment internal object IdeaKotlinRefinesDependencyResolver : IdeaKotlinDependencyResolver { - override fun resolve(fragment: KpmGradleFragment): Set = fragment.refinesClosure + override fun resolve(fragment: GradleKpmFragment): Set = fragment.refinesClosure .map { refinesDependencyFragment -> createRefinesDependency(refinesDependencyFragment) }.toSet() - private fun createRefinesDependency(fragment: KpmGradleFragment): IdeaKotlinDependency { + private fun createRefinesDependency(fragment: GradleKpmFragment): IdeaKotlinDependency { return IdeaKotlinFragmentDependencyImpl( type = IdeaKotlinFragmentDependency.Type.Refines, coordinates = IdeaKotlinFragmentCoordinates(fragment) diff --git a/libraries/tools/kotlin-gradle-plugin/src/common/kotlin/org/jetbrains/kotlin/gradle/kpm/idea/IdeaKotlinSinglePlatformStdlibCommonFilter.kt b/libraries/tools/kotlin-gradle-plugin/src/common/kotlin/org/jetbrains/kotlin/gradle/kpm/idea/IdeaKotlinSinglePlatformStdlibCommonFilter.kt index 162f98d661f..82fa2719e7a 100644 --- a/libraries/tools/kotlin-gradle-plugin/src/common/kotlin/org/jetbrains/kotlin/gradle/kpm/idea/IdeaKotlinSinglePlatformStdlibCommonFilter.kt +++ b/libraries/tools/kotlin-gradle-plugin/src/common/kotlin/org/jetbrains/kotlin/gradle/kpm/idea/IdeaKotlinSinglePlatformStdlibCommonFilter.kt @@ -5,7 +5,7 @@ package org.jetbrains.kotlin.gradle.kpm.idea -import org.jetbrains.kotlin.gradle.plugin.mpp.pm20.KpmGradleFragment +import org.jetbrains.kotlin.gradle.plugin.mpp.pm20.GradleKpmFragment import org.jetbrains.kotlin.gradle.plugin.mpp.pm20.containingVariants internal object IdeaKotlinSinglePlatformStdlibCommonFilter : IdeaKotlinDependencyTransformer { @@ -13,7 +13,7 @@ internal object IdeaKotlinSinglePlatformStdlibCommonFilter : IdeaKotlinDependenc private val stdlibCoordinatesModules = setOf("kotlin-stdlib-common", "kotlin-test-common", "kotlin-test-annotations-common") override fun transform( - fragment: KpmGradleFragment, + fragment: GradleKpmFragment, dependencies: Set ): Set { val platforms = fragment.containingVariants.map { it.platformType }.toSet() diff --git a/libraries/tools/kotlin-gradle-plugin/src/common/kotlin/org/jetbrains/kotlin/gradle/kpm/idea/IdeaKotlinSourcesAndDocumentationResolver.kt b/libraries/tools/kotlin-gradle-plugin/src/common/kotlin/org/jetbrains/kotlin/gradle/kpm/idea/IdeaKotlinSourcesAndDocumentationResolver.kt index 2c73457a618..3ee8d6f7334 100644 --- a/libraries/tools/kotlin-gradle-plugin/src/common/kotlin/org/jetbrains/kotlin/gradle/kpm/idea/IdeaKotlinSourcesAndDocumentationResolver.kt +++ b/libraries/tools/kotlin-gradle-plugin/src/common/kotlin/org/jetbrains/kotlin/gradle/kpm/idea/IdeaKotlinSourcesAndDocumentationResolver.kt @@ -14,13 +14,13 @@ import org.gradle.api.component.Artifact import org.gradle.jvm.JvmLibrary import org.gradle.language.base.artifact.SourcesArtifact import org.gradle.language.java.artifact.JavadocArtifact -import org.jetbrains.kotlin.gradle.plugin.mpp.pm20.KpmGradleFragment -import org.jetbrains.kotlin.gradle.plugin.mpp.pm20.KpmGradleVariant +import org.jetbrains.kotlin.gradle.plugin.mpp.pm20.GradleKpmFragment +import org.jetbrains.kotlin.gradle.plugin.mpp.pm20.GradleKpmVariant import org.jetbrains.kotlin.gradle.plugin.mpp.pm20.resolvableMetadataConfigurationName internal class IdeaKotlinSourcesAndDocumentationResolver : IdeaKotlinDependencyResolver { - override fun resolve(fragment: KpmGradleFragment): Set { - if (fragment is KpmGradleVariant) { + override fun resolve(fragment: GradleKpmFragment): Set { + if (fragment is GradleKpmVariant) { return resolve(fragment.project, fragment.compileDependenciesConfiguration) } diff --git a/libraries/tools/kotlin-gradle-plugin/src/common/kotlin/org/jetbrains/kotlin/gradle/kpm/idea/IdeaKotlinUnusedSourcesAndDocumentationFilter.kt b/libraries/tools/kotlin-gradle-plugin/src/common/kotlin/org/jetbrains/kotlin/gradle/kpm/idea/IdeaKotlinUnusedSourcesAndDocumentationFilter.kt index a5e33b02b81..33585e2b2c9 100644 --- a/libraries/tools/kotlin-gradle-plugin/src/common/kotlin/org/jetbrains/kotlin/gradle/kpm/idea/IdeaKotlinUnusedSourcesAndDocumentationFilter.kt +++ b/libraries/tools/kotlin-gradle-plugin/src/common/kotlin/org/jetbrains/kotlin/gradle/kpm/idea/IdeaKotlinUnusedSourcesAndDocumentationFilter.kt @@ -5,11 +5,11 @@ package org.jetbrains.kotlin.gradle.kpm.idea -import org.jetbrains.kotlin.gradle.plugin.mpp.pm20.KpmGradleFragment +import org.jetbrains.kotlin.gradle.plugin.mpp.pm20.GradleKpmFragment internal object IdeaKotlinUnusedSourcesAndDocumentationFilter : IdeaKotlinDependencyTransformer { override fun transform( - fragment: KpmGradleFragment, dependencies: Set + fragment: GradleKpmFragment, dependencies: Set ): Set { val sourcesAndDocumentationDependencies = dependencies .filterIsInstance() diff --git a/libraries/tools/kotlin-gradle-plugin/src/common/kotlin/org/jetbrains/kotlin/gradle/plugin/mpp/CompilationDetails.kt b/libraries/tools/kotlin-gradle-plugin/src/common/kotlin/org/jetbrains/kotlin/gradle/plugin/mpp/CompilationDetails.kt index 4d28e28c599..6aad4d2792d 100644 --- a/libraries/tools/kotlin-gradle-plugin/src/common/kotlin/org/jetbrains/kotlin/gradle/plugin/mpp/CompilationDetails.kt +++ b/libraries/tools/kotlin-gradle-plugin/src/common/kotlin/org/jetbrains/kotlin/gradle/plugin/mpp/CompilationDetails.kt @@ -43,7 +43,7 @@ import java.util.concurrent.Callable interface CompilationDetails { val target: KotlinTarget - val compileDependencyFilesHolder: DependencyFilesHolder + val compileDependencyFilesHolder: GradleKpmDependencyFilesHolder val kotlinDependenciesHolder: HasKotlinDependencies @@ -66,7 +66,7 @@ interface CompilationDetails { } interface CompilationDetailsWithRuntime : CompilationDetails { - val runtimeDependencyFilesHolder: DependencyFilesHolder + val runtimeDependencyFilesHolder: GradleKpmDependencyFilesHolder } internal val CompilationDetails<*>.associateCompilationsClosure: Iterable> @@ -98,7 +98,7 @@ open class DefaultCompilationDetails( ) ) - override val compileDependencyFilesHolder: DependencyFilesHolder = project.newDependencyFilesHolder( + override val compileDependencyFilesHolder: GradleKpmDependencyFilesHolder = project.newDependencyFilesHolder( lowerCamelCaseName( target.disambiguationClassifier, compilationPurpose.takeIf { it != KotlinCompilation.MAIN_COMPILATION_NAME }.orEmpty(), @@ -328,7 +328,7 @@ open class DefaultCompilationDetailsWithRuntime( compilationPurpose: String, createKotlinOptions: DefaultCompilationDetails<*>.() -> T ) : DefaultCompilationDetails(target, compilationPurpose, createKotlinOptions), CompilationDetailsWithRuntime { - override val runtimeDependencyFilesHolder: DependencyFilesHolder = project.newDependencyFilesHolder( + override val runtimeDependencyFilesHolder: GradleKpmDependencyFilesHolder = project.newDependencyFilesHolder( lowerCamelCaseName( target.disambiguationClassifier, compilationPurpose.takeIf { it != KotlinCompilation.MAIN_COMPILATION_NAME }.orEmpty(), @@ -346,7 +346,7 @@ open class NativeCompilationDetails( compilationPurpose, createKotlinOptions ) { - override val compileDependencyFilesHolder: DependencyFilesHolder = project.newDependencyFilesHolder( + override val compileDependencyFilesHolder: GradleKpmDependencyFilesHolder = project.newDependencyFilesHolder( lowerCamelCaseName( target.disambiguationClassifier, compilationPurpose.takeIf { it != KotlinCompilation.MAIN_COMPILATION_NAME }.orEmpty(), @@ -402,8 +402,8 @@ internal open class MetadataMappedCompilationDetails( override val target: KotlinMetadataTarget, final override val compilationData: AbstractKotlinFragmentMetadataCompilationData ) : CompilationDetails { - override val compileDependencyFilesHolder: DependencyFilesHolder = - DependencyFilesHolder.ofMetadataCompilationDependencies(compilationData) + override val compileDependencyFilesHolder: GradleKpmDependencyFilesHolder = + GradleKpmDependencyFilesHolder.ofMetadataCompilationDependencies(compilationData) override val kotlinDependenciesHolder: HasKotlinDependencies get() = compilationData.fragment @@ -432,7 +432,7 @@ internal open class MetadataMappedCompilationDetails( } internal open class VariantMappedCompilationDetails( - open val variant: KpmGradleVariantInternal, + open val variant: GradleKpmVariantInternal, override val target: KotlinTarget ) : CompilationDetails { @@ -458,8 +458,8 @@ internal open class VariantMappedCompilationDetails( override val associateCompilations: Set> get() = emptySet() - override val compileDependencyFilesHolder: DependencyFilesHolder - get() = DependencyFilesHolder.ofVariantCompileDependencies(variant) + override val compileDependencyFilesHolder: GradleKpmDependencyFilesHolder + get() = GradleKpmDependencyFilesHolder.ofVariantCompileDependencies(variant) override val kotlinDependenciesHolder: HasKotlinDependencies get() = variant @@ -469,12 +469,12 @@ internal open class VariantMappedCompilationDetails( } internal open class VariantMappedCompilationDetailsWithRuntime( - override val variant: KpmGradleVariantWithRuntimeInternal, + override val variant: GradleKpmVariantWithRuntimeInternal, target: KotlinTarget ) : VariantMappedCompilationDetails(variant, target), CompilationDetailsWithRuntime { - override val runtimeDependencyFilesHolder: DependencyFilesHolder - get() = DependencyFilesHolder.ofVariantRuntimeDependencies(variant) + override val runtimeDependencyFilesHolder: GradleKpmDependencyFilesHolder + get() = GradleKpmDependencyFilesHolder.ofVariantRuntimeDependencies(variant) } internal class WithJavaCompilationDetails( @@ -490,14 +490,14 @@ internal class WithJavaCompilationDetails( override val output: KotlinCompilationOutput by lazy { KotlinWithJavaCompilationOutput(compilation) } - override val compileDependencyFilesHolder: DependencyFilesHolder - get() = object : DependencyFilesHolder { + override val compileDependencyFilesHolder: GradleKpmDependencyFilesHolder + get() = object : GradleKpmDependencyFilesHolder { override val dependencyConfigurationName: String by javaSourceSet::compileClasspathConfigurationName override var dependencyFiles: FileCollection by javaSourceSet::compileClasspath } - override val runtimeDependencyFilesHolder: DependencyFilesHolder - get() = object : DependencyFilesHolder { + override val runtimeDependencyFilesHolder: GradleKpmDependencyFilesHolder + get() = object : GradleKpmDependencyFilesHolder { override val dependencyConfigurationName: String by javaSourceSet::runtimeClasspathConfigurationName override var dependencyFiles: FileCollection by javaSourceSet::runtimeClasspath } diff --git a/libraries/tools/kotlin-gradle-plugin/src/common/kotlin/org/jetbrains/kotlin/gradle/plugin/mpp/DefaultKotlinDependencyHandler.kt b/libraries/tools/kotlin-gradle-plugin/src/common/kotlin/org/jetbrains/kotlin/gradle/plugin/mpp/DefaultKotlinDependencyHandler.kt index 8d012b34b42..39b82beba6b 100644 --- a/libraries/tools/kotlin-gradle-plugin/src/common/kotlin/org/jetbrains/kotlin/gradle/plugin/mpp/DefaultKotlinDependencyHandler.kt +++ b/libraries/tools/kotlin-gradle-plugin/src/common/kotlin/org/jetbrains/kotlin/gradle/plugin/mpp/DefaultKotlinDependencyHandler.kt @@ -13,7 +13,7 @@ import org.gradle.api.artifacts.ProjectDependency import org.jetbrains.kotlin.gradle.plugin.HasKotlinDependencies import org.jetbrains.kotlin.gradle.plugin.KotlinDependencyHandler import org.jetbrains.kotlin.gradle.plugin.PropertiesProvider -import org.jetbrains.kotlin.gradle.plugin.mpp.pm20.KpmGradleModule +import org.jetbrains.kotlin.gradle.plugin.mpp.pm20.GradleKpmModule import org.jetbrains.kotlin.gradle.plugin.mpp.pm20.util.ComputedCapability import org.jetbrains.kotlin.gradle.targets.js.npm.NpmDependency import org.jetbrains.kotlin.gradle.targets.js.npm.directoryNpmDependency @@ -74,7 +74,7 @@ class DefaultKotlinDependencyHandler( dependencyNotation: Any ): Dependency? { val dependency = when (dependencyNotation) { - is KpmGradleModule -> project.dependencies.create(dependencyNotation.project).apply { + is GradleKpmModule -> project.dependencies.create(dependencyNotation.project).apply { (this as ModuleDependency).capabilities { if (dependencyNotation.moduleClassifier != null) { it.requireCapability(ComputedCapability.fromModule(dependencyNotation)) diff --git a/libraries/tools/kotlin-gradle-plugin/src/common/kotlin/org/jetbrains/kotlin/gradle/plugin/mpp/GradleProjectModuleBuilder.kt b/libraries/tools/kotlin-gradle-plugin/src/common/kotlin/org/jetbrains/kotlin/gradle/plugin/mpp/GradleProjectModuleBuilder.kt index bce223d28c3..16a8bbdcffe 100644 --- a/libraries/tools/kotlin-gradle-plugin/src/common/kotlin/org/jetbrains/kotlin/gradle/plugin/mpp/GradleProjectModuleBuilder.kt +++ b/libraries/tools/kotlin-gradle-plugin/src/common/kotlin/org/jetbrains/kotlin/gradle/plugin/mpp/GradleProjectModuleBuilder.kt @@ -19,6 +19,8 @@ import org.jetbrains.kotlin.gradle.dsl.kotlinExtension import org.jetbrains.kotlin.gradle.dsl.multiplatformExtensionOrNull import org.jetbrains.kotlin.gradle.plugin.* import org.jetbrains.kotlin.gradle.plugin.mpp.pm20.* +import org.jetbrains.kotlin.gradle.plugin.mpp.pm20.util.currentBuildId +import org.jetbrains.kotlin.gradle.plugin.mpp.pm20.util.representsProject import org.jetbrains.kotlin.gradle.plugin.sources.DefaultLanguageSettingsBuilder import org.jetbrains.kotlin.gradle.plugin.sources.KotlinDependencyScope import org.jetbrains.kotlin.gradle.plugin.sources.getVisibleSourceSetsFromAssociateCompilations @@ -32,7 +34,7 @@ class ProjectStructureMetadataModuleBuilder { component: ResolvedComponentResult, metadata: KotlinProjectStructureMetadata ): KpmModule { - val moduleData = KpmBasicModule(component.toSingleModuleIdentifier()).apply { + val moduleData = KpmBasicModule(component.toSingleKpmModuleIdentifier()).apply { metadata.sourceSetNamesByVariantName.keys.forEach { variantName -> fragments.add(KpmBasicVariant(this@apply, variantName)) } @@ -69,7 +71,7 @@ class ProjectStructureMetadataModuleBuilder { } } } - return KpmExternalImportedModule( + return GradleKpmExternalImportedModule( moduleData, metadata, moduleData.fragments.filterTo(mutableSetOf()) { it.fragmentName in metadata.hostSpecificSourceSets } @@ -77,7 +79,7 @@ class ProjectStructureMetadataModuleBuilder { } fun getModule(component: ResolvedComponentResult, projectStructureMetadata: KotlinProjectStructureMetadata): KpmModule { - val moduleId = component.toSingleModuleIdentifier() + val moduleId = component.toSingleKpmModuleIdentifier() return modulesCache.getOrPut(moduleId) { buildModuleFromProjectStructureMetadata( component, @@ -188,7 +190,7 @@ class GradleProjectModuleBuilder(private val addInferredSourceSetVisibilityAsExp // FIXME: Kotlin/Native implementation-effective-api dependencies are missing here. Introduce dependency scopes requestedDependencies(project, sourceSet, listOf(KotlinDependencyScope.API_SCOPE)).forEach { - val moduleDependency = it.toModuleDependency(project) + val moduleDependency = it.toKpmModuleDependency(project) fragment.declaredModuleDependencies.add(moduleDependency) } } @@ -236,7 +238,7 @@ class GradleProjectModuleBuilder(private val addInferredSourceSetVisibilityAsExp } } -internal fun Dependency.toModuleDependency( +internal fun Dependency.toKpmModuleDependency( project: Project ): KpmModuleDependency { return KpmModuleDependency( @@ -261,30 +263,30 @@ internal fun Dependency.toModuleDependency( private fun KpmBasicModule.fragmentByName(name: String) = fragments.single { it.fragmentName == name } -class CachingModuleVariantResolver(private val actualResolver: ModuleVariantResolver) : ModuleVariantResolver { - private val resultCacheByRequestingVariant: MutableMap> = mutableMapOf() +class KpmCachingModuleVariantResolver(private val actualResolver: KpmModuleVariantResolver) : KpmModuleVariantResolver { + private val resultCacheByRequestingVariant: MutableMap> = mutableMapOf() - override fun getChosenVariant(requestingVariant: org.jetbrains.kotlin.project.model.KpmVariant, dependencyModule: KpmModule): VariantResolution { + override fun getChosenVariant(requestingVariant: KpmVariant, dependencyModule: KpmModule): KpmVariantResolution { val resultCache = resultCacheByRequestingVariant.getOrPut(requestingVariant) { mutableMapOf() } return resultCache.getOrPut(dependencyModule) { actualResolver.getChosenVariant(requestingVariant, dependencyModule) } } } -class GradleModuleVariantResolver : ModuleVariantResolver { - override fun getChosenVariant(requestingVariant: org.jetbrains.kotlin.project.model.KpmVariant, dependencyModule: KpmModule): VariantResolution { +class KpmGradleModuleVariantResolver : KpmModuleVariantResolver { + override fun getChosenVariant(requestingVariant: KpmVariant, dependencyModule: KpmModule): KpmVariantResolution { // TODO maybe improve this behavior? Currently it contradicts dependency resolution in that it may return a chosen variant for an // unrequested dependency. This workaround is needed for synthetic modules which were not produced from module metadata, so maybe // those modules should be marked somehow - if (dependencyModule is KpmExternalPlainModule) { - return VariantResolution.fromMatchingVariants( + if (dependencyModule is GradleKpmExternalPlainModule) { + return KpmVariantResolution.fromMatchingVariants( requestingVariant, dependencyModule, listOf(dependencyModule.singleVariant) ) } - if (requestingVariant !is KpmGradleVariant) { - return VariantResolution.Unknown(requestingVariant, dependencyModule) + if (requestingVariant !is GradleKpmVariant) { + return KpmVariantResolution.Unknown(requestingVariant, dependencyModule) } val module = requestingVariant.containingModule @@ -300,9 +302,9 @@ class GradleModuleVariantResolver : ModuleVariantResolver { // FIXME check composite builds, it's likely that resolvedVariantProvider fails on them? val resolvedGradleVariantName = resolvedVariantProvider.getResolvedVariantName(dependencyModuleId, compileClasspath) val kotlinVariantName = when (dependencyModule) { - is KpmGradleModule -> { + is GradleKpmModule -> { dependencyModule.variants.singleOrNull { resolvedGradleVariantName in it.gradleVariantNames }?.name - ?: return VariantResolution.Unknown(requestingVariant, dependencyModule) + ?: return KpmVariantResolution.Unknown(requestingVariant, dependencyModule) } else -> resolvedGradleVariantName?.let(::kotlinVariantNameFromPublishedVariantName) } @@ -310,15 +312,15 @@ class GradleModuleVariantResolver : ModuleVariantResolver { val resultVariant = dependencyModule.variants.singleOrNull { it.fragmentName == kotlinVariantName } return if (resultVariant == null) - VariantResolution.NoVariantMatch(requestingVariant, dependencyModule) + KpmVariantResolution.KpmNoVariantMatch(requestingVariant, dependencyModule) else - VariantResolution.VariantMatch(requestingVariant, dependencyModule, resultVariant) + KpmVariantResolution.KpmVariantMatch(requestingVariant, dependencyModule, resultVariant) } - private fun getCompileDependenciesConfigurationForVariant(project: Project, requestingVariant: org.jetbrains.kotlin.project.model.KpmVariant): Configuration = + private fun getCompileDependenciesConfigurationForVariant(project: Project, requestingVariant: KpmVariant): Configuration = when { project.hasKpmModel -> { - (requestingVariant as KpmGradleVariant).compileDependenciesConfiguration + (requestingVariant as GradleKpmVariant).compileDependenciesConfiguration } else -> { val targets = @@ -342,10 +344,10 @@ class GradleModuleVariantResolver : ModuleVariantResolver { } companion object { - fun getForCurrentBuild(project: Project): ModuleVariantResolver { + fun getForCurrentBuild(project: Project): KpmModuleVariantResolver { val extraPropertyName = "org.jetbrains.kotlin.dependencyResolution.variantResolver.${project.getKotlinPluginVersion()}" return project.getOrPutRootProjectProperty(extraPropertyName) { - CachingModuleVariantResolver(GradleModuleVariantResolver()) + KpmCachingModuleVariantResolver(KpmGradleModuleVariantResolver()) } } } diff --git a/libraries/tools/kotlin-gradle-plugin/src/common/kotlin/org/jetbrains/kotlin/gradle/plugin/mpp/KotlinMultiplatformPlugin.kt b/libraries/tools/kotlin-gradle-plugin/src/common/kotlin/org/jetbrains/kotlin/gradle/plugin/mpp/KotlinMultiplatformPlugin.kt index c0ace49938a..48e822464ab 100644 --- a/libraries/tools/kotlin-gradle-plugin/src/common/kotlin/org/jetbrains/kotlin/gradle/plugin/mpp/KotlinMultiplatformPlugin.kt +++ b/libraries/tools/kotlin-gradle-plugin/src/common/kotlin/org/jetbrains/kotlin/gradle/plugin/mpp/KotlinMultiplatformPlugin.kt @@ -80,10 +80,10 @@ class KotlinMultiplatformPlugin : Plugin { setupKpmModulesPublication(project) registerDefaultVariantFactories(project) with(project.kpmModules) { - create(KpmGradleModule.MAIN_MODULE_NAME) { + create(GradleKpmModule.MAIN_MODULE_NAME) { it.makePublic() } - create(KpmGradleModule.TEST_MODULE_NAME) + create(GradleKpmModule.TEST_MODULE_NAME) } } @@ -282,7 +282,7 @@ internal fun applyUserDefinedAttributes(target: AbstractKotlinTarget) { private fun applyUserDefinedAttributesWithKpm( target: AbstractKotlinTarget, ) { - fun copyAttributesToVariant(variant: KpmGradleVariant, from: AttributeContainer) { + fun copyAttributesToVariant(variant: GradleKpmVariant, from: AttributeContainer) { variant.gradleVariantNames.forEach { configurationOrVariantName -> val configuration = variant.project.configurations.findByName(configurationOrVariantName) ?: return@forEach @@ -307,7 +307,7 @@ private fun applyUserDefinedAttributesWithKpm( } // Also handle the legacy-mapped variants, which are not accessible through the compilations in the loop above - project.kpmModules.getByName(KpmGradleModule.MAIN_MODULE_NAME).variants.withType(LegacyMappedVariant::class.java).all { variant -> + project.kpmModules.getByName(GradleKpmModule.MAIN_MODULE_NAME).variants.withType(GradleKpmLegacyMappedVariant::class.java).all { variant -> val compilation = variant.compilation copyAttributesToVariant(variant, compilation.attributes) } diff --git a/libraries/tools/kotlin-gradle-plugin/src/common/kotlin/org/jetbrains/kotlin/gradle/plugin/mpp/KotlinProjectStructureMetadata.kt b/libraries/tools/kotlin-gradle-plugin/src/common/kotlin/org/jetbrains/kotlin/gradle/plugin/mpp/KotlinProjectStructureMetadata.kt index b10fa8f89bc..e28ce62a53a 100644 --- a/libraries/tools/kotlin-gradle-plugin/src/common/kotlin/org/jetbrains/kotlin/gradle/plugin/mpp/KotlinProjectStructureMetadata.kt +++ b/libraries/tools/kotlin-gradle-plugin/src/common/kotlin/org/jetbrains/kotlin/gradle/plugin/mpp/KotlinProjectStructureMetadata.kt @@ -14,7 +14,7 @@ import org.gradle.api.tasks.Input import org.gradle.api.tasks.Internal import org.gradle.api.tasks.Nested import org.jetbrains.kotlin.gradle.dsl.multiplatformExtensionOrNull -import org.jetbrains.kotlin.gradle.plugin.mpp.pm20.KpmGradleModule +import org.jetbrains.kotlin.gradle.plugin.mpp.pm20.GradleKpmModule import org.jetbrains.kotlin.gradle.plugin.mpp.pm20.hasKpmModel import org.jetbrains.kotlin.gradle.plugin.sources.KotlinDependencyScope import org.jetbrains.kotlin.gradle.plugin.sources.sourceSetDependencyConfigurationByScope @@ -190,7 +190,7 @@ internal fun buildKotlinProjectStructureMetadata(project: Project): KotlinProjec ) } -internal fun buildProjectStructureMetadata(module: KpmGradleModule): KotlinProjectStructureMetadata { +internal fun buildProjectStructureMetadata(module: GradleKpmModule): KotlinProjectStructureMetadata { val kotlinVariantToGradleVariantNames = module.variants.associate { it.name to it.gradleVariantNames } fun expandVariantKeys(map: Map) = diff --git a/libraries/tools/kotlin-gradle-plugin/src/common/kotlin/org/jetbrains/kotlin/gradle/plugin/mpp/ModuleIds.kt b/libraries/tools/kotlin-gradle-plugin/src/common/kotlin/org/jetbrains/kotlin/gradle/plugin/mpp/ModuleIds.kt index 7816cb20519..0b14bc5b8fa 100644 --- a/libraries/tools/kotlin-gradle-plugin/src/common/kotlin/org/jetbrains/kotlin/gradle/plugin/mpp/ModuleIds.kt +++ b/libraries/tools/kotlin-gradle-plugin/src/common/kotlin/org/jetbrains/kotlin/gradle/plugin/mpp/ModuleIds.kt @@ -17,6 +17,7 @@ import org.jetbrains.kotlin.gradle.dsl.multiplatformExtensionOrNull import org.jetbrains.kotlin.gradle.dsl.topLevelExtension import org.jetbrains.kotlin.gradle.plugin.mpp.pm20.* import org.jetbrains.kotlin.gradle.plugin.mpp.pm20.util.ComputedCapability +import org.jetbrains.kotlin.gradle.plugin.mpp.pm20.util.currentBuildId import org.jetbrains.kotlin.gradle.utils.getValue import org.jetbrains.kotlin.project.model.KpmModuleIdentifier import org.jetbrains.kotlin.project.model.KpmLocalModuleIdentifier diff --git a/libraries/tools/kotlin-gradle-plugin/src/common/kotlin/org/jetbrains/kotlin/gradle/plugin/mpp/MppDependencyProjectStructureMetadataExtractorFactory.kt b/libraries/tools/kotlin-gradle-plugin/src/common/kotlin/org/jetbrains/kotlin/gradle/plugin/mpp/MppDependencyProjectStructureMetadataExtractorFactory.kt index 9772411d5d3..e3c123b3f58 100644 --- a/libraries/tools/kotlin-gradle-plugin/src/common/kotlin/org/jetbrains/kotlin/gradle/plugin/mpp/MppDependencyProjectStructureMetadataExtractorFactory.kt +++ b/libraries/tools/kotlin-gradle-plugin/src/common/kotlin/org/jetbrains/kotlin/gradle/plugin/mpp/MppDependencyProjectStructureMetadataExtractorFactory.kt @@ -10,7 +10,7 @@ import org.gradle.api.artifacts.Configuration import org.gradle.api.artifacts.component.ProjectComponentIdentifier import org.gradle.api.artifacts.result.ResolvedComponentResult import org.gradle.api.artifacts.result.ResolvedDependencyResult -import org.jetbrains.kotlin.gradle.plugin.mpp.pm20.toSingleModuleIdentifier +import org.jetbrains.kotlin.gradle.plugin.mpp.pm20.toSingleKpmModuleIdentifier import org.jetbrains.kotlin.project.model.KpmModuleIdentifier internal fun MppDependencyProjectStructureMetadataExtractor.Factory.create( @@ -25,7 +25,7 @@ internal fun MppDependencyProjectStructureMetadataExtractor.Factory.create( FIXME this loses information about auxiliary module deps TODO check how this code works with multi-capability resolutions, */ - moduleIdentifier = resolvedComponentResult.toSingleModuleIdentifier(), + moduleIdentifier = resolvedComponentResult.toSingleKpmModuleIdentifier(), configuration = configuration, resolveViaAvailableAt = resolveViaAvailableAt, resolvedComponentResult = resolvedComponentResult, diff --git a/libraries/tools/kotlin-gradle-plugin/src/common/kotlin/org/jetbrains/kotlin/gradle/plugin/mpp/ResolvedMppVariantsProvider.kt b/libraries/tools/kotlin-gradle-plugin/src/common/kotlin/org/jetbrains/kotlin/gradle/plugin/mpp/ResolvedMppVariantsProvider.kt index 078f40c8906..acf9b09d710 100644 --- a/libraries/tools/kotlin-gradle-plugin/src/common/kotlin/org/jetbrains/kotlin/gradle/plugin/mpp/ResolvedMppVariantsProvider.kt +++ b/libraries/tools/kotlin-gradle-plugin/src/common/kotlin/org/jetbrains/kotlin/gradle/plugin/mpp/ResolvedMppVariantsProvider.kt @@ -14,8 +14,8 @@ import org.gradle.api.artifacts.result.ResolvedDependencyResult import org.gradle.api.artifacts.result.ResolvedVariantResult import org.gradle.api.attributes.Usage import org.jetbrains.kotlin.gradle.plugin.KotlinPlatformType -import org.jetbrains.kotlin.gradle.plugin.mpp.pm20.toModuleIdentifiers -import org.jetbrains.kotlin.gradle.plugin.mpp.pm20.toSingleModuleIdentifier +import org.jetbrains.kotlin.gradle.plugin.mpp.pm20.toKpmModuleIdentifiers +import org.jetbrains.kotlin.gradle.plugin.mpp.pm20.toSingleKpmModuleIdentifier import org.jetbrains.kotlin.gradle.plugin.usageByName import org.jetbrains.kotlin.gradle.utils.getOrPut import org.jetbrains.kotlin.project.model.KpmModuleIdentifier @@ -112,13 +112,13 @@ internal class ResolvedMppVariantsProvider private constructor(private val proje if (isMpp) { result.add(component) component.dependents.forEach { dependent -> - dependent.requested.toModuleIdentifiers().forEach { moduleId -> + dependent.requested.toKpmModuleIdentifiers().forEach { moduleId -> val moduleEntry = getEntryForModule(moduleId) moduleEntry.resolvedVariantsByConfiguration[configuration] = listOf(dependent.resolvedVariant) moduleEntry.dependenciesByConfiguration[configuration] = component.dependencies .filterIsInstance() - .map { dependency -> dependency.selected.toSingleModuleIdentifier() } + .map { dependency -> dependency.selected.toSingleKpmModuleIdentifier() } if (component.id is ProjectComponentIdentifier) { // Then the platform variant chosen for this module is definitely inside the module itself: @@ -165,11 +165,11 @@ internal class ResolvedMppVariantsProvider private constructor(private val proje artifactResolutionMode: ArtifactResolutionMode ) { val mppModuleIds = mppComponentIds.flatMapTo(mutableSetOf()) { componentId -> - componentId.toModuleIdentifiers() + componentId.toKpmModuleIdentifiers() } mppComponentIds.forEach { componentId -> - componentId.toModuleIdentifiers().forEach { moduleId -> + componentId.toKpmModuleIdentifiers().forEach { moduleId -> val moduleEntry = getEntryForModule(moduleId) val artifact = artifacts[componentId] when { diff --git a/libraries/tools/kotlin-gradle-plugin/src/common/kotlin/org/jetbrains/kotlin/gradle/plugin/mpp/SourceSetVisibilityProvider.kt b/libraries/tools/kotlin-gradle-plugin/src/common/kotlin/org/jetbrains/kotlin/gradle/plugin/mpp/SourceSetVisibilityProvider.kt index b3c2f455561..bf345a75ca1 100644 --- a/libraries/tools/kotlin-gradle-plugin/src/common/kotlin/org/jetbrains/kotlin/gradle/plugin/mpp/SourceSetVisibilityProvider.kt +++ b/libraries/tools/kotlin-gradle-plugin/src/common/kotlin/org/jetbrains/kotlin/gradle/plugin/mpp/SourceSetVisibilityProvider.kt @@ -12,7 +12,7 @@ import org.jetbrains.kotlin.gradle.plugin.KotlinCompilation import org.jetbrains.kotlin.gradle.plugin.KotlinCompilationToRunnableFiles import org.jetbrains.kotlin.gradle.plugin.KotlinPlatformType import org.jetbrains.kotlin.gradle.plugin.KotlinSourceSet -import org.jetbrains.kotlin.gradle.plugin.mpp.pm20.toSingleModuleIdentifier +import org.jetbrains.kotlin.gradle.plugin.mpp.pm20.toSingleKpmModuleIdentifier import org.jetbrains.kotlin.gradle.plugin.sources.KotlinDependencyScope import java.io.File @@ -57,7 +57,7 @@ internal class SourceSetVisibilityProvider( val compilations = CompilationSourceSetUtil.compilationsBySourceSets(project).getValue(visibleFrom) val component = resolvedRootMppDependency ?: resolvedMetadataDependency - val mppModuleIdentifier = component.toSingleModuleIdentifier() + val mppModuleIdentifier = component.toSingleKpmModuleIdentifier() val firstConfigurationByVariant = mutableMapOf() diff --git a/libraries/tools/kotlin-gradle-plugin/src/common/kotlin/org/jetbrains/kotlin/gradle/plugin/mpp/pm20/DefaultKotlinFragmentAttributes.kt b/libraries/tools/kotlin-gradle-plugin/src/common/kotlin/org/jetbrains/kotlin/gradle/plugin/mpp/pm20/DefaultKotlinFragmentAttributes.kt index 0f55f39752b..a3debfe362b 100644 --- a/libraries/tools/kotlin-gradle-plugin/src/common/kotlin/org/jetbrains/kotlin/gradle/plugin/mpp/pm20/DefaultKotlinFragmentAttributes.kt +++ b/libraries/tools/kotlin-gradle-plugin/src/common/kotlin/org/jetbrains/kotlin/gradle/plugin/mpp/pm20/DefaultKotlinFragmentAttributes.kt @@ -20,7 +20,7 @@ import org.jetbrains.kotlin.gradle.plugin.mpp.KotlinUsages.producerRuntimeUsage import org.jetbrains.kotlin.gradle.plugin.usageByName import org.jetbrains.kotlin.gradle.utils.isGradleVersionAtLeast -val KotlinFragmentPlatformAttributes = FragmentAttributes { +val GradleKpmPlatformAttributes = GradleKpmConfigurationAttributesSetup { if (isGradleVersionAtLeast(7, 0) && fragment.platformType == KotlinPlatformType.jvm) { namedAttribute(TARGET_JVM_ENVIRONMENT_ATTRIBUTE, TargetJvmEnvironment.STANDARD_JVM) } @@ -28,26 +28,26 @@ val KotlinFragmentPlatformAttributes = FragmentAttributes { attribute(KotlinPlatformType.attribute, fragment.platformType) } -val KotlinFragmentConsumerApiUsageAttribute = FragmentAttributes { +val GradleKpmConsumerApiUsageAttribute = GradleKpmConfigurationAttributesSetup { attribute(USAGE_ATTRIBUTE, consumerApiUsage(project, fragment.platformType)) } -val KotlinFragmentProducerApiUsageAttribute = FragmentAttributes { +val GradleKpmProducerApiUsageAttribute = GradleKpmConfigurationAttributesSetup { attribute(USAGE_ATTRIBUTE, producerApiUsage(fragment.project, fragment.platformType)) } -val KotlinFragmentConsumerRuntimeUsageAttribute = FragmentAttributes { +val GradleKpmConsumerRuntimeUsageAttribute = GradleKpmConfigurationAttributesSetup { attribute(USAGE_ATTRIBUTE, consumerRuntimeUsage(fragment.project, fragment.platformType)) } -val KotlinFragmentProducerRuntimeUsageAttribute = FragmentAttributes { +val GradleKpmProducerRuntimeUsageAttribute = GradleKpmConfigurationAttributesSetup { attribute(USAGE_ATTRIBUTE, producerRuntimeUsage(fragment.project, fragment.platformType)) } -val KotlinFragmentMetadataUsageAttribute = FragmentAttributes { +val GradleKpmMetadataUsageAttribute = GradleKpmConfigurationAttributesSetup { attribute(USAGE_ATTRIBUTE, fragment.project.usageByName(KotlinUsages.KOTLIN_METADATA)) } -val KotlinFragmentKonanTargetAttribute = FragmentAttributes { +val GradleKpmKonanTargetAttribute = GradleKpmConfigurationAttributesSetup { attributes.attribute(KotlinNativeTarget.konanTargetAttribute, fragment.konanTarget.name) } diff --git a/libraries/tools/kotlin-gradle-plugin/src/common/kotlin/org/jetbrains/kotlin/gradle/plugin/mpp/pm20/DefaultKotlinFragmentConfigurations.kt b/libraries/tools/kotlin-gradle-plugin/src/common/kotlin/org/jetbrains/kotlin/gradle/plugin/mpp/pm20/DefaultKotlinFragmentConfigurations.kt index 0023355585b..16843ef14dd 100644 --- a/libraries/tools/kotlin-gradle-plugin/src/common/kotlin/org/jetbrains/kotlin/gradle/plugin/mpp/pm20/DefaultKotlinFragmentConfigurations.kt +++ b/libraries/tools/kotlin-gradle-plugin/src/common/kotlin/org/jetbrains/kotlin/gradle/plugin/mpp/pm20/DefaultKotlinFragmentConfigurations.kt @@ -8,79 +8,78 @@ package org.jetbrains.kotlin.gradle.plugin.mpp.pm20 import org.gradle.api.attributes.Bundling import org.gradle.api.attributes.Category - -val DefaultKotlinCompileDependenciesDefinition = KotlinGradleFragmentConfigurationDefinition( - provider = ConfigurationProvider { +val DefaultKotlinCompileDependenciesDefinition = GradleKpmConfigurationSetup( + provider = GradleKpmConfigurationProvider { project.configurations.maybeCreate(disambiguateName("compileDependencies")).apply { isCanBeConsumed = false isCanBeResolved = true } }, - relations = FragmentConfigurationRelation { + relations = GradleKpmConfigurationRelationSetup { extendsFrom(dependencies.transitiveApiConfiguration) extendsFrom(dependencies.transitiveImplementationConfiguration) }, - attributes = KotlinFragmentPlatformAttributes + KotlinFragmentConsumerApiUsageAttribute + attributes = GradleKpmPlatformAttributes + GradleKpmConsumerApiUsageAttribute ) -val DefaultKotlinRuntimeDependenciesDefinition = ConfigurationDefinition( - provider = ConfigurationProvider { +val DefaultKotlinRuntimeDependenciesDefinition = GradleKpmConfigurationSetup( + provider = GradleKpmConfigurationProvider { project.configurations.maybeCreate(disambiguateName("runtimeDependencies")).apply { isCanBeConsumed = false isCanBeResolved = true } }, - attributes = KotlinFragmentPlatformAttributes + KotlinFragmentConsumerRuntimeUsageAttribute, - relations = FragmentConfigurationRelation { + attributes = GradleKpmPlatformAttributes + GradleKpmConsumerRuntimeUsageAttribute, + relations = GradleKpmConfigurationRelationSetup { extendsFrom(dependencies.transitiveApiConfiguration) extendsFrom(dependencies.transitiveImplementationConfiguration) extendsFrom(dependencies.transitiveRuntimeOnlyConfiguration) } ) -val DefaultKotlinApiElementsDefinition = ConfigurationDefinition( - provider = ConfigurationProvider { +val DefaultKotlinApiElementsDefinition = GradleKpmConfigurationSetup( + provider = GradleKpmConfigurationProvider { project.configurations.maybeCreate(disambiguateName("apiElements")).apply { isCanBeResolved = false isCanBeConsumed = false module.ifMadePublic { isCanBeConsumed = true } } }, - relations = FragmentConfigurationRelation { extendsFrom(dependencies.transitiveApiConfiguration) }, - capabilities = KotlinFragmentModuleCapability, - attributes = KotlinFragmentPlatformAttributes + KotlinFragmentProducerApiUsageAttribute + FragmentAttributes { + relations = GradleKpmConfigurationRelationSetup { extendsFrom(dependencies.transitiveApiConfiguration) }, + capabilities = GradleKpmModuleCapability, + attributes = GradleKpmPlatformAttributes + GradleKpmProducerApiUsageAttribute + GradleKpmConfigurationAttributesSetup { attribute(Category.CATEGORY_ATTRIBUTE, fragment.project.objects.named(Category::class.java, Category.LIBRARY)) attribute(Bundling.BUNDLING_ATTRIBUTE, fragment.project.objects.named(Bundling::class.java, Bundling.EXTERNAL)) }, ) -val DefaultKotlinRuntimeElementsDefinition = ConfigurationDefinition( - provider = ConfigurationProvider { +val DefaultKotlinRuntimeElementsDefinition = GradleKpmConfigurationSetup( + provider = GradleKpmConfigurationProvider { project.configurations.maybeCreate(disambiguateName("runtimeElements")).apply { isCanBeResolved = false isCanBeConsumed = false module.ifMadePublic { isCanBeConsumed = true } } }, - relations = FragmentConfigurationRelation { + relations = GradleKpmConfigurationRelationSetup { extendsFrom(dependencies.transitiveApiConfiguration) extendsFrom(dependencies.transitiveImplementationConfiguration) extendsFrom(dependencies.transitiveRuntimeOnlyConfiguration) }, - attributes = KotlinFragmentPlatformAttributes + KotlinFragmentProducerRuntimeUsageAttribute + FragmentAttributes { + attributes = GradleKpmPlatformAttributes + GradleKpmProducerRuntimeUsageAttribute + GradleKpmConfigurationAttributesSetup { attribute(Category.CATEGORY_ATTRIBUTE, fragment.project.objects.named(Category::class.java, Category.LIBRARY)) attribute(Bundling.BUNDLING_ATTRIBUTE, fragment.project.objects.named(Bundling::class.java, Bundling.EXTERNAL)) }, - capabilities = KotlinFragmentModuleCapability + capabilities = GradleKpmModuleCapability ) -val DefaultKotlinHostSpecificMetadataElementsDefinition = ConfigurationDefinition( - provider = ConfigurationProvider { +val DefaultKotlinHostSpecificMetadataElementsDefinition = GradleKpmConfigurationSetup( + provider = GradleKpmConfigurationProvider { project.configurations.maybeCreate(disambiguateName("hostSpecificMetadataElements")).apply { isCanBeResolved = false isCanBeConsumed = false } }, - attributes = KotlinFragmentPlatformAttributes + KotlinFragmentKonanTargetAttribute + KotlinFragmentMetadataUsageAttribute, - artifacts = KotlinFragmentHostSpecificMetadataArtifact + attributes = GradleKpmPlatformAttributes + GradleKpmKonanTargetAttribute + GradleKpmMetadataUsageAttribute, + artifacts = GradleKpmHostSpecificMetadataArtifact ) diff --git a/libraries/tools/kotlin-gradle-plugin/src/common/kotlin/org/jetbrains/kotlin/gradle/plugin/mpp/pm20/DependencyGraphResolver.kt b/libraries/tools/kotlin-gradle-plugin/src/common/kotlin/org/jetbrains/kotlin/gradle/plugin/mpp/pm20/DependencyGraphResolver.kt index b34778ca4a0..ae18abf27c5 100644 --- a/libraries/tools/kotlin-gradle-plugin/src/common/kotlin/org/jetbrains/kotlin/gradle/plugin/mpp/pm20/DependencyGraphResolver.kt +++ b/libraries/tools/kotlin-gradle-plugin/src/common/kotlin/org/jetbrains/kotlin/gradle/plugin/mpp/pm20/DependencyGraphResolver.kt @@ -15,12 +15,12 @@ import org.jetbrains.kotlin.gradle.plugin.sources.KotlinDependencyScope import org.jetbrains.kotlin.project.model.* internal fun resolvableMetadataConfiguration( - module: KpmGradleModule + module: GradleKpmModule ) = module.project.configurations.getByName(module.resolvableMetadataConfigurationName) internal fun configurationToResolveMetadataDependencies(project: Project, requestingModule: KpmModule): Configuration = when { - project.hasKpmModel -> resolvableMetadataConfiguration(requestingModule as KpmGradleModule) + project.hasKpmModel -> resolvableMetadataConfiguration(requestingModule as GradleKpmModule) else -> resolvableMetadataConfiguration( project, project.kotlinExtension.sourceSets, // take dependencies from all source sets; TODO introduce consistency scopes? @@ -29,34 +29,34 @@ internal fun configurationToResolveMetadataDependencies(project: Project, reques } -class KpmGradleDependencyGraphResolver( +class GradleKpmDependencyGraphResolver( private val moduleResolver: KpmModuleDependencyResolver ) : KpmDependencyGraphResolver { - private fun configurationToResolve(requestingModule: KpmGradleModule): Configuration = + private fun configurationToResolve(requestingModule: GradleKpmModule): Configuration = configurationToResolveMetadataDependencies(requestingModule.project, requestingModule) override fun resolveDependencyGraph(requestingModule: KpmModule): KpmDependencyGraphResolution { - if (requestingModule !is KpmGradleModule) + if (requestingModule !is GradleKpmModule) return KpmDependencyGraphResolution.Unknown(requestingModule) return resolveAsGraph(requestingModule) } - private fun resolveAsGraph(requestingModule: KpmGradleModule): KpmGradleDependencyGraph { - val nodeByModuleId = mutableMapOf() + private fun resolveAsGraph(requestingModule: GradleKpmModule): GradleKpmDependencyGraph { + val nodeByModuleId = mutableMapOf() fun getKotlinModuleFromComponentResult(component: ResolvedComponentResult): KpmModule = - moduleResolver.resolveDependency(requestingModule, component.toModuleDependency()) + moduleResolver.resolveDependency(requestingModule, component.toKpmModuleDependency()) ?: buildSyntheticPlainModule( component, component.variants.singleOrNull()?.displayName ?: "default", ) - fun nodeFromModule(componentResult: ResolvedComponentResult, kpmModule: KpmModule): GradleDependencyGraphNode { + fun nodeFromModule(componentResult: ResolvedComponentResult, kpmModule: KpmModule): GradleKpmDependencyGraphNode { val id = kpmModule.moduleIdentifier return nodeByModuleId.getOrPut(id) { val metadataSourceComponent = - (kpmModule as? KpmExternalImportedModule) + (kpmModule as? GradleKpmExternalImportedModule) ?.takeIf { it.hasLegacyMetadataModule } ?.let { (componentResult.dependencies.singleOrNull() as? ResolvedDependencyResult)?.selected } ?: componentResult @@ -68,8 +68,8 @@ class KpmGradleDependencyGraphResolver( .filterIsInstance() // This filter statement is used to only visit the dependencies of the variant(s) of the requested Kotlin module and not // other variants. This prevents infinite recursion when visiting multiple Kotlin modules within one Gradle components - .filter { dependency -> dependency.requested.toModuleIdentifiers().any { it in dependenciesRequestedByModule } } - .flatMap { dependency -> dependency.requested.toModuleIdentifiers().map { id -> id to dependency.selected } } + .filter { dependency -> dependency.requested.toKpmModuleIdentifiers().any { it in dependenciesRequestedByModule } } + .flatMap { dependency -> dependency.requested.toKpmModuleIdentifiers().map { id -> id to dependency.selected } } .toMap() val fragmentDependencies = kpmModule.fragments.associateWith { it.declaredModuleDependencies } @@ -81,7 +81,7 @@ class KpmGradleDependencyGraphResolver( } } - GradleDependencyGraphNode( + GradleKpmDependencyGraphNode( kpmModule, componentResult, metadataSourceComponent, @@ -90,24 +90,23 @@ class KpmGradleDependencyGraphResolver( } } - return KpmGradleDependencyGraph( + return GradleKpmDependencyGraph( requestingModule, nodeFromModule(configurationToResolve(requestingModule).incoming.resolutionResult.root, requestingModule) ) } } -class GradleDependencyGraphNode( +class GradleKpmDependencyGraphNode( override val module: KpmModule, val selectedComponent: ResolvedComponentResult, /** If the Kotlin module description was provided by a different component, such as with legacy publishing layout using *-metadata * modules, then this property points to the other component. */ val metadataSourceComponent: ResolvedComponentResult?, - override val dependenciesByFragment: Map> + override val dependenciesByFragment: Map> ) : KpmDependencyGraphNode(module, dependenciesByFragment) -class KpmGradleDependencyGraph( - override val requestingModule: KpmGradleModule, - override val root: GradleDependencyGraphNode +class GradleKpmDependencyGraph( + override val requestingModule: GradleKpmModule, + override val root: GradleKpmDependencyGraphNode ) : KpmDependencyGraphResolution.KpmDependencyGraph(requestingModule, root) - diff --git a/libraries/tools/kotlin-gradle-plugin/src/common/kotlin/org/jetbrains/kotlin/gradle/plugin/mpp/pm20/DependencyResolution.kt b/libraries/tools/kotlin-gradle-plugin/src/common/kotlin/org/jetbrains/kotlin/gradle/plugin/mpp/pm20/DependencyResolution.kt index 60e3d1c8fb0..f2784292696 100644 --- a/libraries/tools/kotlin-gradle-plugin/src/common/kotlin/org/jetbrains/kotlin/gradle/plugin/mpp/pm20/DependencyResolution.kt +++ b/libraries/tools/kotlin-gradle-plugin/src/common/kotlin/org/jetbrains/kotlin/gradle/plugin/mpp/pm20/DependencyResolution.kt @@ -16,60 +16,15 @@ import org.jetbrains.kotlin.gradle.plugin.mpp.* import org.jetbrains.kotlin.gradle.plugin.sources.DefaultLanguageSettingsBuilder import org.jetbrains.kotlin.gradle.utils.getOrPutRootProjectProperty import org.jetbrains.kotlin.project.model.* -import org.jetbrains.kotlin.project.model.KpmVariant -import java.util.* -class KpmCachingModuleDependencyResolver(private val actualResolver: KpmModuleDependencyResolver) : KpmModuleDependencyResolver { - private val cacheByRequestingModule = WeakHashMap>() - - private fun cacheForRequestingModule(requestingModule: KpmModule) = - cacheByRequestingModule.getOrPut(requestingModule) { mutableMapOf() } - - override fun resolveDependency(requestingModule: KpmModule, moduleDependency: KpmModuleDependency): KpmModule? = - cacheForRequestingModule(requestingModule).getOrPut(moduleDependency) { - actualResolver.resolveDependency(requestingModule, moduleDependency) - } -} - -open class GradleComponentResultCachingResolver { - private val cachedResultsByRequestingModule = mutableMapOf>() - - protected open fun configurationToResolve(requestingModule: KpmGradleModule): Configuration = - configurationToResolveMetadataDependencies(requestingModule.project, requestingModule) - - protected open fun resolveDependencies(module: KpmGradleModule): Map { - val allComponents = configurationToResolve(module).incoming.resolutionResult.allComponents - // FIXME handle multi-component results - return allComponents.flatMap { component -> component.toModuleIdentifiers().map { it to component } }.toMap() - } - - private fun getResultsForModule(module: KpmGradleModule): Map = - cachedResultsByRequestingModule.getOrPut(module) { resolveDependencies(module) } - - fun resolveModuleDependencyAsComponentResult( - requestingModule: KpmGradleModule, - moduleDependency: KpmModuleDependency - ): ResolvedComponentResult? = - getResultsForModule(requestingModule)[moduleDependency.moduleIdentifier] - - companion object { - fun getForCurrentBuild(project: Project): GradleComponentResultCachingResolver { - val extraPropertyName = "org.jetbrains.kotlin.dependencyResolution.gradleComponentResolver.${project.getKotlinPluginVersion()}" - return project.getOrPutRootProjectProperty(extraPropertyName) { - GradleComponentResultCachingResolver() - } - } - } -} - -class KpmGradleModuleDependencyResolver( - private val gradleComponentResultResolver: GradleComponentResultCachingResolver, +class GradleKpmModuleDependencyResolver( + private val gradleComponentResultResolver: GradleKpmComponentResultCachingResolver, private val projectStructureMetadataModuleBuilder: ProjectStructureMetadataModuleBuilder, private val projectModuleBuilder: GradleProjectModuleBuilder ) : KpmModuleDependencyResolver { override fun resolveDependency(requestingModule: KpmModule, moduleDependency: KpmModuleDependency): KpmModule? { - require(requestingModule is KpmGradleModule) + require(requestingModule is GradleKpmModule) val project = requestingModule.project val component = gradleComponentResultResolver.resolveModuleDependencyAsComponentResult(requestingModule, moduleDependency) @@ -101,11 +56,11 @@ class KpmGradleModuleDependencyResolver( fun getForCurrentBuild(project: Project): KpmModuleDependencyResolver { val extraPropertyName = "org.jetbrains.kotlin.dependencyResolution.moduleResolver.${project.getKotlinPluginVersion()}" return project.getOrPutRootProjectProperty(extraPropertyName) { - val componentResultResolver = GradleComponentResultCachingResolver.getForCurrentBuild(project) + val componentResultResolver = GradleKpmComponentResultCachingResolver.getForCurrentBuild(project) val metadataModuleBuilder = ProjectStructureMetadataModuleBuilder() val projectModuleBuilder = GradleProjectModuleBuilder(true) - KpmCachingModuleDependencyResolver( - KpmGradleModuleDependencyResolver(componentResultResolver, metadataModuleBuilder, projectModuleBuilder) + GradleKpmCachingModuleDependencyResolver( + GradleKpmModuleDependencyResolver(componentResultResolver, metadataModuleBuilder, projectModuleBuilder) ) } } @@ -117,21 +72,21 @@ class KpmGradleModuleDependencyResolver( internal fun buildSyntheticPlainModule( resolvedComponentResult: ResolvedComponentResult, singleVariantName: String, -): KpmExternalPlainModule { - val moduleDependency = resolvedComponentResult.toModuleDependency() - return KpmExternalPlainModule(KpmBasicModule(moduleDependency.moduleIdentifier).apply { +): GradleKpmExternalPlainModule { + val moduleDependency = resolvedComponentResult.toKpmModuleDependency() + return GradleKpmExternalPlainModule(KpmBasicModule(moduleDependency.moduleIdentifier).apply { KpmBasicVariant(this@apply, singleVariantName, DefaultLanguageSettingsBuilder()).apply { fragments.add(this) this.declaredModuleDependencies.addAll( resolvedComponentResult.dependencies .filterIsInstance() - .map { it.selected.toModuleDependency() } + .map { it.selected.toKpmModuleDependency() } ) } }) } -internal class KpmExternalPlainModule(private val moduleData: KpmBasicModule) : KpmModule by moduleData { +internal class GradleKpmExternalPlainModule(private val moduleData: KpmBasicModule) : KpmModule by moduleData { override fun toString(): String = "external plain $moduleData" val singleVariant: KpmVariant @@ -139,7 +94,7 @@ internal class KpmExternalPlainModule(private val moduleData: KpmBasicModule) : ?: error("synthetic $moduleData was expected to have a single variant, got: ${moduleData.variants}") } -internal class KpmExternalImportedModule( +internal class GradleKpmExternalImportedModule( private val moduleData: KpmBasicModule, val projectStructureMetadata: KotlinProjectStructureMetadata, val hostSpecificFragments: Set @@ -149,28 +104,28 @@ internal class KpmExternalImportedModule( override fun toString(): String = "imported $moduleData" } -private fun ModuleComponentIdentifier.toSingleModuleIdentifier(classifier: String? = null): KpmMavenModuleIdentifier = +private fun ModuleComponentIdentifier.toSingleKpmModuleIdentifier(classifier: String? = null): KpmMavenModuleIdentifier = KpmMavenModuleIdentifier(moduleIdentifier.group, moduleIdentifier.name, classifier) internal fun ComponentIdentifier.matchesModule(module: KpmModule): Boolean = matchesModuleIdentifier(module.moduleIdentifier) -internal fun ResolvedComponentResult.toModuleIdentifiers(): List { +internal fun ResolvedComponentResult.toKpmModuleIdentifiers(): List { val classifiers = moduleClassifiersFromCapabilities(variants.flatMap { it.capabilities }) - return classifiers.map { moduleClassifier -> toModuleIdentifier(moduleClassifier) } + return classifiers.map { moduleClassifier -> toKpmModuleIdentifier(moduleClassifier) } } // FIXME this mapping doesn't have enough information to choose auxiliary modules -internal fun ResolvedComponentResult.toSingleModuleIdentifier(): KpmModuleIdentifier { +internal fun ResolvedComponentResult.toSingleKpmModuleIdentifier(): KpmModuleIdentifier { val classifiers = moduleClassifiersFromCapabilities(variants.flatMap { it.capabilities }) val moduleClassifier = classifiers.single() // FIXME handle multiple capabilities - return toModuleIdentifier(moduleClassifier) + return toKpmModuleIdentifier(moduleClassifier) } -private fun ResolvedComponentResult.toModuleIdentifier(moduleClassifier: String?): KpmModuleIdentifier { +private fun ResolvedComponentResult.toKpmModuleIdentifier(moduleClassifier: String?): KpmModuleIdentifier { return when (val id = id) { is ProjectComponentIdentifier -> KpmLocalModuleIdentifier(id.build.name, id.projectPath, moduleClassifier) - is ModuleComponentIdentifier -> id.toSingleModuleIdentifier() + is ModuleComponentIdentifier -> id.toSingleKpmModuleIdentifier() else -> KpmMavenModuleIdentifier(moduleVersion?.group.orEmpty(), moduleVersion?.name.orEmpty(), moduleClassifier) } } @@ -180,7 +135,7 @@ internal fun moduleClassifiersFromCapabilities(capabilities: Iterable { +internal fun ComponentSelector.toKpmModuleIdentifiers(): Iterable { val moduleClassifiers = moduleClassifiersFromCapabilities(requestedCapabilities) return when (this) { is ProjectComponentSelector -> moduleClassifiers.map { KpmLocalModuleIdentifier(buildName, projectPath, it) } @@ -189,9 +144,9 @@ internal fun ComponentSelector.toModuleIdentifiers(): Iterable { val componentId = this as? ModuleComponentIdentifier - componentId?.toSingleModuleIdentifier() == id + componentId?.toSingleKpmModuleIdentifier() == id } else -> false } diff --git a/libraries/tools/kotlin-gradle-plugin/src/common/kotlin/org/jetbrains/kotlin/gradle/plugin/mpp/pm20/FragmentGranularMetadataResolver.kt b/libraries/tools/kotlin-gradle-plugin/src/common/kotlin/org/jetbrains/kotlin/gradle/plugin/mpp/pm20/FragmentGranularMetadataResolver.kt index 614aca81e61..84b23c1c889 100644 --- a/libraries/tools/kotlin-gradle-plugin/src/common/kotlin/org/jetbrains/kotlin/gradle/plugin/mpp/pm20/FragmentGranularMetadataResolver.kt +++ b/libraries/tools/kotlin-gradle-plugin/src/common/kotlin/org/jetbrains/kotlin/gradle/plugin/mpp/pm20/FragmentGranularMetadataResolver.kt @@ -14,9 +14,9 @@ import org.jetbrains.kotlin.utils.addToStdlib.flattenTo import java.io.File import java.util.* -internal class FragmentGranularMetadataResolver( - private val requestingFragment: KpmGradleFragment, - private val refinesParentResolvers: Lazy> +internal class GradleKpmFragmentGranularMetadataResolver( + private val requestingFragment: GradleKpmFragment, + private val refinesParentResolvers: Lazy> ) { val resolutions: Iterable by lazy { doResolveMetadataDependencies() @@ -26,33 +26,33 @@ internal class FragmentGranularMetadataResolver( get() = requestingFragment.containingModule.project private val parentResultsByModuleIdentifier: Map> by lazy { - refinesParentResolvers.value.flatMap { it.resolutions }.groupBy { it.dependency.toSingleModuleIdentifier() } + refinesParentResolvers.value.flatMap { it.resolutions }.groupBy { it.dependency.toSingleKpmModuleIdentifier() } } - private val moduleResolver = KpmGradleModuleDependencyResolver.getForCurrentBuild(project) - private val variantResolver = GradleModuleVariantResolver.getForCurrentBuild(project) - private val fragmentResolver = DefaultModuleFragmentsResolver(variantResolver) - private val dependencyGraphResolver = KpmGradleDependencyGraphResolver(moduleResolver) + private val moduleResolver = GradleKpmModuleDependencyResolver.getForCurrentBuild(project) + private val variantResolver = KpmGradleModuleVariantResolver.getForCurrentBuild(project) + private val fragmentResolver = KpmDefaultFragmentsResolver(variantResolver) + private val dependencyGraphResolver = GradleKpmDependencyGraphResolver(moduleResolver) private fun doResolveMetadataDependencies(): Iterable { val configurationToResolve = configurationToResolveMetadataDependencies(project, requestingFragment.containingModule) val resolvedComponentsByModuleId = - configurationToResolve.incoming.resolutionResult.allComponents.associateBy { it.toSingleModuleIdentifier() } + configurationToResolve.incoming.resolutionResult.allComponents.associateBy { it.toSingleKpmModuleIdentifier() } val resolvedDependenciesByModuleId = configurationToResolve.incoming.resolutionResult.allDependencies.filterIsInstance() - .flatMap { dependency -> dependency.requested.toModuleIdentifiers().map { id -> id to dependency } }.toMap() + .flatMap { dependency -> dependency.requested.toKpmModuleIdentifiers().map { id -> id to dependency } }.toMap() val dependencyGraph = dependencyGraphResolver.resolveDependencyGraph(requestingFragment.containingModule) if (dependencyGraph is KpmDependencyGraphResolution.Unknown) error("unexpected failure in dependency graph resolution for $requestingFragment in $project") - dependencyGraph as KpmGradleDependencyGraph // refactor the type hierarchy to avoid this downcast? FIXME? + dependencyGraph as GradleKpmDependencyGraph // refactor the type hierarchy to avoid this downcast? FIXME? val fragmentsToInclude = requestingFragment.withRefinesClosure val requestedDependencies = dependencyGraph.root.dependenciesByFragment.filterKeys { it in fragmentsToInclude }.values.flatten() - val visited = mutableSetOf() - val fragmentResolutionQueue = ArrayDeque(requestedDependencies) + val visited = mutableSetOf() + val fragmentResolutionQueue = ArrayDeque(requestedDependencies) val results = mutableSetOf() @@ -63,7 +63,7 @@ internal class FragmentGranularMetadataResolver( val dependencyModule = dependencyNode.module val fragmentVisibility = fragmentResolver.getChosenFragments(requestingFragment, dependencyModule) - val chosenFragments = fragmentVisibility as? FragmentResolution.ChosenFragments + val chosenFragments = fragmentVisibility as? KpmFragmentResolution.ChosenFragments val visibleFragments = chosenFragments?.visibleFragments?.toList().orEmpty() val visibleTransitiveDependencies = @@ -74,7 +74,7 @@ internal class FragmentGranularMetadataResolver( val resolvedComponentResult = dependencyNode.selectedComponent val isResolvedAsProject = resolvedComponentResult.toProjectOrNull(project) val result = when (dependencyModule) { - is KpmExternalPlainModule -> { + is GradleKpmExternalPlainModule -> { MetadataDependencyResolution.KeepOriginalDependency(resolvedComponentResult, isResolvedAsProject) } else -> run { @@ -83,7 +83,7 @@ internal class FragmentGranularMetadataResolver( val visibleFragmentNames = visibleFragments.map { it.fragmentName }.toSet() val visibleFragmentNamesExcludingVisibleByParents = - visibleFragmentNames.minus(fragmentsNamesVisibleByParents(metadataSourceComponent.toSingleModuleIdentifier())) + visibleFragmentNames.minus(fragmentsNamesVisibleByParents(metadataSourceComponent.toSingleKpmModuleIdentifier())) /* We can safely assume that a metadata extractor can be created, because the project structure metadata already @@ -96,7 +96,7 @@ internal class FragmentGranularMetadataResolver( "the presence of a proper Kotlin Module" ) - val projectStructureMetadata = (dependencyModule as? KpmExternalImportedModule)?.projectStructureMetadata + val projectStructureMetadata = (dependencyModule as? GradleKpmExternalImportedModule)?.projectStructureMetadata ?: checkNotNull(projectStructureMetadataExtractor.getProjectStructureMetadata()) @@ -111,7 +111,7 @@ internal class FragmentGranularMetadataResolver( projectStructureMetadata = projectStructureMetadata, primaryArtifactFile = projectStructureMetadataExtractor.primaryArtifactFile, hostSpecificArtifactsBySourceSet = if ( - dependencyModule is KpmExternalImportedModule && chosenFragments != null + dependencyModule is GradleKpmExternalImportedModule && chosenFragments != null ) resolveHostSpecificMetadataArtifacts(dependencyModule, chosenFragments) else emptyMap(), ).asMetadataProvider() } @@ -147,21 +147,21 @@ internal class FragmentGranularMetadataResolver( } private fun resolveHostSpecificMetadataArtifacts( - dependencyModule: KpmExternalImportedModule, - chosenFragments: FragmentResolution.ChosenFragments, + dependencyModule: GradleKpmExternalImportedModule, + chosenFragments: KpmFragmentResolution.ChosenFragments, ): Map { val visibleFragments = chosenFragments.visibleFragments val variantResolutions = chosenFragments.variantResolutions val hostSpecificFragments = dependencyModule.hostSpecificFragments return visibleFragments.intersect(hostSpecificFragments).mapNotNull { hostSpecificFragment -> val relevantVariantResolution = variantResolutions - .filterIsInstance() + .filterIsInstance() // find some of our variants that resolved a dependency's variant containing the fragment .find { hostSpecificFragment in it.chosenVariant.withRefinesClosure } // resolve the dependencies of that variant getting the host-specific metadata artifact relevantVariantResolution?.let { resolution -> val configurationResolvingPlatformVariant = - (resolution.requestingVariant as KpmGradleVariant).compileDependenciesConfiguration + (resolution.requestingVariant as GradleKpmVariant).compileDependenciesConfiguration val hostSpecificArtifact = ResolvedMppVariantsProvider.get(project) .getHostSpecificMetadataArtifactByRootModule( dependencyModule.moduleIdentifier, diff --git a/libraries/tools/kotlin-gradle-plugin/src/common/kotlin/org/jetbrains/kotlin/gradle/plugin/mpp/pm20/FragmentGranularMetadataResolverFactory.kt b/libraries/tools/kotlin-gradle-plugin/src/common/kotlin/org/jetbrains/kotlin/gradle/plugin/mpp/pm20/FragmentGranularMetadataResolverFactory.kt index 0c949cd259e..99ff4cabd7c 100644 --- a/libraries/tools/kotlin-gradle-plugin/src/common/kotlin/org/jetbrains/kotlin/gradle/plugin/mpp/pm20/FragmentGranularMetadataResolverFactory.kt +++ b/libraries/tools/kotlin-gradle-plugin/src/common/kotlin/org/jetbrains/kotlin/gradle/plugin/mpp/pm20/FragmentGranularMetadataResolverFactory.kt @@ -5,11 +5,11 @@ package org.jetbrains.kotlin.gradle.plugin.mpp.pm20 -internal class FragmentGranularMetadataResolverFactory { - private val resolvers = mutableMapOf() +internal class GradleKpmFragmentGranularMetadataResolverFactory { + private val resolvers = mutableMapOf() - fun getOrCreate(fragment: KpmGradleFragment): FragmentGranularMetadataResolver = resolvers.getOrPut(fragment) { - FragmentGranularMetadataResolver(fragment, lazy { + fun getOrCreate(fragment: GradleKpmFragment): GradleKpmFragmentGranularMetadataResolver = resolvers.getOrPut(fragment) { + GradleKpmFragmentGranularMetadataResolver(fragment, lazy { fragment.refinesClosure.map { refinesFragment -> getOrCreate(refinesFragment) } diff --git a/libraries/tools/kotlin-gradle-plugin/src/common/kotlin/org/jetbrains/kotlin/gradle/plugin/mpp/pm20/FragmentSourcesProvider.kt b/libraries/tools/kotlin-gradle-plugin/src/common/kotlin/org/jetbrains/kotlin/gradle/plugin/mpp/pm20/FragmentSourcesProvider.kt index 53c07034426..fce5f322b7e 100644 --- a/libraries/tools/kotlin-gradle-plugin/src/common/kotlin/org/jetbrains/kotlin/gradle/plugin/mpp/pm20/FragmentSourcesProvider.kt +++ b/libraries/tools/kotlin-gradle-plugin/src/common/kotlin/org/jetbrains/kotlin/gradle/plugin/mpp/pm20/FragmentSourcesProvider.kt @@ -13,30 +13,30 @@ import java.io.File typealias SourceRoots = Iterable typealias SourceRootsProvider = Provider typealias MultipleSourceRootsProvider = Provider> -typealias SourceRootsProvidersByFragment = Map +typealias SourceRootsProvidersByFragment = Map /** Note: the API is [Provider]-based rather than FileCollection-based because FileCollection API erases the internal structure of the * file sets, and this internal structure is currently needed for correctly inferring Java source roots from the sources added to the * JVM compilations (it is important to pass sources in SourceDirectorySets) */ -open class FragmentSourcesProvider { +open class GradleKpmFragmentSourcesProvider { protected open fun getSourcesFromFragmentsAsMap( - fragments: Iterable + fragments: Iterable ): SourceRootsProvidersByFragment = fragments.associateWith { it.project.provider { it.kotlinSourceRoots } } - open fun getFragmentOwnSources(fragment: KpmGradleFragment): SourceRootsProvider = + open fun getFragmentOwnSources(fragment: GradleKpmFragment): SourceRootsProvider = getSourcesFromFragmentsAsMap(listOf(fragment)).values.single() - open fun getAllFragmentSourcesAsMap(module: KpmGradleModule): SourceRootsProvidersByFragment = + open fun getAllFragmentSourcesAsMap(module: GradleKpmModule): SourceRootsProvidersByFragment = getSourcesFromFragmentsAsMap(module.fragments) - open fun getSourcesFromRefinesClosureAsMap(fragment: KpmGradleFragment): SourceRootsProvidersByFragment = + open fun getSourcesFromRefinesClosureAsMap(fragment: GradleKpmFragment): SourceRootsProvidersByFragment = getSourcesFromFragmentsAsMap(fragment.withRefinesClosure) - open fun getSourcesFromRefinesClosure(fragment: KpmGradleFragment): MultipleSourceRootsProvider = + open fun getSourcesFromRefinesClosure(fragment: GradleKpmFragment): MultipleSourceRootsProvider = fragment.project.provider { getSourcesFromRefinesClosureAsMap(fragment).values } - open fun getCommonSourcesFromRefinesClosure(fragment: KpmGradleFragment): MultipleSourceRootsProvider { + open fun getCommonSourcesFromRefinesClosure(fragment: GradleKpmFragment): MultipleSourceRootsProvider { val containingModule = fragment.containingModule val project = containingModule.project getSourcesFromRefinesClosureAsMap(fragment) diff --git a/libraries/tools/kotlin-gradle-plugin/src/common/kotlin/org/jetbrains/kotlin/gradle/plugin/mpp/pm20/GradleKpmCachingModuleDependencyResolver.kt b/libraries/tools/kotlin-gradle-plugin/src/common/kotlin/org/jetbrains/kotlin/gradle/plugin/mpp/pm20/GradleKpmCachingModuleDependencyResolver.kt new file mode 100644 index 00000000000..3d10e1a597b --- /dev/null +++ b/libraries/tools/kotlin-gradle-plugin/src/common/kotlin/org/jetbrains/kotlin/gradle/plugin/mpp/pm20/GradleKpmCachingModuleDependencyResolver.kt @@ -0,0 +1,23 @@ +/* + * 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.jetbrains.kotlin.project.model.KpmModule +import org.jetbrains.kotlin.project.model.KpmModuleDependency +import org.jetbrains.kotlin.project.model.KpmModuleDependencyResolver +import java.util.* + +class GradleKpmCachingModuleDependencyResolver(private val actualResolver: KpmModuleDependencyResolver) : KpmModuleDependencyResolver { + private val cacheByRequestingModule = WeakHashMap>() + + private fun cacheForRequestingModule(requestingModule: KpmModule) = + cacheByRequestingModule.getOrPut(requestingModule) { mutableMapOf() } + + override fun resolveDependency(requestingModule: KpmModule, moduleDependency: KpmModuleDependency): KpmModule? = + cacheForRequestingModule(requestingModule).getOrPut(moduleDependency) { + actualResolver.resolveDependency(requestingModule, moduleDependency) + } +} diff --git a/libraries/tools/kotlin-gradle-plugin/src/common/kotlin/org/jetbrains/kotlin/gradle/plugin/mpp/pm20/GradleKpmCompilerPlugin.kt b/libraries/tools/kotlin-gradle-plugin/src/common/kotlin/org/jetbrains/kotlin/gradle/plugin/mpp/pm20/GradleKpmCompilerPlugin.kt index f62fd56df54..7c424645950 100644 --- a/libraries/tools/kotlin-gradle-plugin/src/common/kotlin/org/jetbrains/kotlin/gradle/plugin/mpp/pm20/GradleKpmCompilerPlugin.kt +++ b/libraries/tools/kotlin-gradle-plugin/src/common/kotlin/org/jetbrains/kotlin/gradle/plugin/mpp/pm20/GradleKpmCompilerPlugin.kt @@ -18,17 +18,17 @@ import org.jetbrains.kotlin.project.model.* import java.io.File internal fun Project.compilerPluginProviderForMetadata( - fragment: KpmGradleFragment, + fragment: GradleKpmFragment, compilationData: KotlinCommonFragmentMetadataCompilationData ) = compilerPluginDataProvider(compilationData, fragment::metadataCompilationPluginData) internal fun Project.compilerPluginProviderForNativeMetadata( - fragment: KpmGradleFragment, + fragment: GradleKpmFragment, compilationData: KotlinNativeFragmentMetadataCompilationData ) = compilerPluginDataProvider(compilationData, fragment::nativeMetadataCompilationPluginData) internal fun Project.compilerPluginProviderForPlatformCompilation( - variant: KpmGradleVariant, + variant: GradleKpmVariant, compilationData: KotlinCompilationData<*> ) = compilerPluginDataProvider(compilationData, variant::platformCompilationPluginData) @@ -46,7 +46,7 @@ private fun Project.compilerPluginDataProvider( }.apply { disallowUnsafeRead() } } -internal class CompilerPluginOptionsBuilder( +private class CompilerPluginOptionsBuilder( private val project: Project, private val configurationName: String ) { diff --git a/libraries/tools/kotlin-gradle-plugin/src/common/kotlin/org/jetbrains/kotlin/gradle/plugin/mpp/pm20/GradleKpmComponentResultCachingResolver.kt b/libraries/tools/kotlin-gradle-plugin/src/common/kotlin/org/jetbrains/kotlin/gradle/plugin/mpp/pm20/GradleKpmComponentResultCachingResolver.kt new file mode 100644 index 00000000000..bd004c5940e --- /dev/null +++ b/libraries/tools/kotlin-gradle-plugin/src/common/kotlin/org/jetbrains/kotlin/gradle/plugin/mpp/pm20/GradleKpmComponentResultCachingResolver.kt @@ -0,0 +1,45 @@ +/* + * 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.result.ResolvedComponentResult +import org.jetbrains.kotlin.gradle.plugin.getKotlinPluginVersion +import org.jetbrains.kotlin.gradle.utils.getOrPutRootProjectProperty +import org.jetbrains.kotlin.project.model.KpmModuleDependency +import org.jetbrains.kotlin.project.model.KpmModuleIdentifier + +open class GradleKpmComponentResultCachingResolver { + private val cachedResultsByRequestingModule = mutableMapOf>() + + protected open fun configurationToResolve(requestingModule: GradleKpmModule): Configuration = + configurationToResolveMetadataDependencies(requestingModule.project, requestingModule) + + protected open fun resolveDependencies(module: GradleKpmModule): Map { + val allComponents = configurationToResolve(module).incoming.resolutionResult.allComponents + // FIXME handle multi-component results + return allComponents.flatMap { component -> component.toKpmModuleIdentifiers().map { it to component } }.toMap() + } + + private fun getResultsForModule(module: GradleKpmModule): Map = + cachedResultsByRequestingModule.getOrPut(module) { resolveDependencies(module) } + + fun resolveModuleDependencyAsComponentResult( + requestingModule: GradleKpmModule, + moduleDependency: KpmModuleDependency + ): ResolvedComponentResult? = + getResultsForModule(requestingModule)[moduleDependency.moduleIdentifier] + + companion object { + fun getForCurrentBuild(project: Project): GradleKpmComponentResultCachingResolver { + val extraPropertyName = "org.jetbrains.kotlin.dependencyResolution.gradleComponentResolver.${project.getKotlinPluginVersion()}" + return project.getOrPutRootProjectProperty(extraPropertyName) { + GradleKpmComponentResultCachingResolver() + } + } + } +} diff --git a/libraries/tools/kotlin-gradle-plugin/src/common/kotlin/org/jetbrains/kotlin/gradle/plugin/mpp/pm20/GradleKpmDefaultSingleMavenPublishedModuleHolder.kt b/libraries/tools/kotlin-gradle-plugin/src/common/kotlin/org/jetbrains/kotlin/gradle/plugin/mpp/pm20/GradleKpmDefaultSingleMavenPublishedModuleHolder.kt new file mode 100644 index 00000000000..9b14f508f5a --- /dev/null +++ b/libraries/tools/kotlin-gradle-plugin/src/common/kotlin/org/jetbrains/kotlin/gradle/plugin/mpp/pm20/GradleKpmDefaultSingleMavenPublishedModuleHolder.kt @@ -0,0 +1,37 @@ +/* + * 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.publish.maven.MavenPublication +import org.jetbrains.kotlin.gradle.plugin.mpp.MavenPublicationCoordinatesProvider +import org.jetbrains.kotlin.gradle.plugin.mpp.pm20.util.ComputedCapability + +class GradleKpmDefaultSingleMavenPublishedModuleHolder( + private var module: GradleKpmModule, override val defaultPublishedModuleSuffix: String? +) : GradleKpmSingleMavenPublishedModuleHolder { + private val project get() = module.project + + private var assignedMavenPublication: MavenPublication? = null + + private val publicationAssignedHandlers = mutableListOf<(MavenPublication) -> Unit>() + + override fun assignMavenPublication(publication: MavenPublication) { + if (assignedMavenPublication != null) error("already assigned publication $publication") + assignedMavenPublication = publication + publicationAssignedHandlers.forEach { it(publication) } + } + + override fun whenPublicationAssigned(handlePublication: (MavenPublication) -> Unit) { + assignedMavenPublication?.let(handlePublication) ?: publicationAssignedHandlers.add(handlePublication) + } + + override val publishedMavenModuleCoordinates: PublishedModuleCoordinatesProvider = MavenPublicationCoordinatesProvider( + project, + { assignedMavenPublication }, + defaultPublishedModuleSuffix, + capabilities = listOfNotNull(ComputedCapability.capabilityStringFromModule(module)) + ) +} diff --git a/libraries/tools/kotlin-gradle-plugin/src/common/kotlin/org/jetbrains/kotlin/gradle/plugin/mpp/pm20/GradleKpmNativeVariantCompilationData.kt b/libraries/tools/kotlin-gradle-plugin/src/common/kotlin/org/jetbrains/kotlin/gradle/plugin/mpp/pm20/GradleKpmNativeVariantCompilationData.kt new file mode 100644 index 00000000000..31026c7dd4b --- /dev/null +++ b/libraries/tools/kotlin-gradle-plugin/src/common/kotlin/org/jetbrains/kotlin/gradle/plugin/mpp/pm20/GradleKpmNativeVariantCompilationData.kt @@ -0,0 +1,29 @@ +/* + * 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.jetbrains.kotlin.gradle.dsl.KotlinCommonOptions +import org.jetbrains.kotlin.gradle.plugin.mpp.NativeCompileOptions +import org.jetbrains.kotlin.konan.target.KonanTarget + +internal class GradleKpmNativeVariantCompilationData( + val variant: GradleKpmNativeVariantInternal +) : GradleKpmVariantCompilationDataInternal, KotlinNativeCompilationData { + override val konanTarget: KonanTarget + get() = variant.konanTarget + + override val enableEndorsedLibs: Boolean + get() = variant.enableEndorsedLibraries + + override val project: Project + get() = variant.containingModule.project + + override val owner: GradleKpmNativeVariant + get() = variant + + override val kotlinOptions: KotlinCommonOptions = NativeCompileOptions { variant.languageSettings } +} diff --git a/libraries/tools/kotlin-gradle-plugin/src/common/kotlin/org/jetbrains/kotlin/gradle/plugin/mpp/pm20/GradleKpmNativeVariantConstructor.kt b/libraries/tools/kotlin-gradle-plugin/src/common/kotlin/org/jetbrains/kotlin/gradle/plugin/mpp/pm20/GradleKpmNativeVariantConstructor.kt new file mode 100644 index 00000000000..e5dc7fff3e5 --- /dev/null +++ b/libraries/tools/kotlin-gradle-plugin/src/common/kotlin/org/jetbrains/kotlin/gradle/plugin/mpp/pm20/GradleKpmNativeVariantConstructor.kt @@ -0,0 +1,37 @@ +/* + * 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.jetbrains.kotlin.konan.target.KonanTarget + +class GradleKpmNativeVariantConstructor( + val konanTarget: KonanTarget, + val variantClass: Class, + private val constructor: ( + containingModule: GradleKpmModule, + fragmentName: String, + dependencyConfigurations: GradleKpmFragmentDependencyConfigurations, + compileDependencyConfiguration: Configuration, + apiElementsConfiguration: Configuration, + hostSpecificMetadataElementsConfiguration: Configuration? + ) -> T +) { + operator fun invoke( + containingModule: GradleKpmModule, + fragmentName: String, + dependencyConfigurations: GradleKpmFragmentDependencyConfigurations, + compileDependencyConfiguration: Configuration, + apiElementsConfiguration: Configuration, + hostSpecificMetadataElementsConfiguration: Configuration? + ): T = constructor( + containingModule, fragmentName, + dependencyConfigurations, + compileDependencyConfiguration, + apiElementsConfiguration, + hostSpecificMetadataElementsConfiguration + ) +} diff --git a/libraries/tools/kotlin-gradle-plugin/src/common/kotlin/org/jetbrains/kotlin/gradle/plugin/mpp/pm20/GradleKpmPublishedVariantWithRuntime.kt b/libraries/tools/kotlin-gradle-plugin/src/common/kotlin/org/jetbrains/kotlin/gradle/plugin/mpp/pm20/GradleKpmPublishedVariantWithRuntime.kt new file mode 100644 index 00000000000..96f789cb3a6 --- /dev/null +++ b/libraries/tools/kotlin-gradle-plugin/src/common/kotlin/org/jetbrains/kotlin/gradle/plugin/mpp/pm20/GradleKpmPublishedVariantWithRuntime.kt @@ -0,0 +1,37 @@ +/* + * 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.jetbrains.kotlin.gradle.plugin.mpp.publishedConfigurationName +import org.jetbrains.kotlin.gradle.utils.dashSeparatedName + +abstract class GradleKpmPublishedVariantWithRuntime( + containingModule: GradleKpmModule, fragmentName: String, + dependencyConfigurations: GradleKpmFragmentDependencyConfigurations, + compileDependencyConfiguration: Configuration, + apiElementsConfiguration: Configuration, + runtimeDependencyConfiguration: Configuration, + runtimeElementsConfiguration: Configuration +) : GradleKpmVariantWithRuntimeInternal( + containingModule = containingModule, + fragmentName = fragmentName, + dependencyConfigurations = dependencyConfigurations, + compileDependencyConfiguration = compileDependencyConfiguration, + apiElementsConfiguration = apiElementsConfiguration, + runtimeDependenciesConfiguration = runtimeDependencyConfiguration, + runtimeElementsConfiguration = runtimeElementsConfiguration +), GradleKpmSingleMavenPublishedModuleHolder by GradleKpmDefaultSingleMavenPublishedModuleHolder( + containingModule, defaultModuleSuffix(containingModule, fragmentName) +) { + override val gradleVariantNames: Set + get() = listOf(apiElementsConfiguration.name, runtimeElementsConfiguration.name).flatMapTo(mutableSetOf()) { + listOf(it, publishedConfigurationName(it)) + } +} + +private fun defaultModuleSuffix(module: GradleKpmModule, variantName: String): String = + dashSeparatedName(variantName, module.moduleClassifier) diff --git a/libraries/tools/kotlin-gradle-plugin/src/common/kotlin/org/jetbrains/kotlin/gradle/plugin/mpp/pm20/GradleKpmVariantWithRuntimeInternal.kt b/libraries/tools/kotlin-gradle-plugin/src/common/kotlin/org/jetbrains/kotlin/gradle/plugin/mpp/pm20/GradleKpmVariantWithRuntimeInternal.kt new file mode 100644 index 00000000000..f4c48648bf6 --- /dev/null +++ b/libraries/tools/kotlin-gradle-plugin/src/common/kotlin/org/jetbrains/kotlin/gradle/plugin/mpp/pm20/GradleKpmVariantWithRuntimeInternal.kt @@ -0,0 +1,33 @@ +/* + * 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.file.ConfigurableFileCollection +import org.gradle.api.file.FileCollection + +abstract class GradleKpmVariantWithRuntimeInternal( + containingModule: GradleKpmModule, + fragmentName: String, + dependencyConfigurations: GradleKpmFragmentDependencyConfigurations, + compileDependencyConfiguration: Configuration, + apiElementsConfiguration: Configuration, + final override val runtimeDependenciesConfiguration: Configuration, + final override val runtimeElementsConfiguration: Configuration +) : GradleKpmVariantInternal( + containingModule = containingModule, + fragmentName = fragmentName, + dependencyConfigurations = dependencyConfigurations, + compileDependenciesConfiguration = compileDependencyConfiguration, + apiElementsConfiguration = apiElementsConfiguration +), GradleKpmVariantWithRuntime { + // TODO deduplicate with KotlinCompilation? + + override var runtimeDependencyFiles: FileCollection = project.files(runtimeDependenciesConfiguration) + + override val runtimeFiles: ConfigurableFileCollection = + project.files(listOf({ compilationOutputs.allOutputs }, { runtimeDependencyFiles })) +} diff --git a/libraries/tools/kotlin-gradle-plugin/src/common/kotlin/org/jetbrains/kotlin/gradle/plugin/mpp/pm20/GradlePlugin.kt b/libraries/tools/kotlin-gradle-plugin/src/common/kotlin/org/jetbrains/kotlin/gradle/plugin/mpp/pm20/GradlePlugin.kt index 88ffb3ba0a5..8e240b93197 100644 --- a/libraries/tools/kotlin-gradle-plugin/src/common/kotlin/org/jetbrains/kotlin/gradle/plugin/mpp/pm20/GradlePlugin.kt +++ b/libraries/tools/kotlin-gradle-plugin/src/common/kotlin/org/jetbrains/kotlin/gradle/plugin/mpp/pm20/GradlePlugin.kt @@ -44,13 +44,13 @@ abstract class KotlinPm20GradlePlugin @Inject constructor( private fun createDefaultModules(project: Project) { project.pm20Extension.apply { - modules.create(KpmGradleModule.MAIN_MODULE_NAME) - modules.create(KpmGradleModule.TEST_MODULE_NAME) + modules.create(GradleKpmModule.MAIN_MODULE_NAME) + modules.create(GradleKpmModule.TEST_MODULE_NAME) main { makePublic() } } } - private fun setupPublicationForModule(module: KpmGradleModule) { + private fun setupPublicationForModule(module: GradleKpmModule) { val project = module.project val metadataElements = project.configurations.getByName(metadataElementsConfigurationName(module)) @@ -87,62 +87,62 @@ abstract class KotlinPm20GradlePlugin @Inject constructor( } } -fun rootPublicationComponentName(module: KpmGradleModule) = +fun rootPublicationComponentName(module: GradleKpmModule) = module.disambiguateName("root") open class KotlinPm20ProjectExtension(project: Project) : KotlinTopLevelExtension(project) { - internal val kpmModelContainer = DefaultKpmGradleProjectModelContainer.create(project) + internal val kpmModelContainer = GradleKpmDefaultProjectModelContainer.create(project) internal val ideaKotlinProjectModelBuilder by lazy { IdeaKotlinProjectModelBuilder.default(this) } - val modules: NamedDomainObjectContainer + val modules: NamedDomainObjectContainer get() = project.kpmModules @Suppress("unused") // DSL function - fun mainAndTest(configure: KpmGradleModule.() -> Unit) { + fun mainAndTest(configure: GradleKpmModule.() -> Unit) { main(configure) test(configure) } - val main: KpmGradleModule - get() = modules.getByName(KpmGradleModule.MAIN_MODULE_NAME) + val main: GradleKpmModule + get() = modules.getByName(GradleKpmModule.MAIN_MODULE_NAME) - val test: KpmGradleModule - get() = modules.getByName(KpmGradleModule.TEST_MODULE_NAME) + val test: GradleKpmModule + get() = modules.getByName(GradleKpmModule.TEST_MODULE_NAME) - fun main(configure: KpmGradleModule.() -> Unit = { }) = main.apply(configure) - fun test(configure: KpmGradleModule.() -> Unit = { }) = test.apply(configure) + fun main(configure: GradleKpmModule.() -> Unit = { }) = main.apply(configure) + fun test(configure: GradleKpmModule.() -> Unit = { }) = test.apply(configure) @PublishedApi @JvmName("isAllowCommonizer") internal fun isAllowCommonizerForIde(@Suppress("UNUSED_PARAMETER") project: Project): Boolean = false } -val KpmGradleModule.jvm: KpmJvmVariant - get() = fragments.maybeCreate("jvm", KpmJvmVariant::class.java) +val GradleKpmModule.jvm: GradleKpmJvmVariant + get() = fragments.maybeCreate("jvm", GradleKpmJvmVariant::class.java) -fun KpmGradleModule.jvm(configure: KpmJvmVariant.() -> Unit): KpmJvmVariant = jvm.apply(configure) +fun GradleKpmModule.jvm(configure: GradleKpmJvmVariant.() -> Unit): GradleKpmJvmVariant = jvm.apply(configure) -fun KotlinPm20ProjectExtension.jvm(configure: KotlinFragmentSlice.() -> Unit) { - val getOrCreateVariant: KpmGradleModule.() -> KpmJvmVariant = { jvm } +fun KotlinPm20ProjectExtension.jvm(configure: KotlinFragmentSlice.() -> Unit) { + val getOrCreateVariant: GradleKpmModule.() -> GradleKpmJvmVariant = { jvm } mainAndTest { getOrCreateVariant(this) } val slice = KotlinFragmentSlice(this, getOrCreateVariant) configure(slice) } -open class KotlinFragmentSlice( +open class KotlinFragmentSlice( val pm20ProjectExtension: KotlinPm20ProjectExtension, - val getOrCreateFragment: (KpmGradleModule) -> T + val getOrCreateFragment: (GradleKpmModule) -> T ) { fun inMain(configure: T.() -> Unit) { - pm20ProjectExtension.modules.getByName(KpmGradleModule.MAIN_MODULE_NAME).apply { + pm20ProjectExtension.modules.getByName(GradleKpmModule.MAIN_MODULE_NAME).apply { getOrCreateFragment(this).configure() } } fun inTest(configure: T.() -> Unit) { - pm20ProjectExtension.modules.getByName(KpmGradleModule.TEST_MODULE_NAME).apply { + pm20ProjectExtension.modules.getByName(GradleKpmModule.TEST_MODULE_NAME).apply { getOrCreateFragment(this).configure() } } @@ -161,11 +161,11 @@ open class KotlinFragmentSlice( pm20ProjectExtension.modules.getByName(moduleName).apply { getOrCreateFragment(this).configure() } } - fun inModule(module: NamedDomainObjectProvider, configure: T.() -> Unit) { + fun inModule(module: NamedDomainObjectProvider, configure: T.() -> Unit) { module.get().apply { inModule(this, configure) } } - fun inModule(module: KpmGradleModule, configure: T.() -> Unit) { + fun inModule(module: GradleKpmModule, configure: T.() -> Unit) { getOrCreateFragment(module).configure() } } diff --git a/libraries/tools/kotlin-gradle-plugin/src/common/kotlin/org/jetbrains/kotlin/gradle/plugin/mpp/pm20/KotlinCommonFragmentFactory.kt b/libraries/tools/kotlin-gradle-plugin/src/common/kotlin/org/jetbrains/kotlin/gradle/plugin/mpp/pm20/KotlinCommonFragmentFactory.kt index d4446638209..d80a1f262e3 100644 --- a/libraries/tools/kotlin-gradle-plugin/src/common/kotlin/org/jetbrains/kotlin/gradle/plugin/mpp/pm20/KotlinCommonFragmentFactory.kt +++ b/libraries/tools/kotlin-gradle-plugin/src/common/kotlin/org/jetbrains/kotlin/gradle/plugin/mpp/pm20/KotlinCommonFragmentFactory.kt @@ -9,35 +9,35 @@ package org.jetbrains.kotlin.gradle.plugin.mpp.pm20 import org.jetbrains.kotlin.gradle.plugin.mpp.pm20.util.FragmentNameDisambiguation -typealias KotlinCommonFragmentFactory = KotlinGradleFragmentFactory +typealias GradleKpmCommonFragmentFactory = GradleKpmFragmentFactory -fun KotlinCommonFragmentFactory(module: KpmGradleModule): KotlinCommonFragmentFactory = - KotlinCommonFragmentFactory(KotlinCommonFragmentInstantiator(module)) +fun GradleKpmCommonFragmentFactory(module: GradleKpmModule): GradleKpmCommonFragmentFactory = + GradleKpmCommonFragmentFactory(GradleKpmCommonFragmentInstantiator(module)) -fun KotlinCommonFragmentFactory( - commonFragmentInstantiator: KotlinCommonFragmentInstantiator, - commonFragmentConfigurator: KotlinCommonFragmentConfigurator = KotlinCommonFragmentConfigurator() -): KotlinGradleFragmentFactory = KotlinGradleFragmentFactory( +fun GradleKpmCommonFragmentFactory( + commonFragmentInstantiator: GradleKpmCommonFragmentInstantiator, + commonFragmentConfigurator: GradleKpmCommonFragmentConfigurator = GradleKpmCommonFragmentConfigurator() +): GradleKpmFragmentFactory = GradleKpmFragmentFactory( fragmentInstantiator = commonFragmentInstantiator, fragmentConfigurator = commonFragmentConfigurator ) -class KotlinCommonFragmentInstantiator( - private val module: KpmGradleModule, - private val dependencyConfigurationsFactory: KotlinFragmentDependencyConfigurationsFactory = - DefaultKotlinFragmentDependencyConfigurationsFactory -) : KotlinGradleFragmentFactory.FragmentInstantiator { - override fun create(name: String): KpmGradleFragmentInternal { +class GradleKpmCommonFragmentInstantiator( + private val module: GradleKpmModule, + private val dependencyConfigurationsFactory: GradleKpmFragmentDependencyConfigurationsFactory = + GradleKpmDefaultFragmentDependencyConfigurationsFactory +) : GradleKpmFragmentFactory.FragmentInstantiator { + override fun create(name: String): GradleKpmFragmentInternal { val names = FragmentNameDisambiguation(module, name) - return KpmGradleFragmentInternal(module, name, dependencyConfigurationsFactory.create(module, names)) + return GradleKpmFragmentInternal(module, name, dependencyConfigurationsFactory.create(module, names)) } } -class KotlinCommonFragmentConfigurator( - private val sourceDirectoriesSetup: KotlinSourceDirectoriesConfigurator = - DefaultKotlinSourceDirectoriesConfigurator -) : KotlinGradleFragmentFactory.FragmentConfigurator { - override fun configure(fragment: KpmGradleFragmentInternal) { +class GradleKpmCommonFragmentConfigurator( + private val sourceDirectoriesSetup: GradleKpmSourceDirectoriesConfigurator = + GradleKpmDefaultSourceDirectoriesConfigurator +) : GradleKpmFragmentFactory.FragmentConfigurator { + override fun configure(fragment: GradleKpmFragmentInternal) { sourceDirectoriesSetup.configure(fragment) } } diff --git a/libraries/tools/kotlin-gradle-plugin/src/common/kotlin/org/jetbrains/kotlin/gradle/plugin/mpp/pm20/KotlinCompilationConfigurator.kt b/libraries/tools/kotlin-gradle-plugin/src/common/kotlin/org/jetbrains/kotlin/gradle/plugin/mpp/pm20/KotlinCompilationConfigurator.kt index bc4a9ea5cee..aabed20aad0 100644 --- a/libraries/tools/kotlin-gradle-plugin/src/common/kotlin/org/jetbrains/kotlin/gradle/plugin/mpp/pm20/KotlinCompilationConfigurator.kt +++ b/libraries/tools/kotlin-gradle-plugin/src/common/kotlin/org/jetbrains/kotlin/gradle/plugin/mpp/pm20/KotlinCompilationConfigurator.kt @@ -7,24 +7,22 @@ package org.jetbrains.kotlin.gradle.plugin.mpp.pm20 import org.gradle.api.tasks.TaskProvider -interface KotlinCompileTaskConfigurator { +interface GradleKpmCompileTaskConfigurator { fun registerCompileTasks(variant: T): TaskProvider<*> } -object KotlinJvmCompileTaskConfigurator : KotlinCompileTaskConfigurator { - override fun registerCompileTasks(variant: KpmJvmVariant): TaskProvider<*> { +object GradleKpmJvmCompileTaskConfigurator : GradleKpmCompileTaskConfigurator { + override fun registerCompileTasks(variant: GradleKpmJvmVariant): TaskProvider<*> { val compilationData = variant.compilationData LifecycleTasksManager(variant.project).registerClassesTask(compilationData) - return KotlinCompilationTaskConfigurator(variant.project).createKotlinJvmCompilationTask(variant, compilationData) + return GradleKpmCompilationTaskConfigurator(variant.project).createKotlinJvmCompilationTask(variant, compilationData) } } -object KotlinNativeCompileTaskConfigurator : KotlinCompileTaskConfigurator { - override fun registerCompileTasks(variant: KpmNativeVariantInternal): TaskProvider<*> { +object GradleKpmNativeCompileTaskConfigurator : GradleKpmCompileTaskConfigurator { + override fun registerCompileTasks(variant: GradleKpmNativeVariantInternal): TaskProvider<*> { val compilationData = variant.compilationData LifecycleTasksManager(variant.project).registerClassesTask(compilationData) - return KotlinCompilationTaskConfigurator(variant.project).createKotlinNativeCompilationTask(variant, compilationData) + return GradleKpmCompilationTaskConfigurator(variant.project).createKotlinNativeCompilationTask(variant, compilationData) } } - - diff --git a/libraries/tools/kotlin-gradle-plugin/src/common/kotlin/org/jetbrains/kotlin/gradle/plugin/mpp/pm20/KotlinCompilationData.kt b/libraries/tools/kotlin-gradle-plugin/src/common/kotlin/org/jetbrains/kotlin/gradle/plugin/mpp/pm20/KotlinCompilationData.kt index b3b97a11c75..de16e965d49 100644 --- a/libraries/tools/kotlin-gradle-plugin/src/common/kotlin/org/jetbrains/kotlin/gradle/plugin/mpp/pm20/KotlinCompilationData.kt +++ b/libraries/tools/kotlin-gradle-plugin/src/common/kotlin/org/jetbrains/kotlin/gradle/plugin/mpp/pm20/KotlinCompilationData.kt @@ -10,15 +10,15 @@ import org.gradle.api.file.FileCollection import org.gradle.api.file.SourceDirectorySet import org.jetbrains.kotlin.gradle.dsl.KotlinCommonOptions import org.jetbrains.kotlin.gradle.plugin.* -import org.jetbrains.kotlin.gradle.plugin.mpp.GradleModuleVariantResolver +import org.jetbrains.kotlin.gradle.plugin.mpp.KpmGradleModuleVariantResolver import org.jetbrains.kotlin.gradle.plugin.mpp.isMain import org.jetbrains.kotlin.gradle.plugin.mpp.pm20.util.allDependencyModules import org.jetbrains.kotlin.gradle.plugin.mpp.pm20.util.disambiguateName import org.jetbrains.kotlin.gradle.utils.filesProvider import org.jetbrains.kotlin.gradle.utils.lowerCamelCaseName -import org.jetbrains.kotlin.project.model.VariantResolution +import org.jetbrains.kotlin.project.model.KpmVariantResolution -interface KotlinVariantCompilationDataInternal : KotlinVariantCompilationData { +interface GradleKpmVariantCompilationDataInternal : GradleKpmVariantCompilationData { override val compileKotlinTaskName: String get() = lowerCamelCaseName("compile", compilationPurpose.takeIf { it != "main" }, "Kotlin", compilationClassifier) @@ -26,7 +26,7 @@ interface KotlinVariantCompilationDataInternal : Kotlin get() = owner.disambiguateName("classes") override val kotlinSourceDirectoriesByFragmentName: Map - get() = owner.withRefinesClosure.filterIsInstance().associate { it.disambiguateName("") to it.kotlinSourceRoots } + get() = owner.withRefinesClosure.filterIsInstance().associate { it.disambiguateName("") to it.kotlinSourceRoots } override val friendPaths: Iterable get() { @@ -54,21 +54,21 @@ interface KotlinVariantCompilationDataInternal : Kotlin override val moduleName: String get() = // TODO accurate module names that don't rely on all variants having a main counterpart owner.containingModule.project.kpmModules - .getByName(KpmGradleModule.MAIN_MODULE_NAME).variants.findByName(owner.name)?.ownModuleName() ?: ownModuleName + .getByName(GradleKpmModule.MAIN_MODULE_NAME).variants.findByName(owner.name)?.ownModuleName() ?: ownModuleName override val ownModuleName: String get() = owner.ownModuleName() - private fun resolveFriendVariants(): Iterable { - val moduleResolver = KpmGradleModuleDependencyResolver.getForCurrentBuild(project) - val variantResolver = GradleModuleVariantResolver.getForCurrentBuild(project) - val dependencyGraphResolver = KpmGradleDependencyGraphResolver(moduleResolver) + private fun resolveFriendVariants(): Iterable { + val moduleResolver = GradleKpmModuleDependencyResolver.getForCurrentBuild(project) + val variantResolver = KpmGradleModuleVariantResolver.getForCurrentBuild(project) + val dependencyGraphResolver = GradleKpmDependencyGraphResolver(moduleResolver) val friendModules = - ((dependencyGraphResolver.resolveDependencyGraph(owner.containingModule) as? KpmGradleDependencyGraph) + ((dependencyGraphResolver.resolveDependencyGraph(owner.containingModule) as? GradleKpmDependencyGraph) ?: error("Failed to resolve dependencies of ${owner.containingModule}")) .allDependencyModules - .filterIsInstance() + .filterIsInstance() .filter { dependencyModule -> // the module comes from the same Gradle project // todo: extend to other friends once supported dependencyModule.project == owner.containingModule.project @@ -77,12 +77,12 @@ interface KotlinVariantCompilationDataInternal : Kotlin return friendModules .map { friendModule -> variantResolver.getChosenVariant(owner, friendModule) } // also, important to check that the owner variant really requests this module: - .filterIsInstance() - .mapNotNull { variantMatch -> variantMatch.chosenVariant as? KpmGradleVariant } + .filterIsInstance() + .mapNotNull { variantMatch -> variantMatch.chosenVariant as? GradleKpmVariant } } } fun KotlinCompilationData<*>.isMainCompilationData(): Boolean = when (this) { is KotlinCompilation<*> -> isMain() - else -> compilationPurpose == KpmGradleModule.MAIN_MODULE_NAME + else -> compilationPurpose == GradleKpmModule.MAIN_MODULE_NAME } diff --git a/libraries/tools/kotlin-gradle-plugin/src/common/kotlin/org/jetbrains/kotlin/gradle/plugin/mpp/pm20/KotlinCompilationTaskConfigurator.kt b/libraries/tools/kotlin-gradle-plugin/src/common/kotlin/org/jetbrains/kotlin/gradle/plugin/mpp/pm20/KotlinCompilationTaskConfigurator.kt index 499adce4682..0818b13a113 100644 --- a/libraries/tools/kotlin-gradle-plugin/src/common/kotlin/org/jetbrains/kotlin/gradle/plugin/mpp/pm20/KotlinCompilationTaskConfigurator.kt +++ b/libraries/tools/kotlin-gradle-plugin/src/common/kotlin/org/jetbrains/kotlin/gradle/plugin/mpp/pm20/KotlinCompilationTaskConfigurator.kt @@ -15,19 +15,19 @@ import org.jetbrains.kotlin.gradle.tasks.KotlinCompile import org.jetbrains.kotlin.gradle.tasks.KotlinNativeCompile import org.jetbrains.kotlin.gradle.tasks.KotlinTasksProvider -open class KotlinCompilationTaskConfigurator( +open class GradleKpmCompilationTaskConfigurator( protected val project: Project ) { - open val fragmentSourcesProvider: FragmentSourcesProvider = FragmentSourcesProvider() + open val fragmentSourcesProvider: GradleKpmFragmentSourcesProvider = GradleKpmFragmentSourcesProvider() - open fun getSourcesForFragmentCompilation(fragment: KpmGradleFragment): MultipleSourceRootsProvider = + open fun getSourcesForFragmentCompilation(fragment: GradleKpmFragment): MultipleSourceRootsProvider = fragmentSourcesProvider.getSourcesFromRefinesClosure(fragment) - open fun getCommonSourcesForFragmentCompilation(fragment: KpmGradleFragment): MultipleSourceRootsProvider = + open fun getCommonSourcesForFragmentCompilation(fragment: GradleKpmFragment): MultipleSourceRootsProvider = fragmentSourcesProvider.getCommonSourcesFromRefinesClosure(fragment) fun createKotlinJvmCompilationTask( - variant: KpmGradleVariant, + variant: GradleKpmVariant, compilationData: KotlinCompilationData<*> ): TaskProvider { Kotlin2JvmSourceSetProcessor(KotlinTasksProvider(), compilationData).run() @@ -46,7 +46,7 @@ open class KotlinCompilationTaskConfigurator( } protected fun createKotlinNativeCompilationTask( - fragment: KpmGradleFragment, + fragment: GradleKpmFragment, compilationData: KotlinNativeCompilationData<*>, configure: KotlinNativeCompile.() -> Unit ): TaskProvider { @@ -65,7 +65,7 @@ open class KotlinCompilationTaskConfigurator( } fun createKotlinNativeCompilationTask( - variant: KpmGradleVariant, + variant: GradleKpmVariant, compilationData: KotlinNativeCompilationData<*> ): TaskProvider = createKotlinNativeCompilationTask(variant, compilationData) { kotlinPluginData = project.compilerPluginProviderForPlatformCompilation(variant, compilationData) diff --git a/libraries/tools/kotlin-gradle-plugin/src/common/kotlin/org/jetbrains/kotlin/gradle/plugin/mpp/pm20/KotlinFragmentCompilationOutputsJarArtifact.kt b/libraries/tools/kotlin-gradle-plugin/src/common/kotlin/org/jetbrains/kotlin/gradle/plugin/mpp/pm20/KotlinFragmentCompilationOutputsJarArtifact.kt index 6721c16210e..d90addf3bc5 100644 --- a/libraries/tools/kotlin-gradle-plugin/src/common/kotlin/org/jetbrains/kotlin/gradle/plugin/mpp/pm20/KotlinFragmentCompilationOutputsJarArtifact.kt +++ b/libraries/tools/kotlin-gradle-plugin/src/common/kotlin/org/jetbrains/kotlin/gradle/plugin/mpp/pm20/KotlinFragmentCompilationOutputsJarArtifact.kt @@ -14,7 +14,7 @@ import org.jetbrains.kotlin.gradle.utils.dashSeparatedLowercaseName /** * Registers a [Jar] task with the variant's compilation outputs and attaches this artifact to the given configuration. */ -val KotlinFragmentCompilationOutputsJarArtifact = FragmentArtifacts { +val GradleKpmCompilationOutputsJarArtifact = GradleKpmConfigurationArtifactsSetup { val jar = project.locateOrRegisterTask(fragment.outputsJarTaskName) { it.from(fragment.compilationOutputs.allOutputs) it.archiveAppendix.set(dashSeparatedLowercaseName(fragment.name, fragment.containingModule.moduleClassifier)) @@ -23,5 +23,5 @@ val KotlinFragmentCompilationOutputsJarArtifact = FragmentArtifacts artifacts@{ +val GradleKpmHostSpecificMetadataArtifact = GradleKpmConfigurationArtifactsSetup artifacts@{ val hostSpecificMetadataElements = fragment.hostSpecificMetadataElementsConfiguration ?: return@artifacts val hostSpecificMetadataJar = project.registerTask(fragment.disambiguateName("hostSpecificMetadataJar")) { jar -> diff --git a/libraries/tools/kotlin-gradle-plugin/src/common/kotlin/org/jetbrains/kotlin/gradle/plugin/mpp/pm20/KotlinFragmentModuleCapability.kt b/libraries/tools/kotlin-gradle-plugin/src/common/kotlin/org/jetbrains/kotlin/gradle/plugin/mpp/pm20/KotlinFragmentModuleCapability.kt index 5813b27c854..9dfe21aba88 100644 --- a/libraries/tools/kotlin-gradle-plugin/src/common/kotlin/org/jetbrains/kotlin/gradle/plugin/mpp/pm20/KotlinFragmentModuleCapability.kt +++ b/libraries/tools/kotlin-gradle-plugin/src/common/kotlin/org/jetbrains/kotlin/gradle/plugin/mpp/pm20/KotlinFragmentModuleCapability.kt @@ -9,13 +9,13 @@ import org.gradle.api.artifacts.Configuration import org.gradle.api.capabilities.Capability import org.jetbrains.kotlin.gradle.plugin.mpp.pm20.util.ComputedCapability -val KotlinFragmentModuleCapability = FragmentCapabilities { - capability(fragment.containingModule.moduleCapability ?: return@FragmentCapabilities) +val GradleKpmModuleCapability = GradleKpmConfigurationCapabilitiesSetup { + capability(fragment.containingModule.moduleCapability ?: return@GradleKpmConfigurationCapabilitiesSetup) } -internal fun setModuleCapability(configuration: Configuration, module: KpmGradleModule) { +internal fun setModuleCapability(configuration: Configuration, module: GradleKpmModule) { configuration.outgoing.capability(module.moduleCapability ?: return) } -internal val KpmGradleModule.moduleCapability: Capability? +internal val GradleKpmModule.moduleCapability: Capability? get() = if (moduleClassifier != null) ComputedCapability.fromModule(this) else null diff --git a/libraries/tools/kotlin-gradle-plugin/src/common/kotlin/org/jetbrains/kotlin/gradle/plugin/mpp/pm20/KotlinGradleFragmentConfigurationArtifacts.kt b/libraries/tools/kotlin-gradle-plugin/src/common/kotlin/org/jetbrains/kotlin/gradle/plugin/mpp/pm20/KotlinGradleFragmentConfigurationArtifacts.kt index 6fd1820d198..1fe2147cbc4 100644 --- a/libraries/tools/kotlin-gradle-plugin/src/common/kotlin/org/jetbrains/kotlin/gradle/plugin/mpp/pm20/KotlinGradleFragmentConfigurationArtifacts.kt +++ b/libraries/tools/kotlin-gradle-plugin/src/common/kotlin/org/jetbrains/kotlin/gradle/plugin/mpp/pm20/KotlinGradleFragmentConfigurationArtifacts.kt @@ -11,18 +11,16 @@ import org.gradle.api.artifacts.ConfigurablePublishArtifact import org.gradle.api.artifacts.ConfigurationPublications import org.gradle.api.artifacts.ConfigurationVariant -/* Internal abbreviation */ -internal typealias FragmentArtifacts = KotlinGradleFragmentConfigurationArtifacts -interface KotlinGradleFragmentConfigurationArtifacts { - fun addArtifacts(outgoing: ConfigurationPublications, fragment: T) +interface GradleKpmConfigurationArtifactsSetup { + fun setupArtifacts(outgoing: ConfigurationPublications, fragment: T) - object None : KotlinGradleFragmentConfigurationArtifacts { - override fun addArtifacts(outgoing: ConfigurationPublications, fragment: KpmGradleFragment) = Unit + object None : GradleKpmConfigurationArtifactsSetup { + override fun setupArtifacts(outgoing: ConfigurationPublications, fragment: GradleKpmFragment) = Unit } } -class KotlinGradleFragmentConfigurationArtifactsContext internal constructor( +class GradleKpmConfigurationArtifactsSetupContext internal constructor( internal val outgoing: ConfigurationPublications, val fragment: T ) { @@ -40,40 +38,43 @@ class KotlinGradleFragmentConfigurationArtifactsContext i } @Suppress("FunctionName") -fun FragmentArtifacts( - addArtifacts: KotlinGradleFragmentConfigurationArtifactsContext.() -> Unit -): KotlinGradleFragmentConfigurationArtifacts { - return object : KotlinGradleFragmentConfigurationArtifacts { - override fun addArtifacts(outgoing: ConfigurationPublications, fragment: T) { - val context = KotlinGradleFragmentConfigurationArtifactsContext(outgoing, fragment) +fun GradleKpmConfigurationArtifactsSetup( + addArtifacts: GradleKpmConfigurationArtifactsSetupContext.() -> Unit +): GradleKpmConfigurationArtifactsSetup { + return object : GradleKpmConfigurationArtifactsSetup { + override fun setupArtifacts(outgoing: ConfigurationPublications, fragment: T) { + val context = GradleKpmConfigurationArtifactsSetupContext(outgoing, fragment) context.addArtifacts() } } } -operator fun FragmentArtifacts.plus(other: FragmentArtifacts): FragmentArtifacts { - if (this === KotlinGradleFragmentConfigurationArtifacts.None) return other - if (other === KotlinGradleFragmentConfigurationArtifacts.None) return this +operator fun GradleKpmConfigurationArtifactsSetup.plus( + other: GradleKpmConfigurationArtifactsSetup +): GradleKpmConfigurationArtifactsSetup { + if (this === GradleKpmConfigurationArtifactsSetup.None) return other + if (other === GradleKpmConfigurationArtifactsSetup.None) return this - if (this is CompositeFragmentArtifacts && other is CompositeFragmentArtifacts) { - return CompositeFragmentArtifacts(this.children + other.children) + if (this is CompositeFragmentConfigurationArtifactsSetup && other is CompositeFragmentConfigurationArtifactsSetup) { + return CompositeFragmentConfigurationArtifactsSetup(this.children + other.children) } - if (this is CompositeFragmentArtifacts) { - return CompositeFragmentArtifacts(this.children + other) + if (this is CompositeFragmentConfigurationArtifactsSetup) { + return CompositeFragmentConfigurationArtifactsSetup(this.children + other) } - if (other is CompositeFragmentArtifacts) { - return CompositeFragmentArtifacts(listOf(this) + other.children) + if (other is CompositeFragmentConfigurationArtifactsSetup) { + return CompositeFragmentConfigurationArtifactsSetup(listOf(this) + other.children) } - return CompositeFragmentArtifacts(listOf(this, other)) + return CompositeFragmentConfigurationArtifactsSetup(listOf(this, other)) } -internal class CompositeFragmentArtifacts(val children: List>) : - FragmentArtifacts { +internal class CompositeFragmentConfigurationArtifactsSetup( + val children: List> +) : GradleKpmConfigurationArtifactsSetup { - override fun addArtifacts(outgoing: ConfigurationPublications, fragment: T) { - children.forEach { child -> child.addArtifacts(outgoing, fragment) } + override fun setupArtifacts(outgoing: ConfigurationPublications, fragment: T) { + children.forEach { child -> child.setupArtifacts(outgoing, fragment) } } } diff --git a/libraries/tools/kotlin-gradle-plugin/src/common/kotlin/org/jetbrains/kotlin/gradle/plugin/mpp/pm20/KotlinGradleFragmentConfigurationAttributes.kt b/libraries/tools/kotlin-gradle-plugin/src/common/kotlin/org/jetbrains/kotlin/gradle/plugin/mpp/pm20/KotlinGradleFragmentConfigurationAttributes.kt index eb51e4eb90a..2c5076c3aff 100644 --- a/libraries/tools/kotlin-gradle-plugin/src/common/kotlin/org/jetbrains/kotlin/gradle/plugin/mpp/pm20/KotlinGradleFragmentConfigurationAttributes.kt +++ b/libraries/tools/kotlin-gradle-plugin/src/common/kotlin/org/jetbrains/kotlin/gradle/plugin/mpp/pm20/KotlinGradleFragmentConfigurationAttributes.kt @@ -11,18 +11,17 @@ import org.gradle.api.attributes.Attribute import org.gradle.api.attributes.AttributeContainer /* Internal abbreviation */ -internal typealias FragmentAttributes = KotlinGradleFragmentConfigurationAttributes -interface KotlinGradleFragmentConfigurationAttributes { +interface GradleKpmConfigurationAttributesSetup { - fun setAttributes(attributes: AttributeContainer, fragment: T) + fun setupAttributes(attributes: AttributeContainer, fragment: T) - object None : FragmentAttributes { - override fun setAttributes(attributes: AttributeContainer, fragment: KpmGradleFragment) = Unit + object None : GradleKpmConfigurationAttributesSetup { + override fun setupAttributes(attributes: AttributeContainer, fragment: GradleKpmFragment) = Unit } } -class KotlinGradleFragmentConfigurationAttributesContext internal constructor( +class GradleKpmConfigurationAttributesSetupContext internal constructor( internal val attributes: AttributeContainer, val fragment: T, ) : AttributeContainer by attributes { @@ -32,51 +31,51 @@ class KotlinGradleFragmentConfigurationAttributesContext inline fun namedAttribute(key: Attribute, name: String) = apply { attribute(key, named(name)) } - override fun attribute(key: Attribute, value: K): KotlinGradleFragmentConfigurationAttributesContext = apply { + override fun attribute(key: Attribute, value: K): GradleKpmConfigurationAttributesSetupContext = apply { attributes.attribute(key, value) } } @Suppress("FunctionName") -fun FragmentAttributes( - setAttributes: KotlinGradleFragmentConfigurationAttributesContext.() -> Unit -): KotlinGradleFragmentConfigurationAttributes { - return object : KotlinGradleFragmentConfigurationAttributes { - override fun setAttributes(attributes: AttributeContainer, fragment: T) { - val context = KotlinGradleFragmentConfigurationAttributesContext(attributes, fragment) +fun GradleKpmConfigurationAttributesSetup( + setAttributes: GradleKpmConfigurationAttributesSetupContext.() -> Unit +): GradleKpmConfigurationAttributesSetup { + return object : GradleKpmConfigurationAttributesSetup { + override fun setupAttributes(attributes: AttributeContainer, fragment: T) { + val context = GradleKpmConfigurationAttributesSetupContext(attributes, fragment) context.setAttributes() } } } -fun AttributeContainer.apply( - attributes: KotlinGradleFragmentConfigurationAttributes, fragment: T +fun AttributeContainer.apply( + attributes: GradleKpmConfigurationAttributesSetup, fragment: T ) { - attributes.setAttributes(this, fragment) + attributes.setupAttributes(this, fragment) } -operator fun FragmentAttributes.plus(other: FragmentAttributes): FragmentAttributes { - if (this === KotlinGradleFragmentConfigurationAttributes.None) return other - if (other === KotlinGradleFragmentConfigurationAttributes.None) return this +operator fun GradleKpmConfigurationAttributesSetup.plus(other: GradleKpmConfigurationAttributesSetup): GradleKpmConfigurationAttributesSetup { + if (this === GradleKpmConfigurationAttributesSetup.None) return other + if (other === GradleKpmConfigurationAttributesSetup.None) return this - if (this is CompositeFragmentAttributes && other is CompositeFragmentAttributes) { - return CompositeFragmentAttributes(this.children + other.children) + if (this is GradleKpmCompositeConfigurationAttributesSetup && other is GradleKpmCompositeConfigurationAttributesSetup) { + return GradleKpmCompositeConfigurationAttributesSetup(this.children + other.children) } - if (this is CompositeFragmentAttributes) { - return CompositeFragmentAttributes(this.children + other) + if (this is GradleKpmCompositeConfigurationAttributesSetup) { + return GradleKpmCompositeConfigurationAttributesSetup(this.children + other) } - if (other is CompositeFragmentAttributes) { - return CompositeFragmentAttributes(listOf(this) + other.children) + if (other is GradleKpmCompositeConfigurationAttributesSetup) { + return GradleKpmCompositeConfigurationAttributesSetup(listOf(this) + other.children) } - return CompositeFragmentAttributes(listOf(this, other)) + return GradleKpmCompositeConfigurationAttributesSetup(listOf(this, other)) } -internal class CompositeFragmentAttributes(val children: List>) : - FragmentAttributes { - override fun setAttributes(attributes: AttributeContainer, fragment: T) { - children.forEach { child -> child.setAttributes(attributes, fragment) } +internal class GradleKpmCompositeConfigurationAttributesSetup(val children: List>) : + GradleKpmConfigurationAttributesSetup { + override fun setupAttributes(attributes: AttributeContainer, fragment: T) { + children.forEach { child -> child.setupAttributes(attributes, fragment) } } } diff --git a/libraries/tools/kotlin-gradle-plugin/src/common/kotlin/org/jetbrains/kotlin/gradle/plugin/mpp/pm20/KotlinGradleFragmentConfigurationCapabilities.kt b/libraries/tools/kotlin-gradle-plugin/src/common/kotlin/org/jetbrains/kotlin/gradle/plugin/mpp/pm20/KotlinGradleFragmentConfigurationCapabilities.kt index 84e9609a0d8..37fef19a30a 100644 --- a/libraries/tools/kotlin-gradle-plugin/src/common/kotlin/org/jetbrains/kotlin/gradle/plugin/mpp/pm20/KotlinGradleFragmentConfigurationCapabilities.kt +++ b/libraries/tools/kotlin-gradle-plugin/src/common/kotlin/org/jetbrains/kotlin/gradle/plugin/mpp/pm20/KotlinGradleFragmentConfigurationCapabilities.kt @@ -8,78 +8,72 @@ 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.capabilities.Capability -import org.jetbrains.kotlin.gradle.plugin.mpp.pm20.KotlinGradleFragmentConfigurationCapabilities.CapabilitiesContainer +import org.jetbrains.kotlin.gradle.plugin.mpp.pm20.GradleKpmConfigurationCapabilitiesSetup.CapabilitiesContainer -/* Internal abbreviation */ -internal typealias FragmentCapabilities = KotlinGradleFragmentConfigurationCapabilities - -interface KotlinGradleFragmentConfigurationCapabilities { +interface GradleKpmConfigurationCapabilitiesSetup { interface CapabilitiesContainer { fun capability(notation: Any) } fun setCapabilities(container: CapabilitiesContainer, fragment: T) - object None : KotlinGradleFragmentConfigurationCapabilities { - override fun setCapabilities(container: CapabilitiesContainer, fragment: KpmGradleFragment) = Unit + object None : GradleKpmConfigurationCapabilitiesSetup { + override fun setCapabilities(container: CapabilitiesContainer, fragment: GradleKpmFragment) = Unit } } -fun KotlinGradleFragmentConfigurationCapabilities.setCapabilities( +fun GradleKpmConfigurationCapabilitiesSetup.setCapabilities( publications: ConfigurationPublications, fragment: T ) = setCapabilities(CapabilitiesContainer(publications), fragment) fun CapabilitiesContainer(configuration: ConfigurationPublications): CapabilitiesContainer = CapabilitiesContainerImpl(configuration) -fun CapabilitiesContainer(configuration: Configuration): CapabilitiesContainer = - CapabilitiesContainerImpl(configuration.outgoing) - private class CapabilitiesContainerImpl( private val publications: ConfigurationPublications ) : CapabilitiesContainer { override fun capability(notation: Any) = publications.capability(notation) } -class KotlinGradleFragmentConfigurationCapabilitiesContext internal constructor( +class GradleKpmConfigurationCapabilitiesSetupContext internal constructor( internal val container: CapabilitiesContainer, val fragment: T ) : CapabilitiesContainer by container { val project: Project get() = fragment.project } -fun FragmentCapabilities( - setCapabilities: KotlinGradleFragmentConfigurationCapabilitiesContext.() -> Unit -): KotlinGradleFragmentConfigurationCapabilities = object : KotlinGradleFragmentConfigurationCapabilities { +fun GradleKpmConfigurationCapabilitiesSetup( + setCapabilities: GradleKpmConfigurationCapabilitiesSetupContext.() -> Unit +): GradleKpmConfigurationCapabilitiesSetup = object : GradleKpmConfigurationCapabilitiesSetup { override fun setCapabilities(container: CapabilitiesContainer, fragment: T) { - val context = KotlinGradleFragmentConfigurationCapabilitiesContext(container, fragment) + val context = GradleKpmConfigurationCapabilitiesSetupContext(container, fragment) context.setCapabilities() } } -operator fun FragmentCapabilities.plus(other: FragmentCapabilities): FragmentCapabilities { - if (this === KotlinGradleFragmentConfigurationCapabilities.None) return other - if (other === KotlinGradleFragmentConfigurationCapabilities.None) return this +operator fun GradleKpmConfigurationCapabilitiesSetup.plus( + other: GradleKpmConfigurationCapabilitiesSetup +): GradleKpmConfigurationCapabilitiesSetup { + if (this === GradleKpmConfigurationCapabilitiesSetup.None) return other + if (other === GradleKpmConfigurationCapabilitiesSetup.None) return this - if (this is CompositeFragmentCapabilities && other is CompositeFragmentCapabilities) { - return CompositeFragmentCapabilities(this.children + other.children) + if (this is CompositeKpmCapabilitiesSetup && other is CompositeKpmCapabilitiesSetup) { + return CompositeKpmCapabilitiesSetup(this.children + other.children) } - if (this is CompositeFragmentCapabilities) { - return CompositeFragmentCapabilities(this.children + other) + if (this is CompositeKpmCapabilitiesSetup) { + return CompositeKpmCapabilitiesSetup(this.children + other) } - if (other is CompositeFragmentCapabilities) { - return CompositeFragmentCapabilities(listOf(this) + other.children) + if (other is CompositeKpmCapabilitiesSetup) { + return CompositeKpmCapabilitiesSetup(listOf(this) + other.children) } - return CompositeFragmentCapabilities(listOf(this, other)) + return CompositeKpmCapabilitiesSetup(listOf(this, other)) } -internal class CompositeFragmentCapabilities(val children: List>) : - FragmentCapabilities { +internal class CompositeKpmCapabilitiesSetup(val children: List>) : + GradleKpmConfigurationCapabilitiesSetup { override fun setCapabilities(container: CapabilitiesContainer, fragment: T) { children.forEach { child -> child.setCapabilities(container, fragment) } } diff --git a/libraries/tools/kotlin-gradle-plugin/src/common/kotlin/org/jetbrains/kotlin/gradle/plugin/mpp/pm20/KotlinGradleFragmentConfigurationDefinition.kt b/libraries/tools/kotlin-gradle-plugin/src/common/kotlin/org/jetbrains/kotlin/gradle/plugin/mpp/pm20/KotlinGradleFragmentConfigurationDefinition.kt index 8375be1b1b5..11d59cce2bd 100644 --- a/libraries/tools/kotlin-gradle-plugin/src/common/kotlin/org/jetbrains/kotlin/gradle/plugin/mpp/pm20/KotlinGradleFragmentConfigurationDefinition.kt +++ b/libraries/tools/kotlin-gradle-plugin/src/common/kotlin/org/jetbrains/kotlin/gradle/plugin/mpp/pm20/KotlinGradleFragmentConfigurationDefinition.kt @@ -7,48 +7,45 @@ 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 +import org.jetbrains.kotlin.gradle.plugin.mpp.pm20.util.GradleKpmNameDisambiguation /* Internal abbreviation */ -internal typealias ConfigurationDefinition = KotlinGradleFragmentConfigurationDefinition -data class KotlinGradleFragmentConfigurationDefinition( - val provider: KotlinGradleFragmentConfigurationProvider, - val attributes: KotlinGradleFragmentConfigurationAttributes = KotlinGradleFragmentConfigurationAttributes.None, - val artifacts: KotlinGradleFragmentConfigurationArtifacts = KotlinGradleFragmentConfigurationArtifacts.None, - val relations: KotlinGradleFragmentConfigurationRelation = KotlinGradleFragmentConfigurationRelation.None, +data class GradleKpmConfigurationSetup( + val provider: GradleKpmConfigurationProvider, + val attributes: GradleKpmConfigurationAttributesSetup = GradleKpmConfigurationAttributesSetup.None, + val artifacts: GradleKpmConfigurationArtifactsSetup = GradleKpmConfigurationArtifactsSetup.None, + val relations: GradleKpmConfigurationRelationSetup = GradleKpmConfigurationRelationSetup.None, @property:AdvancedKotlinGradlePluginApi - val capabilities: KotlinGradleFragmentConfigurationCapabilities = KotlinGradleFragmentConfigurationCapabilities.None, + val capabilities: GradleKpmConfigurationCapabilitiesSetup = GradleKpmConfigurationCapabilitiesSetup.None, ) -/* Internal abbreviation */ -internal typealias ConfigurationContext = KotlinGradleFragmentConfigurationContext -interface KotlinGradleFragmentConfigurationContext : KotlinNameDisambiguation { +interface GradleKpmFragmentConfigureContext : GradleKpmNameDisambiguation { val project: Project get() = module.project - val module: KpmGradleModule - val dependencies: KotlinFragmentDependencyConfigurations + val module: GradleKpmModule + val dependencies: GradleKpmFragmentDependencyConfigurations } -internal class KotlinGradleFragmentConfigurationContextImpl( - override val module: KpmGradleModule, - override val dependencies: KotlinFragmentDependencyConfigurations, - names: KotlinNameDisambiguation -) : KotlinGradleFragmentConfigurationContext, KotlinNameDisambiguation by names +internal class GradleKpmFragmentConfigureContextImpl( + override val module: GradleKpmModule, + override val dependencies: GradleKpmFragmentDependencyConfigurations, + names: GradleKpmNameDisambiguation +) : GradleKpmFragmentConfigureContext, GradleKpmNameDisambiguation by names -fun KotlinGradleFragmentConfigurationDefinition.withConfigurationProvider( - provider: KotlinGradleFragmentConfigurationContext.() -> Configuration -) = copy(provider = ConfigurationProvider(provider)) +fun GradleKpmConfigurationSetup.withConfigurationProvider( + provider: GradleKpmFragmentConfigureContext.() -> Configuration +) = copy(provider = GradleKpmConfigurationProvider(provider)) -operator fun KotlinGradleFragmentConfigurationDefinition.plus(other: FragmentAttributes): - KotlinGradleFragmentConfigurationDefinition = copy(attributes = attributes + other) +operator fun GradleKpmConfigurationSetup.plus(other: GradleKpmConfigurationAttributesSetup): + GradleKpmConfigurationSetup = copy(attributes = attributes + other) -operator fun KotlinGradleFragmentConfigurationDefinition.plus(other: FragmentArtifacts): - KotlinGradleFragmentConfigurationDefinition = copy(artifacts = artifacts + other) +operator fun GradleKpmConfigurationSetup.plus(other: GradleKpmConfigurationArtifactsSetup): + GradleKpmConfigurationSetup = copy(artifacts = artifacts + other) -operator fun KotlinGradleFragmentConfigurationDefinition.plus(other: FragmentConfigurationRelation): - KotlinGradleFragmentConfigurationDefinition = copy(relations = relations + other) +operator fun GradleKpmConfigurationSetup.plus(other: GradleKpmConfigurationRelationSetup): + GradleKpmConfigurationSetup = copy(relations = relations + other) @AdvancedKotlinGradlePluginApi -operator fun KotlinGradleFragmentConfigurationDefinition.plus(other: FragmentCapabilities): - KotlinGradleFragmentConfigurationDefinition = copy(capabilities = capabilities + other) +operator fun GradleKpmConfigurationSetup.plus(other: GradleKpmConfigurationCapabilitiesSetup): + GradleKpmConfigurationSetup = copy(capabilities = capabilities + other) diff --git a/libraries/tools/kotlin-gradle-plugin/src/common/kotlin/org/jetbrains/kotlin/gradle/plugin/mpp/pm20/KotlinGradleFragmentConfigurationProvider.kt b/libraries/tools/kotlin-gradle-plugin/src/common/kotlin/org/jetbrains/kotlin/gradle/plugin/mpp/pm20/KotlinGradleFragmentConfigurationProvider.kt index 15b8cbe4b0e..283132fac63 100644 --- a/libraries/tools/kotlin-gradle-plugin/src/common/kotlin/org/jetbrains/kotlin/gradle/plugin/mpp/pm20/KotlinGradleFragmentConfigurationProvider.kt +++ b/libraries/tools/kotlin-gradle-plugin/src/common/kotlin/org/jetbrains/kotlin/gradle/plugin/mpp/pm20/KotlinGradleFragmentConfigurationProvider.kt @@ -9,11 +9,11 @@ package org.jetbrains.kotlin.gradle.plugin.mpp.pm20 import org.gradle.api.artifacts.Configuration -interface KotlinGradleFragmentConfigurationProvider { - fun getConfiguration(context: KotlinGradleFragmentConfigurationContext): Configuration +interface GradleKpmConfigurationProvider { + fun getConfiguration(context: GradleKpmFragmentConfigureContext): Configuration } -fun ConfigurationProvider(provider: KotlinGradleFragmentConfigurationContext.() -> Configuration): - KotlinGradleFragmentConfigurationProvider = object : KotlinGradleFragmentConfigurationProvider { - override fun getConfiguration(context: KotlinGradleFragmentConfigurationContext): Configuration = context.provider() +fun GradleKpmConfigurationProvider(provider: GradleKpmFragmentConfigureContext.() -> Configuration): + GradleKpmConfigurationProvider = object : GradleKpmConfigurationProvider { + override fun getConfiguration(context: GradleKpmFragmentConfigureContext): Configuration = context.provider() } diff --git a/libraries/tools/kotlin-gradle-plugin/src/common/kotlin/org/jetbrains/kotlin/gradle/plugin/mpp/pm20/KotlinGradleFragmentConfigurationRelation.kt b/libraries/tools/kotlin-gradle-plugin/src/common/kotlin/org/jetbrains/kotlin/gradle/plugin/mpp/pm20/KotlinGradleFragmentConfigurationRelation.kt index 95c12a4dea2..54452ad92cf 100644 --- a/libraries/tools/kotlin-gradle-plugin/src/common/kotlin/org/jetbrains/kotlin/gradle/plugin/mpp/pm20/KotlinGradleFragmentConfigurationRelation.kt +++ b/libraries/tools/kotlin-gradle-plugin/src/common/kotlin/org/jetbrains/kotlin/gradle/plugin/mpp/pm20/KotlinGradleFragmentConfigurationRelation.kt @@ -8,60 +8,57 @@ package org.jetbrains.kotlin.gradle.plugin.mpp.pm20 import org.gradle.api.artifacts.Configuration -import org.gradle.api.artifacts.ConfigurationPublications import org.jetbrains.kotlin.gradle.utils.addExtendsFromRelation -/* Internal abbreviation */ -internal typealias FragmentConfigurationRelation = KotlinGradleFragmentConfigurationRelation -interface KotlinGradleFragmentConfigurationRelation { - fun setExtendsFrom(configuration: Configuration, context: KotlinGradleFragmentConfigurationContext) +interface GradleKpmConfigurationRelationSetup { + fun setupExtendsFromRelations(configuration: Configuration, context: GradleKpmFragmentConfigureContext) - object None : KotlinGradleFragmentConfigurationRelation { - override fun setExtendsFrom(configuration: Configuration, context: KotlinGradleFragmentConfigurationContext) = Unit + object None : GradleKpmConfigurationRelationSetup { + override fun setupExtendsFromRelations(configuration: Configuration, context: GradleKpmFragmentConfigureContext) = Unit } } -operator fun FragmentConfigurationRelation.plus(other: FragmentConfigurationRelation): FragmentConfigurationRelation { - if (this === KotlinGradleFragmentConfigurationRelation.None) return other - if (other === KotlinGradleFragmentConfigurationRelation.None) return this +operator fun GradleKpmConfigurationRelationSetup.plus(other: GradleKpmConfigurationRelationSetup): GradleKpmConfigurationRelationSetup { + if (this === GradleKpmConfigurationRelationSetup.None) return other + if (other === GradleKpmConfigurationRelationSetup.None) return this - if (this is CompositeFragmentConfigurationRelation && other is CompositeFragmentConfigurationRelation) { - return CompositeFragmentConfigurationRelation(this.children + other.children) + if (this is CompositeKpmConfigurationRelationSetup && other is CompositeKpmConfigurationRelationSetup) { + return CompositeKpmConfigurationRelationSetup(this.children + other.children) } - if (this is CompositeFragmentConfigurationRelation) { - return CompositeFragmentConfigurationRelation(this.children + other) + if (this is CompositeKpmConfigurationRelationSetup) { + return CompositeKpmConfigurationRelationSetup(this.children + other) } - if (other is CompositeFragmentConfigurationRelation) { - return CompositeFragmentConfigurationRelation(listOf(this) + other.children) + if (other is CompositeKpmConfigurationRelationSetup) { + return CompositeKpmConfigurationRelationSetup(listOf(this) + other.children) } - return CompositeFragmentConfigurationRelation(listOf(this, other)) + return CompositeKpmConfigurationRelationSetup(listOf(this, other)) } -internal class CompositeFragmentConfigurationRelation(val children: List) : - FragmentConfigurationRelation { +internal class CompositeKpmConfigurationRelationSetup(val children: List) : + GradleKpmConfigurationRelationSetup { - override fun setExtendsFrom(configuration: Configuration, context: KotlinGradleFragmentConfigurationContext) { - children.forEach { child -> child.setExtendsFrom(configuration, context) } + override fun setupExtendsFromRelations(configuration: Configuration, context: GradleKpmFragmentConfigureContext) { + children.forEach { child -> child.setupExtendsFromRelations(configuration, context) } } } -class KotlinGradleFragmentConfigurationRelationContext internal constructor( +class GradleKpmFragmentConfigureRelationContext internal constructor( val configuration: Configuration, - context: KotlinGradleFragmentConfigurationContext -) : KotlinGradleFragmentConfigurationContext by context { + context: GradleKpmFragmentConfigureContext +) : GradleKpmFragmentConfigureContext by context { fun extendsFrom(configuration: Configuration) = this.configuration.extendsFrom(configuration) fun extendsFrom(configuration: String) = project.addExtendsFromRelation(this.configuration.name, configuration) } -fun FragmentConfigurationRelation( - setExtendsFrom: KotlinGradleFragmentConfigurationRelationContext.() -> Unit -): KotlinGradleFragmentConfigurationRelation = object : KotlinGradleFragmentConfigurationRelation { - override fun setExtendsFrom(configuration: Configuration, context: KotlinGradleFragmentConfigurationContext) { - val relationContext = KotlinGradleFragmentConfigurationRelationContext(configuration, context) +fun GradleKpmConfigurationRelationSetup( + setExtendsFrom: GradleKpmFragmentConfigureRelationContext.() -> Unit +): GradleKpmConfigurationRelationSetup = object : GradleKpmConfigurationRelationSetup { + override fun setupExtendsFromRelations(configuration: Configuration, context: GradleKpmFragmentConfigureContext) { + val relationContext = GradleKpmFragmentConfigureRelationContext(configuration, context) relationContext.setExtendsFrom() } } diff --git a/libraries/tools/kotlin-gradle-plugin/src/common/kotlin/org/jetbrains/kotlin/gradle/plugin/mpp/pm20/KotlinGradleFragmentFactory.kt b/libraries/tools/kotlin-gradle-plugin/src/common/kotlin/org/jetbrains/kotlin/gradle/plugin/mpp/pm20/KotlinGradleFragmentFactory.kt index 43856860ecd..4c3fc06f30d 100644 --- a/libraries/tools/kotlin-gradle-plugin/src/common/kotlin/org/jetbrains/kotlin/gradle/plugin/mpp/pm20/KotlinGradleFragmentFactory.kt +++ b/libraries/tools/kotlin-gradle-plugin/src/common/kotlin/org/jetbrains/kotlin/gradle/plugin/mpp/pm20/KotlinGradleFragmentFactory.kt @@ -7,11 +7,11 @@ package org.jetbrains.kotlin.gradle.plugin.mpp.pm20 import org.gradle.api.NamedDomainObjectFactory import org.gradle.api.artifacts.Configuration -import org.jetbrains.kotlin.gradle.plugin.mpp.pm20.KotlinGradleFragmentFactory.FragmentConfigurator -import org.jetbrains.kotlin.gradle.plugin.mpp.pm20.KotlinGradleFragmentFactory.FragmentInstantiator +import org.jetbrains.kotlin.gradle.plugin.mpp.pm20.GradleKpmFragmentFactory.FragmentConfigurator +import org.jetbrains.kotlin.gradle.plugin.mpp.pm20.GradleKpmFragmentFactory.FragmentInstantiator /** - * Factory used by [KpmGradleModule] to polymorphic-ally create fragments/variants. + * Factory used by [GradleKpmModule] to polymorphic-ally create fragments/variants. * Fragments are created in two stages with this factory: * * [FragmentInstantiator]: @@ -26,22 +26,22 @@ import org.jetbrains.kotlin.gradle.plugin.mpp.pm20.KotlinGradleFragmentFactory.F * - Setting up additional Gradle tasks * - Setting up publication */ -class KotlinGradleFragmentFactory( +class GradleKpmFragmentFactory( private val fragmentInstantiator: FragmentInstantiator, private val fragmentConfigurator: FragmentConfigurator ) : NamedDomainObjectFactory { /** - * @see KotlinGradleFragmentFactory + * @see GradleKpmFragmentFactory */ - interface FragmentInstantiator { + interface FragmentInstantiator { fun create(name: String): T } /** - * @see KotlinGradleFragmentFactory + * @see GradleKpmFragmentFactory */ - interface FragmentConfigurator { + interface FragmentConfigurator { fun configure(fragment: T) } @@ -50,10 +50,10 @@ class KotlinGradleFragmentFactory( } } -internal fun Configuration.configure( - definition: KotlinGradleFragmentConfigurationDefinition, fragment: T +internal fun Configuration.configure( + definition: GradleKpmConfigurationSetup, fragment: T ) { - definition.attributes.setAttributes(attributes, fragment) - definition.artifacts.addArtifacts(outgoing, fragment) + definition.attributes.setupAttributes(attributes, fragment) + definition.artifacts.setupArtifacts(outgoing, fragment) definition.capabilities.setCapabilities(outgoing, fragment) } diff --git a/libraries/tools/kotlin-gradle-plugin/src/common/kotlin/org/jetbrains/kotlin/gradle/plugin/mpp/pm20/KotlinGradleModule.kt b/libraries/tools/kotlin-gradle-plugin/src/common/kotlin/org/jetbrains/kotlin/gradle/plugin/mpp/pm20/KotlinGradleModule.kt index 7ffd0740796..c15e9c9ac74 100644 --- a/libraries/tools/kotlin-gradle-plugin/src/common/kotlin/org/jetbrains/kotlin/gradle/plugin/mpp/pm20/KotlinGradleModule.kt +++ b/libraries/tools/kotlin-gradle-plugin/src/common/kotlin/org/jetbrains/kotlin/gradle/plugin/mpp/pm20/KotlinGradleModule.kt @@ -10,31 +10,32 @@ package org.jetbrains.kotlin.gradle.plugin.mpp.pm20 import org.gradle.api.ExtensiblePolymorphicDomainObjectContainer import org.gradle.api.NamedDomainObjectSet import org.gradle.api.Project +import org.jetbrains.kotlin.gradle.plugin.mpp.pm20.util.currentBuildId 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 KpmGradleModuleInternal( +open class GradleKpmModuleInternal( final override val project: Project, final override val moduleClassifier: String? -) : KpmGradleModule { +) : GradleKpmModule { @Inject constructor(project: Project, moduleName: CharSequence) : this( project, - moduleName.takeIf { it != KpmGradleModule.MAIN_MODULE_NAME }?.toString() + moduleName.takeIf { it != GradleKpmModule.MAIN_MODULE_NAME }?.toString() ) override val moduleIdentifier: KpmModuleIdentifier = KpmLocalModuleIdentifier(project.currentBuildId().name, project.path, moduleClassifier) - override val fragments: ExtensiblePolymorphicDomainObjectContainer = - project.objects.polymorphicDomainObjectContainer(KpmGradleFragment::class.java) + override val fragments: ExtensiblePolymorphicDomainObjectContainer = + project.objects.polymorphicDomainObjectContainer(GradleKpmFragment::class.java) // TODO DSL & build script model: find a way to create a flexible typed view on fragments? - override val variants: NamedDomainObjectSet by lazy { - fragments.withType(KpmGradleVariant::class.java) + override val variants: NamedDomainObjectSet by lazy { + fragments.withType(GradleKpmVariant::class.java) } override val plugins: Set by lazy { @@ -70,14 +71,14 @@ open class KpmGradleModuleInternal( override fun toString(): String = "$moduleIdentifier (Gradle)" } -internal val KpmGradleModule.resolvableMetadataConfigurationName: String +internal val GradleKpmModule.resolvableMetadataConfigurationName: String get() = lowerCamelCaseName(name, "DependenciesMetadata") -internal val KpmGradleModule.isMain +internal val GradleKpmModule.isMain get() = moduleIdentifier.moduleClassifier == null -internal fun KpmGradleModule.disambiguateName(simpleName: String) = +internal fun GradleKpmModule.disambiguateName(simpleName: String) = lowerCamelCaseName(moduleClassifier, simpleName) -internal fun KpmGradleModule.variantsContainingFragment(fragment: KpmFragment): Iterable = - (this as KpmModule).variantsContainingFragment(fragment).onEach { it as KpmGradleVariant } as Iterable +internal fun GradleKpmModule.variantsContainingFragment(fragment: KpmFragment): Iterable = + (this as KpmModule).variantsContainingFragment(fragment).onEach { it as GradleKpmVariant } as Iterable diff --git a/libraries/tools/kotlin-gradle-plugin/src/common/kotlin/org/jetbrains/kotlin/gradle/plugin/mpp/pm20/KotlinGradleModuleFactory.kt b/libraries/tools/kotlin-gradle-plugin/src/common/kotlin/org/jetbrains/kotlin/gradle/plugin/mpp/pm20/KotlinGradleModuleFactory.kt index dfbde4dd29c..a992973718b 100644 --- a/libraries/tools/kotlin-gradle-plugin/src/common/kotlin/org/jetbrains/kotlin/gradle/plugin/mpp/pm20/KotlinGradleModuleFactory.kt +++ b/libraries/tools/kotlin-gradle-plugin/src/common/kotlin/org/jetbrains/kotlin/gradle/plugin/mpp/pm20/KotlinGradleModuleFactory.kt @@ -8,9 +8,9 @@ package org.jetbrains.kotlin.gradle.plugin.mpp.pm20 import org.gradle.api.NamedDomainObjectFactory import org.gradle.api.Project -open class KotlinGradleModuleFactory(private val project: Project) : NamedDomainObjectFactory { - override fun create(name: String): KpmGradleModule { - val result = project.objects.newInstance(KpmGradleModuleInternal::class.java, project, name) +open class GradleKpmModuleFactory(private val project: Project) : NamedDomainObjectFactory { + override fun create(name: String): GradleKpmModule { + val result = project.objects.newInstance(GradleKpmModuleInternal::class.java, project, name) registerFragmentFactory(result) registerDefaultCommonFragment(result) addDefaultDependencyOnMainModule(result) @@ -18,29 +18,29 @@ open class KotlinGradleModuleFactory(private val project: Project) : NamedDomain return result } - protected open fun registerDefaultCommonFragment(module: KpmGradleModule) { - module.fragments.register(KpmGradleFragment.COMMON_FRAGMENT_NAME, KpmGradleFragment::class.java) + protected open fun registerDefaultCommonFragment(module: GradleKpmModule) { + module.fragments.register(GradleKpmFragment.COMMON_FRAGMENT_NAME, GradleKpmFragment::class.java) } - protected open fun addDefaultRefinementDependencyOnCommon(module: KpmGradleModule) { - module.fragments.matching { it.name != KpmGradleFragment.COMMON_FRAGMENT_NAME }.all { - it.refines(module.fragments.named(KpmGradleFragment.COMMON_FRAGMENT_NAME)) + protected open fun addDefaultRefinementDependencyOnCommon(module: GradleKpmModule) { + module.fragments.matching { it.name != GradleKpmFragment.COMMON_FRAGMENT_NAME }.all { + it.refines(module.fragments.named(GradleKpmFragment.COMMON_FRAGMENT_NAME)) } } - protected open fun addDefaultDependencyOnMainModule(module: KpmGradleModule) { - if (module.name != KpmGradleModule.MAIN_MODULE_NAME) { + protected open fun addDefaultDependencyOnMainModule(module: GradleKpmModule) { + if (module.name != GradleKpmModule.MAIN_MODULE_NAME) { module.fragments - .matching { it.fragmentName == KpmGradleFragment.COMMON_FRAGMENT_NAME } + .matching { it.fragmentName == GradleKpmFragment.COMMON_FRAGMENT_NAME } .configureEach { commonFragment -> commonFragment.dependencies { - api(module.project.kpmModules.getByName(KpmGradleModule.MAIN_MODULE_NAME)) + api(module.project.kpmModules.getByName(GradleKpmModule.MAIN_MODULE_NAME)) } } } } - protected open fun registerFragmentFactory(module: KpmGradleModule) { - module.fragments.registerFactory(KpmGradleFragment::class.java, KotlinCommonFragmentFactory(module)) + protected open fun registerFragmentFactory(module: GradleKpmModule) { + module.fragments.registerFactory(GradleKpmFragment::class.java, GradleKpmCommonFragmentFactory(module)) } } diff --git a/libraries/tools/kotlin-gradle-plugin/src/common/kotlin/org/jetbrains/kotlin/gradle/plugin/mpp/pm20/KotlinJvmVariantFactory.kt b/libraries/tools/kotlin-gradle-plugin/src/common/kotlin/org/jetbrains/kotlin/gradle/plugin/mpp/pm20/KotlinJvmVariantFactory.kt index f37f4182a11..954679b536c 100644 --- a/libraries/tools/kotlin-gradle-plugin/src/common/kotlin/org/jetbrains/kotlin/gradle/plugin/mpp/pm20/KotlinJvmVariantFactory.kt +++ b/libraries/tools/kotlin-gradle-plugin/src/common/kotlin/org/jetbrains/kotlin/gradle/plugin/mpp/pm20/KotlinJvmVariantFactory.kt @@ -9,80 +9,80 @@ package org.jetbrains.kotlin.gradle.plugin.mpp.pm20 import org.jetbrains.kotlin.gradle.plugin.mpp.pm20.util.FragmentNameDisambiguationOmittingMain -typealias KotlinJvmVariantFactory = KotlinGradleFragmentFactory +typealias GradleKpmJvmVariantFactory = GradleKpmFragmentFactory -fun KotlinJvmVariantFactory( - module: KpmGradleModule, config: KotlinJvmVariantConfig = KotlinJvmVariantConfig() -): KotlinJvmVariantFactory = KotlinJvmVariantFactory( - KotlinJvmVariantInstantiator(module, config), - KotlinJvmVariantConfigurator(config) +fun GradleKpmJvmVariantFactory( + module: GradleKpmModule, config: GradleKpmJvmVariantConfig = GradleKpmJvmVariantConfig() +): GradleKpmJvmVariantFactory = GradleKpmJvmVariantFactory( + GradleKpmJvmVariantInstantiator(module, config), + GradleKpmJvmVariantConfigurator(config) ) -data class KotlinJvmVariantConfig( - val dependenciesConfigurationFactory: KotlinFragmentDependencyConfigurationsFactory - = DefaultKotlinFragmentDependencyConfigurationsFactory, +data class GradleKpmJvmVariantConfig( + val dependenciesConfigurationFactory: GradleKpmFragmentDependencyConfigurationsFactory + = GradleKpmDefaultFragmentDependencyConfigurationsFactory, - val compileDependencies: KotlinGradleFragmentConfigurationDefinition + val compileDependencies: GradleKpmConfigurationSetup = DefaultKotlinCompileDependenciesDefinition, - val runtimeDependencies: KotlinGradleFragmentConfigurationDefinition + val runtimeDependencies: GradleKpmConfigurationSetup = DefaultKotlinRuntimeDependenciesDefinition, - val apiElements: KotlinGradleFragmentConfigurationDefinition - = DefaultKotlinApiElementsDefinition + KotlinFragmentCompilationOutputsJarArtifact, + val apiElements: GradleKpmConfigurationSetup + = DefaultKotlinApiElementsDefinition + GradleKpmCompilationOutputsJarArtifact, - val runtimeElements: KotlinGradleFragmentConfigurationDefinition + val runtimeElements: GradleKpmConfigurationSetup = DefaultKotlinRuntimeElementsDefinition, - val compileTaskConfigurator: KotlinCompileTaskConfigurator - = KotlinJvmCompileTaskConfigurator, + val compileTaskConfigurator: GradleKpmCompileTaskConfigurator + = GradleKpmJvmCompileTaskConfigurator, - val sourceArchiveTaskConfigurator: KotlinSourceArchiveTaskConfigurator - = DefaultKotlinSourceArchiveTaskConfigurator, + val sourceArchiveTaskConfigurator: GradleKpmSourceArchiveTaskConfigurator + = GradleKpmDefaultKotlinSourceArchiveTaskConfigurator, - val sourceDirectoriesConfigurator: KotlinSourceDirectoriesConfigurator - = DefaultKotlinSourceDirectoriesConfigurator, + val sourceDirectoriesConfigurator: GradleKpmSourceDirectoriesConfigurator + = GradleKpmDefaultSourceDirectoriesConfigurator, - val publicationConfigurator: KotlinPublicationConfigurator - = KotlinPublicationConfigurator.SingleVariantPublication + val publicationConfigurator: GradleKpmPublicationConfigurator + = GradleKpmPublicationConfigurator.SingleVariantPublication ) -class KotlinJvmVariantInstantiator internal constructor( - private val module: KpmGradleModule, - private val config: KotlinJvmVariantConfig -) : KotlinGradleFragmentFactory.FragmentInstantiator { +class GradleKpmJvmVariantInstantiator internal constructor( + private val module: GradleKpmModule, + private val config: GradleKpmJvmVariantConfig +) : GradleKpmFragmentFactory.FragmentInstantiator { - override fun create(name: String): KpmJvmVariant { + override fun create(name: String): GradleKpmJvmVariant { val names = FragmentNameDisambiguationOmittingMain(module, name) - val context = KotlinGradleFragmentConfigurationContextImpl( + val context = GradleKpmFragmentConfigureContextImpl( module, config.dependenciesConfigurationFactory.create(module, names), names ) - return KpmJvmVariant( + return GradleKpmJvmVariant( containingModule = module, fragmentName = name, dependencyConfigurations = context.dependencies, compileDependenciesConfiguration = config.compileDependencies.provider.getConfiguration(context).also { configuration -> - config.compileDependencies.relations.setExtendsFrom(configuration, context) + config.compileDependencies.relations.setupExtendsFromRelations(configuration, context) }, runtimeDependenciesConfiguration = config.runtimeDependencies.provider.getConfiguration(context).also { configuration -> - config.runtimeElements.relations.setExtendsFrom(configuration, context) + config.runtimeElements.relations.setupExtendsFromRelations(configuration, context) }, apiElementsConfiguration = config.apiElements.provider.getConfiguration(context).also { configuration -> - config.apiElements.relations.setExtendsFrom(configuration, context) + config.apiElements.relations.setupExtendsFromRelations(configuration, context) }, runtimeElementsConfiguration = config.runtimeElements.provider.getConfiguration(context).also { configuration -> - config.runtimeElements.relations.setExtendsFrom(configuration, context) + config.runtimeElements.relations.setupExtendsFromRelations(configuration, context) } ) } } -class KotlinJvmVariantConfigurator internal constructor( - private val config: KotlinJvmVariantConfig -) : KotlinGradleFragmentFactory.FragmentConfigurator { +class GradleKpmJvmVariantConfigurator internal constructor( + private val config: GradleKpmJvmVariantConfig +) : GradleKpmFragmentFactory.FragmentConfigurator { - override fun configure(fragment: KpmJvmVariant) { + override fun configure(fragment: GradleKpmJvmVariant) { fragment.compileDependenciesConfiguration.configure(config.compileDependencies, fragment) fragment.runtimeDependenciesConfiguration.configure(config.runtimeDependencies, fragment) fragment.apiElementsConfiguration.configure(config.apiElements, fragment) diff --git a/libraries/tools/kotlin-gradle-plugin/src/common/kotlin/org/jetbrains/kotlin/gradle/plugin/mpp/pm20/KotlinMetadataCompilationData.kt b/libraries/tools/kotlin-gradle-plugin/src/common/kotlin/org/jetbrains/kotlin/gradle/plugin/mpp/pm20/KotlinMetadataCompilationData.kt index 49df2f657ba..3d387eccadc 100644 --- a/libraries/tools/kotlin-gradle-plugin/src/common/kotlin/org/jetbrains/kotlin/gradle/plugin/mpp/pm20/KotlinMetadataCompilationData.kt +++ b/libraries/tools/kotlin-gradle-plugin/src/common/kotlin/org/jetbrains/kotlin/gradle/plugin/mpp/pm20/KotlinMetadataCompilationData.kt @@ -14,6 +14,7 @@ import org.jetbrains.kotlin.gradle.dsl.* import org.jetbrains.kotlin.gradle.dsl.KotlinMultiplatformCommonOptionsImpl import org.jetbrains.kotlin.gradle.plugin.* import org.jetbrains.kotlin.gradle.plugin.mpp.* +import org.jetbrains.kotlin.gradle.plugin.mpp.pm20.util.archivesName import org.jetbrains.kotlin.gradle.plugin.mpp.pm20.util.disambiguateName import org.jetbrains.kotlin.gradle.targets.metadata.ResolvedMetadataFilesProvider import org.jetbrains.kotlin.gradle.targets.metadata.createMetadataDependencyTransformationClasspath @@ -32,8 +33,8 @@ interface KotlinCommonFragmentMetadataCompilationData : KotlinMetadataCompilatio internal abstract class AbstractKotlinFragmentMetadataCompilationData( final override val project: Project, - val fragment: KpmGradleFragment, - private val module: KpmGradleModule, + val fragment: GradleKpmFragment, + private val module: GradleKpmModule, private val compileAllTask: TaskProvider, val metadataCompilationRegistry: MetadataCompilationRegistry, private val resolvedMetadataFiles: Lazy> @@ -106,8 +107,8 @@ internal abstract class AbstractKotlinFragmentMetadataCompilationData, metadataCompilationRegistry: MetadataCompilationRegistry, resolvedMetadataFiles: Lazy> @@ -133,18 +134,18 @@ interface KotlinNativeFragmentMetadataCompilationData : KotlinMetadataCompilationData, KotlinNativeCompilationData -internal fun KpmGradleFragment.isNativeShared(): Boolean = +internal fun GradleKpmFragment.isNativeShared(): Boolean = containingVariants.run { any() && all { it.platformType == KotlinPlatformType.native } } -internal fun KpmGradleFragment.isNativeHostSpecific(): Boolean = +internal fun GradleKpmFragment.isNativeHostSpecific(): Boolean = this in getHostSpecificFragments(containingModule) internal open class KotlinNativeFragmentMetadataCompilationDataImpl( project: Project, - fragment: KpmGradleFragment, - module: KpmGradleModule, + fragment: GradleKpmFragment, + module: GradleKpmModule, compileAllTask: TaskProvider, metadataCompilationRegistry: MetadataCompilationRegistry, resolvedMetadataFiles: Lazy> @@ -168,7 +169,7 @@ internal open class KotlinNativeFragmentMetadataCompilationDataImpl( override val konanTarget: KonanTarget get() { val nativeVariants = - fragment.containingVariants.filterIsInstance() + fragment.containingVariants.filterIsInstance() return nativeVariants.firstOrNull { it.konanTarget.enabledOnCurrentHost }?.konanTarget ?: nativeVariants.firstOrNull()?.konanTarget ?: HostManager.host @@ -182,10 +183,10 @@ internal open class KotlinNativeFragmentMetadataCompilationDataImpl( // TODO think about more generic case: a fragment that can be compiled by an arbitrary compiler // what tasks should we create? should there be a generic task for that? internal class MetadataCompilationRegistry { - private val commonCompilationDataPerFragment = LinkedHashMap() - private val nativeCompilationDataPerFragment = LinkedHashMap() + private val commonCompilationDataPerFragment = LinkedHashMap() + private val nativeCompilationDataPerFragment = LinkedHashMap() - fun registerCommon(fragment: KpmGradleFragment, compilationData: KotlinCommonFragmentMetadataCompilationDataImpl) { + fun registerCommon(fragment: GradleKpmFragment, compilationData: KotlinCommonFragmentMetadataCompilationDataImpl) { commonCompilationDataPerFragment.compute(fragment) { _, existing -> existing?.let { error("common compilation data for fragment $fragment already registered") } compilationData @@ -193,7 +194,7 @@ internal class MetadataCompilationRegistry { withAllCommonCallbacks.forEach { it.invoke(compilationData) } } - fun registerNative(fragment: KpmGradleFragment, compilationData: KotlinNativeFragmentMetadataCompilationDataImpl) { + fun registerNative(fragment: GradleKpmFragment, compilationData: KotlinNativeFragmentMetadataCompilationDataImpl) { nativeCompilationDataPerFragment.compute(fragment) { _, existing -> existing?.let { error("native compilation data for fragment $fragment already registered") } compilationData @@ -201,7 +202,7 @@ internal class MetadataCompilationRegistry { withAllNativeCallbacks.forEach { it.invoke(compilationData) } } - fun getForFragmentOrNull(fragment: KpmGradleFragment): AbstractKotlinFragmentMetadataCompilationData<*>? = + fun getForFragmentOrNull(fragment: GradleKpmFragment): AbstractKotlinFragmentMetadataCompilationData<*>? = listOf(commonCompilationDataPerFragment.getValue(fragment), nativeCompilationDataPerFragment.getValue(fragment)).singleOrNull { it.isActive } diff --git a/libraries/tools/kotlin-gradle-plugin/src/common/kotlin/org/jetbrains/kotlin/gradle/plugin/mpp/pm20/KotlinNativeVariant.kt b/libraries/tools/kotlin-gradle-plugin/src/common/kotlin/org/jetbrains/kotlin/gradle/plugin/mpp/pm20/KotlinNativeVariant.kt index 12813f57c58..e9ab38e1bf4 100644 --- a/libraries/tools/kotlin-gradle-plugin/src/common/kotlin/org/jetbrains/kotlin/gradle/plugin/mpp/pm20/KotlinNativeVariant.kt +++ b/libraries/tools/kotlin-gradle-plugin/src/common/kotlin/org/jetbrains/kotlin/gradle/plugin/mpp/pm20/KotlinNativeVariant.kt @@ -5,31 +5,29 @@ package org.jetbrains.kotlin.gradle.plugin.mpp.pm20 -import org.gradle.api.Project import org.gradle.api.artifacts.Configuration import org.jetbrains.kotlin.gradle.dsl.KotlinCommonOptions import org.jetbrains.kotlin.gradle.plugin.mpp.* -import org.jetbrains.kotlin.gradle.plugin.mpp.NativeCompileOptions import org.jetbrains.kotlin.gradle.plugin.mpp.publishedConfigurationName import org.jetbrains.kotlin.konan.target.KonanTarget -abstract class KpmNativeVariantInternal( - containingModule: KpmGradleModule, +abstract class GradleKpmNativeVariantInternal( + containingModule: GradleKpmModule, fragmentName: String, val konanTarget: KonanTarget, - dependencyConfigurations: KotlinFragmentDependencyConfigurations, + dependencyConfigurations: GradleKpmFragmentDependencyConfigurations, compileDependencyConfiguration: Configuration, apiElementsConfiguration: Configuration, final override val hostSpecificMetadataElementsConfiguration: Configuration? -) : KpmNativeVariant, - KpmGradleVariantInternal( +) : GradleKpmNativeVariant, + GradleKpmVariantInternal( containingModule = containingModule, fragmentName = fragmentName, dependencyConfigurations = dependencyConfigurations, compileDependenciesConfiguration = compileDependencyConfiguration, apiElementsConfiguration = apiElementsConfiguration ), - SingleMavenPublishedModuleHolder by DefaultSingleMavenPublishedModuleHolder(containingModule, fragmentName) { + GradleKpmSingleMavenPublishedModuleHolder by GradleKpmDefaultSingleMavenPublishedModuleHolder(containingModule, fragmentName) { override var enableEndorsedLibraries: Boolean = false @@ -40,35 +38,7 @@ abstract class KpmNativeVariantInternal( DefaultCInteropSettings(project, cinteropName, compilationData) } - override val compilationData by lazy { KotlinNativeVariantCompilationData(this) } -} - -class KotlinNativeVariantConstructor( - val konanTarget: KonanTarget, - val variantClass: Class, - private val constructor: ( - containingModule: KpmGradleModule, - fragmentName: String, - dependencyConfigurations: KotlinFragmentDependencyConfigurations, - compileDependencyConfiguration: Configuration, - apiElementsConfiguration: Configuration, - hostSpecificMetadataElementsConfiguration: Configuration? - ) -> T -) { - operator fun invoke( - containingModule: KpmGradleModule, - fragmentName: String, - dependencyConfigurations: KotlinFragmentDependencyConfigurations, - compileDependencyConfiguration: Configuration, - apiElementsConfiguration: Configuration, - hostSpecificMetadataElementsConfiguration: Configuration? - ): T = constructor( - containingModule, fragmentName, - dependencyConfigurations, - compileDependencyConfiguration, - apiElementsConfiguration, - hostSpecificMetadataElementsConfiguration - ) + override val compilationData by lazy { GradleKpmNativeVariantCompilationData(this) } } interface KotlinNativeCompilationData : KotlinCompilationData { @@ -76,27 +46,9 @@ interface KotlinNativeCompilationData : KotlinCompilati val enableEndorsedLibs: Boolean } -internal class KotlinNativeVariantCompilationData( - val variant: KpmNativeVariantInternal -) : KotlinVariantCompilationDataInternal, KotlinNativeCompilationData { - override val konanTarget: KonanTarget - get() = variant.konanTarget - - override val enableEndorsedLibs: Boolean - get() = variant.enableEndorsedLibraries - - override val project: Project - get() = variant.containingModule.project - - override val owner: KpmNativeVariant - get() = variant - - override val kotlinOptions: KotlinCommonOptions = NativeCompileOptions { variant.languageSettings } -} - internal class KotlinMappedNativeCompilationFactory( target: KotlinNativeTarget, - private val variantClass: Class + private val variantClass: Class ) : KotlinNativeCompilationFactory(target) { override fun create(name: String): KotlinNativeCompilation { val module = target.project.kpmModules.maybeCreate(name) diff --git a/libraries/tools/kotlin-gradle-plugin/src/common/kotlin/org/jetbrains/kotlin/gradle/plugin/mpp/pm20/KotlinNativeVariantFactory.kt b/libraries/tools/kotlin-gradle-plugin/src/common/kotlin/org/jetbrains/kotlin/gradle/plugin/mpp/pm20/KotlinNativeVariantFactory.kt index 9d31b121bb2..c04de74bc81 100644 --- a/libraries/tools/kotlin-gradle-plugin/src/common/kotlin/org/jetbrains/kotlin/gradle/plugin/mpp/pm20/KotlinNativeVariantFactory.kt +++ b/libraries/tools/kotlin-gradle-plugin/src/common/kotlin/org/jetbrains/kotlin/gradle/plugin/mpp/pm20/KotlinNativeVariantFactory.kt @@ -9,76 +9,75 @@ package org.jetbrains.kotlin.gradle.plugin.mpp.pm20 import org.jetbrains.kotlin.gradle.plugin.mpp.pm20.util.FragmentNameDisambiguation -fun KotlinNativeVariantFactory( - module: KpmGradleModule, - constructor: KotlinNativeVariantConstructor, - config: KotlinNativeVariantConfig = KotlinNativeVariantConfig() -) = KotlinGradleFragmentFactory( - fragmentInstantiator = KotlinNativeVariantInstantiator(module, constructor, config), - fragmentConfigurator = KotlinNativeVariantConfigurator(config) +fun GradleKpmNativeVariantFactory( + module: GradleKpmModule, + constructor: GradleKpmNativeVariantConstructor, + config: GradleKpmNativeVariantConfig = GradleKpmNativeVariantConfig() +) = GradleKpmFragmentFactory( + fragmentInstantiator = GradleKpmNativeVariantInstantiator(module, constructor, config), + fragmentConfigurator = GradleKpmNativeVariantConfigurator(config) ) -data class KotlinNativeVariantConfig( - val dependenciesConfigurationFactory: KotlinFragmentDependencyConfigurationsFactory = - DefaultKotlinFragmentDependencyConfigurationsFactory, +data class GradleKpmNativeVariantConfig( + val dependenciesConfigurationFactory: GradleKpmFragmentDependencyConfigurationsFactory = + GradleKpmDefaultFragmentDependencyConfigurationsFactory, - val compileDependencies: ConfigurationDefinition = - DefaultKotlinCompileDependenciesDefinition + KotlinFragmentKonanTargetAttribute, + val compileDependencies: GradleKpmConfigurationSetup = + DefaultKotlinCompileDependenciesDefinition + GradleKpmKonanTargetAttribute, - val apiElements: ConfigurationDefinition = + val apiElements: GradleKpmConfigurationSetup = DefaultKotlinApiElementsDefinition - + KotlinFragmentKonanTargetAttribute - + FragmentConfigurationRelation { extendsFrom(dependencies.transitiveImplementationConfiguration) }, + + GradleKpmKonanTargetAttribute + + GradleKpmConfigurationRelationSetup { extendsFrom(dependencies.transitiveImplementationConfiguration) }, - val hostSpecificMetadataElements: ConfigurationDefinition = + val hostSpecificMetadataElements: GradleKpmConfigurationSetup = DefaultKotlinHostSpecificMetadataElementsDefinition, - val compileTaskConfigurator: KotlinCompileTaskConfigurator = - KotlinNativeCompileTaskConfigurator, + val compileTaskConfigurator: GradleKpmCompileTaskConfigurator = + GradleKpmNativeCompileTaskConfigurator, - val sourceArchiveTaskConfigurator: KotlinSourceArchiveTaskConfigurator = - DefaultKotlinSourceArchiveTaskConfigurator, + val sourceArchiveTaskConfigurator: GradleKpmSourceArchiveTaskConfigurator = + GradleKpmDefaultKotlinSourceArchiveTaskConfigurator, - val sourceDirectoriesConfigurator: KotlinSourceDirectoriesConfigurator = - DefaultKotlinSourceDirectoriesConfigurator, + val sourceDirectoriesConfigurator: GradleKpmSourceDirectoriesConfigurator = + GradleKpmDefaultSourceDirectoriesConfigurator, - val publicationConfigurator: KotlinPublicationConfigurator = - KotlinPublicationConfigurator.NativeVariantPublication + val publicationConfigurator: GradleKpmPublicationConfigurator = + GradleKpmPublicationConfigurator.NativeVariantPublication ) -class KotlinNativeVariantInstantiator( - private val module: KpmGradleModule, - private val kotlinNativeVariantConstructor: KotlinNativeVariantConstructor, - private val config: KotlinNativeVariantConfig - -) : KotlinGradleFragmentFactory.FragmentInstantiator { +class GradleKpmNativeVariantInstantiator( + private val module: GradleKpmModule, + private val variantConstructor: GradleKpmNativeVariantConstructor, + private val config: GradleKpmNativeVariantConfig +) : GradleKpmFragmentFactory.FragmentInstantiator { override fun create(name: String): T { val names = FragmentNameDisambiguation(module, name) val dependencies = config.dependenciesConfigurationFactory.create(module, names) - val context = KotlinGradleFragmentConfigurationContextImpl(module, dependencies, names) + val context = GradleKpmFragmentConfigureContextImpl(module, dependencies, names) - return kotlinNativeVariantConstructor.invoke( + return variantConstructor.invoke( containingModule = module, fragmentName = name, dependencyConfigurations = dependencies, compileDependencyConfiguration = config.compileDependencies.provider.getConfiguration(context).also { configuration -> - config.compileDependencies.relations.setExtendsFrom(configuration, context) + config.compileDependencies.relations.setupExtendsFromRelations(configuration, context) }, apiElementsConfiguration = config.apiElements.provider.getConfiguration(context).also { configuration -> - config.apiElements.relations.setExtendsFrom(configuration, context) + config.apiElements.relations.setupExtendsFromRelations(configuration, context) }, hostSpecificMetadataElementsConfiguration = config.hostSpecificMetadataElements.provider.getConfiguration(context).also { configuration -> - config.hostSpecificMetadataElements.relations.setExtendsFrom(configuration, context) + config.hostSpecificMetadataElements.relations.setupExtendsFromRelations(configuration, context) } ) } } -class KotlinNativeVariantConfigurator( - private val config: KotlinNativeVariantConfig -) : KotlinGradleFragmentFactory.FragmentConfigurator { +class GradleKpmNativeVariantConfigurator( + private val config: GradleKpmNativeVariantConfig +) : GradleKpmFragmentFactory.FragmentConfigurator { override fun configure(fragment: T) { fragment.compileDependenciesConfiguration.configure(config.compileDependencies, fragment) diff --git a/libraries/tools/kotlin-gradle-plugin/src/common/kotlin/org/jetbrains/kotlin/gradle/plugin/mpp/pm20/KotlinPublicationConfigurator.kt b/libraries/tools/kotlin-gradle-plugin/src/common/kotlin/org/jetbrains/kotlin/gradle/plugin/mpp/pm20/KotlinPublicationConfigurator.kt index 566935787a1..fd49ac2c1ba 100644 --- a/libraries/tools/kotlin-gradle-plugin/src/common/kotlin/org/jetbrains/kotlin/gradle/plugin/mpp/pm20/KotlinPublicationConfigurator.kt +++ b/libraries/tools/kotlin-gradle-plugin/src/common/kotlin/org/jetbrains/kotlin/gradle/plugin/mpp/pm20/KotlinPublicationConfigurator.kt @@ -5,21 +5,21 @@ package org.jetbrains.kotlin.gradle.plugin.mpp.pm20 -interface KotlinPublicationConfigurator : KotlinGradleFragmentFactory.FragmentConfigurator { +interface GradleKpmPublicationConfigurator : GradleKpmFragmentFactory.FragmentConfigurator { - object NoPublication : KotlinPublicationConfigurator { - override fun configure(fragment: KpmGradleVariant) = Unit + object NoPublication : GradleKpmPublicationConfigurator { + override fun configure(fragment: GradleKpmVariant) = Unit } - object SingleVariantPublication : KotlinPublicationConfigurator { - override fun configure(fragment: KpmGradlePublishedVariantWithRuntime) { - VariantPublishingConfigurator.get(fragment.project).configureSingleVariantPublication(fragment) + object SingleVariantPublication : GradleKpmPublicationConfigurator { + override fun configure(fragment: GradleKpmPublishedVariantWithRuntime) { + GradleKpmVariantPublishingConfigurator.get(fragment.project).configureSingleVariantPublication(fragment) } } - object NativeVariantPublication : KotlinPublicationConfigurator { - override fun configure(fragment: KpmNativeVariantInternal) { - VariantPublishingConfigurator.get(fragment.project).configureNativeVariantPublication(fragment) + object NativeVariantPublication : GradleKpmPublicationConfigurator { + override fun configure(fragment: GradleKpmNativeVariantInternal) { + GradleKpmVariantPublishingConfigurator.get(fragment.project).configureNativeVariantPublication(fragment) } } } diff --git a/libraries/tools/kotlin-gradle-plugin/src/common/kotlin/org/jetbrains/kotlin/gradle/plugin/mpp/pm20/KotlinSourceArchiveTaskConfigurator.kt b/libraries/tools/kotlin-gradle-plugin/src/common/kotlin/org/jetbrains/kotlin/gradle/plugin/mpp/pm20/KotlinSourceArchiveTaskConfigurator.kt index a1982f7220d..524f19e2e16 100644 --- a/libraries/tools/kotlin-gradle-plugin/src/common/kotlin/org/jetbrains/kotlin/gradle/plugin/mpp/pm20/KotlinSourceArchiveTaskConfigurator.kt +++ b/libraries/tools/kotlin-gradle-plugin/src/common/kotlin/org/jetbrains/kotlin/gradle/plugin/mpp/pm20/KotlinSourceArchiveTaskConfigurator.kt @@ -9,17 +9,17 @@ import org.gradle.api.tasks.TaskProvider import org.jetbrains.kotlin.gradle.plugin.mpp.pm20.util.unambiguousNameInProject import org.jetbrains.kotlin.gradle.plugin.mpp.sourcesJarTaskNamed -interface KotlinSourceArchiveTaskConfigurator { +interface GradleKpmSourceArchiveTaskConfigurator { fun registerSourceArchiveTask(variant: T): TaskProvider<*>? } -object DefaultKotlinSourceArchiveTaskConfigurator : KotlinSourceArchiveTaskConfigurator { - override fun registerSourceArchiveTask(variant: KpmGradleVariant): TaskProvider<*> { +object GradleKpmDefaultKotlinSourceArchiveTaskConfigurator : GradleKpmSourceArchiveTaskConfigurator { + override fun registerSourceArchiveTask(variant: GradleKpmVariant): TaskProvider<*> { return sourcesJarTaskNamed( taskName = variant.sourceArchiveTaskName, project = variant.project, sourceSets = lazy { - FragmentSourcesProvider().getSourcesFromRefinesClosureAsMap(variant) + GradleKpmFragmentSourcesProvider().getSourcesFromRefinesClosureAsMap(variant) .entries.associate { it.key.unambiguousNameInProject to it.value.get() } }, artifactNameAppendix = variant.name diff --git a/libraries/tools/kotlin-gradle-plugin/src/common/kotlin/org/jetbrains/kotlin/gradle/plugin/mpp/pm20/KotlinSourceDirectoriesConfigurator.kt b/libraries/tools/kotlin-gradle-plugin/src/common/kotlin/org/jetbrains/kotlin/gradle/plugin/mpp/pm20/KotlinSourceDirectoriesConfigurator.kt index e7ba3fe769d..2eb4dd0f011 100644 --- a/libraries/tools/kotlin-gradle-plugin/src/common/kotlin/org/jetbrains/kotlin/gradle/plugin/mpp/pm20/KotlinSourceDirectoriesConfigurator.kt +++ b/libraries/tools/kotlin-gradle-plugin/src/common/kotlin/org/jetbrains/kotlin/gradle/plugin/mpp/pm20/KotlinSourceDirectoriesConfigurator.kt @@ -11,10 +11,10 @@ import org.jetbrains.kotlin.gradle.plugin.sources.kpm.FragmentMappedKotlinSource import org.jetbrains.kotlin.gradle.utils.lowerCamelCaseName import java.io.File -interface KotlinSourceDirectoriesConfigurator: KotlinGradleFragmentFactory.FragmentConfigurator +interface GradleKpmSourceDirectoriesConfigurator: GradleKpmFragmentFactory.FragmentConfigurator -object DefaultKotlinSourceDirectoriesConfigurator : KotlinSourceDirectoriesConfigurator { - override fun configure(fragment: KpmGradleFragment) { +object GradleKpmDefaultSourceDirectoriesConfigurator : GradleKpmSourceDirectoriesConfigurator { + override fun configure(fragment: GradleKpmFragment) { fragment.kotlinSourceRoots.srcDir( fragment.project.provider { defaultSourceFolder( @@ -25,7 +25,7 @@ object DefaultKotlinSourceDirectoriesConfigurator : KotlinSourceDirectoriesConfi ) } - private fun fragmentDirectoryName(fragment: KpmGradleFragment): String { + private fun fragmentDirectoryName(fragment: GradleKpmFragment): String { val project = fragment.project val isModelMappingEnabled = project.multiplatformExtensionOrNull != null val kpmDefaultResult = lowerCamelCaseName(fragment.name, fragment.containingModule.name) @@ -40,7 +40,7 @@ object DefaultKotlinSourceDirectoriesConfigurator : KotlinSourceDirectoriesConfi } } - fun defaultSourceFolder(fragment: KpmGradleFragment, type: String): File { + fun defaultSourceFolder(fragment: GradleKpmFragment, type: String): File { val fragmentDirectoryName = fragmentDirectoryName(fragment) return fragment.project.file("src/$fragmentDirectoryName/$type") } diff --git a/libraries/tools/kotlin-gradle-plugin/src/common/kotlin/org/jetbrains/kotlin/gradle/plugin/mpp/pm20/KpmAwareTargetConfigurator.kt b/libraries/tools/kotlin-gradle-plugin/src/common/kotlin/org/jetbrains/kotlin/gradle/plugin/mpp/pm20/KpmAwareTargetConfigurator.kt index 5d1abb8ea95..97e6b731bc7 100644 --- a/libraries/tools/kotlin-gradle-plugin/src/common/kotlin/org/jetbrains/kotlin/gradle/plugin/mpp/pm20/KpmAwareTargetConfigurator.kt +++ b/libraries/tools/kotlin-gradle-plugin/src/common/kotlin/org/jetbrains/kotlin/gradle/plugin/mpp/pm20/KpmAwareTargetConfigurator.kt @@ -11,7 +11,7 @@ import org.jetbrains.kotlin.gradle.plugin.mpp.AbstractKotlinTarget import org.jetbrains.kotlin.gradle.plugin.mpp.VariantMappedCompilationDetails import java.util.concurrent.Callable -internal open class KpmAwareTargetConfigurator( +internal open class GradleKpmAwareTargetConfigurator( private val legacyModelTargetConfigurator: AbstractKotlinTargetConfigurator, ) : AbstractKotlinTargetConfigurator(true, legacyModelTargetConfigurator.createDefaultSourceSets), KotlinTargetConfigurator by legacyModelTargetConfigurator { @@ -31,7 +31,7 @@ internal open class KpmAwareTargetConfigurator( val compilationDetails = (compilation as? AbstractKotlinCompilation)?.compilationDetails if (compilationDetails is VariantMappedCompilationDetails<*> && compilationDetails.variant.containingModule.isMain) { val variant = compilationDetails.variant - if (variant is SingleMavenPublishedModuleHolder) { + if (variant is GradleKpmSingleMavenPublishedModuleHolder) { variant.whenPublicationAssigned { publication -> target.publicationConfigureActions.all { action -> action.execute(publication) @@ -76,10 +76,10 @@ internal open class KpmAwareTargetConfigurator( } } -internal class KpmAwareTargetWithTestsConfigurator, T : KotlinTargetWithTests<*, R>, C>( +internal class GradleKpmAwareTargetWithTestsConfigurator, T : KotlinTargetWithTests<*, R>, C>( private val legacyModelTargetWithTestsConfigurator: C ) : - KpmAwareTargetConfigurator(legacyModelTargetWithTestsConfigurator), + GradleKpmAwareTargetConfigurator(legacyModelTargetWithTestsConfigurator), KotlinTargetWithTestsConfigurator where C : AbstractKotlinTargetConfigurator, @@ -95,4 +95,4 @@ internal class KpmAwareTargetWithTestsConfigurator, T override fun createTestRun(name: String, target: T): R = legacyModelTargetWithTestsConfigurator.createTestRun(name, target) -} \ No newline at end of file +} diff --git a/libraries/tools/kotlin-gradle-plugin/src/common/kotlin/org/jetbrains/kotlin/gradle/plugin/mpp/pm20/KpmGradleFragmentInternal.kt b/libraries/tools/kotlin-gradle-plugin/src/common/kotlin/org/jetbrains/kotlin/gradle/plugin/mpp/pm20/KpmGradleFragmentInternal.kt index a0b89efb286..5b4a1d31746 100644 --- a/libraries/tools/kotlin-gradle-plugin/src/common/kotlin/org/jetbrains/kotlin/gradle/plugin/mpp/pm20/KpmGradleFragmentInternal.kt +++ b/libraries/tools/kotlin-gradle-plugin/src/common/kotlin/org/jetbrains/kotlin/gradle/plugin/mpp/pm20/KpmGradleFragmentInternal.kt @@ -14,7 +14,7 @@ import org.gradle.util.ConfigureUtil import org.jetbrains.kotlin.gradle.plugin.KotlinDependencyHandler import org.jetbrains.kotlin.gradle.plugin.LanguageSettingsBuilder import org.jetbrains.kotlin.gradle.plugin.mpp.DefaultKotlinDependencyHandler -import org.jetbrains.kotlin.gradle.plugin.mpp.toModuleDependency +import org.jetbrains.kotlin.gradle.plugin.mpp.toKpmModuleDependency import org.jetbrains.kotlin.gradle.plugin.sources.DefaultLanguageSettingsBuilder import org.jetbrains.kotlin.gradle.plugin.sources.FragmentConsistencyChecker import org.jetbrains.kotlin.gradle.plugin.sources.FragmentConsistencyChecks @@ -25,12 +25,12 @@ import org.jetbrains.kotlin.tooling.core.MutableExtras import org.jetbrains.kotlin.tooling.core.mutableExtrasOf import javax.inject.Inject -open class KpmGradleFragmentInternal @Inject constructor( - final override val containingModule: KpmGradleModule, +open class GradleKpmFragmentInternal @Inject constructor( + final override val containingModule: GradleKpmModule, final override val fragmentName: String, - dependencyConfigurations: KotlinFragmentDependencyConfigurations -) : KpmGradleFragment, - KotlinFragmentDependencyConfigurations by dependencyConfigurations { + dependencyConfigurations: GradleKpmFragmentDependencyConfigurations +) : GradleKpmFragment, + GradleKpmFragmentDependencyConfigurations by dependencyConfigurations { final override fun getName(): String = fragmentName @@ -44,12 +44,12 @@ open class KpmGradleFragmentInternal @Inject constructor( // FIXME check for consistency override val languageSettings: LanguageSettingsBuilder = DefaultLanguageSettingsBuilder() - override fun refines(other: KpmGradleFragment) { + override fun refines(other: GradleKpmFragment) { checkCanRefine(other) refines(containingModule.fragments.named(other.name)) } - override fun refines(other: NamedDomainObjectProvider) { + override fun refines(other: NamedDomainObjectProvider) { _directRefinesDependencies.add(other) other.configure { checkCanRefine(it) } @@ -66,11 +66,11 @@ open class KpmGradleFragmentInternal @Inject constructor( ) project.runProjectConfigurationHealthCheckWhenEvaluated { - kotlinGradleFragmentConsistencyChecker.runAllChecks(this@KpmGradleFragmentInternal, other.get()) + kotlinGradleFragmentConsistencyChecker.runAllChecks(this@GradleKpmFragmentInternal, other.get()) } } - private fun checkCanRefine(other: KpmGradleFragment) { + private fun checkCanRefine(other: GradleKpmFragment) { check(containingModule == other.containingModule) { "Fragments can only refine each other within one module. Can't make $this refine $other" } @@ -82,9 +82,9 @@ open class KpmGradleFragmentInternal @Inject constructor( override fun dependencies(configureClosure: Closure) = dependencies f@{ ConfigureUtil.configure(configureClosure, this@f) } - private val _directRefinesDependencies = mutableSetOf>() + private val _directRefinesDependencies = mutableSetOf>() - override val declaredRefinesDependencies: Iterable + override val declaredRefinesDependencies: Iterable get() = _directRefinesDependencies.map { it.get() }.toSet() // TODO: separate the declared module dependencies and exported module dependencies? we need this to keep implementation dependencies @@ -92,7 +92,7 @@ open class KpmGradleFragmentInternal @Inject constructor( // anyway, so for now all fragments follow that behavior override val declaredModuleDependencies: Iterable get() = listOf(apiConfiguration, implementationConfiguration).flatMapTo(mutableSetOf()) { exportConfiguration -> - exportConfiguration.allDependencies.map { dependency -> dependency.toModuleDependency(project) } + exportConfiguration.allDependencies.map { dependency -> dependency.toKpmModuleDependency(project) } } override val kotlinSourceRoots: SourceDirectorySet = @@ -106,7 +106,7 @@ open class KpmGradleFragmentInternal @Inject constructor( FragmentConsistencyChecker( unitsName = "fragments", name = { name }, - checks = FragmentConsistencyChecks( + checks = FragmentConsistencyChecks( unitName = "fragment", languageSettings = { languageSettings } ).allChecks diff --git a/libraries/tools/kotlin-gradle-plugin/src/common/kotlin/org/jetbrains/kotlin/gradle/plugin/mpp/pm20/KpmJvmVariant.kt b/libraries/tools/kotlin-gradle-plugin/src/common/kotlin/org/jetbrains/kotlin/gradle/plugin/mpp/pm20/KpmJvmVariant.kt index feb84197a19..96bbbd42af6 100644 --- a/libraries/tools/kotlin-gradle-plugin/src/common/kotlin/org/jetbrains/kotlin/gradle/plugin/mpp/pm20/KpmJvmVariant.kt +++ b/libraries/tools/kotlin-gradle-plugin/src/common/kotlin/org/jetbrains/kotlin/gradle/plugin/mpp/pm20/KpmJvmVariant.kt @@ -11,17 +11,18 @@ import org.jetbrains.kotlin.gradle.dsl.KotlinJvmOptionsImpl import org.jetbrains.kotlin.gradle.plugin.* import org.jetbrains.kotlin.gradle.plugin.mpp.* import org.jetbrains.kotlin.gradle.plugin.mpp.filterModuleName +import org.jetbrains.kotlin.gradle.plugin.mpp.pm20.util.archivesName import org.jetbrains.kotlin.gradle.targets.jvm.KotlinJvmTarget -open class KpmJvmVariant( - containingModule: KpmGradleModule, +open class GradleKpmJvmVariant( + containingModule: GradleKpmModule, fragmentName: String, - dependencyConfigurations: KotlinFragmentDependencyConfigurations, + dependencyConfigurations: GradleKpmFragmentDependencyConfigurations, compileDependenciesConfiguration: Configuration, apiElementsConfiguration: Configuration, runtimeDependenciesConfiguration: Configuration, runtimeElementsConfiguration: Configuration -) : KpmGradlePublishedVariantWithRuntime( +) : GradleKpmPublishedVariantWithRuntime( containingModule = containingModule, fragmentName = fragmentName, dependencyConfigurations = dependencyConfigurations, @@ -30,20 +31,20 @@ open class KpmJvmVariant( runtimeDependencyConfiguration = runtimeDependenciesConfiguration, runtimeElementsConfiguration = runtimeElementsConfiguration ) { - override val compilationData: KotlinJvmVariantCompilationData by lazy { KotlinJvmVariantCompilationData(this) } + override val compilationData: GradleKpmJvmVariantCompilationData by lazy { GradleKpmJvmVariantCompilationData(this) } override val platformType: KotlinPlatformType get() = KotlinPlatformType.jvm } -class KotlinJvmVariantCompilationData(val variant: KpmJvmVariant) : KotlinVariantCompilationDataInternal { - override val owner: KpmJvmVariant get() = variant +class GradleKpmJvmVariantCompilationData(val variant: GradleKpmJvmVariant) : GradleKpmVariantCompilationDataInternal { + override val owner: GradleKpmJvmVariant get() = variant // TODO pull out to the variant override val kotlinOptions: KotlinJvmOptions = KotlinJvmOptionsImpl() } -internal fun KpmGradleVariant.ownModuleName(): String { +internal fun GradleKpmVariant.ownModuleName(): String { val project = containingModule.project val baseName = project.archivesName ?: project.name @@ -56,7 +57,7 @@ internal class KotlinMappedJvmCompilationFactory( ) : KotlinJvmCompilationFactory(target) { override fun create(name: String): KotlinJvmCompilation { val module = target.project.kpmModules.maybeCreate(name) - val variant = module.fragments.create(target.name, KpmJvmVariant::class.java) + val variant = module.fragments.create(target.name, GradleKpmJvmVariant::class.java) return KotlinJvmCompilation( VariantMappedCompilationDetailsWithRuntime(variant, target), diff --git a/libraries/tools/kotlin-gradle-plugin/src/common/kotlin/org/jetbrains/kotlin/gradle/plugin/mpp/pm20/KpmNativeVariants.kt b/libraries/tools/kotlin-gradle-plugin/src/common/kotlin/org/jetbrains/kotlin/gradle/plugin/mpp/pm20/KpmNativeVariants.kt index 0e87ea41ba2..23cf7be15f6 100644 --- a/libraries/tools/kotlin-gradle-plugin/src/common/kotlin/org/jetbrains/kotlin/gradle/plugin/mpp/pm20/KpmNativeVariants.kt +++ b/libraries/tools/kotlin-gradle-plugin/src/common/kotlin/org/jetbrains/kotlin/gradle/plugin/mpp/pm20/KpmNativeVariants.kt @@ -5,14 +5,14 @@ import org.jetbrains.kotlin.konan.target.KonanTarget import javax.inject.Inject // DO NOT EDIT MANUALLY! Generated by org.jetbrains.kotlin.generators.gradle.dsl.KpmNativeVariantCodegenKt -open class KpmAndroidNativeX64Variant @Inject constructor( - containingModule: KpmGradleModule, +open class GradleKpmAndroidNativeX64Variant @Inject constructor( + containingModule: GradleKpmModule, fragmentName: String, - dependencyConfigurations: KotlinFragmentDependencyConfigurations, + dependencyConfigurations: GradleKpmFragmentDependencyConfigurations, compileDependencyConfiguration: Configuration, apiElementsConfiguration: Configuration, hostSpecificMetadataElementsConfiguration: Configuration? -) : KpmNativeVariantInternal( +) : GradleKpmNativeVariantInternal( containingModule = containingModule, fragmentName = fragmentName, konanTarget = KonanTarget.ANDROID_X64, @@ -22,20 +22,20 @@ open class KpmAndroidNativeX64Variant @Inject constructor( hostSpecificMetadataElementsConfiguration = hostSpecificMetadataElementsConfiguration ) { companion object { - val constructor = KotlinNativeVariantConstructor( - KonanTarget.ANDROID_X64, KpmAndroidNativeX64Variant::class.java, ::KpmAndroidNativeX64Variant + val constructor = GradleKpmNativeVariantConstructor( + KonanTarget.ANDROID_X64, GradleKpmAndroidNativeX64Variant::class.java, ::GradleKpmAndroidNativeX64Variant ) } } -open class KpmAndroidNativeX86Variant @Inject constructor( - containingModule: KpmGradleModule, +open class GradleKpmAndroidNativeX86Variant @Inject constructor( + containingModule: GradleKpmModule, fragmentName: String, - dependencyConfigurations: KotlinFragmentDependencyConfigurations, + dependencyConfigurations: GradleKpmFragmentDependencyConfigurations, compileDependencyConfiguration: Configuration, apiElementsConfiguration: Configuration, hostSpecificMetadataElementsConfiguration: Configuration? -) : KpmNativeVariantInternal( +) : GradleKpmNativeVariantInternal( containingModule = containingModule, fragmentName = fragmentName, konanTarget = KonanTarget.ANDROID_X86, @@ -45,20 +45,20 @@ open class KpmAndroidNativeX86Variant @Inject constructor( hostSpecificMetadataElementsConfiguration = hostSpecificMetadataElementsConfiguration ) { companion object { - val constructor = KotlinNativeVariantConstructor( - KonanTarget.ANDROID_X86, KpmAndroidNativeX86Variant::class.java, ::KpmAndroidNativeX86Variant + val constructor = GradleKpmNativeVariantConstructor( + KonanTarget.ANDROID_X86, GradleKpmAndroidNativeX86Variant::class.java, ::GradleKpmAndroidNativeX86Variant ) } } -open class KpmAndroidNativeArm32Variant @Inject constructor( - containingModule: KpmGradleModule, +open class GradleKpmAndroidNativeArm32Variant @Inject constructor( + containingModule: GradleKpmModule, fragmentName: String, - dependencyConfigurations: KotlinFragmentDependencyConfigurations, + dependencyConfigurations: GradleKpmFragmentDependencyConfigurations, compileDependencyConfiguration: Configuration, apiElementsConfiguration: Configuration, hostSpecificMetadataElementsConfiguration: Configuration? -) : KpmNativeVariantInternal( +) : GradleKpmNativeVariantInternal( containingModule = containingModule, fragmentName = fragmentName, konanTarget = KonanTarget.ANDROID_ARM32, @@ -68,20 +68,20 @@ open class KpmAndroidNativeArm32Variant @Inject constructor( hostSpecificMetadataElementsConfiguration = hostSpecificMetadataElementsConfiguration ) { companion object { - val constructor = KotlinNativeVariantConstructor( - KonanTarget.ANDROID_ARM32, KpmAndroidNativeArm32Variant::class.java, ::KpmAndroidNativeArm32Variant + val constructor = GradleKpmNativeVariantConstructor( + KonanTarget.ANDROID_ARM32, GradleKpmAndroidNativeArm32Variant::class.java, ::GradleKpmAndroidNativeArm32Variant ) } } -open class KpmAndroidNativeArm64Variant @Inject constructor( - containingModule: KpmGradleModule, +open class GradleKpmAndroidNativeArm64Variant @Inject constructor( + containingModule: GradleKpmModule, fragmentName: String, - dependencyConfigurations: KotlinFragmentDependencyConfigurations, + dependencyConfigurations: GradleKpmFragmentDependencyConfigurations, compileDependencyConfiguration: Configuration, apiElementsConfiguration: Configuration, hostSpecificMetadataElementsConfiguration: Configuration? -) : KpmNativeVariantInternal( +) : GradleKpmNativeVariantInternal( containingModule = containingModule, fragmentName = fragmentName, konanTarget = KonanTarget.ANDROID_ARM64, @@ -91,20 +91,20 @@ open class KpmAndroidNativeArm64Variant @Inject constructor( hostSpecificMetadataElementsConfiguration = hostSpecificMetadataElementsConfiguration ) { companion object { - val constructor = KotlinNativeVariantConstructor( - KonanTarget.ANDROID_ARM64, KpmAndroidNativeArm64Variant::class.java, ::KpmAndroidNativeArm64Variant + val constructor = GradleKpmNativeVariantConstructor( + KonanTarget.ANDROID_ARM64, GradleKpmAndroidNativeArm64Variant::class.java, ::GradleKpmAndroidNativeArm64Variant ) } } -open class KpmIosArm32Variant @Inject constructor( - containingModule: KpmGradleModule, +open class GradleKpmIosArm32Variant @Inject constructor( + containingModule: GradleKpmModule, fragmentName: String, - dependencyConfigurations: KotlinFragmentDependencyConfigurations, + dependencyConfigurations: GradleKpmFragmentDependencyConfigurations, compileDependencyConfiguration: Configuration, apiElementsConfiguration: Configuration, hostSpecificMetadataElementsConfiguration: Configuration? -) : KpmNativeVariantInternal( +) : GradleKpmNativeVariantInternal( containingModule = containingModule, fragmentName = fragmentName, konanTarget = KonanTarget.IOS_ARM32, @@ -114,20 +114,20 @@ open class KpmIosArm32Variant @Inject constructor( hostSpecificMetadataElementsConfiguration = hostSpecificMetadataElementsConfiguration ) { companion object { - val constructor = KotlinNativeVariantConstructor( - KonanTarget.IOS_ARM32, KpmIosArm32Variant::class.java, ::KpmIosArm32Variant + val constructor = GradleKpmNativeVariantConstructor( + KonanTarget.IOS_ARM32, GradleKpmIosArm32Variant::class.java, ::GradleKpmIosArm32Variant ) } } -open class KpmIosArm64Variant @Inject constructor( - containingModule: KpmGradleModule, +open class GradleKpmIosArm64Variant @Inject constructor( + containingModule: GradleKpmModule, fragmentName: String, - dependencyConfigurations: KotlinFragmentDependencyConfigurations, + dependencyConfigurations: GradleKpmFragmentDependencyConfigurations, compileDependencyConfiguration: Configuration, apiElementsConfiguration: Configuration, hostSpecificMetadataElementsConfiguration: Configuration? -) : KpmNativeVariantInternal( +) : GradleKpmNativeVariantInternal( containingModule = containingModule, fragmentName = fragmentName, konanTarget = KonanTarget.IOS_ARM64, @@ -137,20 +137,20 @@ open class KpmIosArm64Variant @Inject constructor( hostSpecificMetadataElementsConfiguration = hostSpecificMetadataElementsConfiguration ) { companion object { - val constructor = KotlinNativeVariantConstructor( - KonanTarget.IOS_ARM64, KpmIosArm64Variant::class.java, ::KpmIosArm64Variant + val constructor = GradleKpmNativeVariantConstructor( + KonanTarget.IOS_ARM64, GradleKpmIosArm64Variant::class.java, ::GradleKpmIosArm64Variant ) } } -open class KpmIosX64Variant @Inject constructor( - containingModule: KpmGradleModule, +open class GradleKpmIosX64Variant @Inject constructor( + containingModule: GradleKpmModule, fragmentName: String, - dependencyConfigurations: KotlinFragmentDependencyConfigurations, + dependencyConfigurations: GradleKpmFragmentDependencyConfigurations, compileDependencyConfiguration: Configuration, apiElementsConfiguration: Configuration, hostSpecificMetadataElementsConfiguration: Configuration? -) : KpmNativeVariantInternal( +) : GradleKpmNativeVariantInternal( containingModule = containingModule, fragmentName = fragmentName, konanTarget = KonanTarget.IOS_X64, @@ -160,20 +160,20 @@ open class KpmIosX64Variant @Inject constructor( hostSpecificMetadataElementsConfiguration = hostSpecificMetadataElementsConfiguration ) { companion object { - val constructor = KotlinNativeVariantConstructor( - KonanTarget.IOS_X64, KpmIosX64Variant::class.java, ::KpmIosX64Variant + val constructor = GradleKpmNativeVariantConstructor( + KonanTarget.IOS_X64, GradleKpmIosX64Variant::class.java, ::GradleKpmIosX64Variant ) } } -open class KpmIosSimulatorArm64Variant @Inject constructor( - containingModule: KpmGradleModule, +open class GradleKpmIosSimulatorArm64Variant @Inject constructor( + containingModule: GradleKpmModule, fragmentName: String, - dependencyConfigurations: KotlinFragmentDependencyConfigurations, + dependencyConfigurations: GradleKpmFragmentDependencyConfigurations, compileDependencyConfiguration: Configuration, apiElementsConfiguration: Configuration, hostSpecificMetadataElementsConfiguration: Configuration? -) : KpmNativeVariantInternal( +) : GradleKpmNativeVariantInternal( containingModule = containingModule, fragmentName = fragmentName, konanTarget = KonanTarget.IOS_SIMULATOR_ARM64, @@ -183,20 +183,20 @@ open class KpmIosSimulatorArm64Variant @Inject constructor( hostSpecificMetadataElementsConfiguration = hostSpecificMetadataElementsConfiguration ) { companion object { - val constructor = KotlinNativeVariantConstructor( - KonanTarget.IOS_SIMULATOR_ARM64, KpmIosSimulatorArm64Variant::class.java, ::KpmIosSimulatorArm64Variant + val constructor = GradleKpmNativeVariantConstructor( + KonanTarget.IOS_SIMULATOR_ARM64, GradleKpmIosSimulatorArm64Variant::class.java, ::GradleKpmIosSimulatorArm64Variant ) } } -open class KpmWatchosArm32Variant @Inject constructor( - containingModule: KpmGradleModule, +open class GradleKpmWatchosArm32Variant @Inject constructor( + containingModule: GradleKpmModule, fragmentName: String, - dependencyConfigurations: KotlinFragmentDependencyConfigurations, + dependencyConfigurations: GradleKpmFragmentDependencyConfigurations, compileDependencyConfiguration: Configuration, apiElementsConfiguration: Configuration, hostSpecificMetadataElementsConfiguration: Configuration? -) : KpmNativeVariantInternal( +) : GradleKpmNativeVariantInternal( containingModule = containingModule, fragmentName = fragmentName, konanTarget = KonanTarget.WATCHOS_ARM32, @@ -206,20 +206,20 @@ open class KpmWatchosArm32Variant @Inject constructor( hostSpecificMetadataElementsConfiguration = hostSpecificMetadataElementsConfiguration ) { companion object { - val constructor = KotlinNativeVariantConstructor( - KonanTarget.WATCHOS_ARM32, KpmWatchosArm32Variant::class.java, ::KpmWatchosArm32Variant + val constructor = GradleKpmNativeVariantConstructor( + KonanTarget.WATCHOS_ARM32, GradleKpmWatchosArm32Variant::class.java, ::GradleKpmWatchosArm32Variant ) } } -open class KpmWatchosArm64Variant @Inject constructor( - containingModule: KpmGradleModule, +open class GradleKpmWatchosArm64Variant @Inject constructor( + containingModule: GradleKpmModule, fragmentName: String, - dependencyConfigurations: KotlinFragmentDependencyConfigurations, + dependencyConfigurations: GradleKpmFragmentDependencyConfigurations, compileDependencyConfiguration: Configuration, apiElementsConfiguration: Configuration, hostSpecificMetadataElementsConfiguration: Configuration? -) : KpmNativeVariantInternal( +) : GradleKpmNativeVariantInternal( containingModule = containingModule, fragmentName = fragmentName, konanTarget = KonanTarget.WATCHOS_ARM64, @@ -229,20 +229,20 @@ open class KpmWatchosArm64Variant @Inject constructor( hostSpecificMetadataElementsConfiguration = hostSpecificMetadataElementsConfiguration ) { companion object { - val constructor = KotlinNativeVariantConstructor( - KonanTarget.WATCHOS_ARM64, KpmWatchosArm64Variant::class.java, ::KpmWatchosArm64Variant + val constructor = GradleKpmNativeVariantConstructor( + KonanTarget.WATCHOS_ARM64, GradleKpmWatchosArm64Variant::class.java, ::GradleKpmWatchosArm64Variant ) } } -open class KpmWatchosX86Variant @Inject constructor( - containingModule: KpmGradleModule, +open class GradleKpmWatchosX86Variant @Inject constructor( + containingModule: GradleKpmModule, fragmentName: String, - dependencyConfigurations: KotlinFragmentDependencyConfigurations, + dependencyConfigurations: GradleKpmFragmentDependencyConfigurations, compileDependencyConfiguration: Configuration, apiElementsConfiguration: Configuration, hostSpecificMetadataElementsConfiguration: Configuration? -) : KpmNativeVariantInternal( +) : GradleKpmNativeVariantInternal( containingModule = containingModule, fragmentName = fragmentName, konanTarget = KonanTarget.WATCHOS_X86, @@ -252,20 +252,20 @@ open class KpmWatchosX86Variant @Inject constructor( hostSpecificMetadataElementsConfiguration = hostSpecificMetadataElementsConfiguration ) { companion object { - val constructor = KotlinNativeVariantConstructor( - KonanTarget.WATCHOS_X86, KpmWatchosX86Variant::class.java, ::KpmWatchosX86Variant + val constructor = GradleKpmNativeVariantConstructor( + KonanTarget.WATCHOS_X86, GradleKpmWatchosX86Variant::class.java, ::GradleKpmWatchosX86Variant ) } } -open class KpmWatchosX64Variant @Inject constructor( - containingModule: KpmGradleModule, +open class GradleKpmWatchosX64Variant @Inject constructor( + containingModule: GradleKpmModule, fragmentName: String, - dependencyConfigurations: KotlinFragmentDependencyConfigurations, + dependencyConfigurations: GradleKpmFragmentDependencyConfigurations, compileDependencyConfiguration: Configuration, apiElementsConfiguration: Configuration, hostSpecificMetadataElementsConfiguration: Configuration? -) : KpmNativeVariantInternal( +) : GradleKpmNativeVariantInternal( containingModule = containingModule, fragmentName = fragmentName, konanTarget = KonanTarget.WATCHOS_X64, @@ -275,20 +275,20 @@ open class KpmWatchosX64Variant @Inject constructor( hostSpecificMetadataElementsConfiguration = hostSpecificMetadataElementsConfiguration ) { companion object { - val constructor = KotlinNativeVariantConstructor( - KonanTarget.WATCHOS_X64, KpmWatchosX64Variant::class.java, ::KpmWatchosX64Variant + val constructor = GradleKpmNativeVariantConstructor( + KonanTarget.WATCHOS_X64, GradleKpmWatchosX64Variant::class.java, ::GradleKpmWatchosX64Variant ) } } -open class KpmWatchosSimulatorArm64Variant @Inject constructor( - containingModule: KpmGradleModule, +open class GradleKpmWatchosSimulatorArm64Variant @Inject constructor( + containingModule: GradleKpmModule, fragmentName: String, - dependencyConfigurations: KotlinFragmentDependencyConfigurations, + dependencyConfigurations: GradleKpmFragmentDependencyConfigurations, compileDependencyConfiguration: Configuration, apiElementsConfiguration: Configuration, hostSpecificMetadataElementsConfiguration: Configuration? -) : KpmNativeVariantInternal( +) : GradleKpmNativeVariantInternal( containingModule = containingModule, fragmentName = fragmentName, konanTarget = KonanTarget.WATCHOS_SIMULATOR_ARM64, @@ -298,20 +298,20 @@ open class KpmWatchosSimulatorArm64Variant @Inject constructor( hostSpecificMetadataElementsConfiguration = hostSpecificMetadataElementsConfiguration ) { companion object { - val constructor = KotlinNativeVariantConstructor( - KonanTarget.WATCHOS_SIMULATOR_ARM64, KpmWatchosSimulatorArm64Variant::class.java, ::KpmWatchosSimulatorArm64Variant + val constructor = GradleKpmNativeVariantConstructor( + KonanTarget.WATCHOS_SIMULATOR_ARM64, GradleKpmWatchosSimulatorArm64Variant::class.java, ::GradleKpmWatchosSimulatorArm64Variant ) } } -open class KpmTvosArm64Variant @Inject constructor( - containingModule: KpmGradleModule, +open class GradleKpmTvosArm64Variant @Inject constructor( + containingModule: GradleKpmModule, fragmentName: String, - dependencyConfigurations: KotlinFragmentDependencyConfigurations, + dependencyConfigurations: GradleKpmFragmentDependencyConfigurations, compileDependencyConfiguration: Configuration, apiElementsConfiguration: Configuration, hostSpecificMetadataElementsConfiguration: Configuration? -) : KpmNativeVariantInternal( +) : GradleKpmNativeVariantInternal( containingModule = containingModule, fragmentName = fragmentName, konanTarget = KonanTarget.TVOS_ARM64, @@ -321,20 +321,20 @@ open class KpmTvosArm64Variant @Inject constructor( hostSpecificMetadataElementsConfiguration = hostSpecificMetadataElementsConfiguration ) { companion object { - val constructor = KotlinNativeVariantConstructor( - KonanTarget.TVOS_ARM64, KpmTvosArm64Variant::class.java, ::KpmTvosArm64Variant + val constructor = GradleKpmNativeVariantConstructor( + KonanTarget.TVOS_ARM64, GradleKpmTvosArm64Variant::class.java, ::GradleKpmTvosArm64Variant ) } } -open class KpmTvosX64Variant @Inject constructor( - containingModule: KpmGradleModule, +open class GradleKpmTvosX64Variant @Inject constructor( + containingModule: GradleKpmModule, fragmentName: String, - dependencyConfigurations: KotlinFragmentDependencyConfigurations, + dependencyConfigurations: GradleKpmFragmentDependencyConfigurations, compileDependencyConfiguration: Configuration, apiElementsConfiguration: Configuration, hostSpecificMetadataElementsConfiguration: Configuration? -) : KpmNativeVariantInternal( +) : GradleKpmNativeVariantInternal( containingModule = containingModule, fragmentName = fragmentName, konanTarget = KonanTarget.TVOS_X64, @@ -344,20 +344,20 @@ open class KpmTvosX64Variant @Inject constructor( hostSpecificMetadataElementsConfiguration = hostSpecificMetadataElementsConfiguration ) { companion object { - val constructor = KotlinNativeVariantConstructor( - KonanTarget.TVOS_X64, KpmTvosX64Variant::class.java, ::KpmTvosX64Variant + val constructor = GradleKpmNativeVariantConstructor( + KonanTarget.TVOS_X64, GradleKpmTvosX64Variant::class.java, ::GradleKpmTvosX64Variant ) } } -open class KpmTvosSimulatorArm64Variant @Inject constructor( - containingModule: KpmGradleModule, +open class GradleKpmTvosSimulatorArm64Variant @Inject constructor( + containingModule: GradleKpmModule, fragmentName: String, - dependencyConfigurations: KotlinFragmentDependencyConfigurations, + dependencyConfigurations: GradleKpmFragmentDependencyConfigurations, compileDependencyConfiguration: Configuration, apiElementsConfiguration: Configuration, hostSpecificMetadataElementsConfiguration: Configuration? -) : KpmNativeVariantInternal( +) : GradleKpmNativeVariantInternal( containingModule = containingModule, fragmentName = fragmentName, konanTarget = KonanTarget.TVOS_SIMULATOR_ARM64, @@ -367,20 +367,20 @@ open class KpmTvosSimulatorArm64Variant @Inject constructor( hostSpecificMetadataElementsConfiguration = hostSpecificMetadataElementsConfiguration ) { companion object { - val constructor = KotlinNativeVariantConstructor( - KonanTarget.TVOS_SIMULATOR_ARM64, KpmTvosSimulatorArm64Variant::class.java, ::KpmTvosSimulatorArm64Variant + val constructor = GradleKpmNativeVariantConstructor( + KonanTarget.TVOS_SIMULATOR_ARM64, GradleKpmTvosSimulatorArm64Variant::class.java, ::GradleKpmTvosSimulatorArm64Variant ) } } -open class KpmLinuxX64Variant @Inject constructor( - containingModule: KpmGradleModule, +open class GradleKpmLinuxX64Variant @Inject constructor( + containingModule: GradleKpmModule, fragmentName: String, - dependencyConfigurations: KotlinFragmentDependencyConfigurations, + dependencyConfigurations: GradleKpmFragmentDependencyConfigurations, compileDependencyConfiguration: Configuration, apiElementsConfiguration: Configuration, hostSpecificMetadataElementsConfiguration: Configuration? -) : KpmNativeVariantInternal( +) : GradleKpmNativeVariantInternal( containingModule = containingModule, fragmentName = fragmentName, konanTarget = KonanTarget.LINUX_X64, @@ -390,20 +390,20 @@ open class KpmLinuxX64Variant @Inject constructor( hostSpecificMetadataElementsConfiguration = hostSpecificMetadataElementsConfiguration ) { companion object { - val constructor = KotlinNativeVariantConstructor( - KonanTarget.LINUX_X64, KpmLinuxX64Variant::class.java, ::KpmLinuxX64Variant + val constructor = GradleKpmNativeVariantConstructor( + KonanTarget.LINUX_X64, GradleKpmLinuxX64Variant::class.java, ::GradleKpmLinuxX64Variant ) } } -open class KpmMingwX86Variant @Inject constructor( - containingModule: KpmGradleModule, +open class GradleKpmMingwX86Variant @Inject constructor( + containingModule: GradleKpmModule, fragmentName: String, - dependencyConfigurations: KotlinFragmentDependencyConfigurations, + dependencyConfigurations: GradleKpmFragmentDependencyConfigurations, compileDependencyConfiguration: Configuration, apiElementsConfiguration: Configuration, hostSpecificMetadataElementsConfiguration: Configuration? -) : KpmNativeVariantInternal( +) : GradleKpmNativeVariantInternal( containingModule = containingModule, fragmentName = fragmentName, konanTarget = KonanTarget.MINGW_X86, @@ -413,20 +413,20 @@ open class KpmMingwX86Variant @Inject constructor( hostSpecificMetadataElementsConfiguration = hostSpecificMetadataElementsConfiguration ) { companion object { - val constructor = KotlinNativeVariantConstructor( - KonanTarget.MINGW_X86, KpmMingwX86Variant::class.java, ::KpmMingwX86Variant + val constructor = GradleKpmNativeVariantConstructor( + KonanTarget.MINGW_X86, GradleKpmMingwX86Variant::class.java, ::GradleKpmMingwX86Variant ) } } -open class KpmMingwX64Variant @Inject constructor( - containingModule: KpmGradleModule, +open class GradleKpmMingwX64Variant @Inject constructor( + containingModule: GradleKpmModule, fragmentName: String, - dependencyConfigurations: KotlinFragmentDependencyConfigurations, + dependencyConfigurations: GradleKpmFragmentDependencyConfigurations, compileDependencyConfiguration: Configuration, apiElementsConfiguration: Configuration, hostSpecificMetadataElementsConfiguration: Configuration? -) : KpmNativeVariantInternal( +) : GradleKpmNativeVariantInternal( containingModule = containingModule, fragmentName = fragmentName, konanTarget = KonanTarget.MINGW_X64, @@ -436,20 +436,20 @@ open class KpmMingwX64Variant @Inject constructor( hostSpecificMetadataElementsConfiguration = hostSpecificMetadataElementsConfiguration ) { companion object { - val constructor = KotlinNativeVariantConstructor( - KonanTarget.MINGW_X64, KpmMingwX64Variant::class.java, ::KpmMingwX64Variant + val constructor = GradleKpmNativeVariantConstructor( + KonanTarget.MINGW_X64, GradleKpmMingwX64Variant::class.java, ::GradleKpmMingwX64Variant ) } } -open class KpmMacosX64Variant @Inject constructor( - containingModule: KpmGradleModule, +open class GradleKpmMacosX64Variant @Inject constructor( + containingModule: GradleKpmModule, fragmentName: String, - dependencyConfigurations: KotlinFragmentDependencyConfigurations, + dependencyConfigurations: GradleKpmFragmentDependencyConfigurations, compileDependencyConfiguration: Configuration, apiElementsConfiguration: Configuration, hostSpecificMetadataElementsConfiguration: Configuration? -) : KpmNativeVariantInternal( +) : GradleKpmNativeVariantInternal( containingModule = containingModule, fragmentName = fragmentName, konanTarget = KonanTarget.MACOS_X64, @@ -459,20 +459,20 @@ open class KpmMacosX64Variant @Inject constructor( hostSpecificMetadataElementsConfiguration = hostSpecificMetadataElementsConfiguration ) { companion object { - val constructor = KotlinNativeVariantConstructor( - KonanTarget.MACOS_X64, KpmMacosX64Variant::class.java, ::KpmMacosX64Variant + val constructor = GradleKpmNativeVariantConstructor( + KonanTarget.MACOS_X64, GradleKpmMacosX64Variant::class.java, ::GradleKpmMacosX64Variant ) } } -open class KpmMacosArm64Variant @Inject constructor( - containingModule: KpmGradleModule, +open class GradleKpmMacosArm64Variant @Inject constructor( + containingModule: GradleKpmModule, fragmentName: String, - dependencyConfigurations: KotlinFragmentDependencyConfigurations, + dependencyConfigurations: GradleKpmFragmentDependencyConfigurations, compileDependencyConfiguration: Configuration, apiElementsConfiguration: Configuration, hostSpecificMetadataElementsConfiguration: Configuration? -) : KpmNativeVariantInternal( +) : GradleKpmNativeVariantInternal( containingModule = containingModule, fragmentName = fragmentName, konanTarget = KonanTarget.MACOS_ARM64, @@ -482,20 +482,20 @@ open class KpmMacosArm64Variant @Inject constructor( hostSpecificMetadataElementsConfiguration = hostSpecificMetadataElementsConfiguration ) { companion object { - val constructor = KotlinNativeVariantConstructor( - KonanTarget.MACOS_ARM64, KpmMacosArm64Variant::class.java, ::KpmMacosArm64Variant + val constructor = GradleKpmNativeVariantConstructor( + KonanTarget.MACOS_ARM64, GradleKpmMacosArm64Variant::class.java, ::GradleKpmMacosArm64Variant ) } } -open class KpmLinuxArm64Variant @Inject constructor( - containingModule: KpmGradleModule, +open class GradleKpmLinuxArm64Variant @Inject constructor( + containingModule: GradleKpmModule, fragmentName: String, - dependencyConfigurations: KotlinFragmentDependencyConfigurations, + dependencyConfigurations: GradleKpmFragmentDependencyConfigurations, compileDependencyConfiguration: Configuration, apiElementsConfiguration: Configuration, hostSpecificMetadataElementsConfiguration: Configuration? -) : KpmNativeVariantInternal( +) : GradleKpmNativeVariantInternal( containingModule = containingModule, fragmentName = fragmentName, konanTarget = KonanTarget.LINUX_ARM64, @@ -505,20 +505,20 @@ open class KpmLinuxArm64Variant @Inject constructor( hostSpecificMetadataElementsConfiguration = hostSpecificMetadataElementsConfiguration ) { companion object { - val constructor = KotlinNativeVariantConstructor( - KonanTarget.LINUX_ARM64, KpmLinuxArm64Variant::class.java, ::KpmLinuxArm64Variant + val constructor = GradleKpmNativeVariantConstructor( + KonanTarget.LINUX_ARM64, GradleKpmLinuxArm64Variant::class.java, ::GradleKpmLinuxArm64Variant ) } } -open class KpmLinuxArm32HfpVariant @Inject constructor( - containingModule: KpmGradleModule, +open class GradleKpmLinuxArm32HfpVariant @Inject constructor( + containingModule: GradleKpmModule, fragmentName: String, - dependencyConfigurations: KotlinFragmentDependencyConfigurations, + dependencyConfigurations: GradleKpmFragmentDependencyConfigurations, compileDependencyConfiguration: Configuration, apiElementsConfiguration: Configuration, hostSpecificMetadataElementsConfiguration: Configuration? -) : KpmNativeVariantInternal( +) : GradleKpmNativeVariantInternal( containingModule = containingModule, fragmentName = fragmentName, konanTarget = KonanTarget.LINUX_ARM32_HFP, @@ -528,20 +528,20 @@ open class KpmLinuxArm32HfpVariant @Inject constructor( hostSpecificMetadataElementsConfiguration = hostSpecificMetadataElementsConfiguration ) { companion object { - val constructor = KotlinNativeVariantConstructor( - KonanTarget.LINUX_ARM32_HFP, KpmLinuxArm32HfpVariant::class.java, ::KpmLinuxArm32HfpVariant + val constructor = GradleKpmNativeVariantConstructor( + KonanTarget.LINUX_ARM32_HFP, GradleKpmLinuxArm32HfpVariant::class.java, ::GradleKpmLinuxArm32HfpVariant ) } } -open class KpmLinuxMips32Variant @Inject constructor( - containingModule: KpmGradleModule, +open class GradleKpmLinuxMips32Variant @Inject constructor( + containingModule: GradleKpmModule, fragmentName: String, - dependencyConfigurations: KotlinFragmentDependencyConfigurations, + dependencyConfigurations: GradleKpmFragmentDependencyConfigurations, compileDependencyConfiguration: Configuration, apiElementsConfiguration: Configuration, hostSpecificMetadataElementsConfiguration: Configuration? -) : KpmNativeVariantInternal( +) : GradleKpmNativeVariantInternal( containingModule = containingModule, fragmentName = fragmentName, konanTarget = KonanTarget.LINUX_MIPS32, @@ -551,20 +551,20 @@ open class KpmLinuxMips32Variant @Inject constructor( hostSpecificMetadataElementsConfiguration = hostSpecificMetadataElementsConfiguration ) { companion object { - val constructor = KotlinNativeVariantConstructor( - KonanTarget.LINUX_MIPS32, KpmLinuxMips32Variant::class.java, ::KpmLinuxMips32Variant + val constructor = GradleKpmNativeVariantConstructor( + KonanTarget.LINUX_MIPS32, GradleKpmLinuxMips32Variant::class.java, ::GradleKpmLinuxMips32Variant ) } } -open class KpmLinuxMipsel32Variant @Inject constructor( - containingModule: KpmGradleModule, +open class GradleKpmLinuxMipsel32Variant @Inject constructor( + containingModule: GradleKpmModule, fragmentName: String, - dependencyConfigurations: KotlinFragmentDependencyConfigurations, + dependencyConfigurations: GradleKpmFragmentDependencyConfigurations, compileDependencyConfiguration: Configuration, apiElementsConfiguration: Configuration, hostSpecificMetadataElementsConfiguration: Configuration? -) : KpmNativeVariantInternal( +) : GradleKpmNativeVariantInternal( containingModule = containingModule, fragmentName = fragmentName, konanTarget = KonanTarget.LINUX_MIPSEL32, @@ -574,20 +574,20 @@ open class KpmLinuxMipsel32Variant @Inject constructor( hostSpecificMetadataElementsConfiguration = hostSpecificMetadataElementsConfiguration ) { companion object { - val constructor = KotlinNativeVariantConstructor( - KonanTarget.LINUX_MIPSEL32, KpmLinuxMipsel32Variant::class.java, ::KpmLinuxMipsel32Variant + val constructor = GradleKpmNativeVariantConstructor( + KonanTarget.LINUX_MIPSEL32, GradleKpmLinuxMipsel32Variant::class.java, ::GradleKpmLinuxMipsel32Variant ) } } -open class KpmWasm32Variant @Inject constructor( - containingModule: KpmGradleModule, +open class GradleKpmWasm32Variant @Inject constructor( + containingModule: GradleKpmModule, fragmentName: String, - dependencyConfigurations: KotlinFragmentDependencyConfigurations, + dependencyConfigurations: GradleKpmFragmentDependencyConfigurations, compileDependencyConfiguration: Configuration, apiElementsConfiguration: Configuration, hostSpecificMetadataElementsConfiguration: Configuration? -) : KpmNativeVariantInternal( +) : GradleKpmNativeVariantInternal( containingModule = containingModule, fragmentName = fragmentName, konanTarget = KonanTarget.WASM32, @@ -597,67 +597,67 @@ open class KpmWasm32Variant @Inject constructor( hostSpecificMetadataElementsConfiguration = hostSpecificMetadataElementsConfiguration ) { companion object { - val constructor = KotlinNativeVariantConstructor( - KonanTarget.WASM32, KpmWasm32Variant::class.java, ::KpmWasm32Variant + val constructor = GradleKpmNativeVariantConstructor( + KonanTarget.WASM32, GradleKpmWasm32Variant::class.java, ::GradleKpmWasm32Variant ) } } internal val allKpmNativeVariantConstructors = listOf( - KpmAndroidNativeX64Variant.constructor, - KpmAndroidNativeX86Variant.constructor, - KpmAndroidNativeArm32Variant.constructor, - KpmAndroidNativeArm64Variant.constructor, - KpmIosArm32Variant.constructor, - KpmIosArm64Variant.constructor, - KpmIosX64Variant.constructor, - KpmIosSimulatorArm64Variant.constructor, - KpmWatchosArm32Variant.constructor, - KpmWatchosArm64Variant.constructor, - KpmWatchosX86Variant.constructor, - KpmWatchosX64Variant.constructor, - KpmWatchosSimulatorArm64Variant.constructor, - KpmTvosArm64Variant.constructor, - KpmTvosX64Variant.constructor, - KpmTvosSimulatorArm64Variant.constructor, - KpmLinuxX64Variant.constructor, - KpmMingwX86Variant.constructor, - KpmMingwX64Variant.constructor, - KpmMacosX64Variant.constructor, - KpmMacosArm64Variant.constructor, - KpmLinuxArm64Variant.constructor, - KpmLinuxArm32HfpVariant.constructor, - KpmLinuxMips32Variant.constructor, - KpmLinuxMipsel32Variant.constructor, - KpmWasm32Variant.constructor + GradleKpmAndroidNativeX64Variant.constructor, + GradleKpmAndroidNativeX86Variant.constructor, + GradleKpmAndroidNativeArm32Variant.constructor, + GradleKpmAndroidNativeArm64Variant.constructor, + GradleKpmIosArm32Variant.constructor, + GradleKpmIosArm64Variant.constructor, + GradleKpmIosX64Variant.constructor, + GradleKpmIosSimulatorArm64Variant.constructor, + GradleKpmWatchosArm32Variant.constructor, + GradleKpmWatchosArm64Variant.constructor, + GradleKpmWatchosX86Variant.constructor, + GradleKpmWatchosX64Variant.constructor, + GradleKpmWatchosSimulatorArm64Variant.constructor, + GradleKpmTvosArm64Variant.constructor, + GradleKpmTvosX64Variant.constructor, + GradleKpmTvosSimulatorArm64Variant.constructor, + GradleKpmLinuxX64Variant.constructor, + GradleKpmMingwX86Variant.constructor, + GradleKpmMingwX64Variant.constructor, + GradleKpmMacosX64Variant.constructor, + GradleKpmMacosArm64Variant.constructor, + GradleKpmLinuxArm64Variant.constructor, + GradleKpmLinuxArm32HfpVariant.constructor, + GradleKpmLinuxMips32Variant.constructor, + GradleKpmLinuxMipsel32Variant.constructor, + GradleKpmWasm32Variant.constructor ) -internal fun kpmNativeVariantClass(konanTarget: KonanTarget): Class? = when (konanTarget) { - KonanTarget.ANDROID_X64 -> KpmAndroidNativeX64Variant::class.java - KonanTarget.ANDROID_X86 -> KpmAndroidNativeX86Variant::class.java - KonanTarget.ANDROID_ARM32 -> KpmAndroidNativeArm32Variant::class.java - KonanTarget.ANDROID_ARM64 -> KpmAndroidNativeArm64Variant::class.java - KonanTarget.IOS_ARM32 -> KpmIosArm32Variant::class.java - KonanTarget.IOS_ARM64 -> KpmIosArm64Variant::class.java - KonanTarget.IOS_X64 -> KpmIosX64Variant::class.java - KonanTarget.IOS_SIMULATOR_ARM64 -> KpmIosSimulatorArm64Variant::class.java - KonanTarget.WATCHOS_ARM32 -> KpmWatchosArm32Variant::class.java - KonanTarget.WATCHOS_ARM64 -> KpmWatchosArm64Variant::class.java - KonanTarget.WATCHOS_X86 -> KpmWatchosX86Variant::class.java - KonanTarget.WATCHOS_X64 -> KpmWatchosX64Variant::class.java - KonanTarget.WATCHOS_SIMULATOR_ARM64 -> KpmWatchosSimulatorArm64Variant::class.java - KonanTarget.TVOS_ARM64 -> KpmTvosArm64Variant::class.java - KonanTarget.TVOS_X64 -> KpmTvosX64Variant::class.java - KonanTarget.TVOS_SIMULATOR_ARM64 -> KpmTvosSimulatorArm64Variant::class.java - KonanTarget.LINUX_X64 -> KpmLinuxX64Variant::class.java - KonanTarget.MINGW_X86 -> KpmMingwX86Variant::class.java - KonanTarget.MINGW_X64 -> KpmMingwX64Variant::class.java - KonanTarget.MACOS_X64 -> KpmMacosX64Variant::class.java - KonanTarget.MACOS_ARM64 -> KpmMacosArm64Variant::class.java - KonanTarget.LINUX_ARM64 -> KpmLinuxArm64Variant::class.java - KonanTarget.LINUX_ARM32_HFP -> KpmLinuxArm32HfpVariant::class.java - KonanTarget.LINUX_MIPS32 -> KpmLinuxMips32Variant::class.java - KonanTarget.LINUX_MIPSEL32 -> KpmLinuxMipsel32Variant::class.java - KonanTarget.WASM32 -> KpmWasm32Variant::class.java +internal fun kpmNativeVariantClass(konanTarget: KonanTarget): Class? = when (konanTarget) { + KonanTarget.ANDROID_X64 -> GradleKpmAndroidNativeX64Variant::class.java + KonanTarget.ANDROID_X86 -> GradleKpmAndroidNativeX86Variant::class.java + KonanTarget.ANDROID_ARM32 -> GradleKpmAndroidNativeArm32Variant::class.java + KonanTarget.ANDROID_ARM64 -> GradleKpmAndroidNativeArm64Variant::class.java + KonanTarget.IOS_ARM32 -> GradleKpmIosArm32Variant::class.java + KonanTarget.IOS_ARM64 -> GradleKpmIosArm64Variant::class.java + KonanTarget.IOS_X64 -> GradleKpmIosX64Variant::class.java + KonanTarget.IOS_SIMULATOR_ARM64 -> GradleKpmIosSimulatorArm64Variant::class.java + KonanTarget.WATCHOS_ARM32 -> GradleKpmWatchosArm32Variant::class.java + KonanTarget.WATCHOS_ARM64 -> GradleKpmWatchosArm64Variant::class.java + KonanTarget.WATCHOS_X86 -> GradleKpmWatchosX86Variant::class.java + KonanTarget.WATCHOS_X64 -> GradleKpmWatchosX64Variant::class.java + KonanTarget.WATCHOS_SIMULATOR_ARM64 -> GradleKpmWatchosSimulatorArm64Variant::class.java + KonanTarget.TVOS_ARM64 -> GradleKpmTvosArm64Variant::class.java + KonanTarget.TVOS_X64 -> GradleKpmTvosX64Variant::class.java + KonanTarget.TVOS_SIMULATOR_ARM64 -> GradleKpmTvosSimulatorArm64Variant::class.java + KonanTarget.LINUX_X64 -> GradleKpmLinuxX64Variant::class.java + KonanTarget.MINGW_X86 -> GradleKpmMingwX86Variant::class.java + KonanTarget.MINGW_X64 -> GradleKpmMingwX64Variant::class.java + KonanTarget.MACOS_X64 -> GradleKpmMacosX64Variant::class.java + KonanTarget.MACOS_ARM64 -> GradleKpmMacosArm64Variant::class.java + KonanTarget.LINUX_ARM64 -> GradleKpmLinuxArm64Variant::class.java + KonanTarget.LINUX_ARM32_HFP -> GradleKpmLinuxArm32HfpVariant::class.java + KonanTarget.LINUX_MIPS32 -> GradleKpmLinuxMips32Variant::class.java + KonanTarget.LINUX_MIPSEL32 -> GradleKpmLinuxMipsel32Variant::class.java + KonanTarget.WASM32 -> GradleKpmWasm32Variant::class.java else -> null -} +} \ No newline at end of file diff --git a/libraries/tools/kotlin-gradle-plugin/src/common/kotlin/org/jetbrains/kotlin/gradle/plugin/mpp/pm20/KpmProjectModelContainer.kt b/libraries/tools/kotlin-gradle-plugin/src/common/kotlin/org/jetbrains/kotlin/gradle/plugin/mpp/pm20/KpmProjectModelContainer.kt index 96fc4ca10e3..a930ce31a3b 100644 --- a/libraries/tools/kotlin-gradle-plugin/src/common/kotlin/org/jetbrains/kotlin/gradle/plugin/mpp/pm20/KpmProjectModelContainer.kt +++ b/libraries/tools/kotlin-gradle-plugin/src/common/kotlin/org/jetbrains/kotlin/gradle/plugin/mpp/pm20/KpmProjectModelContainer.kt @@ -13,16 +13,16 @@ import org.jetbrains.kotlin.gradle.dsl.topLevelExtensionOrNull import org.jetbrains.kotlin.gradle.plugin.PropertiesProvider import org.jetbrains.kotlin.project.model.KpmModuleIdentifier -internal interface KpmGradleProjectModelContainer { - val modules: NamedDomainObjectContainer +internal interface GradleKpmProjectModelContainer { + val modules: NamedDomainObjectContainer val metadataCompilationRegistryByModuleId: MutableMap val rootPublication: MavenPublication? } -internal val Project.kpmModelContainer: KpmGradleProjectModelContainer +internal val Project.kpmModelContainer: GradleKpmProjectModelContainer get() = kpmModelContainerOrNull ?: error("Couldn't find KPM container for $project") -internal val Project.kpmModelContainerOrNull: KpmGradleProjectModelContainer? +internal val Project.kpmModelContainerOrNull: GradleKpmProjectModelContainer? get() = when (val ext = project.topLevelExtensionOrNull) { is KotlinPm20ProjectExtension -> ext.kpmModelContainer is KotlinProjectExtension -> if (PropertiesProvider(project).experimentalKpmModelMapping) ext.kpmModelContainer else null @@ -32,27 +32,27 @@ internal val Project.kpmModelContainerOrNull: KpmGradleProjectModelContainer? internal val Project.hasKpmModel: Boolean get() = kpmModelContainerOrNull != null -internal val Project.kpmModules: NamedDomainObjectContainer +internal val Project.kpmModules: NamedDomainObjectContainer get() = kpmModelContainer.modules internal val Project.metadataCompilationRegistryByModuleId: MutableMap get() = kpmModelContainer.metadataCompilationRegistryByModuleId -internal class DefaultKpmGradleProjectModelContainer( - override val modules: NamedDomainObjectContainer, +internal class GradleKpmDefaultProjectModelContainer( + override val modules: NamedDomainObjectContainer, override val metadataCompilationRegistryByModuleId: MutableMap, -) : KpmGradleProjectModelContainer { +) : GradleKpmProjectModelContainer { override var rootPublication: MavenPublication? = null companion object { - fun create(project: Project): DefaultKpmGradleProjectModelContainer { - return DefaultKpmGradleProjectModelContainer(createKpmModulesContainer(project), mutableMapOf()) + fun create(project: Project): GradleKpmDefaultProjectModelContainer { + return GradleKpmDefaultProjectModelContainer(createKpmModulesContainer(project), mutableMapOf()) } - private fun createKpmModulesContainer(project: Project): NamedDomainObjectContainer = + private fun createKpmModulesContainer(project: Project): NamedDomainObjectContainer = project.objects.domainObjectContainer( - KpmGradleModule::class.java, - KotlinGradleModuleFactory(project) + GradleKpmModule::class.java, + GradleKpmModuleFactory(project) ) } } diff --git a/libraries/tools/kotlin-gradle-plugin/src/common/kotlin/org/jetbrains/kotlin/gradle/plugin/mpp/pm20/LegacyMappedVariant.kt b/libraries/tools/kotlin-gradle-plugin/src/common/kotlin/org/jetbrains/kotlin/gradle/plugin/mpp/pm20/LegacyMappedVariant.kt index 79db706c23b..4fca5f5168c 100644 --- a/libraries/tools/kotlin-gradle-plugin/src/common/kotlin/org/jetbrains/kotlin/gradle/plugin/mpp/pm20/LegacyMappedVariant.kt +++ b/libraries/tools/kotlin-gradle-plugin/src/common/kotlin/org/jetbrains/kotlin/gradle/plugin/mpp/pm20/LegacyMappedVariant.kt @@ -29,15 +29,15 @@ import org.jetbrains.kotlin.project.model.KpmModuleDependency import org.jetbrains.kotlin.tooling.core.MutableExtras import org.jetbrains.kotlin.tooling.core.mutableExtrasOf -internal open class LegacyMappedVariant( +internal open class GradleKpmLegacyMappedVariant( internal val compilation: KotlinCompilation<*>, -) : KpmGradleVariant { +) : GradleKpmVariant { override fun toString(): String = "variant mapped to $compilation" private val fragmentForDefaultSourceSet = (compilation.defaultSourceSet as FragmentMappedKotlinSourceSet).underlyingFragment - override val containingModule: KpmGradleModule get() = fragmentForDefaultSourceSet.containingModule + override val containingModule: GradleKpmModule get() = fragmentForDefaultSourceSet.containingModule override val platformType: KotlinPlatformType get() = compilation.platformType @@ -89,11 +89,11 @@ internal open class LegacyMappedVariant( override val extras: MutableExtras = mutableExtrasOf() - override fun refines(other: KpmGradleFragment) { + override fun refines(other: GradleKpmFragment) { fragmentForDefaultSourceSet.refines(other) } - override fun refines(other: NamedDomainObjectProvider) { + override fun refines(other: NamedDomainObjectProvider) { fragmentForDefaultSourceSet.refines(other) } @@ -105,7 +105,7 @@ internal open class LegacyMappedVariant( override val fragmentName: String get() = fragmentForDefaultSourceSet.fragmentName + "Variant" - override val declaredRefinesDependencies: Iterable + override val declaredRefinesDependencies: Iterable get() = fragmentForDefaultSourceSet.declaredRefinesDependencies override val declaredModuleDependencies: Iterable @@ -148,9 +148,9 @@ internal open class LegacyMappedVariant( } } -internal class LegacyMappedVariantWithRuntime(private val compilationWithRuntime: KotlinCompilationToRunnableFiles<*>) : - LegacyMappedVariant(compilationWithRuntime), - KpmGradleVariantWithRuntime { +internal class GradleKpmLegacyMappedVariantWithRuntime(private val compilationWithRuntime: KotlinCompilationToRunnableFiles<*>) : + GradleKpmLegacyMappedVariant(compilationWithRuntime), + GradleKpmVariantWithRuntime { override val runtimeDependenciesConfiguration: Configuration get() = project.configurations.getByName(compilationWithRuntime.runtimeDependencyConfigurationName) @@ -177,8 +177,8 @@ internal enum class PublicationRegistrationMode { internal fun mapTargetCompilationsToKpmVariants(target: AbstractKotlinTarget, publicationRegistration: PublicationRegistrationMode) { target.compilations.all { compilation -> val variant = if (compilation is KotlinCompilationToRunnableFiles) - LegacyMappedVariantWithRuntime(compilation) - else LegacyMappedVariant(compilation) + GradleKpmLegacyMappedVariantWithRuntime(compilation) + else GradleKpmLegacyMappedVariant(compilation) val defaultSourceSetFragment = (compilation.defaultSourceSet as FragmentMappedKotlinSourceSet).underlyingFragment variant.refines(defaultSourceSetFragment) @@ -194,9 +194,9 @@ internal fun mapTargetCompilationsToKpmVariants(target: AbstractKotlinTarget, pu } whenPublicationShouldRegister { - val mainModule = target.project.kpmModules.getByName(KpmGradleModule.MAIN_MODULE_NAME) + val mainModule = target.project.kpmModules.getByName(GradleKpmModule.MAIN_MODULE_NAME) target.kotlinComponents.forEach { kotlinComponent -> - val moduleHolder = DefaultSingleMavenPublishedModuleHolder( + val moduleHolder = GradleKpmDefaultSingleMavenPublishedModuleHolder( mainModule, kotlinComponent.defaultArtifactId.removePrefix(target.project.name.toLowerCase() + "-") ) @@ -220,16 +220,16 @@ internal fun mapTargetCompilationsToKpmVariants(target: AbstractKotlinTarget, pu // FIXME: include additional variants into project structure metadata? - val request = BasicPlatformPublicationToMavenRequest( + val request = GradleKpmBasicPlatformPublicationToMavenRequest( kotlinComponent.name, mainModule, moduleHolder, usages.map { usage -> - val variant = mainModule.variants.withType().single { + val variant = mainModule.variants.withType().single { it.compilation == usage.compilation } (usage as? DefaultKotlinUsageContext) ?: error("unexpected KotlinUsageContext type: ${usage.javaClass}") - AdvancedVariantPublicationRequest( + KpmGradleAdvancedConfigurationPublicationRequest( variant, target.project.configurations.getByName(usage.dependencyConfigurationName), usage.overrideConfigurationAttributes, @@ -239,7 +239,7 @@ internal fun mapTargetCompilationsToKpmVariants(target: AbstractKotlinTarget, pu } ) - VariantPublishingConfigurator.get(target.project).configurePublishing(request) + GradleKpmVariantPublishingConfigurator.get(target.project).configurePublishing(request) } } } diff --git a/libraries/tools/kotlin-gradle-plugin/src/common/kotlin/org/jetbrains/kotlin/gradle/plugin/mpp/pm20/ModulePublishing.kt b/libraries/tools/kotlin-gradle-plugin/src/common/kotlin/org/jetbrains/kotlin/gradle/plugin/mpp/pm20/ModulePublishing.kt index 363e4e8dd01..557413cfff8 100644 --- a/libraries/tools/kotlin-gradle-plugin/src/common/kotlin/org/jetbrains/kotlin/gradle/plugin/mpp/pm20/ModulePublishing.kt +++ b/libraries/tools/kotlin-gradle-plugin/src/common/kotlin/org/jetbrains/kotlin/gradle/plugin/mpp/pm20/ModulePublishing.kt @@ -18,7 +18,7 @@ internal fun setupKpmModulesPublication(project: Project) { } } -internal fun setupPublicationForModule(module: KpmGradleModule) { +private fun setupPublicationForModule(module: GradleKpmModule) { val project = module.project val metadataElements = project.configurations.getByName(metadataElementsConfigurationName(module)) @@ -50,7 +50,7 @@ internal fun setupPublicationForModule(module: KpmGradleModule) { } } -private fun MavenPublication.setupKotlinToolingMetadataIfNeeded(module: KpmGradleModule) { +private fun MavenPublication.setupKotlinToolingMetadataIfNeeded(module: GradleKpmModule) { val buildKotlinToolingMetadataTask = module.buildKotlinToolingMetadataTask ?: return artifact(buildKotlinToolingMetadataTask.map { it.outputFile }) { artifact -> diff --git a/libraries/tools/kotlin-gradle-plugin/src/common/kotlin/org/jetbrains/kotlin/gradle/plugin/mpp/pm20/TransformKotlinGranularMetadataForFragment.kt b/libraries/tools/kotlin-gradle-plugin/src/common/kotlin/org/jetbrains/kotlin/gradle/plugin/mpp/pm20/TransformKotlinGranularMetadataForFragment.kt index 3d5fa86f94d..8f92a2847c6 100644 --- a/libraries/tools/kotlin-gradle-plugin/src/common/kotlin/org/jetbrains/kotlin/gradle/plugin/mpp/pm20/TransformKotlinGranularMetadataForFragment.kt +++ b/libraries/tools/kotlin-gradle-plugin/src/common/kotlin/org/jetbrains/kotlin/gradle/plugin/mpp/pm20/TransformKotlinGranularMetadataForFragment.kt @@ -20,9 +20,9 @@ internal open class TransformKotlinGranularMetadataForFragment @Inject constructor( @get:Internal @field:Transient - val fragment: KpmGradleFragment, + val fragment: GradleKpmFragment, //FIXME annotations - private val transformation: FragmentGranularMetadataResolver + private val transformation: GradleKpmFragmentGranularMetadataResolver ) : DefaultTask() { @get:OutputDirectory diff --git a/libraries/tools/kotlin-gradle-plugin/src/common/kotlin/org/jetbrains/kotlin/gradle/plugin/mpp/pm20/VariantFactories.kt b/libraries/tools/kotlin-gradle-plugin/src/common/kotlin/org/jetbrains/kotlin/gradle/plugin/mpp/pm20/VariantFactories.kt index 82df0ee0397..10f92cb31b2 100644 --- a/libraries/tools/kotlin-gradle-plugin/src/common/kotlin/org/jetbrains/kotlin/gradle/plugin/mpp/pm20/VariantFactories.kt +++ b/libraries/tools/kotlin-gradle-plugin/src/common/kotlin/org/jetbrains/kotlin/gradle/plugin/mpp/pm20/VariantFactories.kt @@ -6,20 +6,18 @@ package org.jetbrains.kotlin.gradle.plugin.mpp.pm20 import org.gradle.api.Project -import org.jetbrains.kotlin.gradle.dsl.pm20Extension -import kotlin.reflect.KClass internal fun registerDefaultVariantFactories(project: Project) { project.kpmModules.configureEach { module -> module.fragments.registerFactory( - KpmJvmVariant::class.java, - KotlinJvmVariantFactory(module) + GradleKpmJvmVariant::class.java, + GradleKpmJvmVariantFactory(module) ) - fun registerNativeVariantFactory( - constructor: KotlinNativeVariantConstructor + fun registerNativeVariantFactory( + constructor: GradleKpmNativeVariantConstructor ) = module.fragments.registerFactory( - constructor.variantClass, KotlinNativeVariantFactory(module, constructor) + constructor.variantClass, GradleKpmNativeVariantFactory(module, constructor) ) allKpmNativeVariantConstructors.forEach { constructor -> registerNativeVariantFactory(constructor) } diff --git a/libraries/tools/kotlin-gradle-plugin/src/common/kotlin/org/jetbrains/kotlin/gradle/plugin/mpp/pm20/abstractVariants.kt b/libraries/tools/kotlin-gradle-plugin/src/common/kotlin/org/jetbrains/kotlin/gradle/plugin/mpp/pm20/abstractVariants.kt index 514405e3dd9..a680ea84d96 100644 --- a/libraries/tools/kotlin-gradle-plugin/src/common/kotlin/org/jetbrains/kotlin/gradle/plugin/mpp/pm20/abstractVariants.kt +++ b/libraries/tools/kotlin-gradle-plugin/src/common/kotlin/org/jetbrains/kotlin/gradle/plugin/mpp/pm20/abstractVariants.kt @@ -6,36 +6,30 @@ package org.jetbrains.kotlin.gradle.plugin.mpp.pm20 import org.gradle.api.artifacts.Configuration -import org.gradle.api.file.ConfigurableFileCollection import org.gradle.api.file.FileCollection -import org.gradle.api.publish.maven.MavenPublication import org.jetbrains.kotlin.gradle.plugin.KotlinCompilationOutput import org.jetbrains.kotlin.gradle.plugin.KotlinPlatformType import org.jetbrains.kotlin.gradle.plugin.mpp.DefaultKotlinCompilationOutput -import org.jetbrains.kotlin.gradle.plugin.mpp.MavenPublicationCoordinatesProvider -import org.jetbrains.kotlin.gradle.plugin.mpp.pm20.util.ComputedCapability import org.jetbrains.kotlin.gradle.plugin.mpp.pm20.util.disambiguateName -import org.jetbrains.kotlin.gradle.plugin.mpp.publishedConfigurationName -import org.jetbrains.kotlin.gradle.utils.dashSeparatedName import org.jetbrains.kotlin.project.model.KotlinAttributeKey import org.jetbrains.kotlin.project.model.KotlinPlatformTypeAttribute -abstract class KpmGradleVariantInternal( - containingModule: KpmGradleModule, +abstract class GradleKpmVariantInternal( + containingModule: GradleKpmModule, fragmentName: String, - dependencyConfigurations: KotlinFragmentDependencyConfigurations, + dependencyConfigurations: GradleKpmFragmentDependencyConfigurations, final override val compileDependenciesConfiguration: Configuration, final override val apiElementsConfiguration: Configuration -) : KpmGradleFragmentInternal( +) : GradleKpmFragmentInternal( containingModule, fragmentName, dependencyConfigurations -), KpmGradleVariant { +), GradleKpmVariant { override val variantAttributes: Map get() = mapOf(KotlinPlatformTypeAttribute to kotlinPlatformTypeAttributeFromPlatform(platformType)) // TODO user attributes override var compileDependencyFiles: FileCollection = project.files({ compileDependenciesConfiguration }) - internal abstract val compilationData: KotlinVariantCompilationDataInternal<*> + internal abstract val compilationData: GradleKpmVariantCompilationDataInternal<*> // TODO rewrite using our own artifacts API? override val compilationOutputs: KotlinCompilationOutput = DefaultKotlinCompilationOutput( @@ -49,85 +43,9 @@ abstract class KpmGradleVariantInternal( override fun toString(): String = "variant $fragmentName in $containingModule" } -class DefaultSingleMavenPublishedModuleHolder( - private var module: KpmGradleModule, override val defaultPublishedModuleSuffix: String? -) : SingleMavenPublishedModuleHolder { - private val project get() = module.project - - private var assignedMavenPublication: MavenPublication? = null - - private val publicationAssignedHandlers = mutableListOf<(MavenPublication) -> Unit>() - - override fun assignMavenPublication(publication: MavenPublication) { - if (assignedMavenPublication != null) error("already assigned publication $publication") - assignedMavenPublication = publication - publicationAssignedHandlers.forEach { it(publication) } - } - - override fun whenPublicationAssigned(handlePublication: (MavenPublication) -> Unit) { - assignedMavenPublication?.let(handlePublication) ?: publicationAssignedHandlers.add(handlePublication) - } - - override val publishedMavenModuleCoordinates: PublishedModuleCoordinatesProvider = MavenPublicationCoordinatesProvider( - project, - { assignedMavenPublication }, - defaultPublishedModuleSuffix, - capabilities = listOfNotNull(ComputedCapability.capabilityStringFromModule(module)) - ) -} - private fun kotlinPlatformTypeAttributeFromPlatform(platformType: KotlinPlatformType) = platformType.name // TODO: rewrite with the artifacts API -internal val KpmGradleVariant.defaultSourceArtifactTaskName: String +internal val GradleKpmVariant.defaultSourceArtifactTaskName: String get() = disambiguateName("sourcesJar") -abstract class KpmGradleVariantWithRuntimeInternal( - containingModule: KpmGradleModule, - fragmentName: String, - dependencyConfigurations: KotlinFragmentDependencyConfigurations, - compileDependencyConfiguration: Configuration, - apiElementsConfiguration: Configuration, - final override val runtimeDependenciesConfiguration: Configuration, - final override val runtimeElementsConfiguration: Configuration -) : KpmGradleVariantInternal( - containingModule = containingModule, - fragmentName = fragmentName, - dependencyConfigurations = dependencyConfigurations, - compileDependenciesConfiguration = compileDependencyConfiguration, - apiElementsConfiguration = apiElementsConfiguration -), KpmGradleVariantWithRuntime { - // TODO deduplicate with KotlinCompilation? - - override var runtimeDependencyFiles: FileCollection = project.files(runtimeDependenciesConfiguration) - - override val runtimeFiles: ConfigurableFileCollection = - project.files(listOf({ compilationOutputs.allOutputs }, { runtimeDependencyFiles })) -} - -private fun defaultModuleSuffix(module: KpmGradleModule, variantName: String): String = - dashSeparatedName(variantName, module.moduleClassifier) - -abstract class KpmGradlePublishedVariantWithRuntime( - containingModule: KpmGradleModule, fragmentName: String, - dependencyConfigurations: KotlinFragmentDependencyConfigurations, - compileDependencyConfiguration: Configuration, - apiElementsConfiguration: Configuration, - runtimeDependencyConfiguration: Configuration, - runtimeElementsConfiguration: Configuration -) : KpmGradleVariantWithRuntimeInternal( - containingModule = containingModule, - fragmentName = fragmentName, - dependencyConfigurations = dependencyConfigurations, - compileDependencyConfiguration = compileDependencyConfiguration, - apiElementsConfiguration = apiElementsConfiguration, - runtimeDependenciesConfiguration = runtimeDependencyConfiguration, - runtimeElementsConfiguration = runtimeElementsConfiguration -), SingleMavenPublishedModuleHolder by DefaultSingleMavenPublishedModuleHolder( - containingModule, defaultModuleSuffix(containingModule, fragmentName) -) { - override val gradleVariantNames: Set - get() = listOf(apiElementsConfiguration.name, runtimeElementsConfiguration.name).flatMapTo(mutableSetOf()) { - listOf(it, publishedConfigurationName(it)) - } -} diff --git a/libraries/tools/kotlin-gradle-plugin/src/common/kotlin/org/jetbrains/kotlin/gradle/plugin/mpp/pm20/fragmentsMetadataCompilation.kt b/libraries/tools/kotlin-gradle-plugin/src/common/kotlin/org/jetbrains/kotlin/gradle/plugin/mpp/pm20/fragmentsMetadataCompilation.kt index d3030afe12f..ea589a03457 100644 --- a/libraries/tools/kotlin-gradle-plugin/src/common/kotlin/org/jetbrains/kotlin/gradle/plugin/mpp/pm20/fragmentsMetadataCompilation.kt +++ b/libraries/tools/kotlin-gradle-plugin/src/common/kotlin/org/jetbrains/kotlin/gradle/plugin/mpp/pm20/fragmentsMetadataCompilation.kt @@ -38,7 +38,7 @@ internal fun setupFragmentsMetadataForKpmModules(project: Project) { } } -internal fun configureMetadataResolutionAndBuild(module: KpmGradleModule) { +private fun configureMetadataResolutionAndBuild(module: GradleKpmModule) { val project = module.project createResolvableMetadataConfigurationForModule(module) @@ -52,7 +52,7 @@ internal fun configureMetadataResolutionAndBuild(module: KpmGradleModule) { generateAndExportProjectStructureMetadata(module) } -internal fun configureMetadataExposure(module: KpmGradleModule) { +private fun configureMetadataExposure(module: GradleKpmModule) { val project = module.project project.configurations.create(metadataElementsConfigurationName(module)).apply { isCanBeConsumed = false @@ -74,7 +74,7 @@ internal fun configureMetadataExposure(module: KpmGradleModule) { val sourcesArtifact = sourcesJarTaskNamed( module.disambiguateName("allSourcesJar"), project, - lazy { FragmentSourcesProvider().getAllFragmentSourcesAsMap(module).entries.associate { it.key.fragmentName to it.value.get() } }, + lazy { GradleKpmFragmentSourcesProvider().getAllFragmentSourcesAsMap(module).entries.associate { it.key.fragmentName to it.value.get() } }, sourcesArtifactAppendix ) DocumentationVariantConfigurator().createSourcesElementsConfiguration( @@ -83,14 +83,14 @@ internal fun configureMetadataExposure(module: KpmGradleModule) { ) } -fun metadataElementsConfigurationName(module: KpmGradleModule) = +fun metadataElementsConfigurationName(module: GradleKpmModule) = module.disambiguateName("metadataElements") -fun sourceElementsConfigurationName(module: KpmGradleModule) = +fun sourceElementsConfigurationName(module: GradleKpmModule) = module.disambiguateName("sourceElements") private fun generateAndExportProjectStructureMetadata( - module: KpmGradleModule + module: GradleKpmModule ) { val project = module.project val projectStructureMetadata = project.createGenerateProjectStructureMetadataTask(module) @@ -105,7 +105,7 @@ private fun generateAndExportProjectStructureMetadata( } } -private fun createResolvableMetadataConfigurationForModule(module: KpmGradleModule) { +private fun createResolvableMetadataConfigurationForModule(module: GradleKpmModule) { val project = module.project project.configurations.create(module.resolvableMetadataConfigurationName).apply { isCanBeConsumed = false @@ -121,11 +121,11 @@ private fun createResolvableMetadataConfigurationForModule(module: KpmGradleModu } private fun configureMetadataCompilationsAndCreateRegistry( - module: KpmGradleModule, + module: GradleKpmModule, metadataCompilationRegistry: MetadataCompilationRegistry ) { val project = module.project - val metadataResolverFactory = FragmentGranularMetadataResolverFactory() + val metadataResolverFactory = GradleKpmFragmentGranularMetadataResolverFactory() module.fragments.all { fragment -> val metadataResolver = metadataResolverFactory.getOrCreate(fragment) createExtractMetadataTask(project, fragment, metadataResolver) @@ -143,7 +143,7 @@ private fun configureMetadataCompilationsAndCreateRegistry( } private fun configureMetadataJarTask( - module: KpmGradleModule, + module: GradleKpmModule, registry: MetadataCompilationRegistry ) { val project = module.project @@ -169,11 +169,11 @@ private fun configureMetadataJarTask( } } -internal fun metadataJarName(module: KpmGradleModule) = +internal fun metadataJarName(module: GradleKpmModule) = lowerCamelCaseName(module.moduleClassifier, KotlinMetadataTargetConfigurator.ALL_METADATA_JAR_NAME) private fun createCommonMetadataCompilation( - fragment: KpmGradleFragment, + fragment: GradleKpmFragment, compileAllTask: TaskProvider, metadataCompilationRegistry: MetadataCompilationRegistry ) { @@ -189,12 +189,12 @@ private fun createCommonMetadataCompilation( metadataCompilationRegistry, lazy { resolvedMetadataProviders(fragment) } ) - MetadataCompilationTasksConfigurator(project).createKotlinCommonCompilationTask(fragment, metadataCompilationData) + GradleKpmMetadataCompilationTasksConfigurator(project).createKotlinCommonCompilationTask(fragment, metadataCompilationData) metadataCompilationRegistry.registerCommon(fragment, metadataCompilationData) } private fun createNativeMetadataCompilation( - fragment: KpmGradleFragment, + fragment: GradleKpmFragment, compileAllTask: TaskProvider, metadataCompilationRegistry: MetadataCompilationRegistry ) { @@ -210,13 +210,13 @@ private fun createNativeMetadataCompilation( metadataCompilationRegistry, lazy { resolvedMetadataProviders(fragment) } ) - MetadataCompilationTasksConfigurator(project).createKotlinNativeMetadataCompilationTask(fragment, metadataCompilationData) + GradleKpmMetadataCompilationTasksConfigurator(project).createKotlinNativeMetadataCompilationTask(fragment, metadataCompilationData) metadataCompilationRegistry.registerNative(fragment, metadataCompilationData) } -private class MetadataCompilationTasksConfigurator(project: Project) : KotlinCompilationTaskConfigurator(project) { +private class GradleKpmMetadataCompilationTasksConfigurator(project: Project) : GradleKpmCompilationTaskConfigurator(project) { fun createKotlinCommonCompilationTask( - fragment: KpmGradleFragment, + fragment: GradleKpmFragment, compilationData: KotlinCommonFragmentMetadataCompilationData ) { KotlinCommonSourceSetProcessor( @@ -235,22 +235,22 @@ private class MetadataCompilationTasksConfigurator(project: Project) : KotlinCom } fun createKotlinNativeMetadataCompilationTask( - fragment: KpmGradleFragment, + fragment: GradleKpmFragment, compilationData: KotlinNativeFragmentMetadataCompilationData ): TaskProvider = createKotlinNativeCompilationTask(fragment, compilationData) { kotlinPluginData = project.compilerPluginProviderForNativeMetadata(fragment, compilationData) } - override fun getSourcesForFragmentCompilation(fragment: KpmGradleFragment): MultipleSourceRootsProvider { + override fun getSourcesForFragmentCompilation(fragment: GradleKpmFragment): MultipleSourceRootsProvider { return project.provider { listOf(fragmentSourcesProvider.getFragmentOwnSources(fragment)) } } - override fun getCommonSourcesForFragmentCompilation(fragment: KpmGradleFragment): MultipleSourceRootsProvider { + override fun getCommonSourcesForFragmentCompilation(fragment: GradleKpmFragment): MultipleSourceRootsProvider { return project.provider { listOf(fragmentSourcesProvider.getFragmentOwnSources(fragment)) } } } -private fun resolvedMetadataProviders(fragment: KpmGradleFragment) = +private fun resolvedMetadataProviders(fragment: GradleKpmFragment) = fragment.withRefinesClosure.map { FragmentResolvedMetadataProvider( fragment.project.tasks.withType().named(transformFragmentMetadataTaskName(it)) @@ -259,8 +259,8 @@ private fun resolvedMetadataProviders(fragment: KpmGradleFragment) = private fun createExtractMetadataTask( project: Project, - fragment: KpmGradleFragment, - transformation: FragmentGranularMetadataResolver + fragment: GradleKpmFragment, + transformation: GradleKpmFragmentGranularMetadataResolver ) { project.tasks.register( transformFragmentMetadataTaskName(fragment), diff --git a/libraries/tools/kotlin-gradle-plugin/src/common/kotlin/org/jetbrains/kotlin/gradle/plugin/mpp/pm20/util/DependencyFilesHolder.kt b/libraries/tools/kotlin-gradle-plugin/src/common/kotlin/org/jetbrains/kotlin/gradle/plugin/mpp/pm20/util/DependencyFilesHolder.kt index 89010be1138..37d7c443bb6 100644 --- a/libraries/tools/kotlin-gradle-plugin/src/common/kotlin/org/jetbrains/kotlin/gradle/plugin/mpp/pm20/util/DependencyFilesHolder.kt +++ b/libraries/tools/kotlin-gradle-plugin/src/common/kotlin/org/jetbrains/kotlin/gradle/plugin/mpp/pm20/util/DependencyFilesHolder.kt @@ -8,20 +8,20 @@ package org.jetbrains.kotlin.gradle.plugin.mpp.pm20.util import org.gradle.api.Project import org.gradle.api.file.FileCollection import org.jetbrains.kotlin.gradle.plugin.mpp.pm20.AbstractKotlinFragmentMetadataCompilationData -import org.jetbrains.kotlin.gradle.plugin.mpp.pm20.KpmGradleVariant -import org.jetbrains.kotlin.gradle.plugin.mpp.pm20.KpmGradleVariantWithRuntime +import org.jetbrains.kotlin.gradle.plugin.mpp.pm20.GradleKpmVariant +import org.jetbrains.kotlin.gradle.plugin.mpp.pm20.GradleKpmVariantWithRuntime import org.jetbrains.kotlin.gradle.plugin.mpp.pm20.resolvableMetadataConfigurationName import org.jetbrains.kotlin.gradle.utils.filesProvider -interface DependencyFilesHolder { +interface GradleKpmDependencyFilesHolder { val dependencyConfigurationName: String var dependencyFiles: FileCollection companion object } -internal fun DependencyFilesHolder.Companion.ofVariantCompileDependencies(variant: KpmGradleVariant): DependencyFilesHolder = - object : DependencyFilesHolder { +internal fun GradleKpmDependencyFilesHolder.Companion.ofVariantCompileDependencies(variant: GradleKpmVariant): GradleKpmDependencyFilesHolder = + object : GradleKpmDependencyFilesHolder { override val dependencyConfigurationName: String get() = variant.compileDependenciesConfiguration.name override var dependencyFiles: FileCollection @@ -29,8 +29,8 @@ internal fun DependencyFilesHolder.Companion.ofVariantCompileDependencies(varian set(value) { variant.compileDependencyFiles = value } } -internal fun DependencyFilesHolder.Companion.ofVariantRuntimeDependencies(variant: KpmGradleVariantWithRuntime): DependencyFilesHolder = - object : DependencyFilesHolder { +internal fun GradleKpmDependencyFilesHolder.Companion.ofVariantRuntimeDependencies(variant: GradleKpmVariantWithRuntime): GradleKpmDependencyFilesHolder = + object : GradleKpmDependencyFilesHolder { override val dependencyConfigurationName: String get() = variant.runtimeDependenciesConfiguration.name override var dependencyFiles: FileCollection @@ -38,9 +38,9 @@ internal fun DependencyFilesHolder.Companion.ofVariantRuntimeDependencies(varian set(value) { variant.runtimeDependencyFiles = value } } -internal fun DependencyFilesHolder.Companion.ofMetadataCompilationDependencies( +internal fun GradleKpmDependencyFilesHolder.Companion.ofMetadataCompilationDependencies( compilationData: AbstractKotlinFragmentMetadataCompilationData<*> -) = object : DependencyFilesHolder { +) = object : GradleKpmDependencyFilesHolder { override val dependencyConfigurationName: String get() = compilationData.fragment.containingModule.resolvableMetadataConfigurationName @@ -52,9 +52,9 @@ internal fun DependencyFilesHolder.Companion.ofMetadataCompilationDependencies( class SimpleDependencyFilesHolder( override val dependencyConfigurationName: String, override var dependencyFiles: FileCollection -) : DependencyFilesHolder +) : GradleKpmDependencyFilesHolder -internal fun Project.newDependencyFilesHolder(dependencyConfigurationName: String): DependencyFilesHolder = +internal fun Project.newDependencyFilesHolder(dependencyConfigurationName: String): GradleKpmDependencyFilesHolder = SimpleDependencyFilesHolder( dependencyConfigurationName, project.filesProvider { project.configurations.getByName(dependencyConfigurationName) } diff --git a/libraries/tools/kotlin-gradle-plugin/src/common/kotlin/org/jetbrains/kotlin/gradle/plugin/mpp/pm20/util/KotlinNameDisambiguation.kt b/libraries/tools/kotlin-gradle-plugin/src/common/kotlin/org/jetbrains/kotlin/gradle/plugin/mpp/pm20/util/KotlinNameDisambiguation.kt index 8799e2bbc2f..29cbc9b228c 100644 --- a/libraries/tools/kotlin-gradle-plugin/src/common/kotlin/org/jetbrains/kotlin/gradle/plugin/mpp/pm20/util/KotlinNameDisambiguation.kt +++ b/libraries/tools/kotlin-gradle-plugin/src/common/kotlin/org/jetbrains/kotlin/gradle/plugin/mpp/pm20/util/KotlinNameDisambiguation.kt @@ -7,7 +7,7 @@ package org.jetbrains.kotlin.gradle.plugin.mpp.pm20.util -import org.jetbrains.kotlin.gradle.plugin.mpp.pm20.KpmGradleModule +import org.jetbrains.kotlin.gradle.plugin.mpp.pm20.GradleKpmModule import org.jetbrains.kotlin.gradle.utils.lowerCamelCaseName import org.jetbrains.kotlin.project.model.KpmModule import org.jetbrains.kotlin.project.model.KpmFragment @@ -30,33 +30,33 @@ import org.jetbrains.kotlin.project.model.KpmFragment * fragmentBar.disambiguateName("api") == "fragmentBarTestApi" * ``` */ -interface KotlinNameDisambiguation { +interface GradleKpmNameDisambiguation { fun disambiguateName(simpleName: String): String } /* Default implementation for fragments */ -internal fun FragmentNameDisambiguation(module: KpmModule, fragmentName: String): KotlinNameDisambiguation { - return DefaultKotlinFragmentNameDisambiguation(module, fragmentName) +internal fun FragmentNameDisambiguation(module: KpmModule, fragmentName: String): GradleKpmNameDisambiguation { + return GradleKpmDefaultFragmentNameDisambiguation(module, fragmentName) } -internal fun FragmentNameDisambiguationOmittingMain(module: KpmModule, fragmentName: String): KotlinNameDisambiguation { - return DefaultKotlinFragmentNameDisambiguationOmittingMain(module, fragmentName) +internal fun FragmentNameDisambiguationOmittingMain(module: KpmModule, fragmentName: String): GradleKpmNameDisambiguation { + return GradleKpmDefaultFragmentNameDisambiguationOmittingMain(module, fragmentName) } -private class DefaultKotlinFragmentNameDisambiguation( +private class GradleKpmDefaultFragmentNameDisambiguation( private val module: KpmModule, private val fragmentName: String -) : KotlinNameDisambiguation { +) : GradleKpmNameDisambiguation { override fun disambiguateName(simpleName: String): String { return KpmFragment.disambiguateName(module, fragmentName, simpleName) } } -private class DefaultKotlinFragmentNameDisambiguationOmittingMain( +private class GradleKpmDefaultFragmentNameDisambiguationOmittingMain( private val module: KpmModule, private val fragmentName: String -) : KotlinNameDisambiguation { +) : GradleKpmNameDisambiguation { override fun disambiguateName(simpleName: String): String { return KpmFragment.disambiguateNameOmittingMain(module, fragmentName, simpleName) } @@ -69,7 +69,7 @@ internal val KpmFragment.unambiguousNameInProject get() = disambiguateName("") internal fun KpmFragment.Companion.disambiguateName(module: KpmModule, fragmentName: String, simpleName: String) = - lowerCamelCaseName(fragmentName, module.moduleIdentifier.moduleClassifier ?: KpmGradleModule.MAIN_MODULE_NAME, simpleName) + lowerCamelCaseName(fragmentName, module.moduleIdentifier.moduleClassifier ?: GradleKpmModule.MAIN_MODULE_NAME, simpleName) internal fun KpmFragment.Companion.disambiguateNameOmittingMain(module: KpmModule, fragmentName: String, simpleName: String) = lowerCamelCaseName(fragmentName, module.moduleIdentifier.moduleClassifier, simpleName) diff --git a/libraries/tools/kotlin-gradle-plugin/src/common/kotlin/org/jetbrains/kotlin/gradle/plugin/mpp/pm20/Utils.kt b/libraries/tools/kotlin-gradle-plugin/src/common/kotlin/org/jetbrains/kotlin/gradle/plugin/mpp/pm20/util/Utils.kt similarity index 72% rename from libraries/tools/kotlin-gradle-plugin/src/common/kotlin/org/jetbrains/kotlin/gradle/plugin/mpp/pm20/Utils.kt rename to libraries/tools/kotlin-gradle-plugin/src/common/kotlin/org/jetbrains/kotlin/gradle/plugin/mpp/pm20/util/Utils.kt index 3d4100e44f9..7e517f0a4d3 100644 --- a/libraries/tools/kotlin-gradle-plugin/src/common/kotlin/org/jetbrains/kotlin/gradle/plugin/mpp/pm20/Utils.kt +++ b/libraries/tools/kotlin-gradle-plugin/src/common/kotlin/org/jetbrains/kotlin/gradle/plugin/mpp/pm20/util/Utils.kt @@ -1,9 +1,9 @@ /* - * Copyright 2010-2020 JetBrains s.r.o. and Kotlin Programming Language contributors. + * 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 +package org.jetbrains.kotlin.gradle.plugin.mpp.pm20.util import org.gradle.api.Project import org.gradle.api.artifacts.component.BuildIdentifier @@ -11,21 +11,10 @@ import org.gradle.api.internal.project.ProjectInternal import org.gradle.api.plugins.BasePluginConvention import org.gradle.api.plugins.BasePluginExtension import org.gradle.internal.build.BuildState -import org.jetbrains.kotlin.gradle.dsl.KotlinMultiplatformExtension -import org.jetbrains.kotlin.gradle.dsl.KotlinProjectExtension -import org.jetbrains.kotlin.gradle.dsl.KotlinSingleTargetExtension -import org.jetbrains.kotlin.gradle.plugin.KotlinTarget import org.jetbrains.kotlin.gradle.utils.isGradleVersionAtLeast import org.jetbrains.kotlin.project.model.KpmModule import org.jetbrains.kotlin.project.model.KpmLocalModuleIdentifier -val KotlinProjectExtension.targets: Iterable - get() = when (this) { - is KotlinSingleTargetExtension -> listOf(this.target) - is KotlinMultiplatformExtension -> targets - else -> error("Unexpected 'kotlin' extension $this") - } - fun KpmModule.representsProject(project: Project): Boolean = moduleIdentifier.let { it is KpmLocalModuleIdentifier && it.buildId == project.currentBuildId().name && it.projectId == project.path } diff --git a/libraries/tools/kotlin-gradle-plugin/src/common/kotlin/org/jetbrains/kotlin/gradle/plugin/mpp/pm20/util/capabilities.kt b/libraries/tools/kotlin-gradle-plugin/src/common/kotlin/org/jetbrains/kotlin/gradle/plugin/mpp/pm20/util/capabilities.kt index be3c1a6aab1..fbd2f7534e3 100644 --- a/libraries/tools/kotlin-gradle-plugin/src/common/kotlin/org/jetbrains/kotlin/gradle/plugin/mpp/pm20/util/capabilities.kt +++ b/libraries/tools/kotlin-gradle-plugin/src/common/kotlin/org/jetbrains/kotlin/gradle/plugin/mpp/pm20/util/capabilities.kt @@ -7,7 +7,7 @@ package org.jetbrains.kotlin.gradle.plugin.mpp.pm20.util import org.gradle.api.capabilities.Capability import org.gradle.api.provider.Provider -import org.jetbrains.kotlin.gradle.plugin.mpp.pm20.KpmGradleModule +import org.jetbrains.kotlin.gradle.plugin.mpp.pm20.GradleKpmModule internal class ComputedCapability( val groupProvider: Provider, @@ -22,7 +22,7 @@ internal class ComputedCapability( override fun getVersion(): String? = versionProvider.get() companion object { - fun fromModule(module: KpmGradleModule): ComputedCapability { + fun fromModule(module: GradleKpmModule): ComputedCapability { val project = module.project return ComputedCapability( project.provider { project.group.toString() }, @@ -32,12 +32,12 @@ internal class ComputedCapability( ) } - fun fromModuleOrNull(module: KpmGradleModule): ComputedCapability? = + fun fromModuleOrNull(module: GradleKpmModule): ComputedCapability? = if (module.moduleClassifier != null) fromModule(module) else null - fun capabilityStringFromModule(module: KpmGradleModule): String? = + fun capabilityStringFromModule(module: GradleKpmModule): String? = if (module.moduleClassifier != null) fromModule(module).notation() else null } diff --git a/libraries/tools/kotlin-gradle-plugin/src/common/kotlin/org/jetbrains/kotlin/gradle/plugin/mpp/pm20/util/dependencyGraphUtils.kt b/libraries/tools/kotlin-gradle-plugin/src/common/kotlin/org/jetbrains/kotlin/gradle/plugin/mpp/pm20/util/dependencyGraphUtils.kt index df1a09bef78..8a8e21ffff5 100644 --- a/libraries/tools/kotlin-gradle-plugin/src/common/kotlin/org/jetbrains/kotlin/gradle/plugin/mpp/pm20/util/dependencyGraphUtils.kt +++ b/libraries/tools/kotlin-gradle-plugin/src/common/kotlin/org/jetbrains/kotlin/gradle/plugin/mpp/pm20/util/dependencyGraphUtils.kt @@ -5,13 +5,13 @@ package org.jetbrains.kotlin.gradle.plugin.mpp.pm20.util -import org.jetbrains.kotlin.gradle.plugin.mpp.pm20.KpmGradleDependencyGraph -import org.jetbrains.kotlin.gradle.plugin.mpp.pm20.GradleDependencyGraphNode +import org.jetbrains.kotlin.gradle.plugin.mpp.pm20.GradleKpmDependencyGraph +import org.jetbrains.kotlin.gradle.plugin.mpp.pm20.GradleKpmDependencyGraphNode import org.jetbrains.kotlin.project.model.KpmModule import org.jetbrains.kotlin.tooling.core.withClosure -internal val KpmGradleDependencyGraph.allDependencyNodes: Iterable +internal val GradleKpmDependencyGraph.allDependencyNodes: Iterable get() = root.withClosure { it.dependenciesByFragment.values.flatten() } -internal val KpmGradleDependencyGraph.allDependencyModules: Iterable +internal val GradleKpmDependencyGraph.allDependencyModules: Iterable get() = allDependencyNodes.map { it.module } diff --git a/libraries/tools/kotlin-gradle-plugin/src/common/kotlin/org/jetbrains/kotlin/gradle/plugin/mpp/pm20/util/targets.kt b/libraries/tools/kotlin-gradle-plugin/src/common/kotlin/org/jetbrains/kotlin/gradle/plugin/mpp/pm20/util/targets.kt new file mode 100644 index 00000000000..fd2b332438c --- /dev/null +++ b/libraries/tools/kotlin-gradle-plugin/src/common/kotlin/org/jetbrains/kotlin/gradle/plugin/mpp/pm20/util/targets.kt @@ -0,0 +1,18 @@ +/* + * 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.util + +import org.jetbrains.kotlin.gradle.dsl.KotlinMultiplatformExtension +import org.jetbrains.kotlin.gradle.dsl.KotlinProjectExtension +import org.jetbrains.kotlin.gradle.dsl.KotlinSingleTargetExtension +import org.jetbrains.kotlin.gradle.plugin.KotlinTarget + +val KotlinProjectExtension.targets: Iterable + get() = when (this) { + is KotlinSingleTargetExtension -> listOf(this.target) + is KotlinMultiplatformExtension -> targets + else -> error("Unexpected 'kotlin' extension $this") + } diff --git a/libraries/tools/kotlin-gradle-plugin/src/common/kotlin/org/jetbrains/kotlin/gradle/plugin/mpp/pm20/variantPublishing.kt b/libraries/tools/kotlin-gradle-plugin/src/common/kotlin/org/jetbrains/kotlin/gradle/plugin/mpp/pm20/variantPublishing.kt index 71d3a94e9ff..5d17f6816fa 100644 --- a/libraries/tools/kotlin-gradle-plugin/src/common/kotlin/org/jetbrains/kotlin/gradle/plugin/mpp/pm20/variantPublishing.kt +++ b/libraries/tools/kotlin-gradle-plugin/src/common/kotlin/org/jetbrains/kotlin/gradle/plugin/mpp/pm20/variantPublishing.kt @@ -30,19 +30,19 @@ import org.jetbrains.kotlin.gradle.utils.dashSeparatedName import java.util.* import javax.inject.Inject -interface PlatformPublicationToMavenRequest { +interface GradleKpmPlatformPublicationToMavenRequest { val componentName: String - val fromModule: KpmGradleModule - val publicationHolder: SingleMavenPublishedModuleHolder - val variantPublicationRequests: Iterable + val fromModule: GradleKpmModule + val publicationHolder: GradleKpmSingleMavenPublishedModuleHolder + val variantPublicationRequests: Iterable } -data class BasicPlatformPublicationToMavenRequest( +data class GradleKpmBasicPlatformPublicationToMavenRequest( override val componentName: String, - override val fromModule: KpmGradleModule, - override val publicationHolder: SingleMavenPublishedModuleHolder, - override val variantPublicationRequests: Iterable -) : PlatformPublicationToMavenRequest { + override val fromModule: GradleKpmModule, + override val publicationHolder: GradleKpmSingleMavenPublishedModuleHolder, + override val variantPublicationRequests: Iterable +) : GradleKpmPlatformPublicationToMavenRequest { init { check(variantPublicationRequests.all { it.fromVariant.containingModule === fromModule }) { "Variants for publication should all belong to the fromModule ($fromModule)" @@ -52,18 +52,18 @@ data class BasicPlatformPublicationToMavenRequest( /** TODO: consider also using this class for exposing a KPM variant's configurations for project-to-project dependencies, * so that a variant may expose an arbitrary set of configurations rather just { API, runtime } or { API } */ -interface VariantPublicationRequest { - val fromVariant: KpmGradleVariant +interface KpmGradleConfigurationPublicationRequest { + val fromVariant: GradleKpmVariant val publishConfiguration: Configuration } -data class BasicVariantPublicationRequest( - override val fromVariant: KpmGradleVariant, +data class KpmGradleBasicConfigurationPublicationRequest( + override val fromVariant: GradleKpmVariant, override val publishConfiguration: Configuration -) : VariantPublicationRequest +) : KpmGradleConfigurationPublicationRequest -fun VariantPublishingConfigurator.configureNativeVariantPublication(variant: KpmNativeVariantInternal) { +fun GradleKpmVariantPublishingConfigurator.configureNativeVariantPublication(variant: GradleKpmNativeVariantInternal) { val publishConfigurations = listOfNotNull( variant.apiElementsConfiguration, variant.hostSpecificMetadataElementsConfiguration // host-specific metadata may be absent @@ -71,48 +71,41 @@ fun VariantPublishingConfigurator.configureNativeVariantPublication(variant: Kpm configureSingleVariantPublishing(variant, variant, publishConfigurations) } -fun VariantPublishingConfigurator.configureSingleVariantPublication(variant: KpmGradlePublishedVariantWithRuntime) { +fun GradleKpmVariantPublishingConfigurator.configureSingleVariantPublication(variant: GradleKpmPublishedVariantWithRuntime) { val publishConfigurations = listOf(variant.apiElementsConfiguration, variant.runtimeElementsConfiguration) configureSingleVariantPublishing(variant, variant, publishConfigurations) } -fun VariantPublishingConfigurator.configureSingleVariantPublishing( - variant: KpmGradleVariant, - publishedModuleHolder: SingleMavenPublishedModuleHolder, +fun GradleKpmVariantPublishingConfigurator.configureSingleVariantPublishing( + variant: GradleKpmVariant, + publishedModuleHolder: GradleKpmSingleMavenPublishedModuleHolder, publishConfigurations: Iterable ) { configurePublishing( - BasicPlatformPublicationToMavenRequest( + GradleKpmBasicPlatformPublicationToMavenRequest( platformComponentName(variant), variant.containingModule, publishedModuleHolder, publishConfigurations.map { - BasicVariantPublicationRequest(variant, it) + KpmGradleBasicConfigurationPublicationRequest(variant, it) } ) ) } -open class VariantPublishingConfigurator @Inject constructor( +open class GradleKpmVariantPublishingConfigurator @Inject constructor( private val project: Project, private val softwareComponentFactory: SoftwareComponentFactory ) { companion object { - fun get(project: Project): VariantPublishingConfigurator = - project.objects.newInstance(VariantPublishingConfigurator::class.java, project) + fun get(project: Project): GradleKpmVariantPublishingConfigurator = + project.objects.newInstance(GradleKpmVariantPublishingConfigurator::class.java, project) } - open fun platformComponentName(variant: KpmGradleVariant) = variant.disambiguateName("") + fun platformComponentName(variant: GradleKpmVariant) = variant.disambiguateName("") - open fun inferMavenScope(variant: KpmGradleVariant, configurationName: String): String? = - when { - configurationName == variant.apiElementsConfiguration.name -> "compile" - variant is KpmGradleVariantWithRuntime && configurationName == variant.runtimeElementsConfiguration.name -> "runtime" - else -> null - } - - open fun configurePublishing( - request: PlatformPublicationToMavenRequest + fun configurePublishing( + request: GradleKpmPlatformPublicationToMavenRequest ) { val componentName = request.componentName @@ -130,7 +123,7 @@ open class VariantPublishingConfigurator @Inject constructor( // The MPP plugin doesn't publish the source artifacts as variants; keep that behavior for legacy-mapped variants for now if ( publishFromVariants.size == 1 && - publishFromVariants.none { it is LegacyMappedVariant } + publishFromVariants.none { it is GradleKpmLegacyMappedVariant } ) { val singlePublishedVariant = publishFromVariants.single() configureSourceElementsPublishing(componentName, singlePublishedVariant) @@ -143,7 +136,14 @@ open class VariantPublishingConfigurator @Inject constructor( ) } - protected open fun configureSourceElementsPublishing(componentName: String, variant: KpmGradleVariant) { + private fun inferMavenScope(variant: GradleKpmVariant, configurationName: String): String? = + when { + configurationName == variant.apiElementsConfiguration.name -> "compile" + variant is GradleKpmVariantWithRuntime && configurationName == variant.runtimeElementsConfiguration.name -> "runtime" + else -> null + } + + private fun configureSourceElementsPublishing(componentName: String, variant: GradleKpmVariant) { val configurationName = variant.disambiguateName("sourceElements") val docsVariants = DocumentationVariantConfigurator().createSourcesElementsConfiguration(configurationName, variant) project.components.withType(AdhocComponentWithVariants::class.java).named(componentName).configure { component -> @@ -156,10 +156,10 @@ open class VariantPublishingConfigurator @Inject constructor( * At the point [whenShouldRegisterPublication] creates a Maven publication named [componentName] that publishes the created component. * Assigns the created Maven publication to the [publishedModuleHolder]. */ - protected open fun registerPlatformModulePublication( + private fun registerPlatformModulePublication( componentName: String, - publishedModuleHolder: SingleMavenPublishedModuleHolder, - variantRequests: Iterable, + publishedModuleHolder: GradleKpmSingleMavenPublishedModuleHolder, + variantRequests: Iterable, whenShouldRegisterPublication: (() -> Unit) -> Unit ) { val platformComponent = softwareComponentFactory.adhoc(componentName) @@ -173,10 +173,10 @@ open class VariantPublishingConfigurator @Inject constructor( request.fromVariant.project, newName = publishedConfigurationName(originalConfiguration.name) + "-platform", configuration = originalConfiguration, - overrideArtifacts = (request as? AdvancedVariantPublicationRequest) + overrideArtifacts = (request as? KpmGradleAdvancedConfigurationPublicationRequest) ?.overrideConfigurationArtifactsForPublication ?.let { override -> { artifacts -> artifacts.addAllLater(override) } }, - overrideAttributes = (request as? AdvancedVariantPublicationRequest) + overrideAttributes = (request as? KpmGradleAdvancedConfigurationPublicationRequest) ?.overrideConfigurationAttributesForPublication ?.let { override -> { attributes -> copyAttributes(override, attributes) } } ) @@ -202,10 +202,10 @@ open class VariantPublishingConfigurator @Inject constructor( } } - protected open fun registerPlatformVariantsInRootModule( - publishedModuleHolder: SingleMavenPublishedModuleHolder, - kotlinModule: KpmGradleModule, - variantRequests: Iterable + private fun registerPlatformVariantsInRootModule( + publishedModuleHolder: GradleKpmSingleMavenPublishedModuleHolder, + kotlinModule: GradleKpmModule, + variantRequests: Iterable ) { val platformModuleDependencyProvider = project.provider { val coordinates = publishedModuleHolder.publishedMavenModuleCoordinates @@ -236,13 +236,13 @@ open class VariantPublishingConfigurator @Inject constructor( } } -internal data class AdvancedVariantPublicationRequest( - override val fromVariant: KpmGradleVariant, +internal data class KpmGradleAdvancedConfigurationPublicationRequest( + override val fromVariant: GradleKpmVariant, override val publishConfiguration: Configuration, val overrideConfigurationAttributesForPublication: AttributeContainer?, val overrideConfigurationArtifactsForPublication: Provider>?, val includeIntoProjectStructureMetadata: Boolean -) : VariantPublicationRequest +) : KpmGradleConfigurationPublicationRequest open class DocumentationVariantConfigurator { open fun createSourcesElementsConfiguration( @@ -270,7 +270,7 @@ open class DocumentationVariantConfigurator { open fun createSourcesElementsConfiguration( configurationName: String, - variant: KpmGradleVariant + variant: GradleKpmVariant ): Configuration { val sourcesArtifactTask = variant.project.tasks.withType().named(variant.sourceArchiveTaskName) val artifactClassifier = dashSeparatedName(variant.containingModule.moduleClassifier, "sources") 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 6ba917f2d34..21a9a2df463 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 @@ -14,7 +14,7 @@ import org.jetbrains.kotlin.gradle.dsl.kotlinExtension import org.jetbrains.kotlin.gradle.plugin.* import org.jetbrains.kotlin.gradle.plugin.mpp.KotlinJsCompilation import org.jetbrains.kotlin.gradle.plugin.mpp.KotlinUsages -import org.jetbrains.kotlin.gradle.plugin.mpp.pm20.targets +import org.jetbrains.kotlin.gradle.plugin.mpp.pm20.util.targets 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 diff --git a/libraries/tools/kotlin-gradle-plugin/src/common/kotlin/org/jetbrains/kotlin/gradle/plugin/sources/kpm/FragmentMappedKotlinSourceSet.kt b/libraries/tools/kotlin-gradle-plugin/src/common/kotlin/org/jetbrains/kotlin/gradle/plugin/sources/kpm/FragmentMappedKotlinSourceSet.kt index c8c8fe5cfe3..422f412eac7 100644 --- a/libraries/tools/kotlin-gradle-plugin/src/common/kotlin/org/jetbrains/kotlin/gradle/plugin/sources/kpm/FragmentMappedKotlinSourceSet.kt +++ b/libraries/tools/kotlin-gradle-plugin/src/common/kotlin/org/jetbrains/kotlin/gradle/plugin/sources/kpm/FragmentMappedKotlinSourceSet.kt @@ -20,7 +20,7 @@ import org.jetbrains.kotlin.gradle.plugin.sources.createDefaultSourceDirectorySe class FragmentMappedKotlinSourceSet( private val sourceSetName: String, private val project: Project, - internal val underlyingFragment: KpmGradleFragment + internal val underlyingFragment: GradleKpmFragment ) : KotlinSourceSet { val displayName: String get() = sourceSetName diff --git a/libraries/tools/kotlin-gradle-plugin/src/common/kotlin/org/jetbrains/kotlin/gradle/plugin/sources/kpm/SourceSetMappedFragmentLocator.kt b/libraries/tools/kotlin-gradle-plugin/src/common/kotlin/org/jetbrains/kotlin/gradle/plugin/sources/kpm/SourceSetMappedFragmentLocator.kt index cdabb1bf76d..f2388b62d75 100644 --- a/libraries/tools/kotlin-gradle-plugin/src/common/kotlin/org/jetbrains/kotlin/gradle/plugin/sources/kpm/SourceSetMappedFragmentLocator.kt +++ b/libraries/tools/kotlin-gradle-plugin/src/common/kotlin/org/jetbrains/kotlin/gradle/plugin/sources/kpm/SourceSetMappedFragmentLocator.kt @@ -10,7 +10,7 @@ import org.jetbrains.kotlin.gradle.dsl.* import org.jetbrains.kotlin.gradle.dsl.topLevelExtensionOrNull import org.jetbrains.kotlin.gradle.plugin.mpp.KotlinAndroidTarget import org.jetbrains.kotlin.gradle.plugin.mpp.KotlinAndroidTargetPreset -import org.jetbrains.kotlin.gradle.plugin.mpp.pm20.KpmGradleModule +import org.jetbrains.kotlin.gradle.plugin.mpp.pm20.GradleKpmModule import org.jetbrains.kotlin.gradle.plugin.mpp.pm20.kpmModules interface SourceSetMappedFragmentLocator { @@ -36,7 +36,7 @@ internal class MultiplatformSourceSetMappedFragmentLocator : SourceSetMappedFrag override fun locateFragmentForSourceSet(project: Project, sourceSetName: String): SourceSetMappedFragmentLocator.FragmentLocation { val camelCaseParts = sourceSetName.camelCaseParts() if (camelCaseParts.size < 2) { - return SourceSetMappedFragmentLocator.FragmentLocation(KpmGradleModule.MAIN_MODULE_NAME, sourceSetName) + return SourceSetMappedFragmentLocator.FragmentLocation(GradleKpmModule.MAIN_MODULE_NAME, sourceSetName) } val androidTarget = when (val ext = project.topLevelExtension) { @@ -55,7 +55,7 @@ internal class MultiplatformSourceSetMappedFragmentLocator : SourceSetMappedFrag androidSourceSetModuleName(androidTarget.name, sourceSetName) else null } ?: candidateModuleNames.lastOrNull { project.kpmModules.findByName(it) != null } - ?: KpmGradleModule.MAIN_MODULE_NAME + ?: GradleKpmModule.MAIN_MODULE_NAME val fragmentName = if (sourceSetName.endsWith(moduleName, ignoreCase = true)) sourceSetName.dropLast(moduleName.length) else sourceSetName @@ -67,7 +67,7 @@ internal class MultiplatformSourceSetMappedFragmentLocator : SourceSetMappedFrag val compilationName = sourceSetName.removePrefix(targetName).takeIf { it != sourceSetName } ?: return null return when { "Test" in compilationName -> "test" - else -> KpmGradleModule.MAIN_MODULE_NAME + else -> GradleKpmModule.MAIN_MODULE_NAME } } diff --git a/libraries/tools/kotlin-gradle-plugin/src/common/kotlin/org/jetbrains/kotlin/gradle/targets/js/subtargets/DefaultDistribution.kt b/libraries/tools/kotlin-gradle-plugin/src/common/kotlin/org/jetbrains/kotlin/gradle/targets/js/subtargets/DefaultDistribution.kt index c8428348a07..79d5258a5c3 100644 --- a/libraries/tools/kotlin-gradle-plugin/src/common/kotlin/org/jetbrains/kotlin/gradle/targets/js/subtargets/DefaultDistribution.kt +++ b/libraries/tools/kotlin-gradle-plugin/src/common/kotlin/org/jetbrains/kotlin/gradle/targets/js/subtargets/DefaultDistribution.kt @@ -6,7 +6,7 @@ package org.jetbrains.kotlin.gradle.targets.js.subtargets import org.gradle.api.Project -import org.jetbrains.kotlin.gradle.plugin.mpp.pm20.distsDirectory +import org.jetbrains.kotlin.gradle.plugin.mpp.pm20.util.distsDirectory import org.jetbrains.kotlin.gradle.targets.js.dsl.Distribution import org.jetbrains.kotlin.gradle.utils.property import java.io.File @@ -23,4 +23,4 @@ class DefaultDistribution( ?: project.distsDirectory.asFile.get() } } -} \ No newline at end of file +} diff --git a/libraries/tools/kotlin-gradle-plugin/src/common/kotlin/org/jetbrains/kotlin/gradle/targets/js/webpack/KotlinWebpack.kt b/libraries/tools/kotlin-gradle-plugin/src/common/kotlin/org/jetbrains/kotlin/gradle/targets/js/webpack/KotlinWebpack.kt index 985f9f5a601..a81f62d3043 100644 --- a/libraries/tools/kotlin-gradle-plugin/src/common/kotlin/org/jetbrains/kotlin/gradle/targets/js/webpack/KotlinWebpack.kt +++ b/libraries/tools/kotlin-gradle-plugin/src/common/kotlin/org/jetbrains/kotlin/gradle/targets/js/webpack/KotlinWebpack.kt @@ -21,8 +21,8 @@ import org.gradle.process.internal.ExecHandleFactory import org.jetbrains.kotlin.gradle.plugin.KotlinPlatformType import org.jetbrains.kotlin.gradle.plugin.PropertiesProvider import org.jetbrains.kotlin.gradle.plugin.mpp.KotlinJsCompilation -import org.jetbrains.kotlin.gradle.plugin.mpp.pm20.archivesName -import org.jetbrains.kotlin.gradle.plugin.mpp.pm20.distsDirectory +import org.jetbrains.kotlin.gradle.plugin.mpp.pm20.util.archivesName +import org.jetbrains.kotlin.gradle.plugin.mpp.pm20.util.distsDirectory import org.jetbrains.kotlin.gradle.targets.js.RequiredKotlinJsDependency import org.jetbrains.kotlin.gradle.targets.js.nodejs.NodeJsRootPlugin import org.jetbrains.kotlin.gradle.targets.js.npm.RequiresNpmDependencies diff --git a/libraries/tools/kotlin-gradle-plugin/src/common/kotlin/org/jetbrains/kotlin/gradle/targets/jvm/KotlinJvmTargetPreset.kt b/libraries/tools/kotlin-gradle-plugin/src/common/kotlin/org/jetbrains/kotlin/gradle/targets/jvm/KotlinJvmTargetPreset.kt index 10644eda525..7470d486bec 100644 --- a/libraries/tools/kotlin-gradle-plugin/src/common/kotlin/org/jetbrains/kotlin/gradle/targets/jvm/KotlinJvmTargetPreset.kt +++ b/libraries/tools/kotlin-gradle-plugin/src/common/kotlin/org/jetbrains/kotlin/gradle/targets/jvm/KotlinJvmTargetPreset.kt @@ -11,7 +11,7 @@ import org.jetbrains.kotlin.gradle.plugin.AbstractKotlinTargetConfigurator import org.jetbrains.kotlin.gradle.plugin.KotlinPlatformType import org.jetbrains.kotlin.gradle.plugin.PropertiesProvider import org.jetbrains.kotlin.gradle.plugin.mpp.pm20.KotlinMappedJvmCompilationFactory -import org.jetbrains.kotlin.gradle.plugin.mpp.pm20.KpmAwareTargetWithTestsConfigurator +import org.jetbrains.kotlin.gradle.plugin.mpp.pm20.GradleKpmAwareTargetWithTestsConfigurator import org.jetbrains.kotlin.gradle.plugin.mpp.pm20.hasKpmModel import org.jetbrains.kotlin.gradle.targets.jvm.KotlinJvmTarget import org.jetbrains.kotlin.gradle.targets.jvm.KotlinJvmTargetConfigurator @@ -35,7 +35,7 @@ class KotlinJvmTargetPreset( override fun createKotlinTargetConfigurator(): AbstractKotlinTargetConfigurator { val configurator = KotlinJvmTargetConfigurator() return if (project.hasKpmModel) - KpmAwareTargetWithTestsConfigurator(configurator) + GradleKpmAwareTargetWithTestsConfigurator(configurator) else configurator } diff --git a/libraries/tools/kotlin-gradle-plugin/src/common/kotlin/org/jetbrains/kotlin/gradle/targets/metadata/KotlinMetadataTargetConfigurator.kt b/libraries/tools/kotlin-gradle-plugin/src/common/kotlin/org/jetbrains/kotlin/gradle/targets/metadata/KotlinMetadataTargetConfigurator.kt index 77aa676374d..9539f89913e 100644 --- a/libraries/tools/kotlin-gradle-plugin/src/common/kotlin/org/jetbrains/kotlin/gradle/targets/metadata/KotlinMetadataTargetConfigurator.kt +++ b/libraries/tools/kotlin-gradle-plugin/src/common/kotlin/org/jetbrains/kotlin/gradle/targets/metadata/KotlinMetadataTargetConfigurator.kt @@ -489,7 +489,7 @@ internal class NativeSharedCompilationProcessor( override fun run() = Unit } -internal fun Project.createGenerateProjectStructureMetadataTask(module: KpmGradleModule): TaskProvider = +internal fun Project.createGenerateProjectStructureMetadataTask(module: GradleKpmModule): TaskProvider = project.registerTask(lowerCamelCaseName("generate", module.moduleClassifier, "ProjectStructureMetadata")) { task -> task.lazyKotlinProjectStructureMetadata = lazy { buildProjectStructureMetadata(module) } } diff --git a/libraries/tools/kotlin-gradle-plugin/src/common/kotlin/org/jetbrains/kotlin/gradle/targets/metadata/KotlinMetadataTargetPreset.kt b/libraries/tools/kotlin-gradle-plugin/src/common/kotlin/org/jetbrains/kotlin/gradle/targets/metadata/KotlinMetadataTargetPreset.kt index a9bfa80a0ac..2485b88d2f0 100644 --- a/libraries/tools/kotlin-gradle-plugin/src/common/kotlin/org/jetbrains/kotlin/gradle/targets/metadata/KotlinMetadataTargetPreset.kt +++ b/libraries/tools/kotlin-gradle-plugin/src/common/kotlin/org/jetbrains/kotlin/gradle/targets/metadata/KotlinMetadataTargetPreset.kt @@ -9,11 +9,10 @@ package org.jetbrains.kotlin.gradle.plugin.mpp import org.gradle.api.Project import org.jetbrains.kotlin.gradle.dsl.kotlinExtension import org.jetbrains.kotlin.gradle.plugin.* -import org.jetbrains.kotlin.gradle.plugin.mpp.pm20.KpmAwareTargetConfigurator import org.jetbrains.kotlin.gradle.plugin.mpp.pm20.hasKpmModel import org.jetbrains.kotlin.gradle.plugin.sources.applyLanguageSettingsToKotlinOptions import org.jetbrains.kotlin.gradle.targets.metadata.KotlinMetadataTargetConfigurator -import org.jetbrains.kotlin.gradle.targets.metadata.KpmMetadataTargetConfigurator +import org.jetbrains.kotlin.gradle.targets.metadata.GradleKpmMetadataTargetConfigurator class KotlinMetadataTargetPreset( project: Project @@ -43,7 +42,7 @@ class KotlinMetadataTargetPreset( override fun createKotlinTargetConfigurator(): AbstractKotlinTargetConfigurator { val metadataConfigurator = KotlinMetadataTargetConfigurator() return if (project.hasKpmModel) - KpmMetadataTargetConfigurator(metadataConfigurator) + GradleKpmMetadataTargetConfigurator(metadataConfigurator) else metadataConfigurator } diff --git a/libraries/tools/kotlin-gradle-plugin/src/common/kotlin/org/jetbrains/kotlin/gradle/targets/metadata/KpmMetadataTargetConfigurator.kt b/libraries/tools/kotlin-gradle-plugin/src/common/kotlin/org/jetbrains/kotlin/gradle/targets/metadata/KpmMetadataTargetConfigurator.kt index 520e93a8fc2..3664df905da 100644 --- a/libraries/tools/kotlin-gradle-plugin/src/common/kotlin/org/jetbrains/kotlin/gradle/targets/metadata/KpmMetadataTargetConfigurator.kt +++ b/libraries/tools/kotlin-gradle-plugin/src/common/kotlin/org/jetbrains/kotlin/gradle/targets/metadata/KpmMetadataTargetConfigurator.kt @@ -11,14 +11,14 @@ import org.jetbrains.kotlin.gradle.plugin.KotlinCompilation import org.jetbrains.kotlin.gradle.plugin.mpp.* import org.jetbrains.kotlin.gradle.plugin.mpp.MetadataMappedCompilationDetails import org.jetbrains.kotlin.gradle.plugin.mpp.pm20.* -import org.jetbrains.kotlin.gradle.plugin.mpp.pm20.KpmAwareTargetConfigurator +import org.jetbrains.kotlin.gradle.plugin.mpp.pm20.GradleKpmAwareTargetConfigurator 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(metadataTargetConfigurator) { +internal class GradleKpmMetadataTargetConfigurator(private val metadataTargetConfigurator: KotlinMetadataTargetConfigurator) : + GradleKpmAwareTargetConfigurator(metadataTargetConfigurator) { override fun configureTarget(target: KotlinMetadataTarget) { super.configureTarget(target) @@ -39,7 +39,7 @@ internal class KpmMetadataTargetConfigurator(private val metadataTargetConfigura private fun configureTargetWithKpm(target: KotlinMetadataTarget) { target.project.whenEvaluated { - val mainModule = target.project.kpmModules.getByName(KpmGradleModule.MAIN_MODULE_NAME) + val mainModule = target.project.kpmModules.getByName(GradleKpmModule.MAIN_MODULE_NAME) val metadataCompilations = target.project.metadataCompilationRegistryByModuleId.getValue(mainModule.moduleIdentifier) mainModule.fragments.forEach { fragment -> val compilationData = metadataCompilations.getForFragmentOrNull(fragment) ?: return@forEach @@ -53,7 +53,7 @@ internal class KpmMetadataTargetConfigurator(private val metadataTargetConfigura val compilation = when { isNative -> { val konanTargets = - mainModule.variantsContainingFragment(fragment).map { (it as KpmNativeVariantInternal).konanTarget } + mainModule.variantsContainingFragment(fragment).map { (it as GradleKpmNativeVariantInternal).konanTarget } KotlinSharedNativeCompilation(konanTargets, compilationDetails as CompilationDetails) } else -> KotlinCommonCompilation(compilationDetails as CompilationDetails) diff --git a/libraries/tools/kotlin-gradle-plugin/src/common/kotlin/org/jetbrains/kotlin/gradle/targets/native/DefaultCInteropSettings.kt b/libraries/tools/kotlin-gradle-plugin/src/common/kotlin/org/jetbrains/kotlin/gradle/targets/native/DefaultCInteropSettings.kt index 6fc2d5e051d..63e522afa76 100644 --- a/libraries/tools/kotlin-gradle-plugin/src/common/kotlin/org/jetbrains/kotlin/gradle/targets/native/DefaultCInteropSettings.kt +++ b/libraries/tools/kotlin-gradle-plugin/src/common/kotlin/org/jetbrains/kotlin/gradle/targets/native/DefaultCInteropSettings.kt @@ -17,7 +17,7 @@ import org.jetbrains.kotlin.gradle.plugin.CInteropSettings import org.jetbrains.kotlin.gradle.plugin.CInteropSettings.IncludeDirectories import org.jetbrains.kotlin.gradle.plugin.KotlinCompilation import org.jetbrains.kotlin.gradle.plugin.mpp.pm20.KotlinNativeCompilationData -import org.jetbrains.kotlin.gradle.plugin.mpp.pm20.KotlinNativeVariantCompilationData +import org.jetbrains.kotlin.gradle.plugin.mpp.pm20.GradleKpmNativeVariantCompilationData import org.jetbrains.kotlin.gradle.plugin.mpp.pm20.util.disambiguateName import org.jetbrains.kotlin.gradle.targets.native.internal.CInteropIdentifier import org.jetbrains.kotlin.gradle.utils.lowerCamelCaseName @@ -136,7 +136,7 @@ open class DefaultCInteropSettings @Inject constructor( private fun KotlinNativeCompilationData<*>.disambiguateName(simpleName: String): String = when (this) { is AbstractKotlinNativeCompilation -> (this as AbstractKotlinCompilation<*>).disambiguateName(simpleName) - is KotlinNativeVariantCompilationData -> owner.disambiguateName(simpleName) + is GradleKpmNativeVariantCompilationData -> owner.disambiguateName(simpleName) else -> lowerCamelCaseName( this.compilationClassifier, this.compilationPurpose.takeIf { it != KotlinCompilation.MAIN_COMPILATION_NAME }, diff --git a/libraries/tools/kotlin-gradle-plugin/src/common/kotlin/org/jetbrains/kotlin/gradle/targets/native/KotlinNativeTarget.kt b/libraries/tools/kotlin-gradle-plugin/src/common/kotlin/org/jetbrains/kotlin/gradle/targets/native/KotlinNativeTarget.kt index f0d604be0fc..96f6fe4f562 100644 --- a/libraries/tools/kotlin-gradle-plugin/src/common/kotlin/org/jetbrains/kotlin/gradle/targets/native/KotlinNativeTarget.kt +++ b/libraries/tools/kotlin-gradle-plugin/src/common/kotlin/org/jetbrains/kotlin/gradle/targets/native/KotlinNativeTarget.kt @@ -158,12 +158,12 @@ private fun getHostSpecificElements( ): Set = fragments.filterTo(mutableSetOf()) { isNativeShared(it) && isHostSpecificKonanTargetsSet(getKonanTargets(it)) } internal fun getHostSpecificFragments( - module: KpmGradleModule -): Set = getHostSpecificElements( + module: GradleKpmModule +): Set = getHostSpecificElements( module.fragments, isNativeShared = { it.isNativeShared() }, getKonanTargets = { - val nativeVariants = module.variantsContainingFragment(it).filterIsInstance() + val nativeVariants = module.variantsContainingFragment(it).filterIsInstance() nativeVariants.mapTo(mutableSetOf()) { it.konanTarget } } ) diff --git a/libraries/tools/kotlin-gradle-plugin/src/common/kotlin/org/jetbrains/kotlin/gradle/targets/native/KotlinNativeTargetConfigurator.kt b/libraries/tools/kotlin-gradle-plugin/src/common/kotlin/org/jetbrains/kotlin/gradle/targets/native/KotlinNativeTargetConfigurator.kt index 65545794026..e30d54d2375 100644 --- a/libraries/tools/kotlin-gradle-plugin/src/common/kotlin/org/jetbrains/kotlin/gradle/targets/native/KotlinNativeTargetConfigurator.kt +++ b/libraries/tools/kotlin-gradle-plugin/src/common/kotlin/org/jetbrains/kotlin/gradle/targets/native/KotlinNativeTargetConfigurator.kt @@ -31,7 +31,7 @@ import org.jetbrains.kotlin.gradle.plugin.mpp.* import org.jetbrains.kotlin.gradle.plugin.mpp.apple.registerEmbedAndSignAppleFrameworkTask import org.jetbrains.kotlin.gradle.plugin.mpp.isMain import org.jetbrains.kotlin.gradle.plugin.mpp.pm20.* -import org.jetbrains.kotlin.gradle.plugin.mpp.pm20.KpmAwareTargetConfigurator +import org.jetbrains.kotlin.gradle.plugin.mpp.pm20.GradleKpmAwareTargetConfigurator import org.jetbrains.kotlin.gradle.targets.metadata.isKotlinGranularMetadataEnabled import org.jetbrains.kotlin.gradle.targets.native.* import org.jetbrains.kotlin.gradle.targets.native.internal.commonizeCInteropTask @@ -450,7 +450,7 @@ open class KotlinNativeTargetConfigurator : AbstractKotl it.dependsOn(compileTaskProvider) } } - val shouldAddCompileOutputsToElements = compilation.owner is KpmGradleVariant || compilation.isMainCompilationData() + val shouldAddCompileOutputsToElements = compilation.owner is GradleKpmVariant || compilation.isMainCompilationData() if (shouldAddCompileOutputsToElements) { createRegularKlibArtifact(compilation, compileTaskProvider) } @@ -536,15 +536,15 @@ open class KotlinNativeTargetConfigurator : AbstractKotl private val KotlinNativeCompilationData<*>.apiElementsConfigurationName: String get() = when (val dataOwner = owner) { - is KpmGradleVariant -> dataOwner.apiElementsConfiguration.name + is GradleKpmVariant -> dataOwner.apiElementsConfiguration.name is KotlinTarget -> dataOwner.apiElementsConfigurationName else -> error("unexpected owner of $this") } } } -internal class KpmNativeTargetConfigurator(private val nativeTargetConfigurator: KotlinNativeTargetConfigurator) : - KpmAwareTargetConfigurator(nativeTargetConfigurator) { +internal class GradleKpmNativeTargetConfigurator(private val nativeTargetConfigurator: KotlinNativeTargetConfigurator) : + GradleKpmAwareTargetConfigurator(nativeTargetConfigurator) { override fun configureTarget(target: T) { super.configureTarget(target) diff --git a/libraries/tools/kotlin-gradle-plugin/src/common/kotlin/org/jetbrains/kotlin/gradle/targets/native/KotlinNativeTargetPreset.kt b/libraries/tools/kotlin-gradle-plugin/src/common/kotlin/org/jetbrains/kotlin/gradle/targets/native/KotlinNativeTargetPreset.kt index 0b7c0a98891..792a2e780b6 100644 --- a/libraries/tools/kotlin-gradle-plugin/src/common/kotlin/org/jetbrains/kotlin/gradle/targets/native/KotlinNativeTargetPreset.kt +++ b/libraries/tools/kotlin-gradle-plugin/src/common/kotlin/org/jetbrains/kotlin/gradle/targets/native/KotlinNativeTargetPreset.kt @@ -124,7 +124,7 @@ open class KotlinNativeTargetPreset(name: String, project: Project, konanTarget: override fun createTargetConfigurator(): AbstractKotlinTargetConfigurator { val configurator = KotlinNativeTargetConfigurator() return if (project.hasKpmModel) - KpmNativeTargetConfigurator(configurator) + GradleKpmNativeTargetConfigurator(configurator) else configurator } @@ -139,7 +139,7 @@ open class KotlinNativeTargetWithHostTestsPreset(name: String, project: Project, override fun createTargetConfigurator(): AbstractKotlinTargetConfigurator { val configurator = KotlinNativeTargetWithHostTestsConfigurator() return if (project.hasKpmModel) - KpmNativeTargetConfigurator(configurator) + GradleKpmNativeTargetConfigurator(configurator) else configurator } @@ -153,7 +153,7 @@ open class KotlinNativeTargetWithSimulatorTestsPreset(name: String, project: Pro override fun createTargetConfigurator(): AbstractKotlinTargetConfigurator { val configurator = KotlinNativeTargetWithSimulatorTestsConfigurator() return if (project.hasKpmModel) - KpmNativeTargetConfigurator(configurator) + GradleKpmNativeTargetConfigurator(configurator) else configurator } diff --git a/libraries/tools/kotlin-gradle-plugin/src/common/kotlin/org/jetbrains/kotlin/gradle/targets/native/internal/CInteropMetadataDependencyTransformationTask.kt b/libraries/tools/kotlin-gradle-plugin/src/common/kotlin/org/jetbrains/kotlin/gradle/targets/native/internal/CInteropMetadataDependencyTransformationTask.kt index fe1c1f99c82..4b5477a847d 100644 --- a/libraries/tools/kotlin-gradle-plugin/src/common/kotlin/org/jetbrains/kotlin/gradle/targets/native/internal/CInteropMetadataDependencyTransformationTask.kt +++ b/libraries/tools/kotlin-gradle-plugin/src/common/kotlin/org/jetbrains/kotlin/gradle/targets/native/internal/CInteropMetadataDependencyTransformationTask.kt @@ -20,7 +20,7 @@ import org.jetbrains.kotlin.gradle.plugin.mpp.KotlinProjectStructureMetadata import org.jetbrains.kotlin.gradle.plugin.mpp.MetadataDependencyResolution.ChooseVisibleSourceSets import org.jetbrains.kotlin.gradle.plugin.mpp.MetadataDependencyResolution.ChooseVisibleSourceSets.MetadataProvider.JarMetadataProvider import org.jetbrains.kotlin.gradle.plugin.mpp.MetadataDependencyResolution.ChooseVisibleSourceSets.MetadataProvider.ProjectMetadataProvider -import org.jetbrains.kotlin.gradle.plugin.mpp.pm20.toModuleIdentifiers +import org.jetbrains.kotlin.gradle.plugin.mpp.pm20.toKpmModuleIdentifiers import org.jetbrains.kotlin.gradle.plugin.sources.DefaultKotlinSourceSet import org.jetbrains.kotlin.gradle.plugin.sources.SourceSetMetadataStorageForIde import org.jetbrains.kotlin.gradle.plugin.sources.dependsOnClosure @@ -109,7 +109,7 @@ internal open class CInteropMetadataDependencyTransformationTask @Inject constru @Input val visibleSourceSetsProvidingCInterops: Set ) { constructor(chooseVisibleSourceSets: ChooseVisibleSourceSets) : this( - dependencyModuleIdentifiers = chooseVisibleSourceSets.dependency.toModuleIdentifiers(), + dependencyModuleIdentifiers = chooseVisibleSourceSets.dependency.toKpmModuleIdentifiers(), projectStructureMetadata = chooseVisibleSourceSets.projectStructureMetadata, visibleSourceSetsProvidingCInterops = chooseVisibleSourceSets.visibleSourceSetsProvidingCInterops ) diff --git a/libraries/tools/kotlin-gradle-plugin/src/common/kotlin/org/jetbrains/kotlin/gradle/tooling/BuildKotlinToolingMetadataTask.kt b/libraries/tools/kotlin-gradle-plugin/src/common/kotlin/org/jetbrains/kotlin/gradle/tooling/BuildKotlinToolingMetadataTask.kt index 9dc95f7b18e..60e12b7291e 100644 --- a/libraries/tools/kotlin-gradle-plugin/src/common/kotlin/org/jetbrains/kotlin/gradle/tooling/BuildKotlinToolingMetadataTask.kt +++ b/libraries/tools/kotlin-gradle-plugin/src/common/kotlin/org/jetbrains/kotlin/gradle/tooling/BuildKotlinToolingMetadataTask.kt @@ -48,7 +48,7 @@ internal fun Project.registerBuildKotlinToolingMetadataTask() { internal val Project.buildKotlinToolingMetadataForMainKpmModuleTask: TaskProvider? get() { require(hasKpmModel) - val mainModule = kpmModules.getByName(KpmGradleModule.MAIN_MODULE_NAME) + val mainModule = kpmModules.getByName(GradleKpmModule.MAIN_MODULE_NAME) return mainModule.buildKotlinToolingMetadataTask } @@ -72,7 +72,7 @@ internal val Project.buildKotlinToolingMetadataTask: TaskProvider? +internal val GradleKpmModule.buildKotlinToolingMetadataTask: TaskProvider? get() { if (!project.kotlinPropertiesProvider.enableKotlinToolingMetadataArtifact) return null val taskName = BuildKotlinToolingMetadataTask.taskNameForKotlinModule(name) @@ -91,7 +91,7 @@ internal val KpmGradleModule.buildKotlinToolingMetadataTask: TaskProvider = +private fun GradleKpmModule.buildProjectTargets(): List = variants.map { variant -> KotlinToolingMetadata.ProjectTargetMetadata( target = variant.javaClass.canonicalName, @@ -180,36 +180,36 @@ private fun KpmGradleModule.buildProjectTargets(): List KotlinToolingMetadata.ProjectTargetMetadata.JvmExtras( + is GradleKpmJvmVariant -> KotlinToolingMetadata.ProjectTargetMetadata.JvmExtras( jvmTarget = compilationData.kotlinOptions.jvmTarget, withJavaEnabled = false ) - is LegacyMappedVariant -> buildJvmExtrasOrNull(compilation.target) + is GradleKpmLegacyMappedVariant -> buildJvmExtrasOrNull(compilation.target) else -> null } -private fun KpmGradleVariant.androidExtrasOrNull() = +private fun GradleKpmVariant.androidExtrasOrNull() = when (this) { - is LegacyMappedVariant -> buildAndroidExtrasOrNull(compilation.target) + is GradleKpmLegacyMappedVariant -> buildAndroidExtrasOrNull(compilation.target) else -> null } -private fun KpmGradleVariant.jsExtrasOrNull() = +private fun GradleKpmVariant.jsExtrasOrNull() = when (this) { - is LegacyMappedVariant -> buildJsExtrasOrNull(compilation.target) + is GradleKpmLegacyMappedVariant -> buildJsExtrasOrNull(compilation.target) else -> null } -private fun KpmGradleVariant.nativeExtrasOrNull() = +private fun GradleKpmVariant.nativeExtrasOrNull() = when (this) { - is KpmNativeVariantInternal -> KotlinToolingMetadata.ProjectTargetMetadata.NativeExtras( + is GradleKpmNativeVariantInternal -> KotlinToolingMetadata.ProjectTargetMetadata.NativeExtras( konanTarget = konanTarget.name, konanVersion = project.konanVersion.toString(), konanAbiVersion = KotlinAbiVersion.CURRENT.toString() ) - is LegacyMappedVariant -> buildNativeExtrasOrNull(compilation.target) + is GradleKpmLegacyMappedVariant -> buildNativeExtrasOrNull(compilation.target) else -> null } diff --git a/libraries/tools/kotlin-gradle-plugin/src/functionalTest/kotlin/org/jetbrains/kotlin/gradle/kpm/BuildKotlinToolingMetadataTest.kt b/libraries/tools/kotlin-gradle-plugin/src/functionalTest/kotlin/org/jetbrains/kotlin/gradle/kpm/BuildKotlinToolingMetadataTest.kt index 5347b8cbf9f..69cf5812f24 100644 --- a/libraries/tools/kotlin-gradle-plugin/src/functionalTest/kotlin/org/jetbrains/kotlin/gradle/kpm/BuildKotlinToolingMetadataTest.kt +++ b/libraries/tools/kotlin-gradle-plugin/src/functionalTest/kotlin/org/jetbrains/kotlin/gradle/kpm/BuildKotlinToolingMetadataTest.kt @@ -30,7 +30,7 @@ private fun Project.kotlinToolingMetadataOfModule(moduleName: String): KotlinToo return module.buildKotlinToolingMetadataTask!!.get().kotlinToolingMetadata } -private val Project.kotlinToolingMetadataOfMainModule get() = kotlinToolingMetadataOfModule(KpmGradleModule.MAIN_MODULE_NAME) +private val Project.kotlinToolingMetadataOfMainModule get() = kotlinToolingMetadataOfModule(GradleKpmModule.MAIN_MODULE_NAME) class BuildKotlinToolingMetadataTest : AbstractKpmExtensionTest() { @Test @@ -40,8 +40,8 @@ class BuildKotlinToolingMetadataTest : AbstractKpmExtensionTest() { mainAndTest { jvm val linux = fragments.create("linux") - fragments.create("linuxX64").apply { refines(linux) } - fragments.create("linuxArm64").apply { refines(linux) } + fragments.create("linuxX64").apply { refines(linux) } + fragments.create("linuxArm64").apply { refines(linux) } // No JS & Android variants available at the moment, only through [LegacyMappedVariant] which is tested below } } @@ -57,13 +57,13 @@ class BuildKotlinToolingMetadataTest : AbstractKpmExtensionTest() { assertEquals(3, metadata.projectTargets.size, "Expected 3 targets in KPM") val jvmTarget = metadata.projectTargets.single { it.platformType == jvm.name } - assertEquals(KpmJvmVariant::class.java.canonicalName, jvmTarget.target) + assertEquals(GradleKpmJvmVariant::class.java.canonicalName, jvmTarget.target) val nativeTargets = metadata.projectTargets.filter { it.platformType == native.name }.map { it.target }.toSet() assertEquals( setOf( - KpmLinuxArm64Variant::class.java.canonicalName, - KpmLinuxX64Variant::class.java.canonicalName + GradleKpmLinuxArm64Variant::class.java.canonicalName, + GradleKpmLinuxX64Variant::class.java.canonicalName ), nativeTargets ) @@ -121,10 +121,10 @@ class KotlinToolingMetadataWithModelMappingTest { } val expectedTargets = mapOf( - androidJvm to LegacyMappedVariantWithRuntime::class, - jvm to KpmJvmVariant::class, - js to LegacyMappedVariantWithRuntime::class, - native to KpmLinuxX64Variant::class + androidJvm to GradleKpmLegacyMappedVariantWithRuntime::class, + jvm to GradleKpmJvmVariant::class, + js to GradleKpmLegacyMappedVariantWithRuntime::class, + native to GradleKpmLinuxX64Variant::class ) assertEquals( @@ -212,11 +212,11 @@ class KotlinToolingMetadataWithModelMappingTest { ) assertEquals( - KpmLinuxArm64Variant::class.java.canonicalName, + GradleKpmLinuxArm64Variant::class.java.canonicalName, linuxArm64.target ) assertEquals( - KpmLinuxX64Variant::class.java.canonicalName, + GradleKpmLinuxX64Variant::class.java.canonicalName, linuxX64.target ) } diff --git a/libraries/tools/kotlin-gradle-plugin/src/functionalTest/kotlin/org/jetbrains/kotlin/gradle/kpm/KotlinCommonFragmentFactoryTest.kt b/libraries/tools/kotlin-gradle-plugin/src/functionalTest/kotlin/org/jetbrains/kotlin/gradle/kpm/KotlinCommonFragmentFactoryTest.kt index 60ae77df4a1..c7b31eafa31 100644 --- a/libraries/tools/kotlin-gradle-plugin/src/functionalTest/kotlin/org/jetbrains/kotlin/gradle/kpm/KotlinCommonFragmentFactoryTest.kt +++ b/libraries/tools/kotlin-gradle-plugin/src/functionalTest/kotlin/org/jetbrains/kotlin/gradle/kpm/KotlinCommonFragmentFactoryTest.kt @@ -7,7 +7,7 @@ package org.jetbrains.kotlin.gradle.kpm -import org.jetbrains.kotlin.gradle.plugin.mpp.pm20.KotlinCommonFragmentFactory +import org.jetbrains.kotlin.gradle.plugin.mpp.pm20.GradleKpmCommonFragmentFactory import kotlin.test.Test import kotlin.test.assertEquals import kotlin.test.assertTrue @@ -15,13 +15,13 @@ import kotlin.test.assertTrue class KotlinCommonFragmentFactoryTest : AbstractKpmExtensionTest() { @Test fun `test fragmentName`() { - val fragment = KotlinCommonFragmentFactory(kotlin.main).create("common") + val fragment = GradleKpmCommonFragmentFactory(kotlin.main).create("common") assertEquals("common", fragment.fragmentName) } @Test fun `test has source roots`() { - val fragment = KotlinCommonFragmentFactory(kotlin.main).create("common") + val fragment = GradleKpmCommonFragmentFactory(kotlin.main).create("common") assertTrue(fragment.kotlinSourceRoots.srcDirs.isNotEmpty()) } } diff --git a/libraries/tools/kotlin-gradle-plugin/src/functionalTest/kotlin/org/jetbrains/kotlin/gradle/kpm/KotlinFragmentConfigurationDefinitionTest.kt b/libraries/tools/kotlin-gradle-plugin/src/functionalTest/kotlin/org/jetbrains/kotlin/gradle/kpm/KotlinFragmentConfigurationDefinitionTest.kt index 5c849090777..be76a345e93 100644 --- a/libraries/tools/kotlin-gradle-plugin/src/functionalTest/kotlin/org/jetbrains/kotlin/gradle/kpm/KotlinFragmentConfigurationDefinitionTest.kt +++ b/libraries/tools/kotlin-gradle-plugin/src/functionalTest/kotlin/org/jetbrains/kotlin/gradle/kpm/KotlinFragmentConfigurationDefinitionTest.kt @@ -8,7 +8,6 @@ package org.jetbrains.kotlin.gradle.kpm import org.gradle.api.attributes.Attribute -import org.gradle.api.capabilities.Capability import org.jetbrains.kotlin.gradle.plugin.mpp.pm20.* import org.jetbrains.kotlin.gradle.plugin.mpp.pm20.util.FragmentNameDisambiguation import org.junit.Test @@ -21,19 +20,19 @@ class KotlinFragmentConfigurationDefinitionTest : AbstractKpmExtensionTest() { private val testContext by lazy { val names = FragmentNameDisambiguation(kotlin.main, "test") - KotlinGradleFragmentConfigurationContextImpl( - kotlin.main, DefaultKotlinFragmentDependencyConfigurationsFactory.create(kotlin.main, names), names + GradleKpmFragmentConfigureContextImpl( + kotlin.main, GradleKpmDefaultFragmentDependencyConfigurationsFactory.create(kotlin.main, names), names ) } private val dummyFragment by lazy { - KotlinCommonFragmentFactory(kotlin.main).create("testFragment") + GradleKpmCommonFragmentFactory(kotlin.main).create("testFragment") } @Test fun `test withProvider`() { - val testDefinition = ConfigurationDefinition( - provider = ConfigurationProvider { project.configurations.create("a") } + val testDefinition = GradleKpmConfigurationSetup( + provider = GradleKpmConfigurationProvider { project.configurations.create("a") } ).withConfigurationProvider { project.configurations.create("b") } assertEquals( @@ -59,14 +58,14 @@ class KotlinFragmentConfigurationDefinitionTest : AbstractKpmExtensionTest() { val testAttribute2 = Attribute.of("testAttribute2", String::class.java) val testConfiguration = project.configurations.create("dummy") - val fragmentAttributes1 = FragmentAttributes { + val fragmentAttributes1 = GradleKpmConfigurationAttributesSetup { assertSame(testConfiguration.attributes, attributes) assertNull(attributes.getAttribute(testAttribute1)) assertNull(attributes.getAttribute(testAttribute2)) attribute(testAttribute1, "value1") } - val fragmentAttributes2 = FragmentAttributes { + val fragmentAttributes2 = GradleKpmConfigurationAttributesSetup { assertSame(testConfiguration.attributes, attributes) assertEquals(attributes.getAttribute(testAttribute1), "value1") assertNull(attributes.getAttribute(testAttribute2)) @@ -74,14 +73,14 @@ class KotlinFragmentConfigurationDefinitionTest : AbstractKpmExtensionTest() { } val composite = fragmentAttributes1 + fragmentAttributes2 - if (composite !is CompositeFragmentAttributes) - fail("Expected ${CompositeFragmentAttributes::class} but found $composite") + if (composite !is GradleKpmCompositeConfigurationAttributesSetup) + fail("Expected ${GradleKpmCompositeConfigurationAttributesSetup::class} but found $composite") assertEquals( listOf(fragmentAttributes1, fragmentAttributes2), composite.children ) - composite.setAttributes(testConfiguration.attributes, dummyFragment) + composite.setupAttributes(testConfiguration.attributes, dummyFragment) assertEquals( "value1", testConfiguration.attributes.getAttribute(testAttribute1), @@ -96,34 +95,34 @@ class KotlinFragmentConfigurationDefinitionTest : AbstractKpmExtensionTest() { @Test fun `test definition + attributes`() { - val definition = ConfigurationDefinition( - provider = ConfigurationProvider { project.configurations.create("a") } + val definition = GradleKpmConfigurationSetup( + provider = GradleKpmConfigurationProvider { project.configurations.create("a") } ) - val attributes1 = FragmentAttributes { } - val attributes2 = FragmentAttributes { } + val attributes1 = GradleKpmConfigurationAttributesSetup { } + val attributes2 = GradleKpmConfigurationAttributesSetup { } val newDefinition = definition + attributes1 + attributes2 assertEquals( - listOf(attributes1, attributes2), (newDefinition.attributes as? CompositeFragmentAttributes)?.children, + listOf(attributes1, attributes2), (newDefinition.attributes as? GradleKpmCompositeConfigurationAttributesSetup)?.children, "Expected 'newDefinition' to list the two added attributes" ) } @Test fun `test artifacts + artifacts`() { - val artifacts1 = FragmentArtifacts { + val artifacts1 = GradleKpmConfigurationArtifactsSetup { artifact(project.file("artifact1.jar")) } - val artifacts2 = FragmentArtifacts { + val artifacts2 = GradleKpmConfigurationArtifactsSetup { artifact(project.file("artifact2-a.jar")) artifact(project.file("artifact2-b.jar")) } val composite = artifacts1 + artifacts2 - if (composite !is CompositeFragmentArtifacts) { - fail("Expected ${CompositeFragmentArtifacts::class.java}, but found $composite") + if (composite !is CompositeFragmentConfigurationArtifactsSetup) { + fail("Expected ${CompositeFragmentConfigurationArtifactsSetup::class.java}, but found $composite") } assertEquals( @@ -131,7 +130,7 @@ class KotlinFragmentConfigurationDefinitionTest : AbstractKpmExtensionTest() { ) project.configurations.create("dummy").apply { - composite.addArtifacts(outgoing, dummyFragment) + composite.setupArtifacts(outgoing, dummyFragment) assertEquals( project.files("artifact1.jar", "artifact2-a.jar", "artifact2-b.jar").toSet(), outgoing.artifacts.files.toSet() @@ -141,40 +140,40 @@ class KotlinFragmentConfigurationDefinitionTest : AbstractKpmExtensionTest() { @Test fun `test definition + artifacts`() { - val definition = ConfigurationDefinition( - provider = ConfigurationProvider { throw NotImplementedError() } + val definition = GradleKpmConfigurationSetup( + provider = GradleKpmConfigurationProvider { throw NotImplementedError() } ) - val artifacts1 = FragmentArtifacts {} - val artifacts2 = FragmentArtifacts {} + val artifacts1 = GradleKpmConfigurationArtifactsSetup {} + val artifacts2 = GradleKpmConfigurationArtifactsSetup {} val newDefinition = definition + artifacts1 + artifacts2 assertEquals( - listOf(artifacts1, artifacts2), (newDefinition.artifacts as? CompositeFragmentArtifacts)?.children, + listOf(artifacts1, artifacts2), (newDefinition.artifacts as? CompositeFragmentConfigurationArtifactsSetup)?.children, "Expected 'newDefinition' to list new added artifacts" ) } @Test fun `test capability + capability`() { - val capabilities1 = FragmentCapabilities { + val capabilities1 = GradleKpmConfigurationCapabilitiesSetup { capability("capability1") } - val capabilities2 = FragmentCapabilities { + val capabilities2 = GradleKpmConfigurationCapabilitiesSetup { capability("capability2") } val composite = capabilities1 + capabilities2 - if (composite !is CompositeFragmentCapabilities) { - fail("Expected ${CompositeFragmentCapabilities::class}, but found $composite") + if (composite !is CompositeKpmCapabilitiesSetup) { + fail("Expected ${CompositeKpmCapabilitiesSetup::class}, but found $composite") } assertEquals( listOf(capabilities1, capabilities2), composite.children ) - val testCapabilitiesContainer = object : KotlinGradleFragmentConfigurationCapabilities.CapabilitiesContainer { + val testCapabilitiesContainer = object : GradleKpmConfigurationCapabilitiesSetup.CapabilitiesContainer { val setCapabilities = mutableListOf() override fun capability(notation: Any) { setCapabilities.add(notation) @@ -191,16 +190,16 @@ class KotlinFragmentConfigurationDefinitionTest : AbstractKpmExtensionTest() { @Test fun `test definition + capability`() { - val definition = ConfigurationDefinition( - provider = ConfigurationProvider { throw NotImplementedError() } + val definition = GradleKpmConfigurationSetup( + provider = GradleKpmConfigurationProvider { throw NotImplementedError() } ) - val capabilities1 = FragmentCapabilities {} - val capabilities2 = FragmentCapabilities {} + val capabilities1 = GradleKpmConfigurationCapabilitiesSetup {} + val capabilities2 = GradleKpmConfigurationCapabilitiesSetup {} val newDefinition = definition + capabilities1 + capabilities2 assertEquals( - listOf(capabilities1, capabilities2), (newDefinition.capabilities as? CompositeFragmentCapabilities)?.children, + listOf(capabilities1, capabilities2), (newDefinition.capabilities as? CompositeKpmCapabilitiesSetup)?.children, "Expected 'newDefinition' to list all added capabilities" ) } diff --git a/libraries/tools/kotlin-gradle-plugin/src/functionalTest/kotlin/org/jetbrains/kotlin/gradle/kpm/KotlinGradleModuleFragmentContainerTest.kt b/libraries/tools/kotlin-gradle-plugin/src/functionalTest/kotlin/org/jetbrains/kotlin/gradle/kpm/KotlinGradleModuleFragmentContainerTest.kt index e9928a4ecdc..1e191ae03e4 100644 --- a/libraries/tools/kotlin-gradle-plugin/src/functionalTest/kotlin/org/jetbrains/kotlin/gradle/kpm/KotlinGradleModuleFragmentContainerTest.kt +++ b/libraries/tools/kotlin-gradle-plugin/src/functionalTest/kotlin/org/jetbrains/kotlin/gradle/kpm/KotlinGradleModuleFragmentContainerTest.kt @@ -12,16 +12,16 @@ import org.jetbrains.kotlin.gradle.plugin.mpp.pm20.* import kotlin.test.Test import kotlin.test.assertTrue -class KotlinGradleModuleFragmentContainerTest : AbstractKpmExtensionTest() { +class KpmGradleFragmentContainerTest : AbstractKpmExtensionTest() { @Test fun `test creating several different fragment types`() { - assertTrue(kotlin.main.fragments.create("some common") is KpmGradleFragmentInternal) - kotlin.main.fragments.create("jvm") - kotlin.main.fragments.create("linuxX64") - kotlin.main.fragments.create("macosX64") - kotlin.main.fragments.create("macosArm64") - kotlin.main.fragments.create("iosX64") - kotlin.main.fragments.create("iosArm64") + assertTrue(kotlin.main.fragments.create("some common") is GradleKpmFragmentInternal) + kotlin.main.fragments.create("jvm") + kotlin.main.fragments.create("linuxX64") + kotlin.main.fragments.create("macosX64") + kotlin.main.fragments.create("macosArm64") + kotlin.main.fragments.create("iosX64") + kotlin.main.fragments.create("iosArm64") } } diff --git a/libraries/tools/kotlin-gradle-plugin/src/functionalTest/kotlin/org/jetbrains/kotlin/gradle/kpm/KotlinJvmVariantFactoryTest.kt b/libraries/tools/kotlin-gradle-plugin/src/functionalTest/kotlin/org/jetbrains/kotlin/gradle/kpm/KotlinJvmVariantFactoryTest.kt index 0528340a748..bc72107042f 100644 --- a/libraries/tools/kotlin-gradle-plugin/src/functionalTest/kotlin/org/jetbrains/kotlin/gradle/kpm/KotlinJvmVariantFactoryTest.kt +++ b/libraries/tools/kotlin-gradle-plugin/src/functionalTest/kotlin/org/jetbrains/kotlin/gradle/kpm/KotlinJvmVariantFactoryTest.kt @@ -22,14 +22,14 @@ class KotlinJvmVariantFactoryTest : AbstractKpmExtensionTest() { @Test fun `test platform type`() { - val variant = KotlinJvmVariantFactory(kotlin.main).create("jvm") + val variant = GradleKpmJvmVariantFactory(kotlin.main).create("jvm") assertEquals(KotlinPlatformType.jvm, variant.platformType) assertEquals("jvm", variant.fragmentName) } @Test fun `test accessing configurations`() { - val variant = KotlinJvmVariantFactory(kotlin.main).create("jvm") + val variant = GradleKpmJvmVariantFactory(kotlin.main).create("jvm") variant.compileDependenciesConfiguration variant.runtimeDependenciesConfiguration @@ -43,51 +43,51 @@ class KotlinJvmVariantFactoryTest : AbstractKpmExtensionTest() { @Test fun `test compilationData`() { - val variant = KotlinJvmVariantFactory(kotlin.main).create("jvm") + val variant = GradleKpmJvmVariantFactory(kotlin.main).create("jvm") assertSame(variant, variant.compilationData.owner) } @Test fun `test accessing compileDependencyFiles`() { - val variant = KotlinJvmVariantFactory(kotlin.main).create("jvm") + val variant = GradleKpmJvmVariantFactory(kotlin.main).create("jvm") variant.compileDependencyFiles.files } @Test fun `test accessing runtimeDependencyFiles`() { - val variant = KotlinJvmVariantFactory(kotlin.main).create("jvm") + val variant = GradleKpmJvmVariantFactory(kotlin.main).create("jvm") variant.runtimeDependencyFiles.files } @Test fun `test accessing runtimeFiles`() { - val variant = KotlinJvmVariantFactory(kotlin.main).create("jvm") + val variant = GradleKpmJvmVariantFactory(kotlin.main).create("jvm") variant.runtimeFiles.files } @Test fun `test has source roots`() { - val variant = KotlinJvmVariantFactory(kotlin.main).create("jvm") + val variant = GradleKpmJvmVariantFactory(kotlin.main).create("jvm") assertTrue(variant.kotlinSourceRoots.srcDirs.isNotEmpty()) } @Test fun `test sourceArchiveTaskName registered`() { - val variant = KotlinJvmVariantFactory(kotlin.main).create("jvm") + val variant = GradleKpmJvmVariantFactory(kotlin.main).create("jvm") assertTrue(project.tasks.getByName(variant.sourceArchiveTaskName) is Zip) } @Test fun `test compileTask registered`() { - val variant = KotlinJvmVariantFactory(kotlin.main).create("jvm") + val variant = GradleKpmJvmVariantFactory(kotlin.main).create("jvm") assertTrue(project.tasks.getByName(variant.compilationData.compileKotlinTaskName) is KotlinCompile) } @Test fun `test custom configure compileDependenciesConfiguration`() { - val variant = KotlinJvmVariantFactory( - kotlin.main, KotlinJvmVariantConfig( - compileDependencies = DefaultKotlinCompileDependenciesDefinition + FragmentAttributes { + val variant = GradleKpmJvmVariantFactory( + kotlin.main, GradleKpmJvmVariantConfig( + compileDependencies = DefaultKotlinCompileDependenciesDefinition + GradleKpmConfigurationAttributesSetup { assertSame(fragment.compileDependenciesConfiguration.attributes, attributes) attribute(testAttribute, "compileDependencies") } @@ -101,9 +101,9 @@ class KotlinJvmVariantFactoryTest : AbstractKpmExtensionTest() { @Test fun `test custom configure runtimeDependenciesConfiguration`() { - val variant = KotlinJvmVariantFactory( - kotlin.main, KotlinJvmVariantConfig( - runtimeDependencies = DefaultKotlinRuntimeDependenciesDefinition + FragmentAttributes { + val variant = GradleKpmJvmVariantFactory( + kotlin.main, GradleKpmJvmVariantConfig( + runtimeDependencies = DefaultKotlinRuntimeDependenciesDefinition + GradleKpmConfigurationAttributesSetup { assertSame(fragment.runtimeDependenciesConfiguration.attributes, attributes) attribute(testAttribute, "runtimeDependencies") } @@ -117,9 +117,9 @@ class KotlinJvmVariantFactoryTest : AbstractKpmExtensionTest() { @Test fun `test custom configure apiElementsConfiguration`() { - val variant = KotlinJvmVariantFactory( - kotlin.main, KotlinJvmVariantConfig( - apiElements = DefaultKotlinApiElementsDefinition + FragmentAttributes { + val variant = GradleKpmJvmVariantFactory( + kotlin.main, GradleKpmJvmVariantConfig( + apiElements = DefaultKotlinApiElementsDefinition + GradleKpmConfigurationAttributesSetup { assertSame(fragment.apiElementsConfiguration.attributes, attributes) attribute(testAttribute, "apiElements") } @@ -133,9 +133,9 @@ class KotlinJvmVariantFactoryTest : AbstractKpmExtensionTest() { @Test fun `test custom configure runtimeElementsConfiguration`() { - val variant = KotlinJvmVariantFactory( - kotlin.main, KotlinJvmVariantConfig( - runtimeElements = DefaultKotlinRuntimeElementsDefinition + FragmentAttributes { + val variant = GradleKpmJvmVariantFactory( + kotlin.main, GradleKpmJvmVariantConfig( + runtimeElements = DefaultKotlinRuntimeElementsDefinition + GradleKpmConfigurationAttributesSetup { assertSame(fragment.runtimeElementsConfiguration.attributes, attributes) attribute(testAttribute, "runtimeElements") } @@ -149,10 +149,10 @@ class KotlinJvmVariantFactoryTest : AbstractKpmExtensionTest() { @Test fun `test custom sourceDirectories configuration`() { - val variant = KotlinJvmVariantFactory( - kotlin.main, KotlinJvmVariantConfig( - sourceDirectoriesConfigurator = object : KotlinSourceDirectoriesConfigurator { - override fun configure(fragment: KpmJvmVariant) { + val variant = GradleKpmJvmVariantFactory( + kotlin.main, GradleKpmJvmVariantConfig( + sourceDirectoriesConfigurator = object : GradleKpmSourceDirectoriesConfigurator { + override fun configure(fragment: GradleKpmJvmVariant) { fragment.kotlinSourceRoots.setSrcDirs(listOf(project.file("src/abc/kotlin"))) } } diff --git a/libraries/tools/kotlin-gradle-plugin/src/functionalTest/kotlin/org/jetbrains/kotlin/gradle/kpm/KotlinNativeVariantFactoryTest.kt b/libraries/tools/kotlin-gradle-plugin/src/functionalTest/kotlin/org/jetbrains/kotlin/gradle/kpm/KotlinNativeVariantFactoryTest.kt index 28b6a533acc..c1af4c8c9a1 100644 --- a/libraries/tools/kotlin-gradle-plugin/src/functionalTest/kotlin/org/jetbrains/kotlin/gradle/kpm/KotlinNativeVariantFactoryTest.kt +++ b/libraries/tools/kotlin-gradle-plugin/src/functionalTest/kotlin/org/jetbrains/kotlin/gradle/kpm/KotlinNativeVariantFactoryTest.kt @@ -21,15 +21,15 @@ import kotlin.test.assertTrue @RunWith(Parameterized::class) class KotlinNativeVariantFactoryTest( - private val variantConstructor: KotlinNativeVariantConstructor<*>, + private val variantConstructor: GradleKpmNativeVariantConstructor<*>, @Suppress("unused") private val variantClassName: String ) : AbstractKpmExtensionTest() { - private lateinit var variant: KpmNativeVariantInternal + private lateinit var variant: GradleKpmNativeVariantInternal @BeforeTest fun createVariant() { - variant = KotlinNativeVariantFactory(kotlin.main, variantConstructor).create("native") + variant = GradleKpmNativeVariantFactory(kotlin.main, variantConstructor).create("native") } @Test @@ -87,12 +87,12 @@ class KotlinNativeVariantFactoryTest( @JvmStatic @Parameterized.Parameters(name = "{1}") fun data() = listOf( - KpmLinuxX64Variant.constructor, - KpmMacosX64Variant.constructor, - KpmMacosX64Variant.constructor, - KpmMacosArm64Variant.constructor, - KpmIosX64Variant.constructor, - KpmIosArm64Variant.constructor + GradleKpmLinuxX64Variant.constructor, + GradleKpmMacosX64Variant.constructor, + GradleKpmMacosX64Variant.constructor, + GradleKpmMacosArm64Variant.constructor, + GradleKpmIosX64Variant.constructor, + GradleKpmIosArm64Variant.constructor ).map { arrayOf(it, it.variantClass.simpleName) } } } diff --git a/libraries/tools/kotlin-gradle-plugin/src/functionalTest/kotlin/org/jetbrains/kotlin/gradle/kpm/idea/IdeaKotlinProjectModelSerializableTest.kt b/libraries/tools/kotlin-gradle-plugin/src/functionalTest/kotlin/org/jetbrains/kotlin/gradle/kpm/idea/IdeaKotlinProjectModelSerializableTest.kt index d10c7a62d16..389dfa86be3 100644 --- a/libraries/tools/kotlin-gradle-plugin/src/functionalTest/kotlin/org/jetbrains/kotlin/gradle/kpm/idea/IdeaKotlinProjectModelSerializableTest.kt +++ b/libraries/tools/kotlin-gradle-plugin/src/functionalTest/kotlin/org/jetbrains/kotlin/gradle/kpm/idea/IdeaKotlinProjectModelSerializableTest.kt @@ -12,9 +12,9 @@ import org.jetbrains.kotlin.gradle.kpm.AbstractKpmExtensionTest import org.jetbrains.kotlin.gradle.kpm.buildIdeaKotlinProjectModel import org.jetbrains.kotlin.gradle.kpm.idea.testFixtures.deserialize import org.jetbrains.kotlin.gradle.kpm.idea.testFixtures.serialize -import org.jetbrains.kotlin.gradle.plugin.mpp.pm20.KpmIosX64Variant -import org.jetbrains.kotlin.gradle.plugin.mpp.pm20.KpmLinuxX64Variant -import org.jetbrains.kotlin.gradle.plugin.mpp.pm20.KpmMacosX64Variant +import org.jetbrains.kotlin.gradle.plugin.mpp.pm20.GradleKpmIosX64Variant +import org.jetbrains.kotlin.gradle.plugin.mpp.pm20.GradleKpmLinuxX64Variant +import org.jetbrains.kotlin.gradle.plugin.mpp.pm20.GradleKpmMacosX64Variant import org.jetbrains.kotlin.gradle.plugin.mpp.pm20.jvm import java.io.ByteArrayInputStream import java.io.ByteArrayOutputStream @@ -40,9 +40,9 @@ class IdeaKotlinProjectModelSerializableTest : AbstractKpmExtensionTest() { kotlin.mainAndTest { val native = fragments.create("native") val apple = fragments.create("apple") - val ios = fragments.create("ios") - val macos = fragments.create("macos") - val linux = fragments.create("linux") + val ios = fragments.create("ios") + val macos = fragments.create("macos") + val linux = fragments.create("linux") val jvm = jvm apple.refines(native) diff --git a/libraries/tools/kotlin-gradle-plugin/src/functionalTest/kotlin/org/jetbrains/kotlin/gradle/kpm/idea/MviKotlinIdeaDependencyResolutionTest.kt b/libraries/tools/kotlin-gradle-plugin/src/functionalTest/kotlin/org/jetbrains/kotlin/gradle/kpm/idea/MviKotlinIdeaDependencyResolutionTest.kt index 33927bfc950..f166e085c7f 100644 --- a/libraries/tools/kotlin-gradle-plugin/src/functionalTest/kotlin/org/jetbrains/kotlin/gradle/kpm/idea/MviKotlinIdeaDependencyResolutionTest.kt +++ b/libraries/tools/kotlin-gradle-plugin/src/functionalTest/kotlin/org/jetbrains/kotlin/gradle/kpm/idea/MviKotlinIdeaDependencyResolutionTest.kt @@ -31,10 +31,10 @@ class MviKotlinIdeaDependencyResolutionTest : AbstractLightweightIdeaDependencyR val kotlin = project.applyKpmPlugin { mainAndTest { - fragments.create("jvm", KpmJvmVariant::class.java) - val linuxX64Variant = fragments.create("linuxX64", KpmLinuxX64Variant::class.java) - val iosX64Variant = fragments.create("iosX64", KpmIosX64Variant::class.java) - val iosArm64Variant = fragments.create("iosArm64", KpmIosArm64Variant::class.java) + fragments.create("jvm", GradleKpmJvmVariant::class.java) + val linuxX64Variant = fragments.create("linuxX64", GradleKpmLinuxX64Variant::class.java) + val iosX64Variant = fragments.create("iosX64", GradleKpmIosX64Variant::class.java) + val iosArm64Variant = fragments.create("iosArm64", GradleKpmIosArm64Variant::class.java) val iosCommon = fragments.create("iosCommon") val nativeCommon = fragments.create("nativeCommon") diff --git a/libraries/tools/kotlin-gradle-plugin/src/functionalTest/kotlin/org/jetbrains/kotlin/gradle/kpm/idea/SimpleProjectToProjectDependencyResolutionTest.kt b/libraries/tools/kotlin-gradle-plugin/src/functionalTest/kotlin/org/jetbrains/kotlin/gradle/kpm/idea/SimpleProjectToProjectDependencyResolutionTest.kt index 7737deaaac6..7fff8f78d9e 100644 --- a/libraries/tools/kotlin-gradle-plugin/src/functionalTest/kotlin/org/jetbrains/kotlin/gradle/kpm/idea/SimpleProjectToProjectDependencyResolutionTest.kt +++ b/libraries/tools/kotlin-gradle-plugin/src/functionalTest/kotlin/org/jetbrains/kotlin/gradle/kpm/idea/SimpleProjectToProjectDependencyResolutionTest.kt @@ -27,11 +27,11 @@ class SimpleProjectToProjectDependencyResolutionTest : AbstractLightweightIdeaDe producer.applyKpmPlugin { mainAndTest { - fragments.create("jvm", KpmJvmVariant::class.java) - val linuxX64 = fragments.create("linuxX64", KpmLinuxX64Variant::class.java) - val iosX64 = fragments.create("iosX64", KpmIosX64Variant::class.java) - val iosArm64 = fragments.create("iosArm64", KpmIosArm64Variant::class.java) - val macos64 = fragments.create("macosX64", KpmMacosX64Variant::class.java) + fragments.create("jvm", GradleKpmJvmVariant::class.java) + val linuxX64 = fragments.create("linuxX64", GradleKpmLinuxX64Variant::class.java) + val iosX64 = fragments.create("iosX64", GradleKpmIosX64Variant::class.java) + val iosArm64 = fragments.create("iosArm64", GradleKpmIosArm64Variant::class.java) + val macos64 = fragments.create("macosX64", GradleKpmMacosX64Variant::class.java) val iosCommon = fragments.create("iosMain") { it.refines(common) @@ -55,10 +55,10 @@ class SimpleProjectToProjectDependencyResolutionTest : AbstractLightweightIdeaDe val consumerKotlin = consumer.applyKpmPlugin { mainAndTest { - fragments.create("jvm", KpmJvmVariant::class.java) - val linuxX64 = fragments.create("linuxX64", KpmLinuxX64Variant::class.java) - val iosX64 = fragments.create("iosX64", KpmIosX64Variant::class.java) - val macosX64 = fragments.create("macosX64", KpmMacosX64Variant::class.java) + fragments.create("jvm", GradleKpmJvmVariant::class.java) + val linuxX64 = fragments.create("linuxX64", GradleKpmLinuxX64Variant::class.java) + val iosX64 = fragments.create("iosX64", GradleKpmIosX64Variant::class.java) + val macosX64 = fragments.create("macosX64", GradleKpmMacosX64Variant::class.java) val appleCommon = fragments.create("appleCommon") { it.refines(common) @@ -80,10 +80,10 @@ class SimpleProjectToProjectDependencyResolutionTest : AbstractLightweightIdeaDe consumerKotlin.buildIdeaKotlinProjectModel().assertIsNotEmpty().modules.forEach { module -> fun ifTestModule(vararg any: Any?) = - listOf(*any).takeIf { module.name == KpmGradleModule.TEST_MODULE_NAME } + listOf(*any).takeIf { module.name == GradleKpmModule.TEST_MODULE_NAME } fun ifMainModule(vararg any: Any?) = - listOf(*any).takeIf { module.name == KpmGradleModule.MAIN_MODULE_NAME } + listOf(*any).takeIf { module.name == GradleKpmModule.MAIN_MODULE_NAME } module.assertContainsFragment("common").assertFragmentDependencies( "regular::producer/main/common", diff --git a/libraries/tools/kotlin-gradle-plugin/src/functionalTest/kotlin/org/jetbrains/kotlin/gradle/kpm/idea/StdlibKotlinIdeaDependencyResolutionTest.kt b/libraries/tools/kotlin-gradle-plugin/src/functionalTest/kotlin/org/jetbrains/kotlin/gradle/kpm/idea/StdlibKotlinIdeaDependencyResolutionTest.kt index 4c27bc0ae28..2cddaa83595 100644 --- a/libraries/tools/kotlin-gradle-plugin/src/functionalTest/kotlin/org/jetbrains/kotlin/gradle/kpm/idea/StdlibKotlinIdeaDependencyResolutionTest.kt +++ b/libraries/tools/kotlin-gradle-plugin/src/functionalTest/kotlin/org/jetbrains/kotlin/gradle/kpm/idea/StdlibKotlinIdeaDependencyResolutionTest.kt @@ -16,9 +16,9 @@ import org.jetbrains.kotlin.gradle.kpm.idea.testFixtures.assertContainsFragment import org.jetbrains.kotlin.gradle.kpm.idea.testFixtures.assertIsNotEmpty import org.jetbrains.kotlin.gradle.kpm.idea.testFixtures.assertResolvedBinaryDependencies import org.jetbrains.kotlin.gradle.plugin.getKotlinPluginVersion -import org.jetbrains.kotlin.gradle.plugin.mpp.pm20.KpmIosArm64Variant -import org.jetbrains.kotlin.gradle.plugin.mpp.pm20.KpmIosX64Variant -import org.jetbrains.kotlin.gradle.plugin.mpp.pm20.KpmJvmVariant +import org.jetbrains.kotlin.gradle.plugin.mpp.pm20.GradleKpmIosArm64Variant +import org.jetbrains.kotlin.gradle.plugin.mpp.pm20.GradleKpmIosX64Variant +import org.jetbrains.kotlin.gradle.plugin.mpp.pm20.GradleKpmJvmVariant import org.junit.Test class StdlibKotlinIdeaDependencyResolutionTest : AbstractLightweightIdeaDependencyResolutionTest() { @@ -29,9 +29,9 @@ class StdlibKotlinIdeaDependencyResolutionTest : AbstractLightweightIdeaDependen val kotlin = project.applyKpmPlugin { mainAndTest { - fragments.create("jvm", KpmJvmVariant::class.java) - val iosX64Variant = fragments.create("iosX64", KpmIosX64Variant::class.java) - val iosArm64Variant = fragments.create("iosArm64", KpmIosArm64Variant::class.java) + fragments.create("jvm", GradleKpmJvmVariant::class.java) + val iosX64Variant = fragments.create("iosX64", GradleKpmIosX64Variant::class.java) + val iosArm64Variant = fragments.create("iosArm64", GradleKpmIosArm64Variant::class.java) val iosCommon = fragments.create("iosCommon") iosCommon.refines(common) @@ -73,9 +73,9 @@ class StdlibKotlinIdeaDependencyResolutionTest : AbstractLightweightIdeaDependen val kotlin = project.applyKpmPlugin { mainAndTest { - fragments.create("jvm", KpmJvmVariant::class.java) - val iosX64Variant = fragments.create("iosX64", KpmIosX64Variant::class.java) - val iosArm64Variant = fragments.create("iosArm64", KpmIosArm64Variant::class.java) + fragments.create("jvm", GradleKpmJvmVariant::class.java) + val iosX64Variant = fragments.create("iosX64", GradleKpmIosX64Variant::class.java) + val iosArm64Variant = fragments.create("iosArm64", GradleKpmIosArm64Variant::class.java) val iosCommon = fragments.create("iosCommon") iosCommon.refines(common) @@ -129,9 +129,9 @@ class StdlibKotlinIdeaDependencyResolutionTest : AbstractLightweightIdeaDependen val kotlin = project.applyKpmPlugin { mainAndTest { - fragments.create("jvm", KpmJvmVariant::class.java) - val iosX64Variant = fragments.create("iosX64", KpmIosX64Variant::class.java) - val iosArm64Variant = fragments.create("iosArm64", KpmIosArm64Variant::class.java) + fragments.create("jvm", GradleKpmJvmVariant::class.java) + val iosX64Variant = fragments.create("iosX64", GradleKpmIosX64Variant::class.java) + val iosArm64Variant = fragments.create("iosArm64", GradleKpmIosArm64Variant::class.java) val iosCommon = fragments.create("iosCommon") iosCommon.refines(common) diff --git a/libraries/tools/kotlin-gradle-plugin/src/functionalTest/kotlin/org/jetbrains/kotlin/gradle/mpp/KpmCompilerPluginTest.kt b/libraries/tools/kotlin-gradle-plugin/src/functionalTest/kotlin/org/jetbrains/kotlin/gradle/mpp/KpmCompilerPluginTest.kt index becbb78ac0d..7042381bc95 100644 --- a/libraries/tools/kotlin-gradle-plugin/src/functionalTest/kotlin/org/jetbrains/kotlin/gradle/mpp/KpmCompilerPluginTest.kt +++ b/libraries/tools/kotlin-gradle-plugin/src/functionalTest/kotlin/org/jetbrains/kotlin/gradle/mpp/KpmCompilerPluginTest.kt @@ -9,7 +9,7 @@ package org.jetbrains.kotlin.gradle.mpp import org.gradle.api.Project import org.gradle.api.artifacts.Configuration import org.jetbrains.kotlin.gradle.plugin.mpp.pm20.GradleKpmCompilerPlugin -import org.jetbrains.kotlin.gradle.plugin.mpp.pm20.KpmLinuxX64Variant +import org.jetbrains.kotlin.gradle.plugin.mpp.pm20.GradleKpmLinuxX64Variant import org.jetbrains.kotlin.gradle.plugin.mpp.pm20.jvm import org.jetbrains.kotlin.gradle.tasks.AbstractKotlinCompile import org.jetbrains.kotlin.gradle.tasks.AbstractKotlinNativeCompile @@ -52,7 +52,7 @@ class KpmCompilerPluginTest { projectModel { main { jvm - val linuxX64 = fragments.create("linuxX64", KpmLinuxX64Variant::class.java) + val linuxX64 = fragments.create("linuxX64", GradleKpmLinuxX64Variant::class.java) val jvmAndLinux = fragments.create("jvmAndLinux") jvm.refines(jvmAndLinux) diff --git a/libraries/tools/kotlin-gradle-plugin/src/functionalTest/kotlin/org/jetbrains/kotlin/gradle/sources/kpm/MultiplatformSourceSetMappedFragmentLocatorTest.kt b/libraries/tools/kotlin-gradle-plugin/src/functionalTest/kotlin/org/jetbrains/kotlin/gradle/sources/kpm/MultiplatformSourceSetMappedFragmentLocatorTest.kt index cf59a33c3ef..7011a228e52 100644 --- a/libraries/tools/kotlin-gradle-plugin/src/functionalTest/kotlin/org/jetbrains/kotlin/gradle/sources/kpm/MultiplatformSourceSetMappedFragmentLocatorTest.kt +++ b/libraries/tools/kotlin-gradle-plugin/src/functionalTest/kotlin/org/jetbrains/kotlin/gradle/sources/kpm/MultiplatformSourceSetMappedFragmentLocatorTest.kt @@ -14,7 +14,7 @@ import kotlin.test.Test import kotlin.test.assertEquals import org.jetbrains.kotlin.gradle.plugin.sources.kpm.MultiplatformSourceSetMappedFragmentLocator import org.jetbrains.kotlin.gradle.plugin.PropertiesProvider -import org.jetbrains.kotlin.gradle.plugin.mpp.pm20.KpmGradleModule +import org.jetbrains.kotlin.gradle.plugin.mpp.pm20.GradleKpmModule import org.jetbrains.kotlin.gradle.plugin.mpp.pm20.kpmModules import org.jetbrains.kotlin.gradle.plugin.sources.kpm.SourceSetMappedFragmentLocator @@ -42,17 +42,17 @@ internal open class MultiplatformSourceSetMappedFragmentLocatorTest : Multiplatf @Test fun `name with one part is returned as fragment name with main module`() { - doTest("foo", "foo", KpmGradleModule.MAIN_MODULE_NAME) + doTest("foo", "foo", GradleKpmModule.MAIN_MODULE_NAME) } @Test fun `main is truncated from name`() { - doTest("fooBarMain", "fooBar", KpmGradleModule.MAIN_MODULE_NAME) + doTest("fooBarMain", "fooBar", GradleKpmModule.MAIN_MODULE_NAME) } @Test fun `module chosen for test fragment`() { - doTest("abcDefGhiTest", "abcDefGhi", KpmGradleModule.TEST_MODULE_NAME) + doTest("abcDefGhiTest", "abcDefGhi", GradleKpmModule.TEST_MODULE_NAME) } @Test @@ -60,12 +60,12 @@ internal open class MultiplatformSourceSetMappedFragmentLocatorTest : Multiplatf val nameWithDigits = "testDigits123Accepted123" project.kpmModules.create(nameWithDigits) doTest("foo${nameWithDigits.capitalize()}", "foo", nameWithDigits) - doTest("${nameWithDigits}Main", nameWithDigits, KpmGradleModule.MAIN_MODULE_NAME) + doTest("${nameWithDigits}Main", nameWithDigits, GradleKpmModule.MAIN_MODULE_NAME) } @Test fun `capitalized name handling`() { - doTest("IAmTheMain", "IAmThe", KpmGradleModule.MAIN_MODULE_NAME) + doTest("IAmTheMain", "IAmThe", GradleKpmModule.MAIN_MODULE_NAME) } @Test @@ -78,7 +78,7 @@ internal open class MultiplatformSourceSetMappedFragmentLocatorTest : Multiplatf // also check for the same logic in fragments that go to main if no suffix matched: val nameForMain = "fooBarBaz" - doTest(nameForMain, nameForMain, KpmGradleModule.MAIN_MODULE_NAME) + doTest(nameForMain, nameForMain, GradleKpmModule.MAIN_MODULE_NAME) val moduleSuffixName = "barBaz" project.kpmModules.create(moduleSuffixName) doTest(nameForMain, "foo", moduleSuffixName) @@ -95,12 +95,12 @@ internal class MultiplatformSourceSetMappedFragmentLocatorTestWithAndroid : Mult @Test fun `android source set names`() { - doTest("androidMain", "android", KpmGradleModule.MAIN_MODULE_NAME) - doTest("androidTest", "android", KpmGradleModule.TEST_MODULE_NAME) - doTest("androidAndroidTest", "androidAndroid", KpmGradleModule.TEST_MODULE_NAME) + doTest("androidMain", "android", GradleKpmModule.MAIN_MODULE_NAME) + doTest("androidTest", "android", GradleKpmModule.TEST_MODULE_NAME) + doTest("androidAndroidTest", "androidAndroid", GradleKpmModule.TEST_MODULE_NAME) - doTest("androidDebug", "androidDebug", KpmGradleModule.MAIN_MODULE_NAME) - doTest("androidDebugTest", "androidDebug", KpmGradleModule.TEST_MODULE_NAME) - doTest("androidDebugAndroidTest", "androidDebugAndroid", KpmGradleModule.TEST_MODULE_NAME) + doTest("androidDebug", "androidDebug", GradleKpmModule.MAIN_MODULE_NAME) + doTest("androidDebugTest", "androidDebug", GradleKpmModule.TEST_MODULE_NAME) + doTest("androidDebugAndroidTest", "androidDebugAndroid", GradleKpmModule.TEST_MODULE_NAME) } } diff --git a/libraries/tools/kotlin-project-model/src/main/kotlin/DependencyResolution.kt b/libraries/tools/kotlin-project-model/src/main/kotlin/DependencyResolution.kt index 1519fb51510..cff9eb786e4 100644 --- a/libraries/tools/kotlin-project-model/src/main/kotlin/DependencyResolution.kt +++ b/libraries/tools/kotlin-project-model/src/main/kotlin/DependencyResolution.kt @@ -11,4 +11,3 @@ package org.jetbrains.kotlin.project.model interface KpmModuleDependencyResolver { fun resolveDependency(requestingModule: KpmModule, moduleDependency: KpmModuleDependency): KpmModule? } - diff --git a/libraries/tools/kotlin-project-model/src/main/kotlin/ModuleFragmentsResolver.kt b/libraries/tools/kotlin-project-model/src/main/kotlin/ModuleFragmentsResolver.kt index 83c23ebdde6..fe0258ea190 100644 --- a/libraries/tools/kotlin-project-model/src/main/kotlin/ModuleFragmentsResolver.kt +++ b/libraries/tools/kotlin-project-model/src/main/kotlin/ModuleFragmentsResolver.kt @@ -7,36 +7,36 @@ package org.jetbrains.kotlin.project.model import org.jetbrains.kotlin.project.model.utils.variantsContainingFragment -interface ModuleFragmentsResolver { +interface KpmFragmentsResolver { fun getChosenFragments( requestingFragment: KpmFragment, dependencyModule: KpmModule - ): FragmentResolution + ): KpmFragmentResolution } -sealed class FragmentResolution(val requestingFragment: KpmFragment, val dependencyModule: KpmModule) { +sealed class KpmFragmentResolution(val requestingFragment: KpmFragment, val dependencyModule: KpmModule) { class ChosenFragments( requestingFragment: KpmFragment, dependencyModule: KpmModule, val visibleFragments: Iterable, - val variantResolutions: Iterable - ) : FragmentResolution(requestingFragment, dependencyModule) + val variantResolutions: Iterable + ) : KpmFragmentResolution(requestingFragment, dependencyModule) class NotRequested(requestingFragment: KpmFragment, dependencyModule: KpmModule) : - FragmentResolution(requestingFragment, dependencyModule) + KpmFragmentResolution(requestingFragment, dependencyModule) // TODO: think about restricting calls with the type system to avoid partial functions in resolvers? class Unknown(requestingFragment: KpmFragment, dependencyModule: KpmModule) : - FragmentResolution(requestingFragment, dependencyModule) + KpmFragmentResolution(requestingFragment, dependencyModule) } -class DefaultModuleFragmentsResolver( - private val variantResolver: ModuleVariantResolver -) : ModuleFragmentsResolver { +class KpmDefaultFragmentsResolver( + private val variantResolver: KpmModuleVariantResolver +) : KpmFragmentsResolver { override fun getChosenFragments( requestingFragment: KpmFragment, dependencyModule: KpmModule - ): FragmentResolution { + ): KpmFragmentResolution { val dependingModule = requestingFragment.containingModule val containingVariants = dependingModule.variantsContainingFragment(requestingFragment) @@ -44,12 +44,12 @@ class DefaultModuleFragmentsResolver( // TODO: extend this to more cases with non-matching variants, revisit the behavior when no matching variant is found once we fix // local publishing of libraries with missing host-specific parts (it breaks transitive dependencies now) - if (chosenVariants.none { it is VariantResolution.VariantMatch }) - return FragmentResolution.NotRequested(requestingFragment, dependencyModule) + if (chosenVariants.none { it is KpmVariantResolution.KpmVariantMatch }) + return KpmFragmentResolution.NotRequested(requestingFragment, dependencyModule) val chosenFragments = chosenVariants.map { variantResolution -> when (variantResolution) { - is VariantResolution.VariantMatch -> variantResolution.chosenVariant.withRefinesClosure + is KpmVariantResolution.KpmVariantMatch -> variantResolution.chosenVariant.withRefinesClosure else -> emptySet() } } @@ -61,6 +61,6 @@ class DefaultModuleFragmentsResolver( .filter { it.isNotEmpty() } .reduce { acc, it -> acc.intersect(it) } - return FragmentResolution.ChosenFragments(requestingFragment, dependencyModule, result, chosenVariants) + return KpmFragmentResolution.ChosenFragments(requestingFragment, dependencyModule, result, chosenVariants) } } diff --git a/libraries/tools/kotlin-project-model/src/main/kotlin/ModuleVariantResolver.kt b/libraries/tools/kotlin-project-model/src/main/kotlin/ModuleVariantResolver.kt index 3ed1ab8f1ac..5dddeaa546a 100644 --- a/libraries/tools/kotlin-project-model/src/main/kotlin/ModuleVariantResolver.kt +++ b/libraries/tools/kotlin-project-model/src/main/kotlin/ModuleVariantResolver.kt @@ -10,24 +10,24 @@ package org.jetbrains.kotlin.project.model * Use of this source code is governed by the Apache 2.0 license that can be found in the license/LICENSE.txt file. */ -interface ModuleVariantResolver { +interface KpmModuleVariantResolver { /** * Find the matching module variant of the [dependencyModule] for the consumer's [requestingVariant]. * * This is a partial function. A particular resolver may not be capable to do variant matching for some [dependencyModule] or * some [requestingVariant] (to such an extent that a resolver may only know how to resolve a single [dependencyModule]'s variants, or * how to resolve module variants for a particular [requestingVariant]). - * In this case it should return [VariantResolution.Unknown], and the caller (which might be an aggregating [ModuleVariantResolver]) + * In this case it should return [KpmVariantResolution.Unknown], and the caller (which might be an aggregating [KpmModuleVariantResolver]) * may consult other sources to get the variant match. */ - fun getChosenVariant(requestingVariant: KpmVariant, dependencyModule: KpmModule): VariantResolution + fun getChosenVariant(requestingVariant: KpmVariant, dependencyModule: KpmModule): KpmVariantResolution } /** * Represents the results of [dependencyModule]'s variant resolution for the [requestingVariant], - * usually done by some [ModuleVariantResolver]. + * usually done by some [KpmModuleVariantResolver]. */ -sealed class VariantResolution( +sealed class KpmVariantResolution( val requestingVariant: KpmVariant, val dependencyModule: KpmModule ) { @@ -37,56 +37,56 @@ sealed class VariantResolution( dependencyModule: KpmModule, matchingVariants: Collection ) = when (matchingVariants.size) { - 0 -> NoVariantMatch(requestingVariant, dependencyModule) - 1 -> VariantMatch(requestingVariant, dependencyModule, matchingVariants.single()) - else -> AmbiguousVariants(requestingVariant, dependencyModule, matchingVariants) + 0 -> KpmNoVariantMatch(requestingVariant, dependencyModule) + 1 -> KpmVariantMatch(requestingVariant, dependencyModule, matchingVariants.single()) + else -> KpmAmbiguousVariants(requestingVariant, dependencyModule, matchingVariants) } } override fun toString(): String = when (this) { - is VariantMatch -> "match: ${chosenVariant.fragmentName}" + is KpmVariantMatch -> "match: ${chosenVariant.fragmentName}" is Unknown -> "unknown" is NotRequested -> "not requested" - is NoVariantMatch -> "no match" - is AmbiguousVariants -> "ambiguity: ${matchingVariants.joinToString { it.fragmentName }}" + is KpmNoVariantMatch -> "no match" + is KpmAmbiguousVariants -> "ambiguity: ${matchingVariants.joinToString { it.fragmentName }}" } /** * The resolver decided that the [chosenVariant] is the best variant match. */ - class VariantMatch( + class KpmVariantMatch( requestingVariant: KpmVariant, dependencyModule: KpmModule, val chosenVariant: KpmVariant - ) : VariantResolution(requestingVariant, dependencyModule) + ) : KpmVariantResolution(requestingVariant, dependencyModule) // TODO: think about restricting calls with the type system to avoid partial functions in resolvers? class Unknown(requestingVariant: KpmVariant, dependencyModule: KpmModule) : - VariantResolution(requestingVariant, dependencyModule) + KpmVariantResolution(requestingVariant, dependencyModule) /** * Returned when the resolver detects that the [requestingVariant] does not depend on [dependencyModule] and therefore should not get * any variant of that module at all. */ class NotRequested(requestingVariant: KpmVariant, dependencyModule: KpmModule) : - VariantResolution(requestingVariant, dependencyModule) + KpmVariantResolution(requestingVariant, dependencyModule) /** * Returned when the resolver could not find any matching of the [dependencyModule] for the [requestingVariant], or variant matching was * done externally and the external system did not provide any details of the failure. */ - class NoVariantMatch( + class KpmNoVariantMatch( requestingVariant: KpmVariant, dependencyModule: KpmModule - ) : VariantResolution(requestingVariant, dependencyModule) + ) : KpmVariantResolution(requestingVariant, dependencyModule) /** * Returned when the resolver found multiple matching variants in the [dependencyModule] and failed to choose one of them as the * best match for the [requestingVariant]. */ - class AmbiguousVariants( + class KpmAmbiguousVariants( requestingVariant: KpmVariant, dependencyModule: KpmModule, val matchingVariants: Iterable - ) : VariantResolution(requestingVariant, dependencyModule) + ) : KpmVariantResolution(requestingVariant, dependencyModule) } diff --git a/libraries/tools/kotlin-project-model/src/test/kotlin/org/jetbrains/kotlin/project/model/DefaultModuleFragmentsResolverTest.kt b/libraries/tools/kotlin-project-model/src/test/kotlin/org/jetbrains/kotlin/project/model/DefaultModuleFragmentsResolverTest.kt index 8c20106be1c..5d56a39a05a 100644 --- a/libraries/tools/kotlin-project-model/src/test/kotlin/org/jetbrains/kotlin/project/model/DefaultModuleFragmentsResolverTest.kt +++ b/libraries/tools/kotlin-project-model/src/test/kotlin/org/jetbrains/kotlin/project/model/DefaultModuleFragmentsResolverTest.kt @@ -14,7 +14,7 @@ internal class DefaultModuleFragmentsResolverTest { val bundleFoo = simpleModuleBundle("foo") val bundleBar = simpleModuleBundle("bar") - val fragmentResolver = DefaultModuleFragmentsResolver(MatchVariantsByExactAttributes()) + val fragmentResolver = KpmDefaultFragmentsResolver(MatchVariantsByExactAttributes()) @Test fun testFragmentVisibility() { @@ -32,7 +32,7 @@ internal class DefaultModuleFragmentsResolverTest { moduleBarMain.fragments.forEach { consumingFragment -> val result = fragmentResolver.getChosenFragments(consumingFragment, moduleFooMain) - assertTrue(result is FragmentResolution.ChosenFragments) + assertTrue(result is KpmFragmentResolution.ChosenFragments) val expected = expectedVisibleFragments.getValue(consumingFragment.fragmentName) assertEquals(expected, result.visibleFragments.map { it.fragmentName }.toSet()) } @@ -48,15 +48,15 @@ internal class DefaultModuleFragmentsResolverTest { } val moduleFooMain = bundleFoo.main val variantResolution = MatchVariantsByExactAttributes().getChosenVariant(dependingModule.variant("linux"), moduleFooMain) - assumeTrue(variantResolution is VariantResolution.NoVariantMatch) + assumeTrue(variantResolution is KpmVariantResolution.KpmNoVariantMatch) val (commonMainResult, jsAndLinuxResult) = listOf("common", "jsAndLinux").map { val chosenFragments = fragmentResolver.getChosenFragments(dependingModule.fragment(it), moduleFooMain) - assertTrue(chosenFragments is FragmentResolution.ChosenFragments) + assertTrue(chosenFragments is KpmFragmentResolution.ChosenFragments) chosenFragments.visibleFragments.map { it.fragmentName }.toSet() } assertEquals(setOf("common", "jvmAndJs"), commonMainResult) assertEquals(setOf("common", "jvmAndJs", "jsAndLinux", "js"), jsAndLinuxResult) } -} \ No newline at end of file +} diff --git a/libraries/tools/kotlin-project-model/src/test/kotlin/org/jetbrains/kotlin/project/model/DummyVariantMatchingImplementations.kt b/libraries/tools/kotlin-project-model/src/test/kotlin/org/jetbrains/kotlin/project/model/DummyVariantMatchingImplementations.kt index 47588f9272c..ad0518bccf9 100644 --- a/libraries/tools/kotlin-project-model/src/test/kotlin/org/jetbrains/kotlin/project/model/DummyVariantMatchingImplementations.kt +++ b/libraries/tools/kotlin-project-model/src/test/kotlin/org/jetbrains/kotlin/project/model/DummyVariantMatchingImplementations.kt @@ -5,14 +5,14 @@ package org.jetbrains.kotlin.project.model -class MatchVariantsByExactAttributes : ModuleVariantResolver { - override fun getChosenVariant(requestingVariant: KpmVariant, dependencyModule: KpmModule): VariantResolution { +class MatchVariantsByExactAttributes : KpmModuleVariantResolver { + override fun getChosenVariant(requestingVariant: KpmVariant, dependencyModule: KpmModule): KpmVariantResolution { val candidates = dependencyModule.variants return candidates.filter { candidate -> candidate.variantAttributes.all { (attributeKey, candidateValue) -> attributeKey !in requestingVariant.variantAttributes.keys || candidateValue == requestingVariant.variantAttributes.getValue(attributeKey) } - }.let { VariantResolution.fromMatchingVariants(requestingVariant, dependencyModule, it) } + }.let { KpmVariantResolution.fromMatchingVariants(requestingVariant, dependencyModule, it) } } }