KT-64385 Enable K2 KAPT by default

Also adds support for front-end compiler plugins in Kapt
This commit is contained in:
strangepleasures
2024-01-15 10:22:32 +00:00
committed by Space Team
parent 8156c91c47
commit 7e9d6e601d
58 changed files with 218 additions and 476 deletions
@@ -1,19 +0,0 @@
package test
import apt.Anno
import generated.Test as TestGenerated
@Anno
class Test {
@field:Anno
val property: String = ""
@Anno
fun function() {
}
}
fun main() {
println("Generated class: " + TestGenerated::class.java.name)
}
@@ -1,34 +0,0 @@
package apt
import javax.annotation.processing.*
import javax.lang.model.SourceVersion
import javax.lang.model.element.TypeElement
import javax.tools.Diagnostic.Kind.*
import javax.tools.StandardLocation
annotation class Anno
class SampleApt : AbstractProcessor() {
override fun process(annotations: Set<TypeElement>, roundEnv: RoundEnvironment): Boolean {
val writeKotlinFiles = processingEnv.options["kapt.test.writeKotlinFiles"] == "true"
for (element in roundEnv.getElementsAnnotatedWith(Anno::class.java)) {
val generatedSimpleName = element.simpleName.toString().capitalize()
val file = when (writeKotlinFiles) {
true -> processingEnv.filer.createResource(StandardLocation.SOURCE_OUTPUT, "generated", "$generatedSimpleName.kt")
false -> processingEnv.filer.createSourceFile("generated.$generatedSimpleName")
}
file.openWriter().use {
it.write("package generated;\npublic class $generatedSimpleName {}")
}
}
return true
}
override fun getSupportedOptions() = setOf("kapt.test.writeKotlinFiles")
override fun getSupportedSourceVersion() = SourceVersion.RELEASE_8
override fun getSupportedAnnotationTypes() = setOf("apt.Anno")
}
@@ -1,69 +0,0 @@
# mkdir
output/stubs
output/classes
output/javaClasses
output/sources
output/stubsAlt
output/classesAlt
output/javaClassesAlt
output/sourcesAlt
# kotlinc
-language-version 2.0
-cp %KOTLIN_STDLIB%
-d output/ap.jar
ap/Processor.kt
# copy
ap/META-INF/services/javax.annotation.processing.Processor
output/ap/META-INF/services/javax.annotation.processing.Processor
# kapt
-Xuse-k2
-Kapt-stubs=output/stubs
-Kapt-classes=output/classes
-Kapt-sources=output/sources
-Kapt-classpath=output/ap
-d output/classes
-cp output/ap.jar:%KOTLIN_STDLIB%
Test.kt
# javac
-cp output/ap.jar
-d output/javaClasses
-proc:none
output/sources/generated/Function.java
output/sources/generated/Property.java
output/sources/generated/Test.java
# kapt
-language-version 2.0
-Kapt-stubs=output/stubsAlt
-Kapt-classes=output/classesAlt
-Kapt-sources=output/sourcesAlt
-Kapt-classpath=output/ap
-d output/classesAlt
-cp output/ap.jar:%KOTLIN_STDLIB%
Test.kt
# output
warning: kapt currently doesn't support language version 2.0+. Falling back to 1.9.
# java
-cp output/classes:output/javaClasses:output/ap.jar:%KOTLIN_STDLIB%
test.TestKt
# javac
-cp output/ap.jar
-d output/javaClassesAlt
-proc:none
output/sourcesAlt/generated/Function.java
output/sourcesAlt/generated/Property.java
output/sourcesAlt/generated/Test.java
# java
-cp output/classes:output/javaClassesAlt:output/ap.jar:%KOTLIN_STDLIB%
test.TestKt
# after
Generated class: generated.Test