From 9d0d26e15de212fbb8578a6689d851594a0af8a2 Mon Sep 17 00:00:00 2001 From: Yahor Berdnikau Date: Fri, 18 Feb 2022 13:42:18 +0100 Subject: [PATCH] Restore 'KotlinGradleSubplugin' as marker interface. This avoids build failure in 'buildSrc' module with 'kotlin-dsl' applied with 'ClassNotFound' exception. ^KT-51378 Fixed --- .../gradle/plugin/KotlinGradleSubplugin.kt | 7 ++++ .../jetbrains/kotlin/gradle/SubpluginsIT.kt | 33 ++++++++++++++++++- 2 files changed, 39 insertions(+), 1 deletion(-) diff --git a/libraries/tools/kotlin-gradle-plugin-api/src/main/kotlin/org/jetbrains/kotlin/gradle/plugin/KotlinGradleSubplugin.kt b/libraries/tools/kotlin-gradle-plugin-api/src/main/kotlin/org/jetbrains/kotlin/gradle/plugin/KotlinGradleSubplugin.kt index b05f2b944d9..a08b12a2727 100644 --- a/libraries/tools/kotlin-gradle-plugin-api/src/main/kotlin/org/jetbrains/kotlin/gradle/plugin/KotlinGradleSubplugin.kt +++ b/libraries/tools/kotlin-gradle-plugin-api/src/main/kotlin/org/jetbrains/kotlin/gradle/plugin/KotlinGradleSubplugin.kt @@ -116,3 +116,10 @@ interface KotlinCompilerPluginSupportPlugin : Plugin { open class SubpluginArtifact(val groupId: String, val artifactId: String, val version: String? = null) class JetBrainsSubpluginArtifact(artifactId: String) : SubpluginArtifact(groupId = "org.jetbrains.kotlin", artifactId = artifactId) + +/** + * Marker interface left here for backward compatibility with older plugin versions. + * Remove once minimal supported Gradle version will use Kotlin 1.7+. + */ +@Deprecated(level = DeprecationLevel.HIDDEN, message = "") +interface KotlinGradleSubplugin diff --git a/libraries/tools/kotlin-gradle-plugin-integration-tests/src/test/kotlin/org/jetbrains/kotlin/gradle/SubpluginsIT.kt b/libraries/tools/kotlin-gradle-plugin-integration-tests/src/test/kotlin/org/jetbrains/kotlin/gradle/SubpluginsIT.kt index 0cf360ad4f4..4554fede117 100644 --- a/libraries/tools/kotlin-gradle-plugin-integration-tests/src/test/kotlin/org/jetbrains/kotlin/gradle/SubpluginsIT.kt +++ b/libraries/tools/kotlin-gradle-plugin-integration-tests/src/test/kotlin/org/jetbrains/kotlin/gradle/SubpluginsIT.kt @@ -11,7 +11,6 @@ import org.jetbrains.kotlin.gradle.testbase.* import org.jetbrains.kotlin.gradle.util.checkBytecodeContains import org.jetbrains.kotlin.test.util.JUnit4Assertions.assertTrue import org.junit.jupiter.api.DisplayName -import kotlin.io.path.readText @DisplayName("Other plugins tests") @OtherGradlePluginTests @@ -212,4 +211,36 @@ class SubpuginsIT : KGPBaseTest() { } } } + + @DisplayName("KT-51378: Using 'kotlin-dsl' with latest plugin version in buildSrc module") + @GradleTestVersions( + minVersion = TestVersions.Gradle.G_6_8 // Gradle usage of sam-with-receivers subplugin was added in this version + ) + @GradleTest + fun testBuildSrcKotlinDSL(gradleVersion: GradleVersion) { + project("buildSrcUsingKotlinCompilationAndKotlinPlugin", gradleVersion) { + subProject("buildSrc").buildGradleKts.modify { + //language=kts + """ + ${it.substringBefore("}")} + } + + buildscript { + val kotlin_version: String by extra + repositories { + mavenLocal() + } + + dependencies { + classpath("org.jetbrains.kotlin:kotlin-gradle-plugin:${'$'}kotlin_version") + } + } + + ${it.substringAfter("}")} + """.trimIndent() + } + + build("assemble") + } + } }