[KAPT4] Create basic infrastructure for KAPT4
This commit is contained in:
committed by
Space Team
parent
fc57f48c8f
commit
083f54aceb
@@ -114,7 +114,12 @@ private fun transformKaptToolArgs(args: List<String>, messageCollector: MessageC
|
||||
}
|
||||
|
||||
if (!aptModePassed) {
|
||||
transformed.addAll(0, kaptArg(KaptCliOption.APT_MODE_OPTION, "compile"))
|
||||
val isK2 = "-Xuse-kapt4" in transformed && ("-Xuse-k2" in transformed ||
|
||||
transformed.any { it.startsWith("-language-version=2") } ||
|
||||
transformed.lastIndexOf("-language-version").takeIf { it >= 0 }
|
||||
?.let { transformed.getOrNull(it + 1)?.startsWith('2') } == true)
|
||||
|
||||
transformed.addAll(0, kaptArg(KaptCliOption.APT_MODE_OPTION, if (isK2) "stubsAndApt" else "compile"))
|
||||
}
|
||||
|
||||
if (!isTest && !isAtLeastJava9() && !areJavacComponentsAvailable() && !toolsJarPassed) {
|
||||
|
||||
@@ -47,8 +47,7 @@ output/sources/generated/Test.java
|
||||
Test.kt
|
||||
|
||||
# output
|
||||
warning: kapt currently doesn't support language version 2.0+.
|
||||
Falling back to 1.9.
|
||||
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%
|
||||
|
||||
@@ -21,13 +21,13 @@ import com.intellij.openapi.project.Project
|
||||
import org.jetbrains.kotlin.analyzer.AnalysisResult
|
||||
import org.jetbrains.kotlin.base.kapt3.*
|
||||
import org.jetbrains.kotlin.cli.common.CLIConfigurationKeys
|
||||
import org.jetbrains.kotlin.cli.common.messages.CompilerMessageSeverity
|
||||
import org.jetbrains.kotlin.cli.common.messages.MessageRenderer
|
||||
import org.jetbrains.kotlin.cli.common.messages.PrintingMessageCollector
|
||||
import org.jetbrains.kotlin.cli.jvm.config.JavaSourceRoot
|
||||
import org.jetbrains.kotlin.cli.jvm.config.JvmClasspathRoot
|
||||
import org.jetbrains.kotlin.compiler.plugin.*
|
||||
import org.jetbrains.kotlin.config.CommonConfigurationKeys
|
||||
import org.jetbrains.kotlin.config.CommonConfigurationKeys.USE_FIR
|
||||
import org.jetbrains.kotlin.config.CompilerConfiguration
|
||||
import org.jetbrains.kotlin.config.CompilerConfigurationKey
|
||||
import org.jetbrains.kotlin.config.JVMConfigurationKeys
|
||||
@@ -59,7 +59,7 @@ import java.io.File
|
||||
import java.io.ObjectInputStream
|
||||
import java.util.*
|
||||
|
||||
private val KAPT_OPTIONS = CompilerConfigurationKey.create<KaptOptions.Builder>("Kapt options")
|
||||
val KAPT_OPTIONS = CompilerConfigurationKey.create<KaptOptions.Builder>("Kapt options")
|
||||
|
||||
class Kapt3CommandLineProcessor : CommandLineProcessor {
|
||||
override val pluginId: String = ANNOTATION_PROCESSING_COMPILER_PLUGIN_ID
|
||||
@@ -71,12 +71,6 @@ class Kapt3CommandLineProcessor : CommandLineProcessor {
|
||||
if (option !is KaptCliOption) {
|
||||
throw CliOptionProcessingException("Unknown option: ${option.optionName}")
|
||||
}
|
||||
if (configuration.getBoolean(CommonConfigurationKeys.USE_FIR)) {
|
||||
configuration[CLIConfigurationKeys.MESSAGE_COLLECTOR_KEY]?.report(
|
||||
CompilerMessageSeverity.ERROR,
|
||||
"kapt currently doesn't support language version 2.0\nPlease use language version 1.9 or below"
|
||||
)
|
||||
}
|
||||
|
||||
val kaptOptions = configuration[KAPT_OPTIONS]
|
||||
?: KaptOptions.Builder().also { configuration.put(KAPT_OPTIONS, it) }
|
||||
@@ -173,6 +167,7 @@ class Kapt3CommandLineProcessor : CommandLineProcessor {
|
||||
@Suppress("DEPRECATION")
|
||||
class Kapt3ComponentRegistrar : ComponentRegistrar {
|
||||
override fun registerProjectComponents(project: MockProject, configuration: CompilerConfiguration) {
|
||||
if (configuration.getBoolean(USE_FIR)) return
|
||||
doOpenInternalPackagesIfRequired()
|
||||
val contentRoots = configuration[CLIConfigurationKeys.CONTENT_ROOTS] ?: emptyList()
|
||||
|
||||
|
||||
Reference in New Issue
Block a user