[MPP] Deprecate preset APIs

^KT-59321
This commit is contained in:
Timofey Solonin
2023-07-21 10:19:53 +02:00
committed by Space Team
parent a580d4e5aa
commit 969deb639c
32 changed files with 338 additions and 39 deletions
@@ -1,3 +1,8 @@
public final class org/jetbrains/kotlin/gradle/DeprecatedTargetPresetApiKt {
public static final field PRESETS_API_IS_DEPRECATED_MESSAGE Ljava/lang/String;
public static final field PRESETS_DEPRECATION_MESSAGE_SUFFIX Ljava/lang/String;
}
public abstract interface annotation class org/jetbrains/kotlin/gradle/ExperimentalKotlinGradlePluginApi : java/lang/annotation/Annotation {
}
@@ -0,0 +1,17 @@
/*
* 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
const val PRESETS_DEPRECATION_MESSAGE_SUFFIX =
"API is deprecated and will be removed in future releases. Learn how to configure targets at: https://kotl.in/target-configuration"
const val PRESETS_API_IS_DEPRECATED_MESSAGE = "The presets $PRESETS_DEPRECATION_MESSAGE_SUFFIX"
@RequiresOptIn(
message = PRESETS_API_IS_DEPRECATED_MESSAGE,
level = RequiresOptIn.Level.WARNING
)
@InternalKotlinGradlePluginApi
annotation class DeprecatedTargetPresetApi
@@ -10,11 +10,13 @@ package org.jetbrains.kotlin.gradle.plugin
import org.gradle.api.Action
import org.gradle.api.Named
import org.gradle.api.NamedDomainObjectContainer
import org.gradle.api.Project
import org.gradle.api.attributes.AttributeContainer
import org.gradle.api.attributes.HasAttributes
import org.gradle.api.component.SoftwareComponent
import org.gradle.api.publish.maven.MavenPublication
import org.jetbrains.kotlin.gradle.PRESETS_API_IS_DEPRECATED_MESSAGE
import org.jetbrains.kotlin.gradle.DeprecatedTargetPresetApi
import org.jetbrains.kotlin.gradle.InternalKotlinGradlePluginApi
import org.jetbrains.kotlin.gradle.dsl.KotlinCommonOptionsDeprecated
import org.jetbrains.kotlin.tooling.core.HasMutableExtras
@@ -52,8 +54,16 @@ interface KotlinTarget : Named, HasAttributes, HasProject, HasMutableExtras {
fun attributes(configure: AttributeContainer.() -> Unit) = attributes.configure()
fun attributes(configure: Action<AttributeContainer>) = attributes { configure.execute(this) }
@OptIn(DeprecatedTargetPresetApi::class, InternalKotlinGradlePluginApi::class)
@Deprecated(
PRESETS_API_IS_DEPRECATED_MESSAGE,
level = DeprecationLevel.WARNING,
)
val preset: KotlinTargetPreset<out KotlinTarget>?
@InternalKotlinGradlePluginApi
fun warnAboutCreationOfTargetFromPreset()
override fun getName(): String = targetName
}
@@ -6,7 +6,16 @@
package org.jetbrains.kotlin.gradle.plugin
import org.gradle.api.Named
import org.jetbrains.kotlin.gradle.PRESETS_DEPRECATION_MESSAGE_SUFFIX
import org.jetbrains.kotlin.gradle.DeprecatedTargetPresetApi
import org.jetbrains.kotlin.gradle.InternalKotlinGradlePluginApi
@OptIn(InternalKotlinGradlePluginApi::class)
@DeprecatedTargetPresetApi
interface KotlinTargetPreset<T: KotlinTarget> : Named {
@Deprecated(
"The KotlinTargetPreset.createTarget() $PRESETS_DEPRECATION_MESSAGE_SUFFIX",
level = DeprecationLevel.WARNING,
)
fun createTarget(name: String): T
}
@@ -7,13 +7,22 @@ package org.jetbrains.kotlin.gradle.plugin
import org.gradle.api.NamedDomainObjectCollection
import org.gradle.api.NamedDomainObjectContainer
import org.jetbrains.kotlin.gradle.PRESETS_API_IS_DEPRECATED_MESSAGE
import org.jetbrains.kotlin.gradle.DeprecatedTargetPresetApi
import org.jetbrains.kotlin.gradle.InternalKotlinGradlePluginApi
@KotlinTargetsDsl
interface KotlinTargetsContainer {
val targets: NamedDomainObjectCollection<KotlinTarget>
}
@OptIn(InternalKotlinGradlePluginApi::class)
@DeprecatedTargetPresetApi
interface KotlinTargetsContainerWithPresets : KotlinTargetsContainer {
@Deprecated(
PRESETS_API_IS_DEPRECATED_MESSAGE,
level = DeprecationLevel.WARNING,
)
val presets: NamedDomainObjectCollection<KotlinTargetPreset<*>>
}
@@ -3,10 +3,15 @@
* Use of this source code is governed by the Apache 2.0 license that can be found in the license/LICENSE.txt file.
*/
@file:OptIn(DeprecatedTargetPresetApi::class, InternalKotlinGradlePluginApi::class)
@file:Suppress("DEPRECATION")
package org.jetbrains.kotlin.generators.gradle.dsl
import org.jetbrains.kotlin.gradle.plugin.*
import org.gradle.api.Action
import org.jetbrains.kotlin.gradle.plugin.KotlinTargetsContainerWithPresets
import org.jetbrains.kotlin.gradle.DeprecatedTargetPresetApi
import org.jetbrains.kotlin.gradle.InternalKotlinGradlePluginApi
import java.io.File
fun main() {
@@ -89,6 +94,9 @@ private fun generatePresetFunctions(
""
}
// Suppress presets deprecation to prevent warnings inside kotlin-gradle-plugin
val suppressPresetsDeprecation = "@Suppress(\"DEPRECATION\")"
val alsoBlockAfterConfiguration = if (presetEntry.alsoBlockAfterConfiguration != null) {
"""
.also {
@@ -109,6 +117,7 @@ private fun generatePresetFunctions(
): ${presetEntry.targetType.renderShort()} =
$configureOrCreateFunctionName(
name,
${suppressPresetsDeprecation}
$getPresetsExpression.getByName("$entityName") as ${presetEntry.presetType.renderShort()},
configure
)$alsoBlockAfterConfiguration
@@ -9,7 +9,6 @@ import org.gradle.testkit.runner.BuildResult
import org.jetbrains.kotlin.gradle.BaseGradleIT
import org.jetbrains.kotlin.gradle.internals.VERBOSE_DIAGNOSTIC_SEPARATOR
import org.jetbrains.kotlin.gradle.plugin.diagnostics.ToolingDiagnosticFactory
import kotlin.test.assertEquals
import kotlin.test.assertNull
import kotlin.test.assertTrue
@@ -30,6 +30,7 @@ kotlin {
"org.jetbrains.kotlin.gradle.ExperimentalKotlinGradlePluginApi",
"org.jetbrains.kotlin.gradle.ExternalKotlinTargetApi",
"org.jetbrains.kotlin.compiler.plugin.ExperimentalCompilerApi",
"org.jetbrains.kotlin.gradle.DeprecatedTargetPresetApi",
)
)
suppressWarnings = true
@@ -11,8 +11,12 @@ import org.gradle.api.NamedDomainObjectCollection
import org.gradle.api.Project
import org.jetbrains.kotlin.gradle.ExperimentalKotlinGradlePluginApi
import org.jetbrains.kotlin.gradle.InternalKotlinGradlePluginApi
import org.jetbrains.kotlin.gradle.PRESETS_API_IS_DEPRECATED_MESSAGE
import org.jetbrains.kotlin.gradle.DeprecatedTargetPresetApi
import org.jetbrains.kotlin.gradle.plugin.*
import org.jetbrains.kotlin.gradle.plugin.KotlinPluginLifecycle.Stage.AfterFinaliseDsl
import org.jetbrains.kotlin.gradle.plugin.diagnostics.KotlinToolingDiagnostics
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.*
@@ -29,6 +33,10 @@ abstract class KotlinMultiplatformExtension
KotlinTargetContainerWithNativeShortcuts,
KotlinHierarchyDsl,
KotlinMultiplatformSourceSetConventions by KotlinMultiplatformSourceSetConventionsImpl {
@Deprecated(
PRESETS_API_IS_DEPRECATED_MESSAGE,
level = DeprecationLevel.WARNING,
)
override val presets: NamedDomainObjectCollection<KotlinTargetPreset<*>> = project.container(KotlinTargetPreset::class.java)
final override val targets: NamedDomainObjectCollection<KotlinTarget> = project.container(KotlinTarget::class.java)
@@ -43,7 +51,8 @@ abstract class KotlinMultiplatformExtension
private val presetExtension = project.objects.newInstance(
DefaultTargetsFromPresetExtension::class.java,
{ this },
targets
targets,
project,
)
fun targets(configure: Action<TargetsFromPresetExtension>) {
@@ -147,42 +156,117 @@ abstract class KotlinMultiplatformExtension
targets.all { it.withSourcesJar(publish) }
}
private fun warnAboutTargetFromPresetDeprecation() {
project.reportDiagnostic(KotlinToolingDiagnostics.TargetFromPreset())
}
@DeprecatedTargetPresetApi
@Deprecated(
KotlinToolingDiagnostics.TargetFromPreset.DEPRECATION_MESSAGE,
level = DeprecationLevel.WARNING
)
fun <T : KotlinTarget> targetFromPreset(
preset: KotlinTargetPreset<T>,
name: String = preset.name,
configure: T.() -> Unit = { },
): T = configureOrCreate(name, preset, configure)
): T {
warnAboutTargetFromPresetDeprecation()
return targetFromPresetInternal(
preset = preset,
name = name,
configure = configure,
)
}
@DeprecatedTargetPresetApi
@Deprecated(
KotlinToolingDiagnostics.TargetFromPreset.DEPRECATION_MESSAGE,
level = DeprecationLevel.WARNING
)
fun <T : KotlinTarget> targetFromPreset(
preset: KotlinTargetPreset<T>,
name: String,
configure: Action<T>,
) = targetFromPreset(preset, name) { configure.execute(this) }
): T {
warnAboutTargetFromPresetDeprecation()
return 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)
@DeprecatedTargetPresetApi
@Deprecated(
KotlinToolingDiagnostics.TargetFromPreset.DEPRECATION_MESSAGE,
level = DeprecationLevel.WARNING
)
fun <T : KotlinTarget> targetFromPreset(preset: KotlinTargetPreset<T>): T {
warnAboutTargetFromPresetDeprecation()
return targetFromPresetInternal(
preset = preset
)
}
@DeprecatedTargetPresetApi
@Deprecated(
KotlinToolingDiagnostics.TargetFromPreset.DEPRECATION_MESSAGE,
level = DeprecationLevel.WARNING
)
fun <T : KotlinTarget> targetFromPreset(preset: KotlinTargetPreset<T>, name: String): T {
warnAboutTargetFromPresetDeprecation()
return targetFromPresetInternal(
preset = preset,
name = name
)
}
@DeprecatedTargetPresetApi
@Deprecated(
KotlinToolingDiagnostics.TargetFromPreset.DEPRECATION_MESSAGE,
level = DeprecationLevel.WARNING
)
fun <T : KotlinTarget> targetFromPreset(preset: KotlinTargetPreset<T>, configure: Action<T>): T {
warnAboutTargetFromPresetDeprecation()
return targetFromPresetInternal(
preset = preset,
configure = configure
)
}
internal val rootSoftwareComponent: KotlinSoftwareComponent by lazy {
KotlinSoftwareComponentWithCoordinatesAndPublication(project, "kotlin", targets)
}
}
@DeprecatedTargetPresetApi
@KotlinGradlePluginDsl
interface TargetsFromPresetExtension : NamedDomainObjectCollection<KotlinTarget> {
@Deprecated(
KotlinToolingDiagnostics.FromPreset.DEPRECATION_MESSAGE,
level = DeprecationLevel.WARNING,
)
fun <T : KotlinTarget> fromPreset(
preset: KotlinTargetPreset<T>,
name: String,
configureAction: T.() -> Unit = {},
): T
@Suppress("DeprecatedCallableAddReplaceWith", "DEPRECATION")
@Deprecated(
KotlinToolingDiagnostics.FromPreset.DEPRECATION_MESSAGE,
level = DeprecationLevel.WARNING,
)
fun <T : KotlinTarget> fromPreset(
preset: KotlinTargetPreset<T>,
name: String,
): T = fromPreset(preset, name, {})
): T = fromPreset(preset, name) {}
@Deprecated(
KotlinToolingDiagnostics.FromPreset.DEPRECATION_MESSAGE,
level = DeprecationLevel.WARNING,
)
fun <T : KotlinTarget> fromPreset(
preset: KotlinTargetPreset<T>,
name: String,
@@ -190,18 +274,28 @@ interface TargetsFromPresetExtension : NamedDomainObjectCollection<KotlinTarget>
): T
}
@Suppress("OVERRIDE_DEPRECATION")
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.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)
}
@Suppress("DEPRECATION")
override fun <T : KotlinTarget> fromPreset(
preset: KotlinTargetPreset<T>,
name: String,
@@ -211,6 +305,7 @@ internal abstract class DefaultTargetsFromPresetExtension @Inject constructor(
}
}
@Suppress("DEPRECATION")
private fun KotlinTarget.isProducedFromPreset(kotlinTargetPreset: KotlinTargetPreset<*>): Boolean =
preset == kotlinTargetPreset
@@ -228,13 +323,14 @@ internal fun <T : KotlinTarget> KotlinTargetsContainerWithPresets.configureOrCre
}
existingTarget == null -> {
val newTarget = targetPreset.createTarget(targetName)
val newTarget = targetPreset.createTargetInternal(targetName)
targets.add(newTarget)
configure(newTarget)
return newTarget
}
else -> {
@Suppress("DEPRECATION")
throw InvalidUserCodeException(
"The target '$targetName' already exists, but it was not created with the '${targetPreset.name}' preset. " +
"To configure it, access it by name in `kotlin.targets`" +
@@ -244,4 +340,3 @@ internal fun <T : KotlinTarget> KotlinTargetsContainerWithPresets.configureOrCre
}
}
}
@@ -0,0 +1,32 @@
/*
* 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.dsl
import org.gradle.api.Action
import org.jetbrains.kotlin.gradle.plugin.KotlinTarget
import org.jetbrains.kotlin.gradle.plugin.KotlinTargetPreset
import org.jetbrains.kotlin.gradle.targets.android.internal.internal
internal fun <T : KotlinTarget> KotlinMultiplatformExtension.targetFromPresetInternal(
preset: KotlinTargetPreset<T>,
name: String = preset.name,
configure: T.() -> Unit = { },
): T = configureOrCreate(name, preset.internal, configure)
internal fun <T : KotlinTarget> KotlinMultiplatformExtension.targetFromPresetInternal(
preset: KotlinTargetPreset<T>,
name: String,
configure: Action<T>,
) = targetFromPresetInternal(preset, name) { configure.execute(this) }
internal fun <T : KotlinTarget> KotlinMultiplatformExtension.targetFromPresetInternal(preset: KotlinTargetPreset<T>) =
targetFromPresetInternal(preset, preset.name) { }
internal fun <T : KotlinTarget> KotlinMultiplatformExtension.targetFromPresetInternal(preset: KotlinTargetPreset<T>, name: String) =
targetFromPresetInternal(preset, name) { }
internal fun <T : KotlinTarget> KotlinMultiplatformExtension.targetFromPresetInternal(preset: KotlinTargetPreset<T>, configure: Action<T>) =
targetFromPresetInternal(preset, preset.name, configure)
@@ -318,20 +318,20 @@ abstract class KotlinJsProjectExtension(project: Project) :
.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
@@ -8,6 +8,7 @@ package org.jetbrains.kotlin.gradle.dsl
import org.gradle.api.Action
import org.jetbrains.kotlin.gradle.dsl.KotlinJsProjectExtension.Companion.warnAboutDeprecatedCompiler
import org.jetbrains.kotlin.gradle.plugin.*
import org.jetbrains.kotlin.gradle.targets.android.internal.InternalKotlinTargetPreset
import org.jetbrains.kotlin.gradle.targets.js.calculateJsCompilerType
import org.jetbrains.kotlin.gradle.targets.js.dsl.KotlinJsTargetDsl
import org.jetbrains.kotlin.gradle.utils.lowerCamelCaseName
@@ -100,7 +101,7 @@ private fun KotlinTargetContainerWithJsPresetFunctions.jsInternal(
}
}
@Suppress("UNCHECKED_CAST")
@Suppress("UNCHECKED_CAST", "DEPRECATION")
return configureOrCreate(
targetName,
presets.getByName(
@@ -27,6 +27,7 @@ interface KotlinTargetContainerWithPresetFunctions : KotlinTargetsContainerWithP
): KotlinJvmTarget =
configureOrCreate(
name,
@Suppress("DEPRECATION")
presets.getByName("jvm") as KotlinJvmTargetPreset,
configure
)
@@ -42,6 +43,7 @@ interface KotlinTargetContainerWithPresetFunctions : KotlinTargetsContainerWithP
): KotlinAndroidTarget =
configureOrCreate(
name,
@Suppress("DEPRECATION")
presets.getByName("android") as KotlinAndroidTargetPreset,
configure
)
@@ -59,6 +61,7 @@ interface KotlinTargetContainerWithPresetFunctions : KotlinTargetsContainerWithP
): KotlinAndroidTarget =
configureOrCreate(
name,
@Suppress("DEPRECATION")
presets.getByName("android") as KotlinAndroidTargetPreset,
configure
).also {
@@ -93,6 +96,7 @@ interface KotlinTargetContainerWithPresetFunctions : KotlinTargetsContainerWithP
): KotlinNativeTarget =
configureOrCreate(
name,
@Suppress("DEPRECATION")
presets.getByName("androidNativeX64") as KotlinNativeTargetPreset,
configure
)
@@ -108,6 +112,7 @@ interface KotlinTargetContainerWithPresetFunctions : KotlinTargetsContainerWithP
): KotlinNativeTarget =
configureOrCreate(
name,
@Suppress("DEPRECATION")
presets.getByName("androidNativeX86") as KotlinNativeTargetPreset,
configure
)
@@ -123,6 +128,7 @@ interface KotlinTargetContainerWithPresetFunctions : KotlinTargetsContainerWithP
): KotlinNativeTarget =
configureOrCreate(
name,
@Suppress("DEPRECATION")
presets.getByName("androidNativeArm32") as KotlinNativeTargetPreset,
configure
)
@@ -138,6 +144,7 @@ interface KotlinTargetContainerWithPresetFunctions : KotlinTargetsContainerWithP
): KotlinNativeTarget =
configureOrCreate(
name,
@Suppress("DEPRECATION")
presets.getByName("androidNativeArm64") as KotlinNativeTargetPreset,
configure
)
@@ -155,6 +162,7 @@ interface KotlinTargetContainerWithPresetFunctions : KotlinTargetsContainerWithP
): KotlinNativeTarget =
configureOrCreate(
name,
@Suppress("DEPRECATION")
presets.getByName("iosArm32") as KotlinNativeTargetPreset,
configure
)
@@ -182,6 +190,7 @@ interface KotlinTargetContainerWithPresetFunctions : KotlinTargetsContainerWithP
): KotlinNativeTarget =
configureOrCreate(
name,
@Suppress("DEPRECATION")
presets.getByName("iosArm64") as KotlinNativeTargetPreset,
configure
)
@@ -197,6 +206,7 @@ interface KotlinTargetContainerWithPresetFunctions : KotlinTargetsContainerWithP
): KotlinNativeTargetWithSimulatorTests =
configureOrCreate(
name,
@Suppress("DEPRECATION")
presets.getByName("iosX64") as KotlinNativeTargetWithSimulatorTestsPreset,
configure
)
@@ -212,6 +222,7 @@ interface KotlinTargetContainerWithPresetFunctions : KotlinTargetsContainerWithP
): KotlinNativeTargetWithSimulatorTests =
configureOrCreate(
name,
@Suppress("DEPRECATION")
presets.getByName("iosSimulatorArm64") as KotlinNativeTargetWithSimulatorTestsPreset,
configure
)
@@ -227,6 +238,7 @@ interface KotlinTargetContainerWithPresetFunctions : KotlinTargetsContainerWithP
): KotlinNativeTarget =
configureOrCreate(
name,
@Suppress("DEPRECATION")
presets.getByName("watchosArm32") as KotlinNativeTargetPreset,
configure
)
@@ -242,6 +254,7 @@ interface KotlinTargetContainerWithPresetFunctions : KotlinTargetsContainerWithP
): KotlinNativeTarget =
configureOrCreate(
name,
@Suppress("DEPRECATION")
presets.getByName("watchosArm64") as KotlinNativeTargetPreset,
configure
)
@@ -259,6 +272,7 @@ interface KotlinTargetContainerWithPresetFunctions : KotlinTargetsContainerWithP
): KotlinNativeTargetWithSimulatorTests =
configureOrCreate(
name,
@Suppress("DEPRECATION")
presets.getByName("watchosX86") as KotlinNativeTargetWithSimulatorTestsPreset,
configure
)
@@ -286,6 +300,7 @@ interface KotlinTargetContainerWithPresetFunctions : KotlinTargetsContainerWithP
): KotlinNativeTargetWithSimulatorTests =
configureOrCreate(
name,
@Suppress("DEPRECATION")
presets.getByName("watchosX64") as KotlinNativeTargetWithSimulatorTestsPreset,
configure
)
@@ -301,6 +316,7 @@ interface KotlinTargetContainerWithPresetFunctions : KotlinTargetsContainerWithP
): KotlinNativeTargetWithSimulatorTests =
configureOrCreate(
name,
@Suppress("DEPRECATION")
presets.getByName("watchosSimulatorArm64") as KotlinNativeTargetWithSimulatorTestsPreset,
configure
)
@@ -316,6 +332,7 @@ interface KotlinTargetContainerWithPresetFunctions : KotlinTargetsContainerWithP
): KotlinNativeTarget =
configureOrCreate(
name,
@Suppress("DEPRECATION")
presets.getByName("watchosDeviceArm64") as KotlinNativeTargetPreset,
configure
)
@@ -331,6 +348,7 @@ interface KotlinTargetContainerWithPresetFunctions : KotlinTargetsContainerWithP
): KotlinNativeTarget =
configureOrCreate(
name,
@Suppress("DEPRECATION")
presets.getByName("tvosArm64") as KotlinNativeTargetPreset,
configure
)
@@ -346,6 +364,7 @@ interface KotlinTargetContainerWithPresetFunctions : KotlinTargetsContainerWithP
): KotlinNativeTargetWithSimulatorTests =
configureOrCreate(
name,
@Suppress("DEPRECATION")
presets.getByName("tvosX64") as KotlinNativeTargetWithSimulatorTestsPreset,
configure
)
@@ -361,6 +380,7 @@ interface KotlinTargetContainerWithPresetFunctions : KotlinTargetsContainerWithP
): KotlinNativeTargetWithSimulatorTests =
configureOrCreate(
name,
@Suppress("DEPRECATION")
presets.getByName("tvosSimulatorArm64") as KotlinNativeTargetWithSimulatorTestsPreset,
configure
)
@@ -376,6 +396,7 @@ interface KotlinTargetContainerWithPresetFunctions : KotlinTargetsContainerWithP
): KotlinNativeTargetWithHostTests =
configureOrCreate(
name,
@Suppress("DEPRECATION")
presets.getByName("linuxX64") as KotlinNativeTargetWithHostTestsPreset,
configure
)
@@ -393,6 +414,7 @@ interface KotlinTargetContainerWithPresetFunctions : KotlinTargetsContainerWithP
): KotlinNativeTarget =
configureOrCreate(
name,
@Suppress("DEPRECATION")
presets.getByName("mingwX86") as KotlinNativeTargetPreset,
configure
)
@@ -420,6 +442,7 @@ interface KotlinTargetContainerWithPresetFunctions : KotlinTargetsContainerWithP
): KotlinNativeTargetWithHostTests =
configureOrCreate(
name,
@Suppress("DEPRECATION")
presets.getByName("mingwX64") as KotlinNativeTargetWithHostTestsPreset,
configure
)
@@ -435,6 +458,7 @@ interface KotlinTargetContainerWithPresetFunctions : KotlinTargetsContainerWithP
): KotlinNativeTargetWithHostTests =
configureOrCreate(
name,
@Suppress("DEPRECATION")
presets.getByName("macosX64") as KotlinNativeTargetWithHostTestsPreset,
configure
)
@@ -450,6 +474,7 @@ interface KotlinTargetContainerWithPresetFunctions : KotlinTargetsContainerWithP
): KotlinNativeTargetWithHostTests =
configureOrCreate(
name,
@Suppress("DEPRECATION")
presets.getByName("macosArm64") as KotlinNativeTargetWithHostTestsPreset,
configure
)
@@ -465,6 +490,7 @@ interface KotlinTargetContainerWithPresetFunctions : KotlinTargetsContainerWithP
): KotlinNativeTarget =
configureOrCreate(
name,
@Suppress("DEPRECATION")
presets.getByName("linuxArm64") as KotlinNativeTargetPreset,
configure
)
@@ -482,6 +508,7 @@ interface KotlinTargetContainerWithPresetFunctions : KotlinTargetsContainerWithP
): KotlinNativeTarget =
configureOrCreate(
name,
@Suppress("DEPRECATION")
presets.getByName("linuxArm32Hfp") as KotlinNativeTargetPreset,
configure
)
@@ -511,6 +538,7 @@ interface KotlinTargetContainerWithPresetFunctions : KotlinTargetsContainerWithP
): KotlinNativeTarget =
configureOrCreate(
name,
@Suppress("DEPRECATION")
presets.getByName("linuxMips32") as KotlinNativeTargetPreset,
configure
)
@@ -540,6 +568,7 @@ interface KotlinTargetContainerWithPresetFunctions : KotlinTargetsContainerWithP
): KotlinNativeTarget =
configureOrCreate(
name,
@Suppress("DEPRECATION")
presets.getByName("linuxMipsel32") as KotlinNativeTargetPreset,
configure
)
@@ -569,6 +598,7 @@ interface KotlinTargetContainerWithPresetFunctions : KotlinTargetsContainerWithP
): KotlinNativeTarget =
configureOrCreate(
name,
@Suppress("DEPRECATION")
presets.getByName("wasm32") as KotlinNativeTargetPreset,
configure
)
@@ -20,6 +20,7 @@ interface KotlinTargetContainerWithWasmPresetFunctions : KotlinTargetContainerWi
): KotlinJsTargetDsl =
configureOrCreate(
name,
@Suppress("DEPRECATION")
presets.getByName("wasm") as KotlinWasmTargetPreset,
configure
)
@@ -7,6 +7,7 @@ package org.jetbrains.kotlin.gradle.plugin.diagnostics
import org.gradle.api.Project
import org.jetbrains.kotlin.gradle.InternalKotlinGradlePluginApi
import org.jetbrains.kotlin.gradle.PRESETS_DEPRECATION_MESSAGE_SUFFIX
import org.jetbrains.kotlin.gradle.dsl.KotlinSourceSetConvention.isRegisteredByKotlinSourceSetConventionAt
import org.jetbrains.kotlin.gradle.dsl.NativeTargetShortcutTrace
import org.jetbrains.kotlin.gradle.plugin.KotlinSourceSet
@@ -536,6 +537,23 @@ object KotlinToolingDiagnostics {
)
}
private val presetsDeprecationSeverity = ToolingDiagnostic.Severity.WARNING
object TargetFromPreset : ToolingDiagnosticFactory(presetsDeprecationSeverity) {
const val DEPRECATION_MESSAGE = "The targetFromPreset() $PRESETS_DEPRECATION_MESSAGE_SUFFIX"
operator fun invoke() = build(DEPRECATION_MESSAGE)
}
object FromPreset : ToolingDiagnosticFactory(presetsDeprecationSeverity) {
const val DEPRECATION_MESSAGE = "The fromPreset() $PRESETS_DEPRECATION_MESSAGE_SUFFIX"
operator fun invoke() = build(DEPRECATION_MESSAGE)
}
object CreateTarget : ToolingDiagnosticFactory(presetsDeprecationSeverity) {
const val DEPRECATION_MESSAGE = "The KotlinTargetPreset.createTarget() $PRESETS_DEPRECATION_MESSAGE_SUFFIX"
operator fun invoke() = build(DEPRECATION_MESSAGE)
}
object JvmWithJavaIsIncompatibleWithAndroid : ToolingDiagnosticFactory(FATAL) {
operator fun invoke(androidPluginId: String, trace: Throwable?) = build(
"""
@@ -20,7 +20,10 @@ internal object KotlinTargetAlreadyDeclaredChecker : KotlinGradleProjectChecker
val targets = multiplatformExtension?.awaitTargets() ?: return
val duplicatedTargets = targets
.filter { it !is KotlinMetadataTarget }
.groupBy { it.preset?.name }
.groupBy {
@Suppress("DEPRECATION")
it.preset?.name
}
.filterValues { it.size > 1 }
for (targetsGroup in duplicatedTargets.values) {
@@ -36,6 +39,7 @@ internal object KotlinTargetAlreadyDeclaredChecker : KotlinGradleProjectChecker
/**
* DSL names are taken from [org.jetbrains.kotlin.gradle.dsl.KotlinTargetContainerWithPresetFunctions]
*/
@Suppress("DEPRECATION")
private val KotlinTarget.targetDslFunctionName
get() = when (preset) {
is KotlinJsIrTargetPreset -> "js"
@@ -18,6 +18,8 @@ import org.gradle.api.internal.component.UsageContext
import org.gradle.api.internal.project.ProjectInternal
import org.gradle.api.publish.maven.MavenPublication
import org.jetbrains.kotlin.gradle.InternalKotlinGradlePluginApi
import org.jetbrains.kotlin.gradle.PRESETS_API_IS_DEPRECATED_MESSAGE
import org.jetbrains.kotlin.gradle.DeprecatedTargetPresetApi
import org.jetbrains.kotlin.gradle.dsl.KotlinMultiplatformExtension
import org.jetbrains.kotlin.gradle.dsl.kotlinExtension
import org.jetbrains.kotlin.gradle.plugin.*
@@ -179,8 +181,17 @@ abstract class AbstractKotlinTarget(
publicationConfigureActions.all { action -> action.execute(publication) }
}
@OptIn(DeprecatedTargetPresetApi::class)
@Deprecated(
PRESETS_API_IS_DEPRECATED_MESSAGE,
level = DeprecationLevel.WARNING,
)
override var preset: KotlinTargetPreset<out KotlinTarget>? = null
internal set
override fun warnAboutCreationOfTargetFromPreset() {
project.reportDiagnostic(KotlinToolingDiagnostics.CreateTarget())
}
}
private val publishedConfigurationNameSuffix = "-published"
@@ -9,9 +9,8 @@ import org.gradle.api.Plugin
import org.gradle.api.Project
import org.gradle.api.plugins.JavaBasePlugin
import org.gradle.util.GradleVersion
import org.jetbrains.kotlin.gradle.dsl.KotlinMultiplatformExtension
import org.jetbrains.kotlin.gradle.dsl.*
import org.jetbrains.kotlin.gradle.dsl.explicitApiModeAsCompilerArg
import org.jetbrains.kotlin.gradle.dsl.kotlinExtension
import org.jetbrains.kotlin.gradle.dsl.multiplatformExtension
import org.jetbrains.kotlin.gradle.internal.customizeKotlinDependencies
import org.jetbrains.kotlin.gradle.plugin.*
@@ -33,7 +32,6 @@ import org.jetbrains.kotlin.gradle.targets.native.createFatFrameworks
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 +53,7 @@ class KotlinMultiplatformPlugin : Plugin<Project> {
setupTargetsBuildStatsReport(project)
// set up metadata publishing
kotlinMultiplatformExtension.targetFromPreset(
kotlinMultiplatformExtension.targetFromPresetInternal(
KotlinMetadataTargetPreset(project),
METADATA_TARGET_NAME
)
@@ -128,6 +126,7 @@ class KotlinMultiplatformPlugin : Plugin<Project> {
}
fun setupDefaultPresets(project: Project) {
@Suppress("DEPRECATION")
with(project.multiplatformExtension.presets) {
add(KotlinJvmTargetPreset(project))
add(KotlinJsTargetPreset(project).apply { irPreset = null })
@@ -48,6 +48,8 @@ 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
@@ -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.DeprecatedTargetPresetApi
import org.jetbrains.kotlin.gradle.plugin.*
@DeprecatedTargetPresetApi
abstract class KotlinOnlyTargetPreset<R : KotlinOnlyTarget<T>, T : KotlinCompilation<*>>(
protected val project: Project,
) : KotlinTargetPreset<R> {
@@ -28,12 +27,13 @@ abstract class KotlinOnlyTargetPreset<R : KotlinOnlyTarget<T>, T : KotlinCompila
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)
useDisambiguationClassifierAsSourceSetNamePrefix = useDisambiguationClassifierAsSourceSetNamePrefix()
overrideDisambiguationClassifierOnIdeImport = overrideDisambiguationClassifierOnIdeImport(name)
@Suppress("DEPRECATION")
preset = this@KotlinOnlyTargetPreset
val compilationFactory = createCompilationFactory(this)
@@ -7,22 +7,25 @@
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
import org.jetbrains.kotlin.gradle.targets.android.internal.InternalKotlinTargetPreset
import javax.inject.Inject
@DeprecatedTargetPresetApi
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 {
/*
Android Gradle Plugin is required:
@@ -35,6 +38,7 @@ abstract class KotlinAndroidTargetPreset @Inject constructor(
project.findAppliedAndroidPluginIdOrNull() ?: project.reportDiagnostic(AndroidGradlePluginIsMissing(Throwable()))
return project.objects.newInstance(KotlinAndroidTarget::class.java, name, project).apply {
@Suppress("DEPRECATION")
preset = this@KotlinAndroidTargetPreset
project.dynamicallyApplyWhenAndroidPluginIsApplied({ this })
}
@@ -0,0 +1,25 @@
/*
* 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.targets.android.internal
import org.jetbrains.kotlin.gradle.InternalKotlinGradlePluginApi
import org.jetbrains.kotlin.gradle.plugin.KotlinTarget
import org.jetbrains.kotlin.gradle.plugin.KotlinTargetPreset
import org.jetbrains.kotlin.gradle.plugin.diagnostics.KotlinToolingDiagnostics
import org.jetbrains.kotlin.gradle.plugin.diagnostics.reportDiagnostic
internal interface InternalKotlinTargetPreset<T : KotlinTarget> : KotlinTargetPreset<T> {
fun createTargetInternal(name: String): T
override fun createTarget(name: String): T {
val target = createTargetInternal(name)
target.project.reportDiagnostic(KotlinToolingDiagnostics.CreateTarget())
return target
}
}
internal val <T : KotlinTarget> KotlinTargetPreset<T>.internal: InternalKotlinTargetPreset<T>
get() = this as InternalKotlinTargetPreset
@@ -6,6 +6,7 @@
package org.jetbrains.kotlin.gradle.targets.js.ir
import org.gradle.api.Project
import org.jetbrains.kotlin.gradle.DeprecatedTargetPresetApi
import org.jetbrains.kotlin.gradle.plugin.*
import org.jetbrains.kotlin.gradle.plugin.mpp.KotlinCompilationFactory
import org.jetbrains.kotlin.gradle.plugin.mpp.KotlinOnlyTarget
@@ -16,6 +17,7 @@ import org.jetbrains.kotlin.gradle.utils.runProjectConfigurationHealthCheckWhenE
import org.jetbrains.kotlin.statistics.metrics.StringMetrics
import org.jetbrains.kotlin.util.capitalizeDecapitalize.decapitalizeAsciiOnly
@DeprecatedTargetPresetApi
open class KotlinJsIrTargetPreset(
project: Project
) : KotlinOnlyTargetPreset<KotlinJsIrTarget, KotlinJsIrCompilation>(
@@ -65,6 +67,7 @@ open class KotlinJsIrTargetPreset(
}
}
@DeprecatedTargetPresetApi
class KotlinJsIrSingleTargetPreset(
project: Project
) : KotlinJsIrTargetPreset(
@@ -6,14 +6,13 @@
package org.jetbrains.kotlin.gradle.targets.js.ir
import org.gradle.api.Project
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.DeprecatedTargetPresetApi
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
@DeprecatedTargetPresetApi
class KotlinWasmTargetPreset(
project: Project,
) : KotlinOnlyTargetPreset<KotlinJsIrTarget, KotlinJsIrCompilation>(project) {
@@ -7,11 +7,13 @@
package org.jetbrains.kotlin.gradle.plugin.mpp
import org.gradle.api.Project
import org.jetbrains.kotlin.gradle.DeprecatedTargetPresetApi
import org.jetbrains.kotlin.gradle.plugin.AbstractKotlinTargetConfigurator
import org.jetbrains.kotlin.gradle.plugin.KotlinPlatformType
import org.jetbrains.kotlin.gradle.targets.jvm.KotlinJvmTarget
import org.jetbrains.kotlin.gradle.targets.jvm.KotlinJvmTargetConfigurator
@DeprecatedTargetPresetApi
class KotlinJvmTargetPreset(
project: Project
) : KotlinOnlyTargetPreset<KotlinJvmTarget, KotlinJvmCompilation>(
@@ -8,6 +8,7 @@ package org.jetbrains.kotlin.gradle.plugin.mpp
import org.gradle.api.Project
import org.gradle.api.plugins.JavaPlugin
import org.jetbrains.kotlin.gradle.DeprecatedTargetPresetApi
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.plugin.diagnostics.reportDiagnostic
import org.jetbrains.kotlin.gradle.tasks.KotlinTasksProvider
import org.jetbrains.kotlin.gradle.utils.configureExperimentalTryK2
@DeprecatedTargetPresetApi
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)
@@ -7,11 +7,13 @@
package org.jetbrains.kotlin.gradle.plugin.mpp
import org.gradle.api.Project
import org.jetbrains.kotlin.gradle.DeprecatedTargetPresetApi
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
@DeprecatedTargetPresetApi
class KotlinMetadataTargetPreset(
project: Project
) : KotlinOnlyTargetPreset<KotlinMetadataTarget, KotlinCompilation<*>>(project) {
@@ -49,8 +51,8 @@ class KotlinMetadataTargetPreset(
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)
@@ -10,6 +10,7 @@ package org.jetbrains.kotlin.gradle.plugin.mpp
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.native.internal.*
import org.jetbrains.kotlin.gradle.utils.SingleActionPerProject
@@ -17,6 +18,7 @@ import org.jetbrains.kotlin.gradle.utils.setupNativeCompiler
import org.jetbrains.kotlin.konan.target.HostManager
import org.jetbrains.kotlin.konan.target.KonanTarget
@DeprecatedTargetPresetApi
abstract class AbstractKotlinNativeTargetPreset<T : KotlinNativeTarget>(
private val name: String,
val project: Project,
@@ -39,12 +41,13 @@ abstract class AbstractKotlinNativeTargetPreset<T : KotlinNativeTarget>(
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 {
targetName = name
disambiguationClassifier = name
@Suppress("DEPRECATION")
preset = this@AbstractKotlinNativeTargetPreset
val compilationFactory = KotlinNativeCompilationFactory(this)
@@ -73,6 +76,7 @@ abstract class AbstractKotlinNativeTargetPreset<T : KotlinNativeTarget>(
}
@DeprecatedTargetPresetApi
open class KotlinNativeTargetPreset(name: String, project: Project, konanTarget: KonanTarget) :
AbstractKotlinNativeTargetPreset<KotlinNativeTarget>(name, project, konanTarget) {
@@ -84,6 +88,7 @@ open class KotlinNativeTargetPreset(name: String, project: Project, konanTarget:
}
}
@DeprecatedTargetPresetApi
open class KotlinNativeTargetWithHostTestsPreset(name: String, project: Project, konanTarget: KonanTarget) :
AbstractKotlinNativeTargetPreset<KotlinNativeTargetWithHostTests>(name, project, konanTarget) {
@@ -94,6 +99,7 @@ open class KotlinNativeTargetWithHostTestsPreset(name: String, project: Project,
project.objects.newInstance(KotlinNativeTargetWithHostTests::class.java, project, konanTarget)
}
@DeprecatedTargetPresetApi
open class KotlinNativeTargetWithSimulatorTestsPreset(name: String, project: Project, konanTarget: KonanTarget) :
AbstractKotlinNativeTargetPreset<KotlinNativeTargetWithSimulatorTests>(name, project, konanTarget) {
@@ -519,6 +519,7 @@ class ConfigurationsTest : MultiplatformExtensionTest() {
extensions.asMap.keys,
kotlin.sourceSets.names,
kotlin.targets.names,
@Suppress("DEPRECATION")
kotlin.presets.names,
).flatten()
}
@@ -24,6 +24,7 @@ class KotlinHierarchyBuilderTest {
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()`
@@ -5,6 +5,7 @@
package org.jetbrains.kotlin.gradle.unitTests.diagnosticsTests
import org.jetbrains.kotlin.gradle.dsl.targetFromPresetInternal
import org.jetbrains.kotlin.gradle.plugin.mpp.KotlinJvmWithJavaTargetPreset
import org.jetbrains.kotlin.gradle.util.androidLibrary
import org.jetbrains.kotlin.gradle.util.checkDiagnosticsWithMppProject
@@ -45,7 +46,8 @@ class MppDiagnosticsFunctionalTest {
fun testDeprecatedJvmWithJavaPreset() {
checkDiagnosticsWithMppProject("deprecatedJvmWithJavaPreset") {
kotlin {
targetFromPreset(presets.getByName(KotlinJvmWithJavaTargetPreset.PRESET_NAME))
@Suppress("DEPRECATION")
targetFromPresetInternal(presets.getByName(KotlinJvmWithJavaTargetPreset.PRESET_NAME))
}
}
}