[KAPT] KT-65006 fix issues when using Kapt+Serialization

This MR fixes two independent issues causing build failures when using Kapt in combination with the Kotlin serialization plugin (and, very likely, with other plugins as well):
Kapt applied compiler plugins twice, causing errors similar to the one described in KT-65006
Kapt failed to generate @Metadata annotations for plugin-generated companion objects because the corresponding SLC missed containingFile needed for generation of method and class signatures

Merge-request: KT-MR-13970
Merged-by: Pavel Mikhailovskii <Pavel.Mikhailovskii@jetbrains.com>
This commit is contained in:
strangepleasures
2024-01-23 20:35:32 +00:00
committed by Space Team
parent 8e4dc1fc31
commit 85c9c57da4
8 changed files with 66 additions and 55 deletions
@@ -1331,4 +1331,16 @@ open class Kapt3IT : Kapt3BaseIT() {
}
}
}
@DisplayName("KT-65006 Kapt works with the serialization plugin")
@GradleTest
fun testSerializationPlugin(gradleVersion: GradleVersion) {
project("serialization".withPrefix, gradleVersion) {
build(":kaptGenerateStubsKotlin") {
assertFileInProjectContains("build/tmp/kapt3/stubs/main/foo/Data.java",
"public static final class Companion",
"public static final class \$serializer implements kotlinx.serialization.internal.GeneratedSerializer<foo.Data>")
}
}
}
}
@@ -1,5 +1,3 @@
import org.jetbrains.kotlin.gradle.tasks.KotlinJvmCompile
plugins {
id "java"
id "org.jetbrains.kotlin.jvm"
@@ -21,7 +19,3 @@ dependencies {
implementation "org.jetbrains.kotlin:annotation-processor-example:$kotlin_version"
baseAnnos "org.jetbrains.kotlin:annotation-processor-example:$kotlin_version"
}
tasks.named("compileKotlin", KotlinJvmCompile) {
compilerOptions.allWarningsAsErrors = false // compilation with LV=2.0 prints warning about kapt fallback
}
@@ -0,0 +1,17 @@
plugins {
id "org.jetbrains.kotlin.jvm"
id "org.jetbrains.kotlin.kapt"
id "org.jetbrains.kotlin.plugin.serialization"
}
repositories {
mavenLocal()
mavenCentral()
}
dependencies {
implementation "org.jetbrains.kotlin:kotlin-stdlib:$kotlin_version"
implementation "org.jetbrains.kotlinx:kotlinx-serialization-json:1.6.2"
implementation "org.jetbrains.kotlin:annotation-processor-example:$kotlin_version"
kapt "org.jetbrains.kotlin:annotation-processor-example:$kotlin_version"
}
@@ -0,0 +1,6 @@
package foo
import kotlinx.serialization.Serializable
@Serializable
class Data(val x: Int)
@@ -1,5 +1,3 @@
import org.jetbrains.kotlin.gradle.tasks.KotlinJvmCompile
plugins {
id "java"
id "org.jetbrains.kotlin.jvm"
@@ -17,7 +15,3 @@ dependencies {
kapt "org.jetbrains.kotlin:annotation-processor-example:$kotlin_version"
testImplementation 'junit:junit:4.13.2'
}
tasks.named("compileKotlin", KotlinJvmCompile) {
compilerOptions.allWarningsAsErrors = false // compilation with LV=2.0 prints warning about kapt fallback
}