From 46d7d73e6fd83966974aa8473e40684d6a6a4fb9 Mon Sep 17 00:00:00 2001 From: Yahor Berdnikau Date: Mon, 27 Jun 2022 22:41:47 +0200 Subject: [PATCH] Remove deprecated ConfigureUtil usages in KotlinProjectExtension ^KT-46019 In Progress --- buildSrc/src/main/kotlin/GradleCommon.kt | 6 +- .../gradle/dsl/KotlinProjectExtension.kt | 55 ++++++++++--------- .../kotlin/gradle/plugin/KotlinPlugin.kt | 2 +- .../plugin/mpp/GradleProjectModuleBuilder.kt | 4 +- .../gradle/plugin/mpp/kotlinCompilations.kt | 2 +- .../gradle/plugin/mpp/pm20/util/targets.kt | 2 +- .../kpm/SourceSetMappedFragmentLocator.kt | 2 +- .../npm/resolver/KotlinProjectNpmResolver.kt | 2 +- .../tooling/BuildKotlinToolingMetadataTask.kt | 2 +- 9 files changed, 40 insertions(+), 37 deletions(-) diff --git a/buildSrc/src/main/kotlin/GradleCommon.kt b/buildSrc/src/main/kotlin/GradleCommon.kt index a8a139d9da3..f645e332064 100644 --- a/buildSrc/src/main/kotlin/GradleCommon.kt +++ b/buildSrc/src/main/kotlin/GradleCommon.kt @@ -28,7 +28,7 @@ import org.gradle.kotlin.dsl.* import org.gradle.plugin.devel.plugins.JavaGradlePluginPlugin import org.jetbrains.dokka.DokkaVersion import org.jetbrains.dokka.gradle.DokkaTask -import org.jetbrains.kotlin.gradle.dsl.KotlinSingleTargetExtension +import org.jetbrains.kotlin.gradle.dsl.KotlinSingleJavaTargetExtension import org.jetbrains.kotlin.gradle.plugin.KotlinPlatformType import org.jetbrains.kotlin.gradle.tasks.KotlinCompile import plugins.configureDefaultPublishing @@ -214,7 +214,7 @@ fun Project.wireGradleVariantToCommonGradleVariant( wireSourceSet.runtimeClasspath += commonSourceSet.output // Allowing to use 'internal' classes/methods from common source code - (extensions.getByName("kotlin") as KotlinSingleTargetExtension).target.compilations.run { + (extensions.getByName("kotlin") as KotlinSingleJavaTargetExtension).target.compilations.run { getByName(wireSourceSet.name).associateWith(getByName(commonSourceSet.name)) } @@ -384,7 +384,7 @@ fun Project.reconfigureMainSourcesSetForGradlePlugin( } // Allowing to use 'internal' classes/methods from common source code - (extensions.getByName("kotlin") as KotlinSingleTargetExtension).target.compilations.run { + (extensions.getByName("kotlin") as KotlinSingleJavaTargetExtension).target.compilations.run { getByName(SourceSet.TEST_SOURCE_SET_NAME).associateWith(getByName(commonSourceSet.name)) } } 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 ff37afeb6ef..a7cf43d17c6 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 @@ -5,14 +5,12 @@ package org.jetbrains.kotlin.gradle.dsl -import groovy.lang.Closure import org.gradle.api.Action import org.gradle.api.NamedDomainObjectContainer import org.gradle.api.Project import org.gradle.api.internal.plugins.DslObject import org.gradle.jvm.toolchain.JavaLanguageVersion import org.gradle.jvm.toolchain.JavaToolchainSpec -import org.gradle.util.ConfigureUtil import org.jetbrains.kotlin.gradle.plugin.* import org.jetbrains.kotlin.gradle.plugin.PropertiesProvider.Companion.kotlinPropertiesProvider import org.jetbrains.kotlin.gradle.plugin.mpp.KotlinAndroidTarget @@ -130,32 +128,40 @@ open class KotlinProjectExtension @Inject constructor(project: Project) : Kotlin } } -abstract class KotlinSingleTargetExtension(project: Project) : KotlinProjectExtension(project) { - abstract val target: KotlinTarget +abstract class KotlinSingleTargetExtension(project: Project) : KotlinProjectExtension(project) { + abstract val target: TARGET - open fun target(body: Closure) = ConfigureUtil.configure(body, target) + fun target(body: Action) = body.execute(target) } -abstract class KotlinSingleJavaTargetExtension(project: Project) : KotlinSingleTargetExtension(project) { - abstract override val target: KotlinWithJavaTarget<*> -} +abstract class KotlinSingleJavaTargetExtension(project: Project) : KotlinSingleTargetExtension>(project) -open class KotlinJvmProjectExtension(project: Project) : KotlinSingleJavaTargetExtension(project) { +abstract class KotlinJvmProjectExtension(project: Project) : KotlinSingleJavaTargetExtension(project) { override lateinit var target: KotlinWithJavaTarget internal set open fun target(body: KotlinWithJavaTarget.() -> Unit) = target.run(body) } -open class Kotlin2JsProjectExtension(project: Project) : KotlinSingleJavaTargetExtension(project) { - override lateinit var target: KotlinWithJavaTarget - internal set +abstract class Kotlin2JsProjectExtension(project: Project) : KotlinSingleJavaTargetExtension(project) { + private lateinit var _target: KotlinWithJavaTarget + + override val target: KotlinWithJavaTarget + get() { + if (!::_target.isInitialized) throw IllegalStateException("Extension target is not initialized!") + + return _target + } + + internal fun setTarget(target: KotlinWithJavaTarget) { + _target = target + } open fun target(body: KotlinWithJavaTarget.() -> Unit) = target.run(body) } -open class KotlinJsProjectExtension(project: Project) : - KotlinSingleTargetExtension(project), +abstract class KotlinJsProjectExtension(project: Project) : + KotlinSingleTargetExtension(project), KotlinJsCompilerTypeHolder { lateinit var irPreset: KotlinJsIrSingleTargetPreset @@ -180,16 +186,13 @@ open class KotlinJsProjectExtension(project: Project) : @Deprecated("Use js() instead", ReplaceWith("js()")) @Suppress("DEPRECATION") - override var target: KotlinJsTargetDsl + override val target: KotlinJsTargetDsl get() { if (_target == null) { js {} } return _target!! } - set(value) { - _target = value - } override lateinit var defaultJsCompilerType: KotlinJsCompilerType @@ -261,18 +264,18 @@ open class KotlinJsProjectExtension(project: Project) : fun js() = js { } - fun js(compiler: KotlinJsCompilerType, configure: Closure<*>) = + fun js(compiler: KotlinJsCompilerType, configure: Action) = js(compiler = compiler) { - ConfigureUtil.configure(configure, this) + configure.execute(this) } - fun js(compiler: String, configure: Closure<*>) = + fun js(compiler: String, configure: Action) = js(compiler = compiler) { - ConfigureUtil.configure(configure, this) + configure.execute(this) } - fun js(configure: Closure<*>) = jsInternal { - ConfigureUtil.configure(configure, this) + fun js(configure: Action) = jsInternal { + configure.execute(this) } @Deprecated("Use js instead", ReplaceWith("js(body)")) @@ -290,14 +293,14 @@ open class KotlinJsProjectExtension(project: Project) : } } -open class KotlinCommonProjectExtension(project: Project) : KotlinSingleJavaTargetExtension(project) { +abstract class KotlinCommonProjectExtension(project: Project) : KotlinSingleJavaTargetExtension(project) { override lateinit var target: KotlinWithJavaTarget internal set open fun target(body: KotlinWithJavaTarget.() -> Unit) = target.run(body) } -open class KotlinAndroidProjectExtension(project: Project) : KotlinSingleTargetExtension(project) { +abstract class KotlinAndroidProjectExtension(project: Project) : KotlinSingleTargetExtension(project) { override lateinit var target: KotlinAndroidTarget internal set diff --git a/libraries/tools/kotlin-gradle-plugin/src/common/kotlin/org/jetbrains/kotlin/gradle/plugin/KotlinPlugin.kt b/libraries/tools/kotlin-gradle-plugin/src/common/kotlin/org/jetbrains/kotlin/gradle/plugin/KotlinPlugin.kt index fb490afb03d..bdb2c35cd9c 100755 --- a/libraries/tools/kotlin-gradle-plugin/src/common/kotlin/org/jetbrains/kotlin/gradle/plugin/KotlinPlugin.kt +++ b/libraries/tools/kotlin-gradle-plugin/src/common/kotlin/org/jetbrains/kotlin/gradle/plugin/KotlinPlugin.kt @@ -677,7 +677,7 @@ internal open class Kotlin2JsPlugin( override fun apply(project: Project) { val target = KotlinWithJavaTarget(project, KotlinPlatformType.js, targetName, { KotlinJsOptionsImpl() }) - (project.kotlinExtension as Kotlin2JsProjectExtension).target = target + (project.kotlinExtension as Kotlin2JsProjectExtension).setTarget(target) super.apply(project) } } 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 16a8bbdcffe..24a406a1adc 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 @@ -135,7 +135,7 @@ class GradleProjectModuleBuilder(private val addInferredSourceSetVisibilityAsExp val targets = when (extension) { is KotlinMultiplatformExtension -> extension.targets.filter { it.name != KotlinMultiplatformPlugin.METADATA_TARGET_NAME } - is KotlinSingleTargetExtension -> listOf(extension.target) + is KotlinSingleTargetExtension<*> -> listOf(extension.target) else -> return emptyList() } @@ -324,7 +324,7 @@ class KpmGradleModuleVariantResolver : KpmModuleVariantResolver { } else -> { val targets = - project.multiplatformExtensionOrNull?.targets ?: listOf((project.kotlinExtension as KotlinSingleTargetExtension).target) + project.multiplatformExtensionOrNull?.targets ?: listOf((project.kotlinExtension as KotlinSingleTargetExtension<*>).target) val compilation = targets.filterIsInstance() diff --git a/libraries/tools/kotlin-gradle-plugin/src/common/kotlin/org/jetbrains/kotlin/gradle/plugin/mpp/kotlinCompilations.kt b/libraries/tools/kotlin-gradle-plugin/src/common/kotlin/org/jetbrains/kotlin/gradle/plugin/mpp/kotlinCompilations.kt index 578e4297b49..82cd7e1f8bc 100644 --- a/libraries/tools/kotlin-gradle-plugin/src/common/kotlin/org/jetbrains/kotlin/gradle/plugin/mpp/kotlinCompilations.kt +++ b/libraries/tools/kotlin-gradle-plugin/src/common/kotlin/org/jetbrains/kotlin/gradle/plugin/mpp/kotlinCompilations.kt @@ -244,7 +244,7 @@ internal object CompilationSourceSetUtil { val kotlinExtension = project.kotlinExtension val targets = when (kotlinExtension) { is KotlinMultiplatformExtension -> kotlinExtension.targets - is KotlinSingleTargetExtension -> listOf(kotlinExtension.target) + is KotlinSingleTargetExtension<*> -> listOf(kotlinExtension.target) else -> emptyList() } 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 index fd2b332438c..54fe544d1ac 100644 --- 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 @@ -12,7 +12,7 @@ import org.jetbrains.kotlin.gradle.plugin.KotlinTarget val KotlinProjectExtension.targets: Iterable get() = when (this) { - is KotlinSingleTargetExtension -> listOf(this.target) + 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/sources/kpm/SourceSetMappedFragmentLocator.kt b/libraries/tools/kotlin-gradle-plugin/src/common/kotlin/org/jetbrains/kotlin/gradle/plugin/sources/kpm/SourceSetMappedFragmentLocator.kt index f2388b62d75..fd4764dcfcd 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 @@ -26,7 +26,7 @@ interface SourceSetMappedFragmentLocator { companion object { fun get(project: Project): SourceSetMappedFragmentLocator = when (project.topLevelExtensionOrNull) { is KotlinMultiplatformExtension -> MultiplatformSourceSetMappedFragmentLocator() - is KotlinSingleTargetExtension -> error("KPM model mapping is not yet supported in single-platform projects; tried to apply to $project") + is KotlinSingleTargetExtension<*> -> error("KPM model mapping is not yet supported in single-platform projects; tried to apply to $project") else -> error("couldn't provide model mapping utilities for project $project") } } diff --git a/libraries/tools/kotlin-gradle-plugin/src/common/kotlin/org/jetbrains/kotlin/gradle/targets/js/npm/resolver/KotlinProjectNpmResolver.kt b/libraries/tools/kotlin-gradle-plugin/src/common/kotlin/org/jetbrains/kotlin/gradle/targets/js/npm/resolver/KotlinProjectNpmResolver.kt index 124386fa282..36796a77b06 100644 --- a/libraries/tools/kotlin-gradle-plugin/src/common/kotlin/org/jetbrains/kotlin/gradle/targets/js/npm/resolver/KotlinProjectNpmResolver.kt +++ b/libraries/tools/kotlin-gradle-plugin/src/common/kotlin/org/jetbrains/kotlin/gradle/targets/js/npm/resolver/KotlinProjectNpmResolver.kt @@ -79,7 +79,7 @@ internal class KotlinProjectNpmResolver( ?: error("NpmResolverPlugin should be applied after kotlin plugin") when (kotlin) { - is KotlinSingleTargetExtension -> addTargetListeners(kotlin.target) + is KotlinSingleTargetExtension<*> -> addTargetListeners(kotlin.target) is KotlinMultiplatformExtension -> kotlin.targets.all { addTargetListeners(it) } 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 d261c705fd3..05cf2fb453c 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 @@ -234,7 +234,7 @@ private fun KotlinProjectExtension.buildProjectSettings(): KotlinToolingMetadata private fun KotlinProjectExtension.buildProjectTargets(): List { val targets = when (this) { is KotlinMultiplatformExtension -> this.targets.toSet() - is KotlinSingleTargetExtension -> setOf(this.target) + is KotlinSingleTargetExtension<*> -> setOf(this.target) else -> emptySet() }