Deprecate preset APIs
^KT-59321
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 38c54e6..0e76fec 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
@@ -15,6 +15,7 @@
import org.gradle.api.attributes.HasAttributes
import org.gradle.api.component.SoftwareComponent
import org.gradle.api.publish.maven.MavenPublication
+import org.jetbrains.kotlin.gradle.InternalKotlinGradlePluginApi
import org.jetbrains.kotlin.gradle.dsl.KotlinCommonOptionsDeprecated
import org.jetbrains.kotlin.tooling.core.HasMutableExtras
@@ -52,8 +53,16 @@
fun attributes(configure: AttributeContainer.() -> Unit) = attributes.configure()
fun attributes(configure: Action<AttributeContainer>) = attributes { configure.execute(this) }
+ @OptIn(TargetPresetsDeprecation::class)
+ @Deprecated(
+ presetsApiIsDeprecatedMessage,
+ level = DeprecationLevel.WARNING,
+ )
val preset: KotlinTargetPreset<out KotlinTarget>?
+ @InternalKotlinGradlePluginApi
+ fun warnAboutCreationOfTargetFromPreset()
+
override fun getName(): String = targetName
}
diff --git a/libraries/tools/kotlin-gradle-plugin-api/src/common/kotlin/org/jetbrains/kotlin/gradle/plugin/KotlinTargetPreset.kt b/libraries/tools/kotlin-gradle-plugin-api/src/common/kotlin/org/jetbrains/kotlin/gradle/plugin/KotlinTargetPreset.kt
index afc460d..f4f458a 100644
--- a/libraries/tools/kotlin-gradle-plugin-api/src/common/kotlin/org/jetbrains/kotlin/gradle/plugin/KotlinTargetPreset.kt
+++ b/libraries/tools/kotlin-gradle-plugin-api/src/common/kotlin/org/jetbrains/kotlin/gradle/plugin/KotlinTargetPreset.kt
@@ -6,7 +6,31 @@
package org.jetbrains.kotlin.gradle.plugin
import org.gradle.api.Named
+import org.jetbrains.kotlin.gradle.InternalKotlinGradlePluginApi
+const val apiIsDeprecatedMessage =
+ "API is deprecated and will be phased out soon. Learn how to configure targets at: https://kotl.in/target-configuration"
+const val presetsApiIsDeprecatedMessage = "Presets $apiIsDeprecatedMessage"
+
+@RequiresOptIn(
+ message = presetsApiIsDeprecatedMessage,
+ level = RequiresOptIn.Level.WARNING
+)
+annotation class TargetPresetsDeprecation
+
+@TargetPresetsDeprecation
interface KotlinTargetPreset<T: KotlinTarget> : Named {
- fun createTarget(name: String): T
+ @InternalKotlinGradlePluginApi
+ fun createTargetInternal(name: String): T
+
+ @OptIn(InternalKotlinGradlePluginApi::class)
+ @Deprecated(
+ presetsApiIsDeprecatedMessage,
+ level = DeprecationLevel.WARNING,
+ )
+ fun createTarget(name: String): T {
+ val target = createTargetInternal(name)
+ target.warnAboutCreationOfTargetFromPreset()
+ return target
+ }
}
\ No newline at end of file
diff --git a/libraries/tools/kotlin-gradle-plugin-api/src/common/kotlin/org/jetbrains/kotlin/gradle/plugin/KotlinTargetsContainer.kt b/libraries/tools/kotlin-gradle-plugin-api/src/common/kotlin/org/jetbrains/kotlin/gradle/plugin/KotlinTargetsContainer.kt
index e9ed625..c6a1ad8 100644
--- a/libraries/tools/kotlin-gradle-plugin-api/src/common/kotlin/org/jetbrains/kotlin/gradle/plugin/KotlinTargetsContainer.kt
+++ b/libraries/tools/kotlin-gradle-plugin-api/src/common/kotlin/org/jetbrains/kotlin/gradle/plugin/KotlinTargetsContainer.kt
@@ -13,7 +13,12 @@
val targets: NamedDomainObjectCollection<KotlinTarget>
}
+@TargetPresetsDeprecation
interface KotlinTargetsContainerWithPresets : KotlinTargetsContainer {
+ @Deprecated(
+ presetsApiIsDeprecatedMessage,
+ level = DeprecationLevel.WARNING,
+ )
val presets: NamedDomainObjectCollection<KotlinTargetPreset<*>>
}
diff --git a/libraries/tools/kotlin-gradle-plugin/build.gradle.kts b/libraries/tools/kotlin-gradle-plugin/build.gradle.kts
index b329927..a06390d 100644
--- a/libraries/tools/kotlin-gradle-plugin/build.gradle.kts
+++ b/libraries/tools/kotlin-gradle-plugin/build.gradle.kts
@@ -30,6 +30,7 @@
"org.jetbrains.kotlin.gradle.ExperimentalKotlinGradlePluginApi",
"org.jetbrains.kotlin.gradle.ExternalKotlinTargetApi",
"org.jetbrains.kotlin.compiler.plugin.ExperimentalCompilerApi",
+ "org.jetbrains.kotlin.gradle.plugin.TargetPresetsDeprecation",
)
)
}
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 5508b37..90b6ab4 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
@@ -11,6 +11,8 @@
import org.jetbrains.kotlin.gradle.plugin.*
import org.jetbrains.kotlin.gradle.plugin.KotlinPluginLifecycle.Stage.AfterFinaliseDsl
import org.jetbrains.kotlin.gradle.plugin.PropertiesProvider.Companion.kotlinPropertiesProvider
+import org.jetbrains.kotlin.gradle.plugin.diagnostics.KotlinToolingDiagnostics
+import org.jetbrains.kotlin.gradle.plugin.diagnostics.reportDiagnostic
import org.jetbrains.kotlin.gradle.plugin.hierarchy.KotlinHierarchyDslImpl
import org.jetbrains.kotlin.gradle.plugin.mpp.*
import javax.inject.Inject
@@ -26,6 +28,10 @@
KotlinTargetContainerWithNativeShortcuts,
KotlinHierarchyDsl,
KotlinMultiplatformSourceSetConventions by KotlinMultiplatformSourceSetConventionsImpl {
+ @Deprecated(
+ presetsApiIsDeprecatedMessage,
+ level = DeprecationLevel.WARNING,
+ )
override val presets: NamedDomainObjectCollection<KotlinTargetPreset<*>> = project.container(KotlinTargetPreset::class.java)
final override val targets: NamedDomainObjectCollection<KotlinTarget> = project.container(KotlinTarget::class.java)
@@ -40,7 +46,8 @@
private val presetExtension = project.objects.newInstance(
DefaultTargetsFromPresetExtension::class.java,
{ this },
- targets
+ targets,
+ project,
)
fun targets(configure: Action<TargetsFromPresetExtension>) {
@@ -131,41 +138,122 @@
targets.all { it.withSourcesJar(publish) }
}
- fun <T : KotlinTarget> targetFromPreset(
+ internal fun <T : KotlinTarget> targetFromPresetInternal(
preset: KotlinTargetPreset<T>,
name: String = preset.name,
configure: T.() -> Unit = { },
): T = configureOrCreate(name, preset, configure)
+ internal fun <T : KotlinTarget> targetFromPresetInternal(
+ preset: KotlinTargetPreset<T>,
+ name: String,
+ configure: Action<T>,
+ ) = targetFromPresetInternal(preset, name) { configure.execute(this) }
+
+ internal fun <T : KotlinTarget> targetFromPresetInternal(preset: KotlinTargetPreset<T>) =
+ targetFromPresetInternal(preset, preset.name) { }
+
+ internal fun <T : KotlinTarget> targetFromPresetInternal(preset: KotlinTargetPreset<T>, name: String) =
+ targetFromPresetInternal(preset, name) { }
+
+ internal fun <T : KotlinTarget> targetFromPresetInternal(preset: KotlinTargetPreset<T>, configure: Action<T>) =
+ targetFromPresetInternal(preset, preset.name, configure)
+
+ private fun warnAboutTargetFromPresetDeprecation() {
+ project.reportDiagnostic(
+ KotlinToolingDiagnostics.TargetPresets(
+ KotlinToolingDiagnostics.TargetPresets.API.TargetFromPreset
+ )
+ )
+ }
+
+ @TargetPresetsDeprecation
+ @Deprecated(
+ KotlinToolingDiagnostics.TargetPresets.targetFromPresetDeprecationMessage,
+ level = DeprecationLevel.WARNING
+ )
fun <T : KotlinTarget> targetFromPreset(
preset: KotlinTargetPreset<T>,
name: String,
configure: Action<T>,
- ) = targetFromPreset(preset, name) { configure.execute(this) }
+ ) {
+ warnAboutTargetFromPresetDeprecation()
+ targetFromPresetInternal(
+ preset = preset,
+ name = name,
+ configure = configure,
+ )
+ }
- fun <T : KotlinTarget> targetFromPreset(preset: KotlinTargetPreset<T>) = targetFromPreset(preset, preset.name) { }
- fun <T : KotlinTarget> targetFromPreset(preset: KotlinTargetPreset<T>, name: String) = targetFromPreset(preset, name) { }
- fun <T : KotlinTarget> targetFromPreset(preset: KotlinTargetPreset<T>, configure: Action<T>) =
- targetFromPreset(preset, preset.name, configure)
+ @TargetPresetsDeprecation
+ @Deprecated(
+ KotlinToolingDiagnostics.TargetPresets.targetFromPresetDeprecationMessage,
+ level = DeprecationLevel.WARNING
+ )
+ fun <T : KotlinTarget> targetFromPreset(preset: KotlinTargetPreset<T>) {
+ warnAboutTargetFromPresetDeprecation()
+ targetFromPresetInternal(
+ preset = preset
+ )
+ }
+
+ @TargetPresetsDeprecation
+ @Deprecated(
+ KotlinToolingDiagnostics.TargetPresets.targetFromPresetDeprecationMessage,
+ level = DeprecationLevel.WARNING
+ )
+ fun <T : KotlinTarget> targetFromPreset(preset: KotlinTargetPreset<T>, name: String) {
+ warnAboutTargetFromPresetDeprecation()
+ targetFromPresetInternal(
+ preset = preset,
+ name = name
+ )
+ }
+
+ @TargetPresetsDeprecation
+ @Deprecated(
+ KotlinToolingDiagnostics.TargetPresets.targetFromPresetDeprecationMessage,
+ level = DeprecationLevel.WARNING
+ )
+ fun <T : KotlinTarget> targetFromPreset(preset: KotlinTargetPreset<T>, configure: Action<T>) {
+ warnAboutTargetFromPresetDeprecation()
+ targetFromPresetInternal(
+ preset = preset,
+ configure = configure
+ )
+ }
internal val rootSoftwareComponent: KotlinSoftwareComponent by lazy {
KotlinSoftwareComponentWithCoordinatesAndPublication(project, "kotlin", targets)
}
}
+@TargetPresetsDeprecation
interface TargetsFromPresetExtension : NamedDomainObjectCollection<KotlinTarget> {
+ @Deprecated(
+ KotlinToolingDiagnostics.TargetPresets.fromPresetDeprecationMessage,
+ level = DeprecationLevel.WARNING,
+ )
fun <T : KotlinTarget> fromPreset(
preset: KotlinTargetPreset<T>,
name: String,
configureAction: T.() -> Unit = {},
): T
+ @Deprecated(
+ KotlinToolingDiagnostics.TargetPresets.fromPresetDeprecationMessage,
+ level = DeprecationLevel.WARNING,
+ )
fun <T : KotlinTarget> fromPreset(
preset: KotlinTargetPreset<T>,
name: String,
): T = fromPreset(preset, name, {})
+ @Deprecated(
+ KotlinToolingDiagnostics.TargetPresets.fromPresetDeprecationMessage,
+ level = DeprecationLevel.WARNING,
+ )
fun <T : KotlinTarget> fromPreset(
preset: KotlinTargetPreset<T>,
name: String,
@@ -176,14 +264,26 @@
internal abstract class DefaultTargetsFromPresetExtension @Inject constructor(
private val targetsContainer: () -> KotlinTargetsContainerWithPresets,
val targets: NamedDomainObjectCollection<KotlinTarget>,
+ val project: Project,
) : TargetsFromPresetExtension,
NamedDomainObjectCollection<KotlinTarget> by targets {
+ private fun warnAboutFromPresetDeprecation() {
+ project.reportDiagnostic(
+ KotlinToolingDiagnostics.TargetPresets(
+ KotlinToolingDiagnostics.TargetPresets.API.FromPreset
+ )
+ )
+ }
+
override fun <T : KotlinTarget> fromPreset(
preset: KotlinTargetPreset<T>,
name: String,
configureAction: T.() -> Unit,
- ): T = targetsContainer().configureOrCreate(name, preset, configureAction)
+ ): T {
+ warnAboutFromPresetDeprecation()
+ return targetsContainer().configureOrCreate(name, preset, configureAction)
+ }
override fun <T : KotlinTarget> fromPreset(
preset: KotlinTargetPreset<T>,
@@ -211,7 +311,7 @@
}
existingTarget == null -> {
- val newTarget = targetPreset.createTarget(targetName)
+ val newTarget = targetPreset.createTargetInternal(targetName)
targets.add(newTarget)
configure(newTarget)
return newTarget
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 b695818..cf9be0b 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
@@ -327,20 +327,20 @@
.also {
it.irPreset = null
}
- .createTarget("js")
+ .createTargetInternal("js")
KotlinJsCompilerType.IR -> irPreset
.also {
it.mixedMode = false
}
- .createTarget("js")
+ .createTargetInternal("js")
KotlinJsCompilerType.BOTH -> legacyPreset
.also {
irPreset.mixedMode = true
it.irPreset = irPreset
}
- .createTarget(
+ .createTargetInternal(
lowerCamelCaseName(
"js",
LEGACY.lowerName
diff --git a/libraries/tools/kotlin-gradle-plugin/src/common/kotlin/org/jetbrains/kotlin/gradle/plugin/diagnostics/KotlinToolingDiagnostics.kt b/libraries/tools/kotlin-gradle-plugin/src/common/kotlin/org/jetbrains/kotlin/gradle/plugin/diagnostics/KotlinToolingDiagnostics.kt
index 47d08f2..826efbc 100644
--- a/libraries/tools/kotlin-gradle-plugin/src/common/kotlin/org/jetbrains/kotlin/gradle/plugin/diagnostics/KotlinToolingDiagnostics.kt
+++ b/libraries/tools/kotlin-gradle-plugin/src/common/kotlin/org/jetbrains/kotlin/gradle/plugin/diagnostics/KotlinToolingDiagnostics.kt
@@ -16,6 +16,7 @@
import org.jetbrains.kotlin.gradle.plugin.PropertiesProvider.PropertyNames.KOTLIN_NATIVE_IGNORE_DISABLED_TARGETS
import org.jetbrains.kotlin.gradle.plugin.PropertiesProvider.PropertyNames.KOTLIN_NATIVE_SUPPRESS_EXPERIMENTAL_ARTIFACTS_DSL_WARNING
import org.jetbrains.kotlin.gradle.plugin.diagnostics.ToolingDiagnostic.Severity.*
+import org.jetbrains.kotlin.gradle.plugin.apiIsDeprecatedMessage
import org.jetbrains.kotlin.gradle.plugin.sources.android.multiplatformAndroidSourceSetLayoutV1
import org.jetbrains.kotlin.gradle.plugin.sources.android.multiplatformAndroidSourceSetLayoutV2
@@ -546,6 +547,22 @@
throwable = trace
)
}
+
+ object TargetPresets : ToolingDiagnosticFactory(WARNING) {
+ const val targetFromPresetDeprecationMessage = "targetFromPreset() $apiIsDeprecatedMessage"
+ const val fromPresetDeprecationMessage = "fromPreset() $apiIsDeprecatedMessage"
+ const val createTargetDeprecationMessage = "KotlinTargetPreset.createTarget() $apiIsDeprecatedMessage"
+
+ enum class API(val message: String) {
+ TargetFromPreset(targetFromPresetDeprecationMessage),
+ FromPreset(fromPresetDeprecationMessage),
+ CreateTarget(createTargetDeprecationMessage)
+ }
+
+ operator fun invoke(api: API) = build(
+ api.message
+ )
+ }
}
private fun String.indentLines(nSpaces: Int = 4, skipFirstLine: Boolean = true): String {
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 3e1ced5..a55f0e7 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
@@ -21,6 +21,8 @@
import org.jetbrains.kotlin.gradle.dsl.KotlinMultiplatformExtension
import org.jetbrains.kotlin.gradle.dsl.kotlinExtension
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.plugin.mpp.KotlinUsageContext.MavenScope.*
import org.jetbrains.kotlin.gradle.utils.dashSeparatedName
import org.jetbrains.kotlin.gradle.utils.lowerCamelCaseName
@@ -179,8 +181,21 @@
publicationConfigureActions.all { action -> action.execute(publication) }
}
+ @OptIn(TargetPresetsDeprecation::class)
+ @Deprecated(
+ presetsApiIsDeprecatedMessage,
+ level = DeprecationLevel.WARNING,
+ )
override var preset: KotlinTargetPreset<out KotlinTarget>? = null
internal set
+
+ override fun warnAboutCreationOfTargetFromPreset() {
+ project.reportDiagnostic(
+ KotlinToolingDiagnostics.TargetPresets(
+ KotlinToolingDiagnostics.TargetPresets.API.CreateTarget
+ )
+ )
+ }
}
private val publishedConfigurationNameSuffix = "-published"
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 b74d8f4..2d1a0d5 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
@@ -9,6 +9,7 @@
import org.gradle.api.Project
import org.gradle.api.plugins.JavaBasePlugin
import org.gradle.util.GradleVersion
+import org.jetbrains.kotlin.gradle.InternalKotlinGradlePluginApi
import org.jetbrains.kotlin.gradle.dsl.KotlinMultiplatformExtension
import org.jetbrains.kotlin.gradle.dsl.explicitApiModeAsCompilerArg
import org.jetbrains.kotlin.gradle.dsl.kotlinExtension
@@ -33,7 +34,6 @@
import org.jetbrains.kotlin.gradle.targets.native.tasks.artifact.registerKotlinArtifactsExtension
import org.jetbrains.kotlin.gradle.tasks.AbstractKotlinCompileTool
import org.jetbrains.kotlin.gradle.utils.checkGradleCompatibility
-import org.jetbrains.kotlin.gradle.utils.runProjectConfigurationHealthCheck
import org.jetbrains.kotlin.konan.target.HostManager
import org.jetbrains.kotlin.konan.target.KonanTarget.*
import org.jetbrains.kotlin.konan.target.presetName
@@ -55,7 +55,7 @@
setupTargetsBuildStatsReport(project)
// set up metadata publishing
- kotlinMultiplatformExtension.targetFromPreset(
+ kotlinMultiplatformExtension.targetFromPresetInternal(
KotlinMetadataTargetPreset(project),
METADATA_TARGET_NAME
)
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 9777850..527a347 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,6 +48,8 @@
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 0616d95..d125baf 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
@@ -6,11 +6,10 @@
package org.jetbrains.kotlin.gradle.plugin.mpp
import org.gradle.api.Project
-import org.jetbrains.kotlin.gradle.plugin.AbstractKotlinTargetConfigurator
-import org.jetbrains.kotlin.gradle.plugin.KotlinCompilation
-import org.jetbrains.kotlin.gradle.plugin.KotlinPlatformType
-import org.jetbrains.kotlin.gradle.plugin.KotlinTargetPreset
+import org.jetbrains.kotlin.gradle.InternalKotlinGradlePluginApi
+import org.jetbrains.kotlin.gradle.plugin.*
+@TargetPresetsDeprecation
abstract class KotlinOnlyTargetPreset<R : KotlinOnlyTarget<T>, T : KotlinCompilation<*>>(
protected val project: Project,
) : KotlinTargetPreset<R> {
@@ -28,7 +27,7 @@
abstract protected fun instantiateTarget(name: String): R
- override fun createTarget(name: String): R {
+ override fun createTargetInternal(name: String): R {
val result = instantiateTarget(name).apply {
targetName = name
disambiguationClassifier = provideTargetDisambiguationClassifier(this@apply)
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 9258f1f..74acc31 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,16 +9,18 @@
import org.gradle.api.Project
import org.jetbrains.kotlin.gradle.plugin.KotlinAndroidPlugin.Companion.dynamicallyApplyWhenAndroidPluginIsApplied
import org.jetbrains.kotlin.gradle.plugin.KotlinTargetPreset
+import org.jetbrains.kotlin.gradle.plugin.TargetPresetsDeprecation
import javax.inject.Inject
+@TargetPresetsDeprecation
abstract class KotlinAndroidTargetPreset @Inject constructor(
private val project: Project
) : KotlinTargetPreset<KotlinAndroidTarget> {
override fun getName(): String = PRESET_NAME
- override fun createTarget(name: String): KotlinAndroidTarget {
+ override fun createTargetInternal(name: String): KotlinAndroidTarget {
val result = project.objects.newInstance(
KotlinAndroidTarget::class.java,
name,
diff --git a/libraries/tools/kotlin-gradle-plugin/src/common/kotlin/org/jetbrains/kotlin/gradle/targets/js/KotlinJsTargetPreset.kt b/libraries/tools/kotlin-gradle-plugin/src/common/kotlin/org/jetbrains/kotlin/gradle/targets/js/KotlinJsTargetPreset.kt
index 3e2a767..b5e9f2c 100644
--- a/libraries/tools/kotlin-gradle-plugin/src/common/kotlin/org/jetbrains/kotlin/gradle/targets/js/KotlinJsTargetPreset.kt
+++ b/libraries/tools/kotlin-gradle-plugin/src/common/kotlin/org/jetbrains/kotlin/gradle/targets/js/KotlinJsTargetPreset.kt
@@ -9,6 +9,7 @@
package org.jetbrains.kotlin.gradle.plugin.mpp
import org.gradle.api.Project
+import org.jetbrains.kotlin.gradle.InternalKotlinGradlePluginApi
import org.jetbrains.kotlin.gradle.plugin.*
import org.jetbrains.kotlin.gradle.plugin.statistics.KotlinBuildStatsService
import org.jetbrains.kotlin.gradle.targets.js.KotlinJsTarget
@@ -19,6 +20,7 @@
import org.jetbrains.kotlin.statistics.metrics.StringMetrics
import org.jetbrains.kotlin.util.capitalizeDecapitalize.decapitalizeAsciiOnly
+@TargetPresetsDeprecation
open class KotlinJsTargetPreset(
project: Project
) : KotlinOnlyTargetPreset<KotlinJsTarget, KotlinJsCompilation>(
@@ -46,7 +48,7 @@
project,
platformType
).apply {
- this.irTarget = irPreset?.createTarget(
+ this.irTarget = irPreset?.createTargetInternal(
lowerCamelCaseName(
name.removeJsCompilerSuffix(KotlinJsCompilerType.LEGACY),
KotlinJsCompilerType.IR.lowerName
@@ -87,6 +89,7 @@
}
}
+@TargetPresetsDeprecation
class KotlinJsSingleTargetPreset(
project: Project
) : KotlinJsTargetPreset(
diff --git a/libraries/tools/kotlin-gradle-plugin/src/common/kotlin/org/jetbrains/kotlin/gradle/targets/js/ir/KotlinJsIrTargetPreset.kt b/libraries/tools/kotlin-gradle-plugin/src/common/kotlin/org/jetbrains/kotlin/gradle/targets/js/ir/KotlinJsIrTargetPreset.kt
index e69fb24..8638679 100644
--- a/libraries/tools/kotlin-gradle-plugin/src/common/kotlin/org/jetbrains/kotlin/gradle/targets/js/ir/KotlinJsIrTargetPreset.kt
+++ b/libraries/tools/kotlin-gradle-plugin/src/common/kotlin/org/jetbrains/kotlin/gradle/targets/js/ir/KotlinJsIrTargetPreset.kt
@@ -16,6 +16,7 @@
import org.jetbrains.kotlin.statistics.metrics.StringMetrics
import org.jetbrains.kotlin.util.capitalizeDecapitalize.decapitalizeAsciiOnly
+@TargetPresetsDeprecation
open class KotlinJsIrTargetPreset(
project: Project
) : KotlinOnlyTargetPreset<KotlinJsIrTarget, KotlinJsIrCompilation>(
@@ -65,6 +66,7 @@
}
}
+@TargetPresetsDeprecation
class KotlinJsIrSingleTargetPreset(
project: Project
) : KotlinJsIrTargetPreset(
diff --git a/libraries/tools/kotlin-gradle-plugin/src/common/kotlin/org/jetbrains/kotlin/gradle/targets/js/ir/KotlinWasmTargetPreset.kt b/libraries/tools/kotlin-gradle-plugin/src/common/kotlin/org/jetbrains/kotlin/gradle/targets/js/ir/KotlinWasmTargetPreset.kt
index 8582709..40c7504 100644
--- a/libraries/tools/kotlin-gradle-plugin/src/common/kotlin/org/jetbrains/kotlin/gradle/targets/js/ir/KotlinWasmTargetPreset.kt
+++ b/libraries/tools/kotlin-gradle-plugin/src/common/kotlin/org/jetbrains/kotlin/gradle/targets/js/ir/KotlinWasmTargetPreset.kt
@@ -6,14 +6,15 @@
package org.jetbrains.kotlin.gradle.targets.js.ir
import org.gradle.api.Project
+import org.jetbrains.kotlin.gradle.InternalKotlinGradlePluginApi
import org.jetbrains.kotlin.gradle.dsl.multiplatformExtension
-import org.jetbrains.kotlin.gradle.plugin.AbstractKotlinTargetConfigurator
-import org.jetbrains.kotlin.gradle.plugin.KotlinPlatformType
+import org.jetbrains.kotlin.gradle.plugin.*
import org.jetbrains.kotlin.gradle.plugin.PropertiesProvider
import org.jetbrains.kotlin.gradle.plugin.mpp.KotlinCompilationFactory
import org.jetbrains.kotlin.gradle.plugin.mpp.KotlinOnlyTargetPreset
import org.jetbrains.kotlin.gradle.utils.runProjectConfigurationHealthCheckWhenEvaluated
+@TargetPresetsDeprecation
class KotlinWasmTargetPreset(
project: Project,
) : KotlinOnlyTargetPreset<KotlinJsIrTarget, KotlinJsIrCompilation>(project) {
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 5159f1e..b4c53b8 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
@@ -9,9 +9,11 @@
import org.gradle.api.Project
import org.jetbrains.kotlin.gradle.plugin.AbstractKotlinTargetConfigurator
import org.jetbrains.kotlin.gradle.plugin.KotlinPlatformType
+import org.jetbrains.kotlin.gradle.plugin.TargetPresetsDeprecation
import org.jetbrains.kotlin.gradle.targets.jvm.KotlinJvmTarget
import org.jetbrains.kotlin.gradle.targets.jvm.KotlinJvmTargetConfigurator
+@TargetPresetsDeprecation
class KotlinJvmTargetPreset(
project: Project
) : KotlinOnlyTargetPreset<KotlinJvmTarget, KotlinJvmCompilation>(
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 180523c..114694d 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
@@ -8,6 +8,7 @@
import org.gradle.api.Project
import org.gradle.api.plugins.JavaPlugin
+import org.jetbrains.kotlin.gradle.InternalKotlinGradlePluginApi
import org.jetbrains.kotlin.gradle.dsl.KotlinJvmCompilerOptions
import org.jetbrains.kotlin.gradle.dsl.KotlinJvmCompilerOptionsDefault
import org.jetbrains.kotlin.gradle.dsl.KotlinJvmOptions
@@ -17,13 +18,14 @@
import org.jetbrains.kotlin.gradle.tasks.KotlinTasksProvider
import org.jetbrains.kotlin.gradle.utils.configureExperimentalTryK2
+@TargetPresetsDeprecation
class KotlinJvmWithJavaTargetPreset(
private val project: Project
) : KotlinTargetPreset<KotlinWithJavaTarget<KotlinJvmOptions, KotlinJvmCompilerOptions>> {
override fun getName(): String = PRESET_NAME
- override fun createTarget(name: String): KotlinWithJavaTarget<KotlinJvmOptions, KotlinJvmCompilerOptions> {
+ override fun createTargetInternal(name: String): KotlinWithJavaTarget<KotlinJvmOptions, KotlinJvmCompilerOptions> {
project.reportDiagnostic(KotlinToolingDiagnostics.DeprecatedJvmWithJavaPresetDiagnostic())
project.plugins.apply(JavaPlugin::class.java)
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 32cc111..9bc8658 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
@@ -7,11 +7,13 @@
package org.jetbrains.kotlin.gradle.plugin.mpp
import org.gradle.api.Project
+import org.jetbrains.kotlin.gradle.InternalKotlinGradlePluginApi
import org.jetbrains.kotlin.gradle.dsl.kotlinExtension
import org.jetbrains.kotlin.gradle.plugin.*
import org.jetbrains.kotlin.gradle.plugin.sources.applyLanguageSettingsToCompilerOptions
import org.jetbrains.kotlin.gradle.targets.metadata.KotlinMetadataTargetConfigurator
+@TargetPresetsDeprecation
class KotlinMetadataTargetPreset(
project: Project
) : KotlinOnlyTargetPreset<KotlinMetadataTarget, KotlinCompilation<*>>(project) {
@@ -49,8 +51,8 @@
return project.objects.newInstance(KotlinMetadataTarget::class.java, project)
}
- override fun createTarget(name: String): KotlinMetadataTarget =
- super.createTarget(name).apply {
+ override fun createTargetInternal(name: String): KotlinMetadataTarget =
+ super.createTargetInternal(name).apply {
val mainCompilation = compilations.getByName(KotlinCompilation.MAIN_COMPILATION_NAME)
val commonMainSourceSet = project.kotlinExtension.sourceSets.getByName(KotlinSourceSet.COMMON_MAIN_SOURCE_SET_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 6d5a1ef..d596cdd 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
@@ -17,6 +17,7 @@
import org.jetbrains.kotlin.konan.target.HostManager
import org.jetbrains.kotlin.konan.target.KonanTarget
+@TargetPresetsDeprecation
abstract class AbstractKotlinNativeTargetPreset<T : KotlinNativeTarget>(
private val name: String,
val project: Project,
@@ -39,7 +40,7 @@
protected abstract fun instantiateTarget(name: String): T
- override fun createTarget(name: String): T {
+ override fun createTargetInternal(name: String): T {
project.setupNativeCompiler(konanTarget)
val result = instantiateTarget(name).apply {
@@ -73,6 +74,7 @@
}
+@TargetPresetsDeprecation
open class KotlinNativeTargetPreset(name: String, project: Project, konanTarget: KonanTarget) :
AbstractKotlinNativeTargetPreset<KotlinNativeTarget>(name, project, konanTarget) {
@@ -84,6 +86,7 @@
}
}
+@TargetPresetsDeprecation
open class KotlinNativeTargetWithHostTestsPreset(name: String, project: Project, konanTarget: KonanTarget) :
AbstractKotlinNativeTargetPreset<KotlinNativeTargetWithHostTests>(name, project, konanTarget) {
@@ -94,6 +97,7 @@
project.objects.newInstance(KotlinNativeTargetWithHostTests::class.java, project, konanTarget)
}
+@TargetPresetsDeprecation
open class KotlinNativeTargetWithSimulatorTestsPreset(name: String, project: Project, konanTarget: KonanTarget) :
AbstractKotlinNativeTargetPreset<KotlinNativeTargetWithSimulatorTests>(name, project, konanTarget) {
diff --git a/libraries/tools/kotlin-gradle-plugin/src/functionalTest/kotlin/org/jetbrains/kotlin/gradle/regressionTests/ConfigurationsTest.kt b/libraries/tools/kotlin-gradle-plugin/src/functionalTest/kotlin/org/jetbrains/kotlin/gradle/regressionTests/ConfigurationsTest.kt
index 5438a6b..2d5592d 100644
--- a/libraries/tools/kotlin-gradle-plugin/src/functionalTest/kotlin/org/jetbrains/kotlin/gradle/regressionTests/ConfigurationsTest.kt
+++ b/libraries/tools/kotlin-gradle-plugin/src/functionalTest/kotlin/org/jetbrains/kotlin/gradle/regressionTests/ConfigurationsTest.kt
@@ -536,6 +536,7 @@
extensions.asMap.keys,
kotlin.sourceSets.names,
kotlin.targets.names,
+ @Suppress("DEPRECATION")
kotlin.presets.names,
).flatten()
}
diff --git a/libraries/tools/kotlin-gradle-plugin/src/functionalTest/kotlin/org/jetbrains/kotlin/gradle/unitTests/KotlinHierarchyBuilderTest.kt b/libraries/tools/kotlin-gradle-plugin/src/functionalTest/kotlin/org/jetbrains/kotlin/gradle/unitTests/KotlinHierarchyBuilderTest.kt
index f4bb943..8dc4ad9 100644
--- a/libraries/tools/kotlin-gradle-plugin/src/functionalTest/kotlin/org/jetbrains/kotlin/gradle/unitTests/KotlinHierarchyBuilderTest.kt
+++ b/libraries/tools/kotlin-gradle-plugin/src/functionalTest/kotlin/org/jetbrains/kotlin/gradle/unitTests/KotlinHierarchyBuilderTest.kt
@@ -24,6 +24,7 @@
fun `test - interface offers functions for known presets`() {
val kotlinTargetHierarchyBuilderInterface = KotlinHierarchyBuilder::class.java
+ @Suppress("DEPRECATION")
buildProjectWithMPP().multiplatformExtension.presets
// JS targets are special and therefore are only handled manually using `withJs()`
diff --git a/libraries/tools/kotlin-gradle-plugin/src/functionalTest/kotlin/org/jetbrains/kotlin/gradle/unitTests/diagnosticsTests/MppDiagnosticsFunctionalTest.kt b/libraries/tools/kotlin-gradle-plugin/src/functionalTest/kotlin/org/jetbrains/kotlin/gradle/unitTests/diagnosticsTests/MppDiagnosticsFunctionalTest.kt
index 8c4fa43..64911b5 100644
--- a/libraries/tools/kotlin-gradle-plugin/src/functionalTest/kotlin/org/jetbrains/kotlin/gradle/unitTests/diagnosticsTests/MppDiagnosticsFunctionalTest.kt
+++ b/libraries/tools/kotlin-gradle-plugin/src/functionalTest/kotlin/org/jetbrains/kotlin/gradle/unitTests/diagnosticsTests/MppDiagnosticsFunctionalTest.kt
@@ -37,7 +37,8 @@
fun testDeprecatedJvmWithJavaPreset() {
checkDiagnosticsWithMppProject("deprecatedJvmWithJavaPreset") {
kotlin {
- targetFromPreset(presets.getByName(KotlinJvmWithJavaTargetPreset.PRESET_NAME))
+ @Suppress("DEPRECATION")
+ targetFromPresetInternal(presets.getByName(KotlinJvmWithJavaTargetPreset.PRESET_NAME))
}
}
}