[Gradle] Restore 'KotlinTargetHierarchyDsl' for easier transition to hierarchy templates
^KT-60596 Verification Pending
This commit is contained in:
committed by
Space Team
parent
e8004a4034
commit
7cef7ac639
@@ -525,6 +525,17 @@ public abstract interface class org/jetbrains/kotlin/gradle/dsl/KotlinNativeXCFr
|
|||||||
public abstract fun targets ([Lorg/jetbrains/kotlin/konan/target/KonanTarget;)V
|
public abstract fun targets ([Lorg/jetbrains/kotlin/konan/target/KonanTarget;)V
|
||||||
}
|
}
|
||||||
|
|
||||||
|
public abstract interface class org/jetbrains/kotlin/gradle/dsl/KotlinTargetHierarchyDsl {
|
||||||
|
public abstract fun apply (Lorg/jetbrains/kotlin/gradle/plugin/KotlinHierarchyTemplate;Lkotlin/jvm/functions/Function1;)V
|
||||||
|
public abstract fun custom (Lkotlin/jvm/functions/Function1;)V
|
||||||
|
public abstract fun default (Lkotlin/jvm/functions/Function1;)V
|
||||||
|
}
|
||||||
|
|
||||||
|
public final class org/jetbrains/kotlin/gradle/dsl/KotlinTargetHierarchyDsl$DefaultImpls {
|
||||||
|
public static synthetic fun apply$default (Lorg/jetbrains/kotlin/gradle/dsl/KotlinTargetHierarchyDsl;Lorg/jetbrains/kotlin/gradle/plugin/KotlinHierarchyTemplate;Lkotlin/jvm/functions/Function1;ILjava/lang/Object;)V
|
||||||
|
public static synthetic fun default$default (Lorg/jetbrains/kotlin/gradle/dsl/KotlinTargetHierarchyDsl;Lkotlin/jvm/functions/Function1;ILjava/lang/Object;)V
|
||||||
|
}
|
||||||
|
|
||||||
public abstract interface class org/jetbrains/kotlin/gradle/dsl/KotlinTopLevelExtensionConfig {
|
public abstract interface class org/jetbrains/kotlin/gradle/dsl/KotlinTopLevelExtensionConfig {
|
||||||
public abstract fun explicitApi ()V
|
public abstract fun explicitApi ()V
|
||||||
public abstract fun explicitApiWarning ()V
|
public abstract fun explicitApiWarning ()V
|
||||||
|
|||||||
+23
@@ -0,0 +1,23 @@
|
|||||||
|
/*
|
||||||
|
* 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
|
||||||
|
|
||||||
|
/*
|
||||||
|
* Copyright 2010-2022 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.
|
||||||
|
*/
|
||||||
|
|
||||||
|
import org.jetbrains.kotlin.gradle.ExperimentalKotlinGradlePluginApi
|
||||||
|
import org.jetbrains.kotlin.gradle.plugin.KotlinHierarchyBuilder
|
||||||
|
import org.jetbrains.kotlin.gradle.plugin.KotlinHierarchyTemplate
|
||||||
|
|
||||||
|
@Deprecated("Use 'KotlinHierarchyTemplate' instead")
|
||||||
|
@ExperimentalKotlinGradlePluginApi
|
||||||
|
interface KotlinTargetHierarchyDsl {
|
||||||
|
fun apply(hierarchyDescriptor: KotlinHierarchyTemplate, describeExtension: (KotlinHierarchyBuilder.Root.() -> Unit)? = null)
|
||||||
|
fun default(describeExtension: (KotlinHierarchyBuilder.Root.() -> Unit)? = null)
|
||||||
|
fun custom(describe: KotlinHierarchyBuilder.Root.() -> Unit)
|
||||||
|
}
|
||||||
+9
@@ -88,6 +88,15 @@ internal class KotlinHierarchyTemplateImpl(
|
|||||||
fun layout(builder: KotlinHierarchyBuilder.Root) {
|
fun layout(builder: KotlinHierarchyBuilder.Root) {
|
||||||
describe(builder)
|
describe(builder)
|
||||||
}
|
}
|
||||||
|
|
||||||
|
override fun hashCode(): Int {
|
||||||
|
return describe.hashCode()
|
||||||
|
}
|
||||||
|
|
||||||
|
override fun equals(other: Any?): Boolean {
|
||||||
|
if (other !is KotlinHierarchyTemplateImpl) return false
|
||||||
|
return this.describe == other.describe
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
/*
|
/*
|
||||||
|
|||||||
@@ -30,6 +30,7 @@ public abstract class org/jetbrains/kotlin/gradle/dsl/KotlinMultiplatformExtensi
|
|||||||
public fun androidTarget (Ljava/lang/String;Lorg/gradle/api/Action;)Lorg/jetbrains/kotlin/gradle/plugin/mpp/KotlinAndroidTarget;
|
public fun androidTarget (Ljava/lang/String;Lorg/gradle/api/Action;)Lorg/jetbrains/kotlin/gradle/plugin/mpp/KotlinAndroidTarget;
|
||||||
public fun androidTarget (Lorg/gradle/api/Action;)Lorg/jetbrains/kotlin/gradle/plugin/mpp/KotlinAndroidTarget;
|
public fun androidTarget (Lorg/gradle/api/Action;)Lorg/jetbrains/kotlin/gradle/plugin/mpp/KotlinAndroidTarget;
|
||||||
public final fun applyDefaultHierarchyTemplate ()V
|
public final fun applyDefaultHierarchyTemplate ()V
|
||||||
|
public final fun applyDefaultHierarchyTemplate (Lkotlin/jvm/functions/Function1;)V
|
||||||
public fun applyHierarchyTemplate (Lkotlin/jvm/functions/Function1;)V
|
public fun applyHierarchyTemplate (Lkotlin/jvm/functions/Function1;)V
|
||||||
public fun applyHierarchyTemplate (Lorg/jetbrains/kotlin/gradle/plugin/KotlinHierarchyTemplate;)V
|
public fun applyHierarchyTemplate (Lorg/jetbrains/kotlin/gradle/plugin/KotlinHierarchyTemplate;)V
|
||||||
public fun applyHierarchyTemplate (Lorg/jetbrains/kotlin/gradle/plugin/KotlinHierarchyTemplate;Lkotlin/jvm/functions/Function1;)V
|
public fun applyHierarchyTemplate (Lorg/jetbrains/kotlin/gradle/plugin/KotlinHierarchyTemplate;Lkotlin/jvm/functions/Function1;)V
|
||||||
@@ -61,6 +62,7 @@ public abstract class org/jetbrains/kotlin/gradle/dsl/KotlinMultiplatformExtensi
|
|||||||
public fun getNativeMain (Lorg/gradle/api/NamedDomainObjectContainer;)Lorg/gradle/api/NamedDomainObjectProvider;
|
public fun getNativeMain (Lorg/gradle/api/NamedDomainObjectContainer;)Lorg/gradle/api/NamedDomainObjectProvider;
|
||||||
public fun getNativeTest (Lorg/gradle/api/NamedDomainObjectContainer;)Lorg/gradle/api/NamedDomainObjectProvider;
|
public fun getNativeTest (Lorg/gradle/api/NamedDomainObjectContainer;)Lorg/gradle/api/NamedDomainObjectProvider;
|
||||||
public fun getPresets ()Lorg/gradle/api/NamedDomainObjectCollection;
|
public fun getPresets ()Lorg/gradle/api/NamedDomainObjectCollection;
|
||||||
|
public final fun getTargetHierarchy ()Lorg/jetbrains/kotlin/gradle/dsl/DeprecatedKotlinTargetHierarchyDsl;
|
||||||
public final fun getTargets ()Lorg/gradle/api/NamedDomainObjectCollection;
|
public final fun getTargets ()Lorg/gradle/api/NamedDomainObjectCollection;
|
||||||
public final fun getTestableTargets ()Lorg/gradle/api/NamedDomainObjectCollection;
|
public final fun getTestableTargets ()Lorg/gradle/api/NamedDomainObjectCollection;
|
||||||
public fun getTvosMain (Lorg/gradle/api/NamedDomainObjectContainer;)Lorg/gradle/api/NamedDomainObjectProvider;
|
public fun getTvosMain (Lorg/gradle/api/NamedDomainObjectContainer;)Lorg/gradle/api/NamedDomainObjectProvider;
|
||||||
|
|||||||
+34
@@ -0,0 +1,34 @@
|
|||||||
|
/*
|
||||||
|
* 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.
|
||||||
|
*/
|
||||||
|
|
||||||
|
@file:Suppress("DEPRECATION")
|
||||||
|
|
||||||
|
package org.jetbrains.kotlin.gradle.dsl
|
||||||
|
|
||||||
|
import org.jetbrains.kotlin.gradle.plugin.KotlinHierarchyBuilder
|
||||||
|
import org.jetbrains.kotlin.gradle.plugin.KotlinHierarchyTemplate
|
||||||
|
|
||||||
|
@Deprecated("Use 'KotlinHierarchyTemplate's instead.")
|
||||||
|
class DeprecatedKotlinTargetHierarchyDsl internal constructor(
|
||||||
|
private val extension: KotlinMultiplatformExtension,
|
||||||
|
) : KotlinTargetHierarchyDsl {
|
||||||
|
|
||||||
|
@Deprecated("Replace with 'kotlin.applyHierarchyTemplate'")
|
||||||
|
override fun apply(hierarchyDescriptor: KotlinHierarchyTemplate, describeExtension: (KotlinHierarchyBuilder.Root.() -> Unit)?) {
|
||||||
|
if (describeExtension != null) extension.applyHierarchyTemplate(hierarchyDescriptor, describeExtension)
|
||||||
|
else extension.applyHierarchyTemplate(hierarchyDescriptor)
|
||||||
|
}
|
||||||
|
|
||||||
|
@Deprecated("Replace with 'kotlin.applyDefaultHierarchyTemplate'")
|
||||||
|
override fun default(describeExtension: (KotlinHierarchyBuilder.Root.() -> Unit)?) {
|
||||||
|
if (describeExtension != null) extension.applyDefaultHierarchyTemplate(describeExtension)
|
||||||
|
else extension.applyDefaultHierarchyTemplate()
|
||||||
|
}
|
||||||
|
|
||||||
|
@Deprecated("Replace with 'kotlin.applyHierarchyTemplate'")
|
||||||
|
override fun custom(describe: KotlinHierarchyBuilder.Root.() -> Unit) {
|
||||||
|
extension.applyHierarchyTemplate(describe)
|
||||||
|
}
|
||||||
|
}
|
||||||
+13
@@ -104,6 +104,16 @@ abstract class KotlinMultiplatformExtension
|
|||||||
*/
|
*/
|
||||||
fun applyDefaultHierarchyTemplate() = applyHierarchyTemplate(KotlinHierarchyTemplate.default)
|
fun applyDefaultHierarchyTemplate() = applyHierarchyTemplate(KotlinHierarchyTemplate.default)
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @see applyDefaultHierarchyTemplate
|
||||||
|
* @see applyHierarchyTemplate
|
||||||
|
* @param extension: Additionally extend the default hierarchy with additional groups
|
||||||
|
*
|
||||||
|
*/
|
||||||
|
@ExperimentalKotlinGradlePluginApi
|
||||||
|
fun applyDefaultHierarchyTemplate(extension: KotlinHierarchyBuilder.Root.() -> Unit) {
|
||||||
|
hierarchy.applyHierarchyTemplate(KotlinHierarchyTemplate.default, extension)
|
||||||
|
}
|
||||||
|
|
||||||
@ExperimentalKotlinGradlePluginApi
|
@ExperimentalKotlinGradlePluginApi
|
||||||
override fun applyHierarchyTemplate(template: KotlinHierarchyTemplate) {
|
override fun applyHierarchyTemplate(template: KotlinHierarchyTemplate) {
|
||||||
@@ -120,6 +130,9 @@ abstract class KotlinMultiplatformExtension
|
|||||||
hierarchy.applyHierarchyTemplate(template)
|
hierarchy.applyHierarchyTemplate(template)
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ExperimentalKotlinGradlePluginApi
|
||||||
|
val targetHierarchy: DeprecatedKotlinTargetHierarchyDsl get() = DeprecatedKotlinTargetHierarchyDsl(this)
|
||||||
|
|
||||||
@Suppress("unused") // DSL
|
@Suppress("unused") // DSL
|
||||||
val testableTargets: NamedDomainObjectCollection<KotlinTargetWithTests<*, *>>
|
val testableTargets: NamedDomainObjectCollection<KotlinTargetWithTests<*, *>>
|
||||||
get() = targets.withType(KotlinTargetWithTests::class.java)
|
get() = targets.withType(KotlinTargetWithTests::class.java)
|
||||||
|
|||||||
+76
@@ -0,0 +1,76 @@
|
|||||||
|
/*
|
||||||
|
* 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.
|
||||||
|
*/
|
||||||
|
|
||||||
|
@file:Suppress("FunctionName", "DEPRECATION")
|
||||||
|
|
||||||
|
package org.jetbrains.kotlin.gradle.unitTests
|
||||||
|
|
||||||
|
import org.jetbrains.kotlin.gradle.dsl.multiplatformExtension
|
||||||
|
import org.jetbrains.kotlin.gradle.plugin.KotlinHierarchyBuilder
|
||||||
|
import org.jetbrains.kotlin.gradle.util.buildProjectWithMPP
|
||||||
|
import kotlin.test.Test
|
||||||
|
import kotlin.test.assertEquals
|
||||||
|
import kotlin.test.fail
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Test will check that the deprecated 'KotlinTargetHierarchyDsl' will act exactly the same as the new
|
||||||
|
* 'KotlinHierarchyDsl'
|
||||||
|
*/
|
||||||
|
class DeprecatedKotlinTargetHierarchyDslTest {
|
||||||
|
|
||||||
|
val legacyProject = buildProjectWithMPP()
|
||||||
|
val project = buildProjectWithMPP()
|
||||||
|
|
||||||
|
@Test
|
||||||
|
fun `test - default`() {
|
||||||
|
legacyProject.multiplatformExtension.targetHierarchy.default()
|
||||||
|
project.multiplatformExtension.applyDefaultHierarchyTemplate()
|
||||||
|
|
||||||
|
assertEquals(
|
||||||
|
project.multiplatformExtension.hierarchy.appliedTemplates,
|
||||||
|
legacyProject.multiplatformExtension.hierarchy.appliedTemplates
|
||||||
|
)
|
||||||
|
}
|
||||||
|
|
||||||
|
@Test
|
||||||
|
fun `test - default with extension`() {
|
||||||
|
val extension: KotlinHierarchyBuilder.Root.() -> Unit = {
|
||||||
|
common {
|
||||||
|
group("nix") {
|
||||||
|
withLinux()
|
||||||
|
withMacos()
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
legacyProject.multiplatformExtension.targetHierarchy.default(extension)
|
||||||
|
project.multiplatformExtension.applyDefaultHierarchyTemplate(extension)
|
||||||
|
|
||||||
|
listOf(legacyProject, project).forEach { project ->
|
||||||
|
project.multiplatformExtension.jvm()
|
||||||
|
project.multiplatformExtension.linuxX64()
|
||||||
|
project.multiplatformExtension.macosX64()
|
||||||
|
project.evaluate()
|
||||||
|
|
||||||
|
if ("nativeMain" !in project.multiplatformExtension.sourceSets.names)
|
||||||
|
fail("Expected 'nativeMain' in source sets")
|
||||||
|
|
||||||
|
if ("nixMain" !in project.multiplatformExtension.sourceSets.names) {
|
||||||
|
fail("Expected 'nixMain' in source sets")
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
@Test
|
||||||
|
fun `test - custom`() {
|
||||||
|
val description: KotlinHierarchyBuilder.Root.() -> Unit = { /* Does not matter */ }
|
||||||
|
legacyProject.multiplatformExtension.targetHierarchy.custom(description)
|
||||||
|
project.multiplatformExtension.applyHierarchyTemplate(description)
|
||||||
|
|
||||||
|
assertEquals(
|
||||||
|
project.multiplatformExtension.hierarchy.appliedTemplates,
|
||||||
|
legacyProject.multiplatformExtension.hierarchy.appliedTemplates
|
||||||
|
)
|
||||||
|
}
|
||||||
|
}
|
||||||
Reference in New Issue
Block a user