From db5655d6ce34c1f1f7ff79e635a4afb51bbeeaf8 Mon Sep 17 00:00:00 2001 From: Sebastian Sellmair Date: Fri, 28 Jul 2023 10:26:14 +0200 Subject: [PATCH] [Gradle] Implement InternalKotlinTargetPreset ^KT-59321 In Progress --- .../kotlin/gradle/plugin/KotlinTarget.kt | 3 --- .../dsl/KotlinMultiplatformExtension.kt | 6 ++++-- ...linTargetContainerWithJsPresetFunctions.kt | 2 +- .../gradle/plugin/mpp/AbstractKotlinTarget.kt | 4 ---- .../mpp/external/ExternalKotlinTargetImpl.kt | 2 -- .../gradle/plugin/mpp/kotlinTargetPresets.kt | 3 ++- .../android/KotlinAndroidTargetPreset.kt | 4 +--- .../jvm/KotlinJvmWithJavaTargetPreset.kt | 3 ++- .../native/KotlinNativeTargetPreset.kt | 3 ++- .../InternalKotlinTargetPresetTest.kt | 19 +++++++++++++++++++ 10 files changed, 31 insertions(+), 18 deletions(-) create mode 100644 libraries/tools/kotlin-gradle-plugin/src/functionalTest/kotlin/org/jetbrains/kotlin/gradle/unitTests/InternalKotlinTargetPresetTest.kt diff --git a/libraries/tools/kotlin-gradle-plugin-api/src/common/kotlin/org/jetbrains/kotlin/gradle/plugin/KotlinTarget.kt b/libraries/tools/kotlin-gradle-plugin-api/src/common/kotlin/org/jetbrains/kotlin/gradle/plugin/KotlinTarget.kt index 36365693da9..bfdf99350f7 100644 --- a/libraries/tools/kotlin-gradle-plugin-api/src/common/kotlin/org/jetbrains/kotlin/gradle/plugin/KotlinTarget.kt +++ b/libraries/tools/kotlin-gradle-plugin-api/src/common/kotlin/org/jetbrains/kotlin/gradle/plugin/KotlinTarget.kt @@ -61,9 +61,6 @@ interface KotlinTarget : Named, HasAttributes, HasProject, HasMutableExtras { ) val preset: KotlinTargetPreset? - @InternalKotlinGradlePluginApi - fun warnAboutCreationOfTargetFromPreset() - override fun getName(): String = targetName } diff --git a/libraries/tools/kotlin-gradle-plugin/src/common/kotlin/org/jetbrains/kotlin/gradle/dsl/KotlinMultiplatformExtension.kt b/libraries/tools/kotlin-gradle-plugin/src/common/kotlin/org/jetbrains/kotlin/gradle/dsl/KotlinMultiplatformExtension.kt index f43c48a598a..01830b2150a 100644 --- a/libraries/tools/kotlin-gradle-plugin/src/common/kotlin/org/jetbrains/kotlin/gradle/dsl/KotlinMultiplatformExtension.kt +++ b/libraries/tools/kotlin-gradle-plugin/src/common/kotlin/org/jetbrains/kotlin/gradle/dsl/KotlinMultiplatformExtension.kt @@ -20,6 +20,8 @@ import org.jetbrains.kotlin.gradle.plugin.diagnostics.reportDiagnostic import org.jetbrains.kotlin.gradle.plugin.PropertiesProvider.Companion.kotlinPropertiesProvider import org.jetbrains.kotlin.gradle.plugin.hierarchy.KotlinHierarchyDslImpl import org.jetbrains.kotlin.gradle.plugin.mpp.* +import org.jetbrains.kotlin.gradle.targets.android.internal.InternalKotlinTargetPreset +import org.jetbrains.kotlin.gradle.targets.android.internal.internal import javax.inject.Inject @Suppress("DEPRECATION") @@ -292,7 +294,7 @@ internal abstract class DefaultTargetsFromPresetExtension @Inject constructor( configureAction: T.() -> Unit, ): T { warnAboutFromPresetDeprecation() - return targetsContainer().configureOrCreate(name, preset, configureAction) + return targetsContainer().configureOrCreate(name, preset.internal, configureAction) } @Suppress("DEPRECATION") @@ -311,7 +313,7 @@ private fun KotlinTarget.isProducedFromPreset(kotlinTargetPreset: KotlinTargetPr internal fun KotlinTargetsContainerWithPresets.configureOrCreate( targetName: String, - targetPreset: KotlinTargetPreset, + targetPreset: InternalKotlinTargetPreset, configure: T.() -> Unit, ): T { val existingTarget = targets.findByName(targetName) diff --git a/libraries/tools/kotlin-gradle-plugin/src/common/kotlin/org/jetbrains/kotlin/gradle/dsl/KotlinTargetContainerWithJsPresetFunctions.kt b/libraries/tools/kotlin-gradle-plugin/src/common/kotlin/org/jetbrains/kotlin/gradle/dsl/KotlinTargetContainerWithJsPresetFunctions.kt index b9293b038f9..97fdf4304bf 100644 --- a/libraries/tools/kotlin-gradle-plugin/src/common/kotlin/org/jetbrains/kotlin/gradle/dsl/KotlinTargetContainerWithJsPresetFunctions.kt +++ b/libraries/tools/kotlin-gradle-plugin/src/common/kotlin/org/jetbrains/kotlin/gradle/dsl/KotlinTargetContainerWithJsPresetFunctions.kt @@ -109,7 +109,7 @@ private fun KotlinTargetContainerWithJsPresetFunctions.jsInternal( "js", if (compilerOrDefault == KotlinJsCompilerType.LEGACY) null else compilerOrDefault.lowerName ) - ) as KotlinTargetPreset, + ) as InternalKotlinTargetPreset, configure ).also { target -> warnAboutDeprecatedCompiler(target.project, compilerOrDefault) diff --git a/libraries/tools/kotlin-gradle-plugin/src/common/kotlin/org/jetbrains/kotlin/gradle/plugin/mpp/AbstractKotlinTarget.kt b/libraries/tools/kotlin-gradle-plugin/src/common/kotlin/org/jetbrains/kotlin/gradle/plugin/mpp/AbstractKotlinTarget.kt index d5e5895453b..66c53d29d3d 100644 --- a/libraries/tools/kotlin-gradle-plugin/src/common/kotlin/org/jetbrains/kotlin/gradle/plugin/mpp/AbstractKotlinTarget.kt +++ b/libraries/tools/kotlin-gradle-plugin/src/common/kotlin/org/jetbrains/kotlin/gradle/plugin/mpp/AbstractKotlinTarget.kt @@ -188,10 +188,6 @@ abstract class AbstractKotlinTarget( ) override var preset: KotlinTargetPreset? = null internal set - - override fun warnAboutCreationOfTargetFromPreset() { - project.reportDiagnostic(KotlinToolingDiagnostics.CreateTarget()) - } } private val publishedConfigurationNameSuffix = "-published" diff --git a/libraries/tools/kotlin-gradle-plugin/src/common/kotlin/org/jetbrains/kotlin/gradle/plugin/mpp/external/ExternalKotlinTargetImpl.kt b/libraries/tools/kotlin-gradle-plugin/src/common/kotlin/org/jetbrains/kotlin/gradle/plugin/mpp/external/ExternalKotlinTargetImpl.kt index 527a347d7a9..97778504849 100644 --- a/libraries/tools/kotlin-gradle-plugin/src/common/kotlin/org/jetbrains/kotlin/gradle/plugin/mpp/external/ExternalKotlinTargetImpl.kt +++ b/libraries/tools/kotlin-gradle-plugin/src/common/kotlin/org/jetbrains/kotlin/gradle/plugin/mpp/external/ExternalKotlinTargetImpl.kt @@ -48,8 +48,6 @@ internal class ExternalKotlinTargetImpl internal constructor( override val preset: Nothing? = null - override fun warnAboutCreationOfTargetFromPreset() {} - internal val logger: Logger = Logging.getLogger("${ExternalKotlinTargetImpl::class.qualifiedName}: $name") override val useDisambiguationClassifierAsSourceSetNamePrefix: Boolean = true diff --git a/libraries/tools/kotlin-gradle-plugin/src/common/kotlin/org/jetbrains/kotlin/gradle/plugin/mpp/kotlinTargetPresets.kt b/libraries/tools/kotlin-gradle-plugin/src/common/kotlin/org/jetbrains/kotlin/gradle/plugin/mpp/kotlinTargetPresets.kt index 4fbb4becb19..af6596f9402 100644 --- a/libraries/tools/kotlin-gradle-plugin/src/common/kotlin/org/jetbrains/kotlin/gradle/plugin/mpp/kotlinTargetPresets.kt +++ b/libraries/tools/kotlin-gradle-plugin/src/common/kotlin/org/jetbrains/kotlin/gradle/plugin/mpp/kotlinTargetPresets.kt @@ -8,11 +8,12 @@ package org.jetbrains.kotlin.gradle.plugin.mpp import org.gradle.api.Project import org.jetbrains.kotlin.gradle.DeprecatedTargetPresetApi import org.jetbrains.kotlin.gradle.plugin.* +import org.jetbrains.kotlin.gradle.targets.android.internal.InternalKotlinTargetPreset @DeprecatedTargetPresetApi abstract class KotlinOnlyTargetPreset, T : KotlinCompilation<*>>( protected val project: Project, -) : KotlinTargetPreset { +) : InternalKotlinTargetPreset { protected abstract fun createKotlinTargetConfigurator(): AbstractKotlinTargetConfigurator diff --git a/libraries/tools/kotlin-gradle-plugin/src/common/kotlin/org/jetbrains/kotlin/gradle/targets/android/KotlinAndroidTargetPreset.kt b/libraries/tools/kotlin-gradle-plugin/src/common/kotlin/org/jetbrains/kotlin/gradle/targets/android/KotlinAndroidTargetPreset.kt index 7a8fa16f9f3..eb972b375fc 100644 --- a/libraries/tools/kotlin-gradle-plugin/src/common/kotlin/org/jetbrains/kotlin/gradle/targets/android/KotlinAndroidTargetPreset.kt +++ b/libraries/tools/kotlin-gradle-plugin/src/common/kotlin/org/jetbrains/kotlin/gradle/targets/android/KotlinAndroidTargetPreset.kt @@ -9,8 +9,6 @@ package org.jetbrains.kotlin.gradle.plugin.mpp import org.gradle.api.Project import org.jetbrains.kotlin.gradle.DeprecatedTargetPresetApi import org.jetbrains.kotlin.gradle.plugin.KotlinAndroidPlugin.Companion.dynamicallyApplyWhenAndroidPluginIsApplied -import org.jetbrains.kotlin.gradle.plugin.KotlinTargetPreset -import org.jetbrains.kotlin.gradle.plugin.diagnostics.KotlinToolingDiagnostics import org.jetbrains.kotlin.gradle.plugin.diagnostics.KotlinToolingDiagnostics.AndroidGradlePluginIsMissing import org.jetbrains.kotlin.gradle.plugin.diagnostics.reportDiagnostic import org.jetbrains.kotlin.gradle.utils.findAppliedAndroidPluginIdOrNull @@ -21,7 +19,7 @@ import javax.inject.Inject @DeprecatedTargetPresetApi abstract class KotlinAndroidTargetPreset @Inject constructor( private val project: Project -) : KotlinTargetPreset { +) : InternalKotlinTargetPreset { override fun getName(): String = PRESET_NAME diff --git a/libraries/tools/kotlin-gradle-plugin/src/common/kotlin/org/jetbrains/kotlin/gradle/targets/jvm/KotlinJvmWithJavaTargetPreset.kt b/libraries/tools/kotlin-gradle-plugin/src/common/kotlin/org/jetbrains/kotlin/gradle/targets/jvm/KotlinJvmWithJavaTargetPreset.kt index 3b9e3ff7403..b76ed2dd343 100644 --- a/libraries/tools/kotlin-gradle-plugin/src/common/kotlin/org/jetbrains/kotlin/gradle/targets/jvm/KotlinJvmWithJavaTargetPreset.kt +++ b/libraries/tools/kotlin-gradle-plugin/src/common/kotlin/org/jetbrains/kotlin/gradle/targets/jvm/KotlinJvmWithJavaTargetPreset.kt @@ -15,13 +15,14 @@ import org.jetbrains.kotlin.gradle.dsl.KotlinJvmOptions import org.jetbrains.kotlin.gradle.plugin.* import org.jetbrains.kotlin.gradle.plugin.diagnostics.KotlinToolingDiagnostics import org.jetbrains.kotlin.gradle.plugin.diagnostics.reportDiagnostic +import org.jetbrains.kotlin.gradle.targets.android.internal.InternalKotlinTargetPreset import org.jetbrains.kotlin.gradle.tasks.KotlinTasksProvider import org.jetbrains.kotlin.gradle.utils.configureExperimentalTryK2 @DeprecatedTargetPresetApi class KotlinJvmWithJavaTargetPreset( private val project: Project -) : KotlinTargetPreset> { +) : InternalKotlinTargetPreset> { override fun getName(): String = PRESET_NAME 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 8a6f82100ec..2341a4100db 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 @@ -12,6 +12,7 @@ import org.gradle.api.Project import org.jetbrains.kotlin.compilerRunner.konanHome import org.jetbrains.kotlin.gradle.DeprecatedTargetPresetApi import org.jetbrains.kotlin.gradle.plugin.* +import org.jetbrains.kotlin.gradle.targets.android.internal.InternalKotlinTargetPreset import org.jetbrains.kotlin.gradle.targets.native.internal.* import org.jetbrains.kotlin.gradle.utils.SingleActionPerProject import org.jetbrains.kotlin.gradle.utils.setupNativeCompiler @@ -23,7 +24,7 @@ abstract class AbstractKotlinNativeTargetPreset( private val name: String, val project: Project, val konanTarget: KonanTarget -) : KotlinTargetPreset { +) : InternalKotlinTargetPreset { init { // This is required to obtain Kotlin/Native home in IDE plugin: diff --git a/libraries/tools/kotlin-gradle-plugin/src/functionalTest/kotlin/org/jetbrains/kotlin/gradle/unitTests/InternalKotlinTargetPresetTest.kt b/libraries/tools/kotlin-gradle-plugin/src/functionalTest/kotlin/org/jetbrains/kotlin/gradle/unitTests/InternalKotlinTargetPresetTest.kt new file mode 100644 index 00000000000..483b2d56eb1 --- /dev/null +++ b/libraries/tools/kotlin-gradle-plugin/src/functionalTest/kotlin/org/jetbrains/kotlin/gradle/unitTests/InternalKotlinTargetPresetTest.kt @@ -0,0 +1,19 @@ +/* + * Copyright 2010-2023 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.unitTests + +import org.jetbrains.kotlin.gradle.plugin.KotlinTargetPreset +import org.jetbrains.kotlin.gradle.targets.android.internal.InternalKotlinTargetPreset +import org.jetbrains.kotlin.gradle.util.assertAllImplementationsAlsoImplement +import org.junit.Test + +@Suppress("FunctionName") +class InternalKotlinTargetPresetTest { + @Test + fun `test - all implementations of KotlinTargetPreset - implement InternalKotlinTargetPreset`() { + assertAllImplementationsAlsoImplement(KotlinTargetPreset::class, InternalKotlinTargetPreset::class) + } +} \ No newline at end of file