[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 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 fun explicitApi ()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) {
|
||||
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 (Lorg/gradle/api/Action;)Lorg/jetbrains/kotlin/gradle/plugin/mpp/KotlinAndroidTarget;
|
||||
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 (Lorg/jetbrains/kotlin/gradle/plugin/KotlinHierarchyTemplate;)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 getNativeTest (Lorg/gradle/api/NamedDomainObjectContainer;)Lorg/gradle/api/NamedDomainObjectProvider;
|
||||
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 getTestableTargets ()Lorg/gradle/api/NamedDomainObjectCollection;
|
||||
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)
|
||||
|
||||
/**
|
||||
* @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
|
||||
override fun applyHierarchyTemplate(template: KotlinHierarchyTemplate) {
|
||||
@@ -120,6 +130,9 @@ abstract class KotlinMultiplatformExtension
|
||||
hierarchy.applyHierarchyTemplate(template)
|
||||
}
|
||||
|
||||
@ExperimentalKotlinGradlePluginApi
|
||||
val targetHierarchy: DeprecatedKotlinTargetHierarchyDsl get() = DeprecatedKotlinTargetHierarchyDsl(this)
|
||||
|
||||
@Suppress("unused") // DSL
|
||||
val testableTargets: NamedDomainObjectCollection<KotlinTargetWithTests<*, *>>
|
||||
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