Remove deprecated ConfigureUtil usages in KotlinProjectExtension

^KT-46019 In Progress
This commit is contained in:
Yahor Berdnikau
2022-06-27 22:41:47 +02:00
committed by Space
parent ac14a1e016
commit 46d7d73e6f
9 changed files with 40 additions and 37 deletions
+3 -3
View File
@@ -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))
}
}
@@ -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<TARGET : KotlinTarget>(project: Project) : KotlinProjectExtension(project) {
abstract val target: TARGET
open fun target(body: Closure<out KotlinTarget>) = ConfigureUtil.configure(body, target)
fun target(body: Action<TARGET>) = body.execute(target)
}
abstract class KotlinSingleJavaTargetExtension(project: Project) : KotlinSingleTargetExtension(project) {
abstract override val target: KotlinWithJavaTarget<*>
}
abstract class KotlinSingleJavaTargetExtension(project: Project) : KotlinSingleTargetExtension<KotlinWithJavaTarget<*>>(project)
open class KotlinJvmProjectExtension(project: Project) : KotlinSingleJavaTargetExtension(project) {
abstract class KotlinJvmProjectExtension(project: Project) : KotlinSingleJavaTargetExtension(project) {
override lateinit var target: KotlinWithJavaTarget<KotlinJvmOptions>
internal set
open fun target(body: KotlinWithJavaTarget<KotlinJvmOptions>.() -> Unit) = target.run(body)
}
open class Kotlin2JsProjectExtension(project: Project) : KotlinSingleJavaTargetExtension(project) {
override lateinit var target: KotlinWithJavaTarget<KotlinJsOptions>
internal set
abstract class Kotlin2JsProjectExtension(project: Project) : KotlinSingleJavaTargetExtension(project) {
private lateinit var _target: KotlinWithJavaTarget<KotlinJsOptions>
override val target: KotlinWithJavaTarget<KotlinJsOptions>
get() {
if (!::_target.isInitialized) throw IllegalStateException("Extension target is not initialized!")
return _target
}
internal fun setTarget(target: KotlinWithJavaTarget<KotlinJsOptions>) {
_target = target
}
open fun target(body: KotlinWithJavaTarget<KotlinJsOptions>.() -> Unit) = target.run(body)
}
open class KotlinJsProjectExtension(project: Project) :
KotlinSingleTargetExtension(project),
abstract class KotlinJsProjectExtension(project: Project) :
KotlinSingleTargetExtension<KotlinJsTargetDsl>(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<KotlinJsTargetDsl>) =
js(compiler = compiler) {
ConfigureUtil.configure(configure, this)
configure.execute(this)
}
fun js(compiler: String, configure: Closure<*>) =
fun js(compiler: String, configure: Action<KotlinJsTargetDsl>) =
js(compiler = compiler) {
ConfigureUtil.configure(configure, this)
configure.execute(this)
}
fun js(configure: Closure<*>) = jsInternal {
ConfigureUtil.configure(configure, this)
fun js(configure: Action<KotlinJsTargetDsl>) = 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<KotlinMultiplatformCommonOptions>
internal set
open fun target(body: KotlinWithJavaTarget<KotlinMultiplatformCommonOptions>.() -> Unit) = target.run(body)
}
open class KotlinAndroidProjectExtension(project: Project) : KotlinSingleTargetExtension(project) {
abstract class KotlinAndroidProjectExtension(project: Project) : KotlinSingleTargetExtension<KotlinAndroidTarget>(project) {
override lateinit var target: KotlinAndroidTarget
internal set
@@ -677,7 +677,7 @@ internal open class Kotlin2JsPlugin(
override fun apply(project: Project) {
val target = KotlinWithJavaTarget<KotlinJsOptions>(project, KotlinPlatformType.js, targetName, { KotlinJsOptionsImpl() })
(project.kotlinExtension as Kotlin2JsProjectExtension).target = target
(project.kotlinExtension as Kotlin2JsProjectExtension).setTarget(target)
super.apply(project)
}
}
@@ -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<AbstractKotlinTarget>()
@@ -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()
}
@@ -12,7 +12,7 @@ import org.jetbrains.kotlin.gradle.plugin.KotlinTarget
val KotlinProjectExtension.targets: Iterable<KotlinTarget>
get() = when (this) {
is KotlinSingleTargetExtension -> listOf(this.target)
is KotlinSingleTargetExtension<*> -> listOf(this.target)
is KotlinMultiplatformExtension -> targets
else -> error("Unexpected 'kotlin' extension $this")
}
@@ -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")
}
}
@@ -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)
}
@@ -234,7 +234,7 @@ private fun KotlinProjectExtension.buildProjectSettings(): KotlinToolingMetadata
private fun KotlinProjectExtension.buildProjectTargets(): List<KotlinToolingMetadata.ProjectTargetMetadata> {
val targets = when (this) {
is KotlinMultiplatformExtension -> this.targets.toSet()
is KotlinSingleTargetExtension -> setOf(this.target)
is KotlinSingleTargetExtension<*> -> setOf(this.target)
else -> emptySet()
}