diff --git a/libraries/tools/kotlin-gradle-plugin/src/main/kotlin/org/jetbrains/kotlin/gradle/dsl/KotlinProjectExtension.kt b/libraries/tools/kotlin-gradle-plugin/src/main/kotlin/org/jetbrains/kotlin/gradle/dsl/KotlinProjectExtension.kt index a8f13f7bebc..434199375ea 100644 --- a/libraries/tools/kotlin-gradle-plugin/src/main/kotlin/org/jetbrains/kotlin/gradle/dsl/KotlinProjectExtension.kt +++ b/libraries/tools/kotlin-gradle-plugin/src/main/kotlin/org/jetbrains/kotlin/gradle/dsl/KotlinProjectExtension.kt @@ -23,16 +23,18 @@ import org.jetbrains.kotlin.gradle.targets.js.dsl.KotlinJsTargetDsl import org.jetbrains.kotlin.gradle.targets.js.ir.KotlinJsIrSingleTargetPreset import org.jetbrains.kotlin.gradle.tasks.CompileUsingKotlinDaemon import org.jetbrains.kotlin.gradle.tasks.withType +import org.jetbrains.kotlin.gradle.utils.SingleWarningPerBuild import org.jetbrains.kotlin.gradle.utils.lowerCamelCaseName import org.jetbrains.kotlin.konan.target.CompilerOutputKind import org.jetbrains.kotlin.statistics.metrics.StringMetrics +import javax.inject.Inject import kotlin.reflect.KClass private const val KOTLIN_PROJECT_EXTENSION_NAME = "kotlin" internal fun Project.createKotlinExtension(extensionClass: KClass): KotlinTopLevelExtension { val kotlinExt = extensions.create(KOTLIN_PROJECT_EXTENSION_NAME, extensionClass.java, this) - DslObject(kotlinExt).extensions.create("experimental", ExperimentalExtension::class.java) + DslObject(kotlinExt).extensions.create("experimental", ExperimentalExtension::class.java, this) return topLevelExtension } @@ -286,8 +288,20 @@ open class KotlinAndroidProjectExtension(project: Project) : KotlinSingleTargetE open fun target(body: KotlinAndroidTarget.() -> Unit) = target.run(body) } -open class ExperimentalExtension { +open class ExperimentalExtension @Inject constructor( + private val project: Project +) { var coroutines: Coroutines? = null + set(value) { + SingleWarningPerBuild.show( + project, + """ + 'kotlin.experimental.coroutines' option does nothing since 1.5.0 release + and scheduled to be removed in Kotlin 1.7.0 release! + """.trimIndent() + ) + field = value + } } enum class Coroutines { diff --git a/libraries/tools/kotlin-gradle-plugin/src/main/kotlin/org/jetbrains/kotlin/gradle/plugin/KotlinProperties.kt b/libraries/tools/kotlin-gradle-plugin/src/main/kotlin/org/jetbrains/kotlin/gradle/plugin/KotlinProperties.kt index de12341bc38..8c5a1db607f 100644 --- a/libraries/tools/kotlin-gradle-plugin/src/main/kotlin/org/jetbrains/kotlin/gradle/plugin/KotlinProperties.kt +++ b/libraries/tools/kotlin-gradle-plugin/src/main/kotlin/org/jetbrains/kotlin/gradle/plugin/KotlinProperties.kt @@ -75,7 +75,19 @@ internal class PropertiesProvider private constructor(private val project: Proje } val coroutines: Coroutines? - get() = property("kotlin.coroutines")?.let { Coroutines.byCompilerArgument(it) } + get() { + val propValue = property("kotlin.coroutines")?.let { Coroutines.byCompilerArgument(it) } + if (propValue != null) { + SingleWarningPerBuild.show( + project, + """ + 'kotlin.coroutines' property does nothing since 1.5.0 release + and scheduled to be removed in Kotlin 1.7.0 release! + """.trimIndent() + ) + } + return propValue + } val singleBuildMetricsFile: File? get() = property("kotlin.internal.single.build.metrics.file")?.let { File(it) }