Kapt: remove support for old JVM backend
#KT-64680 Fixed
This commit is contained in:
committed by
Space Team
parent
c251eb19a6
commit
a9f85d75f4
+5
-12
@@ -15,7 +15,9 @@ import org.gradle.api.artifacts.ExternalDependency
|
|||||||
import org.gradle.api.attributes.Usage
|
import org.gradle.api.attributes.Usage
|
||||||
import org.gradle.api.file.FileCollection
|
import org.gradle.api.file.FileCollection
|
||||||
import org.gradle.api.provider.Provider
|
import org.gradle.api.provider.Provider
|
||||||
import org.gradle.api.tasks.*
|
import org.gradle.api.tasks.SourceSet
|
||||||
|
import org.gradle.api.tasks.TaskDependency
|
||||||
|
import org.gradle.api.tasks.TaskProvider
|
||||||
import org.gradle.api.tasks.compile.AbstractCompile
|
import org.gradle.api.tasks.compile.AbstractCompile
|
||||||
import org.gradle.api.tasks.compile.JavaCompile
|
import org.gradle.api.tasks.compile.JavaCompile
|
||||||
import org.gradle.process.CommandLineArgumentProvider
|
import org.gradle.process.CommandLineArgumentProvider
|
||||||
@@ -23,18 +25,15 @@ import org.gradle.tooling.provider.model.ToolingModelBuilderRegistry
|
|||||||
import org.jetbrains.kotlin.gradle.internal.Kapt3GradleSubplugin.Companion.isInfoAsWarnings
|
import org.jetbrains.kotlin.gradle.internal.Kapt3GradleSubplugin.Companion.isInfoAsWarnings
|
||||||
import org.jetbrains.kotlin.gradle.internal.Kapt3GradleSubplugin.Companion.isKaptKeepKdocCommentsInStubs
|
import org.jetbrains.kotlin.gradle.internal.Kapt3GradleSubplugin.Companion.isKaptKeepKdocCommentsInStubs
|
||||||
import org.jetbrains.kotlin.gradle.internal.Kapt3GradleSubplugin.Companion.isKaptVerbose
|
import org.jetbrains.kotlin.gradle.internal.Kapt3GradleSubplugin.Companion.isKaptVerbose
|
||||||
import org.jetbrains.kotlin.gradle.internal.Kapt3GradleSubplugin.Companion.isUseJvmIr
|
|
||||||
import org.jetbrains.kotlin.gradle.internal.Kapt3GradleSubplugin.Companion.isUseK2
|
import org.jetbrains.kotlin.gradle.internal.Kapt3GradleSubplugin.Companion.isUseK2
|
||||||
import org.jetbrains.kotlin.gradle.model.builder.KaptModelBuilder
|
import org.jetbrains.kotlin.gradle.model.builder.KaptModelBuilder
|
||||||
import org.jetbrains.kotlin.gradle.plugin.*
|
import org.jetbrains.kotlin.gradle.plugin.*
|
||||||
import org.jetbrains.kotlin.gradle.plugin.mpp.KotlinJvmAndroidCompilation
|
import org.jetbrains.kotlin.gradle.plugin.mpp.KotlinJvmAndroidCompilation
|
||||||
import org.jetbrains.kotlin.gradle.plugin.mpp.KotlinWithJavaCompilation
|
import org.jetbrains.kotlin.gradle.plugin.mpp.KotlinWithJavaCompilation
|
||||||
import org.jetbrains.kotlin.gradle.tasks.*
|
import org.jetbrains.kotlin.gradle.tasks.*
|
||||||
import org.jetbrains.kotlin.gradle.tasks.configuration.*
|
import org.jetbrains.kotlin.gradle.tasks.configuration.KaptGenerateStubsConfig
|
||||||
|
import org.jetbrains.kotlin.gradle.tasks.configuration.KaptWithoutKotlincConfig
|
||||||
import org.jetbrains.kotlin.gradle.utils.*
|
import org.jetbrains.kotlin.gradle.utils.*
|
||||||
import org.jetbrains.kotlin.gradle.utils.createResolvable
|
|
||||||
import org.jetbrains.kotlin.gradle.utils.findResolvable
|
|
||||||
import org.jetbrains.kotlin.gradle.utils.whenEvaluated
|
|
||||||
import org.jetbrains.kotlin.util.capitalizeDecapitalize.capitalizeAsciiOnly
|
import org.jetbrains.kotlin.util.capitalizeDecapitalize.capitalizeAsciiOnly
|
||||||
import java.io.ByteArrayOutputStream
|
import java.io.ByteArrayOutputStream
|
||||||
import java.io.File
|
import java.io.File
|
||||||
@@ -124,10 +123,6 @@ class Kapt3GradleSubplugin @Inject internal constructor(private val registry: To
|
|||||||
return getBooleanOptionValue(BooleanOption.KAPT_KEEP_KDOC_COMMENTS_IN_STUBS)
|
return getBooleanOptionValue(BooleanOption.KAPT_KEEP_KDOC_COMMENTS_IN_STUBS)
|
||||||
}
|
}
|
||||||
|
|
||||||
fun Project.isUseJvmIr(): Boolean {
|
|
||||||
return getBooleanOptionValue(BooleanOption.KAPT_USE_JVM_IR)
|
|
||||||
}
|
|
||||||
|
|
||||||
fun Project.isUseK2(): Boolean {
|
fun Project.isUseK2(): Boolean {
|
||||||
return getBooleanOptionValue(BooleanOption.KAPT_USE_K2)
|
return getBooleanOptionValue(BooleanOption.KAPT_USE_K2)
|
||||||
}
|
}
|
||||||
@@ -223,7 +218,6 @@ class Kapt3GradleSubplugin @Inject internal constructor(private val registry: To
|
|||||||
KAPT_INFO_AS_WARNINGS("kapt.info.as.warnings", false),
|
KAPT_INFO_AS_WARNINGS("kapt.info.as.warnings", false),
|
||||||
KAPT_INCLUDE_COMPILE_CLASSPATH("kapt.include.compile.classpath", true),
|
KAPT_INCLUDE_COMPILE_CLASSPATH("kapt.include.compile.classpath", true),
|
||||||
KAPT_KEEP_KDOC_COMMENTS_IN_STUBS("kapt.keep.kdoc.comments.in.stubs", true),
|
KAPT_KEEP_KDOC_COMMENTS_IN_STUBS("kapt.keep.kdoc.comments.in.stubs", true),
|
||||||
KAPT_USE_JVM_IR("kapt.use.jvm.ir", true),
|
|
||||||
KAPT_USE_K2("kapt.use.k2", false),
|
KAPT_USE_K2("kapt.use.k2", false),
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@@ -544,7 +538,6 @@ internal fun buildKaptSubpluginOptions(
|
|||||||
pluginOptions += SubpluginOption("keepKdocCommentsInStubs", "${project.isKaptKeepKdocCommentsInStubs()}")
|
pluginOptions += SubpluginOption("keepKdocCommentsInStubs", "${project.isKaptKeepKdocCommentsInStubs()}")
|
||||||
pluginOptions += SubpluginOption("showProcessorTimings", "${kaptExtension.showProcessorStats}")
|
pluginOptions += SubpluginOption("showProcessorTimings", "${kaptExtension.showProcessorStats}")
|
||||||
pluginOptions += SubpluginOption("detectMemoryLeaks", kaptExtension.detectMemoryLeaks)
|
pluginOptions += SubpluginOption("detectMemoryLeaks", kaptExtension.detectMemoryLeaks)
|
||||||
pluginOptions += SubpluginOption("useJvmIr", "${project.isUseJvmIr()}")
|
|
||||||
pluginOptions += SubpluginOption("useK2", "${project.isUseK2()}")
|
pluginOptions += SubpluginOption("useK2", "${project.isUseK2()}")
|
||||||
pluginOptions += SubpluginOption("infoAsWarnings", "${project.isInfoAsWarnings()}")
|
pluginOptions += SubpluginOption("infoAsWarnings", "${project.isInfoAsWarnings()}")
|
||||||
pluginOptions += FilesSubpluginOption("stubs", kaptStubsDir)
|
pluginOptions += FilesSubpluginOption("stubs", kaptStubsDir)
|
||||||
|
|||||||
@@ -129,7 +129,6 @@ enum class KaptFlag(val description: String, val defaultValue: Boolean = false)
|
|||||||
INCREMENTAL_APT("Incremental annotation processing (apt mode)"),
|
INCREMENTAL_APT("Incremental annotation processing (apt mode)"),
|
||||||
STRIP_METADATA("Strip @Metadata annotations from stubs"),
|
STRIP_METADATA("Strip @Metadata annotations from stubs"),
|
||||||
KEEP_KDOC_COMMENTS_IN_STUBS("Keep KDoc comments in stubs", defaultValue = true),
|
KEEP_KDOC_COMMENTS_IN_STUBS("Keep KDoc comments in stubs", defaultValue = true),
|
||||||
USE_JVM_IR("Use JVM IR backend", defaultValue = true),
|
|
||||||
;
|
;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@@ -214,13 +214,6 @@ enum class KaptCliOption(
|
|||||||
"Keep KDoc comments in stubs"
|
"Keep KDoc comments in stubs"
|
||||||
),
|
),
|
||||||
|
|
||||||
USE_JVM_IR(
|
|
||||||
"useJvmIr",
|
|
||||||
"true | false",
|
|
||||||
"Use JVM IR backend",
|
|
||||||
cliToolOption = CliToolOption("-Kapt-use-jvm-ir", FLAG)
|
|
||||||
),
|
|
||||||
|
|
||||||
USE_K2(
|
USE_K2(
|
||||||
"useK2",
|
"useK2",
|
||||||
"true | false",
|
"true | false",
|
||||||
|
|||||||
@@ -26,7 +26,6 @@ import org.jetbrains.kotlin.cli.common.messages.MessageCollector
|
|||||||
import org.jetbrains.kotlin.cli.common.messages.OutputMessageUtil
|
import org.jetbrains.kotlin.cli.common.messages.OutputMessageUtil
|
||||||
import org.jetbrains.kotlin.cli.common.output.writeAll
|
import org.jetbrains.kotlin.cli.common.output.writeAll
|
||||||
import org.jetbrains.kotlin.codegen.ClassBuilderMode
|
import org.jetbrains.kotlin.codegen.ClassBuilderMode
|
||||||
import org.jetbrains.kotlin.codegen.DefaultCodegenFactory
|
|
||||||
import org.jetbrains.kotlin.codegen.KotlinCodegenFacade
|
import org.jetbrains.kotlin.codegen.KotlinCodegenFacade
|
||||||
import org.jetbrains.kotlin.codegen.OriginCollectingClassBuilderFactory
|
import org.jetbrains.kotlin.codegen.OriginCollectingClassBuilderFactory
|
||||||
import org.jetbrains.kotlin.codegen.state.GenerationState
|
import org.jetbrains.kotlin.codegen.state.GenerationState
|
||||||
@@ -246,19 +245,15 @@ abstract class AbstractKapt3Extension(
|
|||||||
type = "java-production"
|
type = "java-production"
|
||||||
)
|
)
|
||||||
|
|
||||||
val isIrBackend = options.flags[KaptFlag.USE_JVM_IR]
|
|
||||||
val generationState = GenerationState.Builder(project, builderFactory, module, bindingContext, configuration)
|
val generationState = GenerationState.Builder(project, builderFactory, module, bindingContext, configuration)
|
||||||
.targetId(targetId)
|
.targetId(targetId)
|
||||||
.isIrBackend(isIrBackend)
|
|
||||||
.build()
|
.build()
|
||||||
|
|
||||||
val (classFilesCompilationTime) = measureTimeMillis {
|
val (classFilesCompilationTime) = measureTimeMillis {
|
||||||
KotlinCodegenFacade.compileCorrectFiles(
|
KotlinCodegenFacade.compileCorrectFiles(
|
||||||
files,
|
files,
|
||||||
generationState,
|
generationState,
|
||||||
if (isIrBackend)
|
JvmIrCodegenFactory(configuration, configuration[CLIConfigurationKeys.PHASE_CONFIG])
|
||||||
JvmIrCodegenFactory(configuration, configuration[CLIConfigurationKeys.PHASE_CONFIG])
|
|
||||||
else DefaultCodegenFactory
|
|
||||||
)
|
)
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@@ -123,7 +123,6 @@ class Kapt3CommandLineProcessor : CommandLineProcessor {
|
|||||||
STRICT_MODE_OPTION -> setFlag(KaptFlag.STRICT, value)
|
STRICT_MODE_OPTION -> setFlag(KaptFlag.STRICT, value)
|
||||||
STRIP_METADATA_OPTION -> setFlag(KaptFlag.STRIP_METADATA, value)
|
STRIP_METADATA_OPTION -> setFlag(KaptFlag.STRIP_METADATA, value)
|
||||||
KEEP_KDOC_COMMENTS_IN_STUBS -> setFlag(KaptFlag.KEEP_KDOC_COMMENTS_IN_STUBS, value)
|
KEEP_KDOC_COMMENTS_IN_STUBS -> setFlag(KaptFlag.KEEP_KDOC_COMMENTS_IN_STUBS, value)
|
||||||
USE_JVM_IR -> setFlag(KaptFlag.USE_JVM_IR, value)
|
|
||||||
USE_K2 -> {}
|
USE_K2 -> {}
|
||||||
|
|
||||||
SHOW_PROCESSOR_STATS -> setFlag(KaptFlag.SHOW_PROCESSOR_STATS, value)
|
SHOW_PROCESSOR_STATS -> setFlag(KaptFlag.SHOW_PROCESSOR_STATS, value)
|
||||||
|
|||||||
+2
-8
@@ -123,8 +123,6 @@ class ClassFileToSourceStubConverter(val kaptContext: KaptContextForStubGenerati
|
|||||||
|
|
||||||
private val mutableBindings = mutableMapOf<String, KaptJavaFileObject>()
|
private val mutableBindings = mutableMapOf<String, KaptJavaFileObject>()
|
||||||
|
|
||||||
private val isIrBackend = kaptContext.generationState.isIrBackend
|
|
||||||
|
|
||||||
val bindings: Map<String, KaptJavaFileObject>
|
val bindings: Map<String, KaptJavaFileObject>
|
||||||
get() = mutableBindings
|
get() = mutableBindings
|
||||||
|
|
||||||
@@ -684,15 +682,11 @@ class ClassFileToSourceStubConverter(val kaptContext: KaptContextForStubGenerati
|
|||||||
val origin = kaptContext.origins[field]
|
val origin = kaptContext.origins[field]
|
||||||
val descriptor = origin?.descriptor
|
val descriptor = origin?.descriptor
|
||||||
|
|
||||||
val fieldAnnotations = when {
|
|
||||||
!isIrBackend && descriptor is PropertyDescriptor -> descriptor.backingField?.annotations
|
|
||||||
else -> descriptor?.annotations
|
|
||||||
} ?: Annotations.EMPTY
|
|
||||||
|
|
||||||
val modifiers = convertModifiers(
|
val modifiers = convertModifiers(
|
||||||
containingClass,
|
containingClass,
|
||||||
field.access, ElementKind.FIELD, packageFqName,
|
field.access, ElementKind.FIELD, packageFqName,
|
||||||
field.visibleAnnotations, field.invisibleAnnotations, fieldAnnotations
|
field.visibleAnnotations, field.invisibleAnnotations,
|
||||||
|
descriptor?.annotations ?: Annotations.EMPTY,
|
||||||
)
|
)
|
||||||
|
|
||||||
val name = field.name
|
val name = field.name
|
||||||
|
|||||||
+1
-13
@@ -14,23 +14,11 @@ import org.jetbrains.kotlin.load.java.JvmAnnotationNames
|
|||||||
import org.jetbrains.kotlin.test.Assertions
|
import org.jetbrains.kotlin.test.Assertions
|
||||||
import org.jetbrains.kotlin.test.model.TestModule
|
import org.jetbrains.kotlin.test.model.TestModule
|
||||||
import org.jetbrains.kotlin.test.utils.withExtension
|
import org.jetbrains.kotlin.test.utils.withExtension
|
||||||
import org.jetbrains.kotlin.test.utils.withSuffixAndExtension
|
|
||||||
|
|
||||||
fun Assertions.checkTxtAccordingToBackend(module: TestModule, actual: String, fileSuffix: String = "") {
|
fun Assertions.checkTxtAccordingToBackend(module: TestModule, actual: String, fileSuffix: String = "") {
|
||||||
val testDataFile = module.files.first().originalFile
|
val testDataFile = module.files.first().originalFile
|
||||||
val txtFile = testDataFile.withExtension("$fileSuffix.txt")
|
val expectedFile = testDataFile.withExtension("$fileSuffix.txt")
|
||||||
val irTxtFile = testDataFile.withSuffixAndExtension("$fileSuffix.ir", ".txt")
|
|
||||||
val isIr = module.targetBackend?.isIR == true
|
|
||||||
val expectedFile = if (isIr && irTxtFile.exists()) {
|
|
||||||
irTxtFile
|
|
||||||
} else {
|
|
||||||
txtFile
|
|
||||||
}
|
|
||||||
assertEqualsToFile(expectedFile, actual)
|
assertEqualsToFile(expectedFile, actual)
|
||||||
|
|
||||||
if (isIr && txtFile.exists() && irTxtFile.exists() && txtFile.readText() == irTxtFile.readText()) {
|
|
||||||
fail { "JVM and JVM_IR golden files are identical. Remove $irTxtFile." }
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
|
||||||
private val KOTLIN_METADATA_REGEX = "@kotlin\\.Metadata\\(.*\\)".toRegex()
|
private val KOTLIN_METADATA_REGEX = "@kotlin\\.Metadata\\(.*\\)".toRegex()
|
||||||
|
|||||||
@@ -160,19 +160,11 @@ internal class Kapt4Handler(testServices: TestServices) : AnalysisHandler<Kapt4C
|
|||||||
fun Assertions.checkTxt(module: TestModule, actual: String) {
|
fun Assertions.checkTxt(module: TestModule, actual: String) {
|
||||||
val testDataFile = module.files.first().originalFile
|
val testDataFile = module.files.first().originalFile
|
||||||
val firFile = testDataFile.withExtension("fir.txt")
|
val firFile = testDataFile.withExtension("fir.txt")
|
||||||
val irFile = testDataFile.withExtension("ir.txt")
|
|
||||||
val txtFile = testDataFile.withExtension("txt")
|
val txtFile = testDataFile.withExtension("txt")
|
||||||
val expectedFile = sequenceOf(firFile, irFile, txtFile)
|
val expectedFile = if (firFile.exists()) firFile else txtFile
|
||||||
.firstOrNull { it.exists() } ?: firFile
|
|
||||||
|
|
||||||
assertEqualsToFile(expectedFile, actual)
|
assertEqualsToFile(expectedFile, actual)
|
||||||
if (firFile.exists()) {
|
if (firFile.exists() && txtFile.exists() && txtFile.readText() == firFile.readText()) {
|
||||||
if (irFile.exists()) {
|
fail { ".fir.txt and .txt golden files are identical. Remove $firFile." }
|
||||||
if (irFile.readText() == firFile.readText()) {
|
|
||||||
fail { ".fir.txt and .ir.txt golden files are identical. Remove $firFile." }
|
|
||||||
}
|
|
||||||
} else if (txtFile.exists() && txtFile.readText() == firFile.readText()) {
|
|
||||||
fail { ".fir.txt and .txt golden files are identical. Remove $firFile." }
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
Reference in New Issue
Block a user