diff --git a/compiler/cli/cli-common/gen/org/jetbrains/kotlin/cli/common/arguments/K2JVMCompilerArgumentsCopyGenerated.kt b/compiler/cli/cli-common/gen/org/jetbrains/kotlin/cli/common/arguments/K2JVMCompilerArgumentsCopyGenerated.kt index 6f50b164cae..f125da99d21 100644 --- a/compiler/cli/cli-common/gen/org/jetbrains/kotlin/cli/common/arguments/K2JVMCompilerArgumentsCopyGenerated.kt +++ b/compiler/cli/cli-common/gen/org/jetbrains/kotlin/cli/common/arguments/K2JVMCompilerArgumentsCopyGenerated.kt @@ -78,7 +78,6 @@ fun copyK2JVMCompilerArguments(from: K2JVMCompilerArguments, to: K2JVMCompilerAr to.typeEnhancementImprovementsInStrictMode = from.typeEnhancementImprovementsInStrictMode to.useFastJarFileSystem = from.useFastJarFileSystem to.useJavac = from.useJavac - to.useKapt4 = from.useKapt4 to.useOldBackend = from.useOldBackend to.useOldClassFilesReading = from.useOldClassFilesReading to.useOldInlineClassesManglingScheme = from.useOldInlineClassesManglingScheme diff --git a/compiler/cli/cli-common/src/org/jetbrains/kotlin/cli/common/arguments/K2JVMCompilerArguments.kt b/compiler/cli/cli-common/src/org/jetbrains/kotlin/cli/common/arguments/K2JVMCompilerArguments.kt index 146457dcae7..b214ad37aea 100644 --- a/compiler/cli/cli-common/src/org/jetbrains/kotlin/cli/common/arguments/K2JVMCompilerArguments.kt +++ b/compiler/cli/cli-common/src/org/jetbrains/kotlin/cli/common/arguments/K2JVMCompilerArguments.kt @@ -845,16 +845,6 @@ This option is deprecated and will be deleted in future versions.""" field = value } - @Argument( - value = "-Xuse-kapt4", - description = "Enable the experimental KAPT 4." - ) - var useKapt4 = false - set(value) { - checkFrozen() - field = value - } - override fun configureAnalysisFlags(collector: MessageCollector, languageVersion: LanguageVersion): MutableMap, Any> { val result = super.configureAnalysisFlags(collector, languageVersion) result[JvmAnalysisFlags.strictMetadataVersionSemantics] = strictMetadataVersionSemantics diff --git a/compiler/cli/src/org/jetbrains/kotlin/cli/common/arguments.kt b/compiler/cli/src/org/jetbrains/kotlin/cli/common/arguments.kt index 70cd63a4bd2..cc951af9412 100644 --- a/compiler/cli/src/org/jetbrains/kotlin/cli/common/arguments.kt +++ b/compiler/cli/src/org/jetbrains/kotlin/cli/common/arguments.kt @@ -8,7 +8,6 @@ package org.jetbrains.kotlin.cli.common import com.intellij.ide.highlighter.JavaFileType import org.jetbrains.kotlin.cli.common.arguments.CommonCompilerArguments import org.jetbrains.kotlin.cli.common.arguments.CommonToolArguments -import org.jetbrains.kotlin.cli.common.arguments.K2JVMCompilerArguments import org.jetbrains.kotlin.cli.common.arguments.ManualLanguageFeatureSetting import org.jetbrains.kotlin.cli.common.messages.CompilerMessageSeverity import org.jetbrains.kotlin.cli.common.messages.MessageCollector @@ -48,7 +47,6 @@ fun CompilerConfiguration.setupCommonArguments( } } - switchToFallbackModeIfNecessary(arguments, messageCollector) setupLanguageVersionSettings(arguments) val usesK2 = arguments.useK2 || languageVersionSettings.languageVersion.usesK2 @@ -57,34 +55,6 @@ fun CompilerConfiguration.setupCommonArguments( buildHmppModuleStructure(arguments)?.let { put(CommonConfigurationKeys.HMPP_MODULE_STRUCTURE, it) } } -private fun switchToFallbackModeIfNecessary(arguments: CommonCompilerArguments, messageCollector: MessageCollector) { - fun warn(message: String) { - if (!arguments.suppressVersionWarnings) messageCollector.report(CompilerMessageSeverity.STRONG_WARNING, message) - } - - if (arguments !is K2JVMCompilerArguments) return - val isK2 = - arguments.useK2 || (arguments.languageVersion?.startsWith('2') ?: (LanguageVersion.LATEST_STABLE >= LanguageVersion.KOTLIN_2_0)) - val isKaptUsed = arguments.pluginOptions?.any { it.startsWith("plugin:org.jetbrains.kotlin.kapt3") } == true - when { - isK2 && isKaptUsed && !arguments.useKapt4 -> { - warn("Kapt currently doesn't support language version 2.0+. Falling back to 1.9.") - arguments.languageVersion = LanguageVersion.KOTLIN_1_9.versionString - if (arguments.apiVersion?.startsWith("2") == true) { - arguments.apiVersion = ApiVersion.KOTLIN_1_9.versionString - } - arguments.useK2 = false - arguments.skipMetadataVersionCheck = true - arguments.skipPrereleaseCheck = true - arguments.allowUnstableDependencies = true - } - arguments.useKapt4 -> warn( - if (isK2) "K2 kapt is an experimental feature. Use with caution." - else "-Xuse-kapt4 flag can be only used with language version 2.0+." - ) - } -} - fun CompilerConfiguration.setupLanguageVersionSettings(arguments: CommonCompilerArguments) { languageVersionSettings = arguments.toLanguageVersionSettings(getNotNull(CLIConfigurationKeys.MESSAGE_COLLECTOR_KEY)) } diff --git a/compiler/testData/cli/jvm/extraHelp.out b/compiler/testData/cli/jvm/extraHelp.out index 207dfc4b8c1..b3b543bc7ca 100644 --- a/compiler/testData/cli/jvm/extraHelp.out +++ b/compiler/testData/cli/jvm/extraHelp.out @@ -142,7 +142,6 @@ where advanced options include: See KT-45671 for more details. -Xuse-fast-jar-file-system Use the fast implementation of Jar FS. This may speed up compilation time, but it is experimental. -Xuse-javac Use javac for Java source and class file analysis. - -Xuse-kapt4 Enable the experimental KAPT 4. -Xuse-old-backend Use the old JVM backend. -Xuse-old-class-files-reading Use the old implementation for reading class files. This may slow down the compilation and cause problems with Groovy interop. This can be used in the event of problems with the new implementation. diff --git a/libraries/tools/kotlin-gradle-plugin-integration-tests/src/test/kotlin/org/jetbrains/kotlin/gradle/Kapt3AndGradleDaemon.kt b/libraries/tools/kotlin-gradle-plugin-integration-tests/src/test/kotlin/org/jetbrains/kotlin/gradle/Kapt3AndGradleDaemon.kt index f0d85163a63..30f3543d187 100644 --- a/libraries/tools/kotlin-gradle-plugin-integration-tests/src/test/kotlin/org/jetbrains/kotlin/gradle/Kapt3AndGradleDaemon.kt +++ b/libraries/tools/kotlin-gradle-plugin-integration-tests/src/test/kotlin/org/jetbrains/kotlin/gradle/Kapt3AndGradleDaemon.kt @@ -12,9 +12,9 @@ import org.jetbrains.kotlin.gradle.testbase.* import org.junit.jupiter.api.AfterEach import org.junit.jupiter.api.DisplayName -@DisplayName("Kapt caching inside Gradle daemon") +@DisplayName("Kapt3 caching inside Gradle daemon") @DaemonsGradlePluginTests -class Kapt3AndGradleDaemon : KGPDaemonsBaseTest() { +open class Kapt3AndGradleDaemon : KGPDaemonsBaseTest() { override val defaultBuildOptions: BuildOptions = super.defaultBuildOptions .copy( @@ -22,7 +22,7 @@ class Kapt3AndGradleDaemon : KGPDaemonsBaseTest() { verbose = true, includeCompileClasspath = false ) - ) + ).copyEnsuringK1() @DisplayName("Javac should be loaded only once") @GradleTest @@ -51,7 +51,7 @@ class Kapt3AndGradleDaemon : KGPDaemonsBaseTest() { // which is not compatible with classloaders caching. @GradleTestVersions(maxVersion = TestVersions.Gradle.G_7_6) @GradleTest - fun testAnnotationProcessorClassIsLoadedOnce(gradleVersion: GradleVersion) { + open fun testAnnotationProcessorClassIsLoadedOnce(gradleVersion: GradleVersion) { project( "javacIsLoadedOnce".withPrefix, gradleVersion, diff --git a/libraries/tools/kotlin-gradle-plugin-integration-tests/src/test/kotlin/org/jetbrains/kotlin/gradle/Kapt3IT.kt b/libraries/tools/kotlin-gradle-plugin-integration-tests/src/test/kotlin/org/jetbrains/kotlin/gradle/Kapt3IT.kt index f44abb3d075..7f83f91b610 100644 --- a/libraries/tools/kotlin-gradle-plugin-integration-tests/src/test/kotlin/org/jetbrains/kotlin/gradle/Kapt3IT.kt +++ b/libraries/tools/kotlin-gradle-plugin-integration-tests/src/test/kotlin/org/jetbrains/kotlin/gradle/Kapt3IT.kt @@ -145,18 +145,10 @@ open class Kapt3ClassLoadersCacheIT : Kapt3IT() { override fun useGeneratedKotlinSource(gradleVersion: GradleVersion) { } - @Disabled("classloaders cache is leaking file descriptors that prevents cleaning test project") - override fun useGeneratedKotlinSourceK2(gradleVersion: GradleVersion) { - } - @Disabled("classloaders cache is leaking file descriptors that prevents cleaning test project") override fun testMultipleProcessingPasses(gradleVersion: GradleVersion) { } - @Disabled("classloaders cache is leaking file descriptors that prevents cleaning test project") - override fun useK2KaptProperty(gradleVersion: GradleVersion) { - } - override fun testAnnotationProcessorAsFqName(gradleVersion: GradleVersion) { project("annotationProcessorAsFqName".withPrefix, gradleVersion) { //classloaders caching is not compatible with includeCompileClasspath @@ -1258,99 +1250,6 @@ open class Kapt3IT : Kapt3BaseIT() { } } - @DisplayName("Kapt runs in fallback mode with useK2 = true") - @GradleTest - open fun fallBackModeWithUseK2(gradleVersion: GradleVersion) { - project("simple".withPrefix, gradleVersion) { - buildGradle.appendText( - """ - |tasks.withType(org.jetbrains.kotlin.gradle.tasks.KotlinCompile).configureEach { - | compilerOptions { - | freeCompilerArgs.addAll([ - | "-Xuse-fir-ic", - | "-Xuse-fir-lt" - | ]) - | } - | kotlinOptions { - | useK2 = true - | } - |} - | - |compileKotlin.kotlinOptions.allWarningsAsErrors = false - """.trimMargin() - ) - build("build") { - assertKaptSuccessful() - assertTasksExecuted(":kaptGenerateStubsKotlin", ":kaptKotlin", ":compileKotlin") - assertOutputContains("Falling back to 1.9.") - } - } - } - - @DisplayName("Kapt runs in fallback mode with languageVersion = 2.0") - @GradleTest - open fun fallBackModeWithLanguageVersion2_0(gradleVersion: GradleVersion) { - project("simple".withPrefix, gradleVersion) { - buildGradle.appendText( - """ - |tasks.withType(org.jetbrains.kotlin.gradle.tasks.KotlinCompile).configureEach { - | compilerOptions { - | freeCompilerArgs.addAll([ - | "-Xuse-fir-ic", - | "-Xuse-fir-lt" - | ]) - | } - | kotlinOptions { - | languageVersion = "2.0" - | } - |} - | - |compileKotlin.kotlinOptions.allWarningsAsErrors = false - """.trimMargin() - ) - build("build") { - assertKaptSuccessful() - assertTasksExecuted(":kaptGenerateStubsKotlin", ":kaptKotlin", ":compileKotlin") - assertOutputContains("Falling back to 1.9.") - } - } - } - - @DisplayName("K2 Kapt can be enabled via Gradle property kapt.use.k2") - @GradleTest - open fun useK2KaptProperty(gradleVersion: GradleVersion) { - project("simple".withPrefix, gradleVersion) { - buildGradle.appendText( - """ - |tasks.withType(org.jetbrains.kotlin.gradle.tasks.KotlinCompile).configureEach { - | compilerOptions { - | freeCompilerArgs.addAll([ - | "-Xuse-fir-ic", - | "-Xuse-fir-lt" - | ]) - | } - | kotlinOptions { - | languageVersion = "2.0" - | } - |} - | - |compileKotlin.kotlinOptions.allWarningsAsErrors = false - """.trimMargin() - ) - build("-Pkapt.use.k2=true", "build") { - assertKaptSuccessful() - assertTasksExecuted(":kaptGenerateStubsKotlin", ":kaptKotlin", ":compileKotlin") - assertOutputDoesNotContain("Falling back to 1.9.") - assertOutputContains("K2 kapt is an experimental feature. Use with caution.") - } - build("-Pkapt.use.k2=true", "cleanCompileKotlin", "compileKotlin") { - assertTasksExecuted(":compileKotlin") - // The warning should not be displayed for the compile task. - assertOutputDoesNotContain("K2 kapt is an experimental feature. Use with caution.") - } - } - } - @DisplayName("Kapt-generated Kotlin sources can be used in Kotlin") @GradleTest open fun useGeneratedKotlinSource(gradleVersion: GradleVersion) { @@ -1362,35 +1261,6 @@ open class Kapt3IT : Kapt3BaseIT() { } } - @DisplayName("Kapt-generated Kotlin sources can be used in Kotlin with languageVersion = 2.0") - @GradleTest - open fun useGeneratedKotlinSourceK2(gradleVersion: GradleVersion) { - project("useGeneratedKotlinSource".withPrefix, gradleVersion) { - buildGradle.appendText( - """ - |tasks.withType(org.jetbrains.kotlin.gradle.tasks.KotlinCompile).configureEach { - | compilerOptions { - | freeCompilerArgs.addAll([ - | "-Xuse-fir-ic", - | "-Xuse-fir-lt" - | ]) - | } - | kotlinOptions { - | languageVersion = "2.0" - | } - |} - | - |compileKotlin.kotlinOptions.allWarningsAsErrors = false - """.trimMargin() - ) - build("build") { - assertKaptSuccessful() - assertTasksExecuted(":kaptGenerateStubsKotlin", ":kaptKotlin", ":compileKotlin") - assertOutputContains("Falling back to 1.9.") - } - } - } - @DisplayName("KT-58745: compiler plugin options should be passed to KaptGenerateStubs task") @GradleTest fun kaptGenerateStubsConfiguredWithCompilerPluginOptions(gradleVersion: GradleVersion) { diff --git a/libraries/tools/kotlin-gradle-plugin-integration-tests/src/test/kotlin/org/jetbrains/kotlin/gradle/Kapt4AndGradleDaemon.kt b/libraries/tools/kotlin-gradle-plugin-integration-tests/src/test/kotlin/org/jetbrains/kotlin/gradle/Kapt4AndGradleDaemon.kt new file mode 100644 index 00000000000..647cc10f1dc --- /dev/null +++ b/libraries/tools/kotlin-gradle-plugin-integration-tests/src/test/kotlin/org/jetbrains/kotlin/gradle/Kapt4AndGradleDaemon.kt @@ -0,0 +1,21 @@ +/* + * Copyright 2010-2024 JetBrains s.r.o. and Kotlin Programming Language contributors. + * Use of this source code is governed by the Apache 2.0 license that can be found in the license/LICENSE.txt file. + */ + +package org.jetbrains.kotlin.gradle + +import org.gradle.util.GradleVersion +import org.jetbrains.kotlin.gradle.testbase.BuildOptions +import org.jetbrains.kotlin.gradle.testbase.DaemonsGradlePluginTests +import org.junit.jupiter.api.Disabled +import org.junit.jupiter.api.DisplayName + +@DisplayName("Kapt4 caching inside Gradle daemon") +@DaemonsGradlePluginTests +class Kapt4AndGradleDaemon : Kapt3AndGradleDaemon() { + override val defaultBuildOptions: BuildOptions = super.defaultBuildOptions.copyEnsuringK2() + + @Disabled("KT-63102 Incremental compilation doesn't work in 2.0") + override fun testAnnotationProcessorClassIsLoadedOnce(gradleVersion: GradleVersion) {} +} \ No newline at end of file diff --git a/libraries/tools/kotlin-gradle-plugin-integration-tests/src/test/kotlin/org/jetbrains/kotlin/gradle/Kapt4IT.kt b/libraries/tools/kotlin-gradle-plugin-integration-tests/src/test/kotlin/org/jetbrains/kotlin/gradle/Kapt4IT.kt index 3b72c1d31ae..9e854f262ec 100644 --- a/libraries/tools/kotlin-gradle-plugin-integration-tests/src/test/kotlin/org/jetbrains/kotlin/gradle/Kapt4IT.kt +++ b/libraries/tools/kotlin-gradle-plugin-integration-tests/src/test/kotlin/org/jetbrains/kotlin/gradle/Kapt4IT.kt @@ -10,29 +10,24 @@ import org.jetbrains.kotlin.gradle.testbase.* import org.junit.jupiter.api.Disabled import org.junit.jupiter.api.DisplayName import kotlin.io.path.appendText -import kotlin.io.path.name -import kotlin.io.path.walk + @DisplayName("Kapt 4 base checks") class Kapt4IT : Kapt3IT() { override val defaultBuildOptions = super.defaultBuildOptions.copyEnsuringK2() - override fun TestProject.customizeProject() { - forceKapt4() + @DisplayName("Kapt doesn't run in fallback mode with languageVersion = 2.0") + @GradleTest + fun noFallBackModeWithLanguageVersion2_0(gradleVersion: GradleVersion) { + project("simple".withPrefix, gradleVersion) { + build("build") { + assertKaptSuccessful() + assertTasksExecuted(":kaptGenerateStubsKotlin", ":kaptKotlin", ":compileKotlin") + assertOutputDoesNotContain("Falling back to 1.9.") + } + } } - @Disabled("Doesn't make sense in Kapt 4") - override fun useGeneratedKotlinSourceK2(gradleVersion: GradleVersion) {} - - @Disabled("Doesn't make sense in Kapt 4") - override fun fallBackModeWithUseK2(gradleVersion: GradleVersion) {} - - @Disabled("Doesn't make sense in Kapt 4") - override fun fallBackModeWithLanguageVersion2_0(gradleVersion: GradleVersion) {} - - @Disabled("Doesn't make sense in Kapt 4") - override fun useK2KaptProperty(gradleVersion: GradleVersion) {} - @DisplayName("KT-61879: K2 KAPT works with proguarded compiler jars and enum class") @GradleTest fun testEnumClass(gradleVersion: GradleVersion) { @@ -50,57 +45,15 @@ class Kapt4IT : Kapt3IT() { class Kapt4ClassLoadersCacheIT : Kapt3ClassLoadersCacheIT() { override val defaultBuildOptions = super.defaultBuildOptions.copyEnsuringK2() - override fun TestProject.customizeProject() { - forceKapt4() - } - @Disabled("Enable when KT-61845 is fixed") override fun testKt18799(gradleVersion: GradleVersion) {} - @Disabled("Doesn't make sense in Kapt 4") - override fun useGeneratedKotlinSourceK2(gradleVersion: GradleVersion) {} - - @Disabled("Doesn't make sense in Kapt 4") - override fun fallBackModeWithUseK2(gradleVersion: GradleVersion) {} - - @Disabled("Doesn't make sense in Kapt 4") - override fun fallBackModeWithLanguageVersion2_0(gradleVersion: GradleVersion) {} - - @Disabled("Doesn't work in 2.0. Neither with Kapt 3 nor with Kapt 4") - override fun testMPPKaptPresence(gradleVersion: GradleVersion) {} - - @Disabled("Incremental compilation doesn't work in 2.0") + @Disabled("KT-63102 Incremental compilation doesn't work in 2.0") override fun testSimpleWithIC(gradleVersion: GradleVersion) {} - @Disabled("Incremental compilation doesn't work in 2.0") + @Disabled("KT-63102 Incremental compilation doesn't work in 2.0") override fun testSimpleWithIC_withClasspathSnapshot(gradleVersion: GradleVersion) {} -} -fun TestProject.forceKapt4() { - projectPath.walk().forEach { - when (it.fileName.name) { - "build.gradle" -> it.appendText( - """ - - pluginManager.withPlugin('kotlin') { - tasks.withType(org.jetbrains.kotlin.gradle.tasks.KotlinCompile).configureEach { - compilerOptions.freeCompilerArgs.addAll(['-Xuse-kapt4', '-Xsuppress-version-warnings']) - } - } - - """.trimIndent() - ) - "build.gradle.kts" -> it.appendText( - """ - - pluginManager.withPlugin("kotlin") { - tasks.withType(org.jetbrains.kotlin.gradle.tasks.KotlinJvmCompile::class.java).configureEach { - compilerOptions.freeCompilerArgs.addAll(listOf("-Xuse-kapt4", "-Xsuppress-version-warnings")) - } - } - - """.trimIndent() - ) - } - } + @Disabled("KT-63102 Incremental compilation doesn't work in 2.0") + override fun testChangeClasspathICRebuild(gradleVersion: GradleVersion) {} } diff --git a/libraries/tools/kotlin-gradle-plugin-integration-tests/src/test/kotlin/org/jetbrains/kotlin/gradle/KaptIncrementalIT.kt b/libraries/tools/kotlin-gradle-plugin-integration-tests/src/test/kotlin/org/jetbrains/kotlin/gradle/KaptIncrementalIT.kt index 901b9aed7f1..d9027bf7d70 100644 --- a/libraries/tools/kotlin-gradle-plugin-integration-tests/src/test/kotlin/org/jetbrains/kotlin/gradle/KaptIncrementalIT.kt +++ b/libraries/tools/kotlin-gradle-plugin-integration-tests/src/test/kotlin/org/jetbrains/kotlin/gradle/KaptIncrementalIT.kt @@ -3,6 +3,7 @@ package org.jetbrains.kotlin.gradle import org.gradle.api.logging.LogLevel import org.gradle.testkit.runner.BuildResult import org.gradle.util.GradleVersion +import org.jetbrains.kotlin.gradle.dsl.KotlinVersion import org.jetbrains.kotlin.gradle.testbase.* import org.junit.jupiter.api.DisplayName import java.io.File @@ -29,7 +30,7 @@ open class KaptIncrementalIT : KGPBaseTest() { override val defaultBuildOptions = super.defaultBuildOptions.copy( incremental = true, kaptOptions = BuildOptions.KaptOptions(incrementalKapt = true) - ) + ).copyEnsuringK1() protected open fun KGPBaseTest.kaptProject( gradleVersion: GradleVersion, @@ -186,8 +187,10 @@ open class KaptIncrementalIT : KGPBaseTest() { build("assemble") { assertKapt3FullyExecuted() - assertFileInProjectExists("$kapt3IncDataPath/bar/B.class") - assertFileInProjectExists("$kapt3IncDataPath/bar/UseBKt.class") + if (isIncrementalStubGenerationSupported) { + assertFileInProjectExists("$kapt3IncDataPath/bar/B.class") + assertFileInProjectExists("$kapt3IncDataPath/bar/UseBKt.class") + } assertFileInProjectExists("$kapt3StubsPath/bar/B.java") assertFileInProjectExists("$kapt3StubsPath/bar/B.kapt_metadata") assertFileInProjectExists("$kapt3StubsPath/bar/UseBKt.java") @@ -282,11 +285,13 @@ open class KaptIncrementalIT : KGPBaseTest() { assertKapt3FullyExecuted() val useBKt = javaSourcesDir().resolve("bar/useB.kt") - assertCompiledKotlinSources( - listOf(projectPath.relativize(bKt), projectPath.relativize(useBKt)), - getOutputForTask(":kaptGenerateStubsKotlin"), - errorMessageSuffix = " in task 'kaptGenerateStubsKotlin'" - ) + if (isIncrementalStubGenerationSupported) { + assertCompiledKotlinSources( + listOf(projectPath.relativize(bKt), projectPath.relativize(useBKt)), + getOutputForTask(":kaptGenerateStubsKotlin"), + errorMessageSuffix = " in task 'kaptGenerateStubsKotlin'" + ) + } // java removal is detected assertCompiledKotlinSources( @@ -343,17 +348,20 @@ open class KaptIncrementalIT : KGPBaseTest() { buildResult: BuildResult, sources: List ) { - assertCompiledKotlinSources( - sources, - buildResult.getOutputForTask(":kaptGenerateStubsKotlin"), - errorMessageSuffix = " in task 'kaptGenerateStubsKotlin" - ) + if (isIncrementalStubGenerationSupported) { + assertCompiledKotlinSources( + sources, + buildResult.getOutputForTask(":kaptGenerateStubsKotlin"), + errorMessageSuffix = " in task 'kaptGenerateStubsKotlin" + ) - assertCompiledKotlinSources( - sources, - buildResult.getOutputForTask(":compileKotlin"), - errorMessageSuffix = " in task 'compileKotlin'" - ) + + assertCompiledKotlinSources( + sources, + buildResult.getOutputForTask(":compileKotlin"), + errorMessageSuffix = " in task 'compileKotlin'" + ) + } } private fun BuildResult.assertKapt3FullyExecuted() { @@ -390,7 +398,17 @@ open class KaptIncrementalIT : KGPBaseTest() { val TestProject.kaptGeneratedToPath get() = projectPath.resolve("build/generated/source/kapt") } +@DisplayName("K2 Kapt incremental compilation") +@OtherGradlePluginTests +class K2KaptIncrementalIT: KaptIncrementalIT() { + override val defaultBuildOptions = super.defaultBuildOptions.copyEnsuringK2() +} + @DisplayName("Kapt incremental compilation with disabled precise compilation outputs backup") class KaptIncrementalWithoutPreciseBackupIT : KaptIncrementalIT() { override val defaultBuildOptions = super.defaultBuildOptions.copy(usePreciseOutputsBackup = false, keepIncrementalCompilationCachesInMemory = false) -} \ No newline at end of file +} + +// KT-63102 Incremental compilation doesn't work in 2.0 +val TestProject.isIncrementalStubGenerationSupported: Boolean + get() = buildOptions.languageVersion?.startsWith("1") ?: (KotlinVersion.DEFAULT < KotlinVersion.KOTLIN_2_0) \ No newline at end of file diff --git a/libraries/tools/kotlin-gradle-plugin-integration-tests/src/test/kotlin/org/jetbrains/kotlin/gradle/KaptIncrementalWithAggregatingApt.kt b/libraries/tools/kotlin-gradle-plugin-integration-tests/src/test/kotlin/org/jetbrains/kotlin/gradle/KaptIncrementalWithAggregatingApt.kt index 08c3e4cbea0..729ce715e0c 100644 --- a/libraries/tools/kotlin-gradle-plugin-integration-tests/src/test/kotlin/org/jetbrains/kotlin/gradle/KaptIncrementalWithAggregatingApt.kt +++ b/libraries/tools/kotlin-gradle-plugin-integration-tests/src/test/kotlin/org/jetbrains/kotlin/gradle/KaptIncrementalWithAggregatingApt.kt @@ -20,7 +20,7 @@ import kotlin.io.path.writeText import kotlin.test.assertEquals import kotlin.test.assertTrue -@DisplayName("Kapt incremental tests with aggregating apt") +@DisplayName("K1 Kapt incremental tests with aggregating apt") open class KaptIncrementalWithAggregatingApt : KaptIncrementalIT() { override val defaultBuildOptions = super.defaultBuildOptions.copy( @@ -390,8 +390,16 @@ open class KaptIncrementalWithAggregatingApt : KaptIncrementalIT() { } } +@DisplayName("K2 Kapt incremental tests with aggregating apt") +class K2KaptIncrementalWithAggregatingApt: KaptIncrementalWithAggregatingApt() { + override val defaultBuildOptions = super.defaultBuildOptions.copyEnsuringK2() +} -@DisplayName("Kapt incremental tests with aggregating apt with disabled precise compilation outputs backup") -class KaptIncrementalWithAggregatingAptAndWithoutPreciseBackup : KaptIncrementalWithAggregatingApt() { +@DisplayName("K1 Kapt incremental tests with aggregating apt with disabled precise compilation outputs backup") +open class KaptIncrementalWithAggregatingAptAndWithoutPreciseBackup : KaptIncrementalWithAggregatingApt() { override val defaultBuildOptions = super.defaultBuildOptions.copy(usePreciseOutputsBackup = false, keepIncrementalCompilationCachesInMemory = false) +} + +class K2KaptIncrementalWithAggregatingAptAndWithoutPreciseBackup: KaptIncrementalWithAggregatingAptAndWithoutPreciseBackup() { + override val defaultBuildOptions = super.defaultBuildOptions.copyEnsuringK2() } \ No newline at end of file diff --git a/libraries/tools/kotlin-gradle-plugin-integration-tests/src/test/kotlin/org/jetbrains/kotlin/gradle/KaptIncrementalWithIsolatingApt.kt b/libraries/tools/kotlin-gradle-plugin-integration-tests/src/test/kotlin/org/jetbrains/kotlin/gradle/KaptIncrementalWithIsolatingApt.kt index 5adb3c84297..2a89ea5500a 100644 --- a/libraries/tools/kotlin-gradle-plugin-integration-tests/src/test/kotlin/org/jetbrains/kotlin/gradle/KaptIncrementalWithIsolatingApt.kt +++ b/libraries/tools/kotlin-gradle-plugin-integration-tests/src/test/kotlin/org/jetbrains/kotlin/gradle/KaptIncrementalWithIsolatingApt.kt @@ -12,6 +12,7 @@ import org.jetbrains.kotlin.gradle.incapt.IncrementalBinaryIsolatingProcessor import org.jetbrains.kotlin.gradle.incapt.IncrementalProcessor import org.jetbrains.kotlin.gradle.incapt.IncrementalProcessorReferencingClasspath import org.jetbrains.kotlin.gradle.testbase.* +import org.junit.jupiter.api.Disabled import org.junit.jupiter.api.DisplayName import org.junit.jupiter.api.condition.DisabledOnOs import org.junit.jupiter.api.condition.OS @@ -23,7 +24,7 @@ import java.util.zip.ZipOutputStream import kotlin.io.path.* import kotlin.test.assertEquals -@DisplayName("Kapt incremental tests with isolating apt") +@DisplayName("K1 Kapt incremental tests with isolating apt") open class KaptIncrementalWithIsolatingApt : KaptIncrementalIT() { override val defaultBuildOptions = super.defaultBuildOptions.copy( @@ -33,7 +34,7 @@ open class KaptIncrementalWithIsolatingApt : KaptIncrementalIT() { incrementalKapt = true, includeCompileClasspath = false ) - ) + ).copyEnsuringK1() override fun KGPBaseTest.kaptProject( gradleVersion: GradleVersion, @@ -318,14 +319,16 @@ open class KaptIncrementalWithIsolatingApt : KaptIncrementalIT() { } build(":mylibrary:assembleDebug") { - assertEquals( - listOf( - "baseLibrary/build/tmp/kapt3/stubs/debug/error/NonExistentClass.java", - "mylibrary/src/main/java/com/example/lib/ExampleParcel.java", - "baseLibrary/src/main/java/com/example/lib2/basemodule/BaseClassParcel.java", - ).map { projectPath.resolve(it).toRealPath().toString() }.toSet(), - getProcessedSources(output) - ) + if (isIncrementalStubGenerationSupported) { + assertEquals( + listOf( + "baseLibrary/build/tmp/kapt3/stubs/debug/error/NonExistentClass.java", + "mylibrary/src/main/java/com/example/lib/ExampleParcel.java", + "baseLibrary/src/main/java/com/example/lib2/basemodule/BaseClassParcel.java", + ).map { projectPath.resolve(it).toRealPath().toString() }.toSet(), + getProcessedSources(output) + ) + } } } } @@ -437,11 +440,21 @@ open class KaptIncrementalWithIsolatingApt : KaptIncrementalIT() { } } -@DisplayName("Kapt incremental tests with isolating apt with disabled precise compilation outputs backup") -class KaptIncrementalWithIsolatingAptAndWithoutPreciseBackup : KaptIncrementalWithIsolatingApt() { +@DisplayName("K2 Kapt incremental tests with isolating apt") +class K2KaptIncrementalWithIsolatingApt : KaptIncrementalWithIsolatingApt() { + override val defaultBuildOptions = super.defaultBuildOptions.copyEnsuringK2() +} + +@DisplayName("K1 Kapt incremental tests with isolating apt with disabled precise compilation outputs backup") +open class KaptIncrementalWithIsolatingAptAndWithoutPreciseBackup : KaptIncrementalWithIsolatingApt() { override val defaultBuildOptions = super.defaultBuildOptions.copy(usePreciseOutputsBackup = false, keepIncrementalCompilationCachesInMemory = false) } +@DisplayName("K2 Kapt incremental tests with isolating apt with disabled precise compilation outputs backup") +class K2KaptIncrementalWithIsolatingAptAndWithoutPreciseBackup : KaptIncrementalWithIsolatingAptAndWithoutPreciseBackup() { + override val defaultBuildOptions = super.defaultBuildOptions.copyEnsuringK2() +} + private const val patternApt = "Processing java sources with annotation processors:" fun getProcessedSources(output: String): Set { return output.lines().filter { it.contains(patternApt) }.flatMapTo(HashSet()) { logging -> diff --git a/libraries/tools/kotlin-gradle-plugin-integration-tests/src/test/kotlin/org/jetbrains/kotlin/gradle/android/Kapt3AndroidExternalIT.kt b/libraries/tools/kotlin-gradle-plugin-integration-tests/src/test/kotlin/org/jetbrains/kotlin/gradle/android/Kapt3AndroidExternalIT.kt index c61dc2b58ef..152236e11f7 100644 --- a/libraries/tools/kotlin-gradle-plugin-integration-tests/src/test/kotlin/org/jetbrains/kotlin/gradle/android/Kapt3AndroidExternalIT.kt +++ b/libraries/tools/kotlin-gradle-plugin-integration-tests/src/test/kotlin/org/jetbrains/kotlin/gradle/android/Kapt3AndroidExternalIT.kt @@ -135,7 +135,7 @@ open class Kapt3AndroidExternalIT : Kapt3BaseIT() { @DisplayName("kapt works with databinding") @GradleAndroidTest - fun testDatabinding( + open fun testDatabinding( gradleVersion: GradleVersion, agpVersion: String, jdkVersion: JdkVersions.ProvidedJdk, @@ -213,7 +213,7 @@ open class Kapt3AndroidExternalIT : Kapt3BaseIT() { @DisplayName("KT-61622: common sources are attached in MPP + Android project") @GradleAndroidTest - fun testMppAndroidKapt( + open fun testMppAndroidKapt( gradleVersion: GradleVersion, agpVersion: String, jdkVersion: JdkVersions.ProvidedJdk, diff --git a/libraries/tools/kotlin-gradle-plugin-integration-tests/src/test/kotlin/org/jetbrains/kotlin/gradle/android/Kapt3AndroidIncrementalIT.kt b/libraries/tools/kotlin-gradle-plugin-integration-tests/src/test/kotlin/org/jetbrains/kotlin/gradle/android/Kapt3AndroidIncrementalIT.kt index e15d429a194..4c57db9411f 100644 --- a/libraries/tools/kotlin-gradle-plugin-integration-tests/src/test/kotlin/org/jetbrains/kotlin/gradle/android/Kapt3AndroidIncrementalIT.kt +++ b/libraries/tools/kotlin-gradle-plugin-integration-tests/src/test/kotlin/org/jetbrains/kotlin/gradle/android/Kapt3AndroidIncrementalIT.kt @@ -78,7 +78,7 @@ open class Kapt3AndroidIncrementalIT : Kapt3BaseIT() { @DisplayName("incremental compilation works with dagger") @GradleAndroidTest - fun testAndroidDaggerIC( + open fun testAndroidDaggerIC( gradleVersion: GradleVersion, agpVersion: String, jdkVersion: JdkVersions.ProvidedJdk, @@ -160,7 +160,7 @@ open class Kapt3AndroidIncrementalIT : Kapt3BaseIT() { @DisplayName("inter-project IC works with kapt") @GradleAndroidTest - fun testInterProjectIC( + open fun testInterProjectIC( gradleVersion: GradleVersion, agpVersion: String, jdkVersion: JdkVersions.ProvidedJdk, diff --git a/libraries/tools/kotlin-gradle-plugin-integration-tests/src/test/kotlin/org/jetbrains/kotlin/gradle/android/Kapt4AndroidExternalIT.kt b/libraries/tools/kotlin-gradle-plugin-integration-tests/src/test/kotlin/org/jetbrains/kotlin/gradle/android/Kapt4AndroidExternalIT.kt index 1112473cdef..5b761ab2025 100644 --- a/libraries/tools/kotlin-gradle-plugin-integration-tests/src/test/kotlin/org/jetbrains/kotlin/gradle/android/Kapt4AndroidExternalIT.kt +++ b/libraries/tools/kotlin-gradle-plugin-integration-tests/src/test/kotlin/org/jetbrains/kotlin/gradle/android/Kapt4AndroidExternalIT.kt @@ -5,16 +5,19 @@ package org.jetbrains.kotlin.gradle.android -import org.jetbrains.kotlin.config.LanguageVersion -import org.jetbrains.kotlin.gradle.forceKapt4 -import org.jetbrains.kotlin.gradle.testbase.TestProject +import org.gradle.util.GradleVersion +import org.jetbrains.kotlin.gradle.testbase.JdkVersions +import org.junit.jupiter.api.Disabled import org.junit.jupiter.api.DisplayName @DisplayName("android with kapt4 external dependencies tests") class Kapt4AndroidExternalIT : Kapt3AndroidExternalIT() { override val defaultBuildOptions = super.defaultBuildOptions.copyEnsuringK2() - override fun TestProject.customizeProject() { - forceKapt4() - } + @Disabled("KT-62345") + override fun testMppAndroidKapt( + gradleVersion: GradleVersion, + agpVersion: String, + jdkVersion: JdkVersions.ProvidedJdk, + ) {} } diff --git a/libraries/tools/kotlin-gradle-plugin-integration-tests/src/test/kotlin/org/jetbrains/kotlin/gradle/android/Kapt4AndroidIT.kt b/libraries/tools/kotlin-gradle-plugin-integration-tests/src/test/kotlin/org/jetbrains/kotlin/gradle/android/Kapt4AndroidIT.kt index 3b8f5924585..520bf2418b8 100644 --- a/libraries/tools/kotlin-gradle-plugin-integration-tests/src/test/kotlin/org/jetbrains/kotlin/gradle/android/Kapt4AndroidIT.kt +++ b/libraries/tools/kotlin-gradle-plugin-integration-tests/src/test/kotlin/org/jetbrains/kotlin/gradle/android/Kapt4AndroidIT.kt @@ -5,15 +5,9 @@ package org.jetbrains.kotlin.gradle.android -import org.jetbrains.kotlin.gradle.forceKapt4 -import org.jetbrains.kotlin.gradle.testbase.TestProject import org.junit.jupiter.api.DisplayName @DisplayName("android with kapt4 tests") class Kapt4AndroidIT : Kapt3AndroidIT() { override val defaultBuildOptions = super.defaultBuildOptions.copyEnsuringK2() - - override fun TestProject.customizeProject() { - forceKapt4() - } } diff --git a/libraries/tools/kotlin-gradle-plugin-integration-tests/src/test/kotlin/org/jetbrains/kotlin/gradle/android/Kapt4AndroidIncrementalIT.kt b/libraries/tools/kotlin-gradle-plugin-integration-tests/src/test/kotlin/org/jetbrains/kotlin/gradle/android/Kapt4AndroidIncrementalIT.kt index 07275bf1c1a..79a469619dd 100644 --- a/libraries/tools/kotlin-gradle-plugin-integration-tests/src/test/kotlin/org/jetbrains/kotlin/gradle/android/Kapt4AndroidIncrementalIT.kt +++ b/libraries/tools/kotlin-gradle-plugin-integration-tests/src/test/kotlin/org/jetbrains/kotlin/gradle/android/Kapt4AndroidIncrementalIT.kt @@ -5,16 +5,21 @@ package org.jetbrains.kotlin.gradle.android -import org.jetbrains.kotlin.gradle.forceKapt4 -import org.jetbrains.kotlin.gradle.testbase.TestProject +import org.gradle.util.GradleVersion +import org.jetbrains.kotlin.gradle.testbase.JdkVersions +import org.junit.jupiter.api.Disabled import org.junit.jupiter.api.DisplayName @DisplayName("android with kapt4 incremental build tests") class Kapt4AndroidIncrementalIT : Kapt3AndroidIncrementalIT() { override val defaultBuildOptions = super.defaultBuildOptions.copyEnsuringK2() - override fun TestProject.customizeProject() { - forceKapt4() + @Disabled("KT-63102 Incremental compilation doesn't work in 2.0") + override fun testAndroidDaggerIC(gradleVersion: GradleVersion, agpVersion: String, jdkVersion: JdkVersions.ProvidedJdk) { + } + + @Disabled("KT-63102 Incremental compilation doesn't work in 2.0") + override fun testInterProjectIC(gradleVersion: GradleVersion, agpVersion: String, jdkVersion: JdkVersions.ProvidedJdk) { } } @@ -22,7 +27,11 @@ class Kapt4AndroidIncrementalIT : Kapt3AndroidIncrementalIT() { class Kapt4AndroidIncrementalWithoutPreciseBackupIT : Kapt3AndroidIncrementalWithoutPreciseBackupIT() { override val defaultBuildOptions = super.defaultBuildOptions.copyEnsuringK2() - override fun TestProject.customizeProject() { - forceKapt4() + @Disabled("KT-63102 Incremental compilation doesn't work in 2.0") + override fun testAndroidDaggerIC(gradleVersion: GradleVersion, agpVersion: String, jdkVersion: JdkVersions.ProvidedJdk) { + } + + @Disabled("KT-63102 Incremental compilation doesn't work in 2.0") + override fun testInterProjectIC(gradleVersion: GradleVersion, agpVersion: String, jdkVersion: JdkVersions.ProvidedJdk) { } } diff --git a/libraries/tools/kotlin-gradle-plugin-integration-tests/src/test/kotlin/org/jetbrains/kotlin/gradle/tasks/KotlinJvmApiTest.kt b/libraries/tools/kotlin-gradle-plugin-integration-tests/src/test/kotlin/org/jetbrains/kotlin/gradle/tasks/KotlinJvmApiTest.kt index a2ffedfedb1..b5612c808c8 100644 --- a/libraries/tools/kotlin-gradle-plugin-integration-tests/src/test/kotlin/org/jetbrains/kotlin/gradle/tasks/KotlinJvmApiTest.kt +++ b/libraries/tools/kotlin-gradle-plugin-integration-tests/src/test/kotlin/org/jetbrains/kotlin/gradle/tasks/KotlinJvmApiTest.kt @@ -14,7 +14,7 @@ import kotlin.io.path.deleteRecursively import kotlin.io.path.writeText @DisplayName("JVM API validation") -class KotlinJvmApiTest : KGPBaseTest() { +open class KotlinJvmApiTest : KGPBaseTest() { @DisplayName("Kotlin compilation can be set up using APIs") @JvmGradlePluginTests @GradleTest @@ -51,11 +51,7 @@ class KotlinJvmApiTest : KGPBaseTest() { """.trimIndent() } - val expectedOutput = projectPath.resolve("build/fooOutput/Foo.class") - - build("foo") { - assertFileExists(expectedOutput) - } + build("foo") } } @@ -147,7 +143,6 @@ class KotlinJvmApiTest : KGPBaseTest() { """.trimIndent() } - val expectedOutputClass = projectPath.resolve("build/fooOutput/Foo.class") val expectedOutputStubs = listOf( projectPath.resolve("build/fooOutputStubs/Foo.java"), projectPath.resolve("build/fooOutputStubs/Foo.kapt_metadata"), @@ -155,7 +150,6 @@ class KotlinJvmApiTest : KGPBaseTest() { ) build("foo") { - assertFileExists(expectedOutputClass) expectedOutputStubs.forEach { assertFileExists(it) } } } diff --git a/libraries/tools/kotlin-gradle-plugin/src/common/kotlin/org/jetbrains/kotlin/gradle/internal/kapt/Kapt3KotlinGradleSubplugin.kt b/libraries/tools/kotlin-gradle-plugin/src/common/kotlin/org/jetbrains/kotlin/gradle/internal/kapt/Kapt3KotlinGradleSubplugin.kt index c55e0537028..66ac7bb3901 100644 --- a/libraries/tools/kotlin-gradle-plugin/src/common/kotlin/org/jetbrains/kotlin/gradle/internal/kapt/Kapt3KotlinGradleSubplugin.kt +++ b/libraries/tools/kotlin-gradle-plugin/src/common/kotlin/org/jetbrains/kotlin/gradle/internal/kapt/Kapt3KotlinGradleSubplugin.kt @@ -25,7 +25,6 @@ import org.gradle.tooling.provider.model.ToolingModelBuilderRegistry 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.isKaptVerbose -import org.jetbrains.kotlin.gradle.internal.Kapt3GradleSubplugin.Companion.isUseK2 import org.jetbrains.kotlin.gradle.model.builder.KaptModelBuilder import org.jetbrains.kotlin.gradle.plugin.* import org.jetbrains.kotlin.gradle.plugin.mpp.KotlinJvmAndroidCompilation @@ -123,10 +122,6 @@ class Kapt3GradleSubplugin @Inject internal constructor(private val registry: To return getBooleanOptionValue(BooleanOption.KAPT_KEEP_KDOC_COMMENTS_IN_STUBS) } - fun Project.isUseK2(): Boolean { - return getBooleanOptionValue(BooleanOption.KAPT_USE_K2) - } - fun Project.classLoadersCacheSize(): Int = findPropertySafe(CLASSLOADERS_CACHE_SIZE)?.toString()?.toInt() ?: 0 fun Project.disableClassloaderCacheForProcessors(): Set { @@ -218,7 +213,6 @@ class Kapt3GradleSubplugin @Inject internal constructor(private val registry: To KAPT_INFO_AS_WARNINGS("kapt.info.as.warnings", false), KAPT_INCLUDE_COMPILE_CLASSPATH("kapt.include.compile.classpath", true), KAPT_KEEP_KDOC_COMMENTS_IN_STUBS("kapt.keep.kdoc.comments.in.stubs", true), - KAPT_USE_K2("kapt.use.k2", false), } } @@ -538,7 +532,6 @@ internal fun buildKaptSubpluginOptions( pluginOptions += SubpluginOption("keepKdocCommentsInStubs", "${project.isKaptKeepKdocCommentsInStubs()}") pluginOptions += SubpluginOption("showProcessorTimings", "${kaptExtension.showProcessorStats}") pluginOptions += SubpluginOption("detectMemoryLeaks", kaptExtension.detectMemoryLeaks) - pluginOptions += SubpluginOption("useK2", "${project.isUseK2()}") pluginOptions += SubpluginOption("infoAsWarnings", "${project.isInfoAsWarnings()}") pluginOptions += FilesSubpluginOption("stubs", kaptStubsDir) diff --git a/libraries/tools/kotlin-gradle-plugin/src/common/kotlin/org/jetbrains/kotlin/gradle/internal/kapt/KaptGenerateStubsTask.kt b/libraries/tools/kotlin-gradle-plugin/src/common/kotlin/org/jetbrains/kotlin/gradle/internal/kapt/KaptGenerateStubsTask.kt index 92c4ca95d63..9cb528d5400 100644 --- a/libraries/tools/kotlin-gradle-plugin/src/common/kotlin/org/jetbrains/kotlin/gradle/internal/kapt/KaptGenerateStubsTask.kt +++ b/libraries/tools/kotlin-gradle-plugin/src/common/kotlin/org/jetbrains/kotlin/gradle/internal/kapt/KaptGenerateStubsTask.kt @@ -29,6 +29,7 @@ import org.gradle.workers.WorkerExecutor import org.jetbrains.kotlin.cli.common.arguments.K2JVMCompilerArguments import org.jetbrains.kotlin.gradle.dsl.KotlinJvmCompilerOptionsDefault import org.jetbrains.kotlin.gradle.dsl.KotlinJvmCompilerOptionsHelper +import org.jetbrains.kotlin.gradle.dsl.KotlinVersion import org.jetbrains.kotlin.gradle.plugin.KotlinCompilerArgumentsProducer.CreateCompilerArgumentsContext import org.jetbrains.kotlin.gradle.plugin.KotlinCompilerArgumentsProducer.CreateCompilerArgumentsContext.Companion.create import org.jetbrains.kotlin.gradle.report.BuildReportMode @@ -66,9 +67,6 @@ abstract class KaptGenerateStubsTask @Inject constructor( @get:Input abstract val verbose: Property - @get:Input - abstract val useK2Kapt: Property - /** * Changes in this additional sources will trigger stubs regeneration, * but the sources themselves will not be used to find kapt annotations and generate stubs. @@ -129,10 +127,6 @@ abstract class KaptGenerateStubsTask @Inject constructor( args.verbose = verbose.get() args.destinationAsFile = destinationDirectory.get().asFile - - if (useK2Kapt.get()) { - args.freeArgs += "-Xuse-kapt4" - } } pluginClasspath { args -> @@ -154,5 +148,5 @@ abstract class KaptGenerateStubsTask @Inject constructor( } override fun isIncrementalCompilationEnabled(): Boolean = - super.isIncrementalCompilationEnabled() && !useK2Kapt.get() && ("-Xuse-kapt4" !in compilerOptions.freeCompilerArgs.get()) + super.isIncrementalCompilationEnabled() && compilerOptions.languageVersion.getOrElse(KotlinVersion.DEFAULT) < KotlinVersion.KOTLIN_2_0 } diff --git a/libraries/tools/kotlin-gradle-plugin/src/common/kotlin/org/jetbrains/kotlin/gradle/tasks/configuration/KaptGenerateStubsConfig.kt b/libraries/tools/kotlin-gradle-plugin/src/common/kotlin/org/jetbrains/kotlin/gradle/tasks/configuration/KaptGenerateStubsConfig.kt index 3571ec8e92c..e525891fe89 100644 --- a/libraries/tools/kotlin-gradle-plugin/src/common/kotlin/org/jetbrains/kotlin/gradle/tasks/configuration/KaptGenerateStubsConfig.kt +++ b/libraries/tools/kotlin-gradle-plugin/src/common/kotlin/org/jetbrains/kotlin/gradle/tasks/configuration/KaptGenerateStubsConfig.kt @@ -16,7 +16,6 @@ import org.jetbrains.kotlin.gradle.dsl.KotlinTopLevelExtension import org.jetbrains.kotlin.gradle.internal.* import org.jetbrains.kotlin.gradle.internal.Kapt3GradleSubplugin.Companion.KAPT_SUBPLUGIN_ID import org.jetbrains.kotlin.gradle.internal.Kapt3GradleSubplugin.Companion.isIncludeCompileClasspath -import org.jetbrains.kotlin.gradle.internal.Kapt3GradleSubplugin.Companion.isUseK2 import org.jetbrains.kotlin.gradle.plugin.KaptExtension import org.jetbrains.kotlin.gradle.plugin.KotlinCompilation import org.jetbrains.kotlin.gradle.plugin.KotlinCompilationInfo @@ -50,7 +49,6 @@ internal class KaptGenerateStubsConfig : BaseKotlinCompileConfig task.verbose.set(KaptTask.queryKaptVerboseProperty(project)) task.pluginOptions.add(buildOptions(kaptExtension, task)) - task.useK2Kapt.value(project.isUseK2()).finalizeValueOnRead() if (!isIncludeCompileClasspath(kaptExtension)) { task.onlyIf { diff --git a/libraries/tools/kotlin-maven-plugin-test/src/it/java8/test-dagger-maven-example/pom.xml b/libraries/tools/kotlin-maven-plugin-test/src/it/java8/test-dagger-maven-example/pom.xml index e74ba706212..da6e7462636 100644 --- a/libraries/tools/kotlin-maven-plugin-test/src/it/java8/test-dagger-maven-example/pom.xml +++ b/libraries/tools/kotlin-maven-plugin-test/src/it/java8/test-dagger-maven-example/pom.xml @@ -11,7 +11,7 @@ 4.13.1 - 2.9 + 2.50 coffee.CoffeeApp UTF-8 diff --git a/libraries/tools/kotlin-maven-plugin-test/src/it/java8/test-enable-extensions-kapt-allopen/pom.xml b/libraries/tools/kotlin-maven-plugin-test/src/it/java8/test-enable-extensions-kapt-allopen/pom.xml index b3571e5bfed..96ae273821d 100644 --- a/libraries/tools/kotlin-maven-plugin-test/src/it/java8/test-enable-extensions-kapt-allopen/pom.xml +++ b/libraries/tools/kotlin-maven-plugin-test/src/it/java8/test-enable-extensions-kapt-allopen/pom.xml @@ -11,7 +11,7 @@ 4.13.1 - 2.9 + 2.50 coffee.CoffeeApp UTF-8 diff --git a/libraries/tools/kotlin-maven-plugin-test/src/it/java8/test-kapt-allopen/pom.xml b/libraries/tools/kotlin-maven-plugin-test/src/it/java8/test-kapt-allopen/pom.xml index 21fb411918e..1b5ec066915 100644 --- a/libraries/tools/kotlin-maven-plugin-test/src/it/java8/test-kapt-allopen/pom.xml +++ b/libraries/tools/kotlin-maven-plugin-test/src/it/java8/test-kapt-allopen/pom.xml @@ -11,7 +11,7 @@ 4.13.1 - 2.9 + 2.50 coffee.CoffeeApp UTF-8 diff --git a/plugins/kapt3/kapt3-cli/src/KaptCli.kt b/plugins/kapt3/kapt3-cli/src/KaptCli.kt index 8c8475d374a..8c909fcc734 100644 --- a/plugins/kapt3/kapt3-cli/src/KaptCli.kt +++ b/plugins/kapt3/kapt3-cli/src/KaptCli.kt @@ -107,7 +107,6 @@ private fun transformKaptToolArgs(args: List, messageCollector: MessageC } KaptCliOption.APT_MODE_OPTION -> aptModePassed = true KaptCliOption.VERBOSE_MODE_OPTION -> kaptVerboseModePassed = true - KaptCliOption.USE_K2 -> transformed.add("-Xuse-kapt4") else -> {} } @@ -115,7 +114,7 @@ private fun transformKaptToolArgs(args: List, messageCollector: MessageC } if (!aptModePassed) { - val isK2 = "-Xuse-kapt4" in transformed && ("-Xuse-k2" in transformed || + val isK2 = ("-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) diff --git a/plugins/kapt3/kapt3-cli/src/KaptCliOption.kt b/plugins/kapt3/kapt3-cli/src/KaptCliOption.kt index f244f5e9181..86f757aedbd 100644 --- a/plugins/kapt3/kapt3-cli/src/KaptCliOption.kt +++ b/plugins/kapt3/kapt3-cli/src/KaptCliOption.kt @@ -214,13 +214,6 @@ enum class KaptCliOption( "Keep KDoc comments in stubs" ), - USE_K2( - "useK2", - "true | false", - "Use K2", - cliToolOption = CliToolOption("-Kapt-use-k2", FLAG) - ), - DETECT_MEMORY_LEAKS_OPTION("detectMemoryLeaks", "true | false", "Detect memory leaks in annotation processors"), INCLUDE_COMPILE_CLASSPATH( "includeCompileClasspath", diff --git a/plugins/kapt3/kapt3-cli/testData/integration-kapt4/argfile/kaptArgs.txt b/plugins/kapt3/kapt3-cli/testData/integration-kapt4/argfile/kaptArgs.txt index 5f6166ce3ca..da9f4688386 100644 --- a/plugins/kapt3/kapt3-cli/testData/integration-kapt4/argfile/kaptArgs.txt +++ b/plugins/kapt3/kapt3-cli/testData/integration-kapt4/argfile/kaptArgs.txt @@ -1,5 +1,4 @@ -language-version 2.0 --Xuse-kapt4 -Kapt-mode=stubsAndApt -Kapt-stubs=output/stubs -Kapt-classes=output/classes diff --git a/plugins/kapt3/kapt3-cli/testData/integration-kapt4/compileModeUnsupported/build.txt b/plugins/kapt3/kapt3-cli/testData/integration-kapt4/compileModeUnsupported/build.txt index 8d6c0d7151a..91ff20dce52 100644 --- a/plugins/kapt3/kapt3-cli/testData/integration-kapt4/compileModeUnsupported/build.txt +++ b/plugins/kapt3/kapt3-cli/testData/integration-kapt4/compileModeUnsupported/build.txt @@ -1,7 +1,6 @@ # kapt -language-version 2.0 -Xsuppress-version-warnings --Xuse-kapt4 -Kapt-mode=compile ../simple/Test.kt diff --git a/plugins/kapt3/kapt3-cli/testData/integration-kapt4/correctErrorTypesOn/build.txt b/plugins/kapt3/kapt3-cli/testData/integration-kapt4/correctErrorTypesOn/build.txt index 97db889ce40..d94a9c8acee 100644 --- a/plugins/kapt3/kapt3-cli/testData/integration-kapt4/correctErrorTypesOn/build.txt +++ b/plugins/kapt3/kapt3-cli/testData/integration-kapt4/correctErrorTypesOn/build.txt @@ -12,7 +12,6 @@ ap/Processor.kt # kapt -language-version 2.0 --Xuse-kapt4 -Kapt-stubs=output/stubs -Kapt-classes=output/classes -Kapt-sources=output/sources diff --git a/plugins/kapt3/kapt3-cli/testData/integration-kapt4/defaultPackage/build.txt b/plugins/kapt3/kapt3-cli/testData/integration-kapt4/defaultPackage/build.txt index cad0d62fe1a..40eac7bfe42 100644 --- a/plugins/kapt3/kapt3-cli/testData/integration-kapt4/defaultPackage/build.txt +++ b/plugins/kapt3/kapt3-cli/testData/integration-kapt4/defaultPackage/build.txt @@ -17,7 +17,6 @@ ap/Processor.kt # kapt -language-version 2.0 --Xuse-kapt4 -Kapt-mode=stubsAndApt -Kapt-stubs=output/stubs -Kapt-classes=output/classes diff --git a/plugins/kapt3/kapt3-cli/testData/integration-kapt4/kaptUseK2Flag/build.txt b/plugins/kapt3/kapt3-cli/testData/integration-kapt4/kaptUseK2Flag/build.txt index 14d960b098e..91ff20dce52 100644 --- a/plugins/kapt3/kapt3-cli/testData/integration-kapt4/kaptUseK2Flag/build.txt +++ b/plugins/kapt3/kapt3-cli/testData/integration-kapt4/kaptUseK2Flag/build.txt @@ -1,7 +1,6 @@ # kapt -language-version 2.0 -Xsuppress-version-warnings --Kapt-use-k2=true -Kapt-mode=compile ../simple/Test.kt diff --git a/plugins/kapt3/kapt3-cli/testData/integration-kapt4/kotlinFileGeneration/build.txt b/plugins/kapt3/kapt3-cli/testData/integration-kapt4/kotlinFileGeneration/build.txt index 8daf7725503..f9cff86e7f7 100644 --- a/plugins/kapt3/kapt3-cli/testData/integration-kapt4/kotlinFileGeneration/build.txt +++ b/plugins/kapt3/kapt3-cli/testData/integration-kapt4/kotlinFileGeneration/build.txt @@ -17,7 +17,6 @@ output/ap/META-INF/services/javax.annotation.processing.Processor # kapt -language-version 2.0 --Xuse-kapt4 -Kapt-mode=stubsAndApt -Kapt-stubs=output/stubs -Kapt-classes=output/classes diff --git a/plugins/kapt3/kapt3-cli/testData/integration-kapt4/kotlinFileGenerationDefaultOutput/build.txt b/plugins/kapt3/kapt3-cli/testData/integration-kapt4/kotlinFileGenerationDefaultOutput/build.txt index aecd3640da2..ee680057ee2 100644 --- a/plugins/kapt3/kapt3-cli/testData/integration-kapt4/kotlinFileGenerationDefaultOutput/build.txt +++ b/plugins/kapt3/kapt3-cli/testData/integration-kapt4/kotlinFileGenerationDefaultOutput/build.txt @@ -20,7 +20,6 @@ ap/Processor.kt # kapt -language-version 2.0 --Xuse-kapt4 -Kapt-mode=stubsAndApt -Kapt-stubs=output/stubs -Kapt-classes=output/classes @@ -34,7 +33,6 @@ Test.kt # kotlinc -language-version 2.0 --Xuse-kapt4 -d output/classes -cp output/classes:output/ap:%KOTLIN_STDLIB% Test.kt diff --git a/plugins/kapt3/kapt3-cli/testData/integration-kapt4/kt33800/build.txt b/plugins/kapt3/kapt3-cli/testData/integration-kapt4/kt33800/build.txt index 4ac429b34ab..f3c16ef7193 100644 --- a/plugins/kapt3/kapt3-cli/testData/integration-kapt4/kt33800/build.txt +++ b/plugins/kapt3/kapt3-cli/testData/integration-kapt4/kt33800/build.txt @@ -21,7 +21,6 @@ output/ap/META-INF/services/javax.annotation.processing.Processor # kapt -language-version 2.0 --Xuse-kapt4 -Kapt-mode=stubsAndApt -Kapt-stubs=output/stubs -Kapt-classes=output/classes diff --git a/plugins/kapt3/kapt3-cli/testData/integration-kapt4/multipass/build.txt b/plugins/kapt3/kapt3-cli/testData/integration-kapt4/multipass/build.txt index 77963179bce..62ce2f8d322 100644 --- a/plugins/kapt3/kapt3-cli/testData/integration-kapt4/multipass/build.txt +++ b/plugins/kapt3/kapt3-cli/testData/integration-kapt4/multipass/build.txt @@ -13,7 +13,6 @@ ap/processors.kt # kapt -language-version 2.0 --Xuse-kapt4 -Kapt-mode=stubsAndApt -Kapt-stubs=output/stubs -Kapt-classes=output/classes diff --git a/plugins/kapt3/kapt3-cli/testData/integration-kapt4/separateStubAptCompilation/build.txt b/plugins/kapt3/kapt3-cli/testData/integration-kapt4/separateStubAptCompilation/build.txt index 300ddcbc7f5..669e43817cb 100644 --- a/plugins/kapt3/kapt3-cli/testData/integration-kapt4/separateStubAptCompilation/build.txt +++ b/plugins/kapt3/kapt3-cli/testData/integration-kapt4/separateStubAptCompilation/build.txt @@ -21,7 +21,6 @@ ap/Processor.kt # kapt -language-version 2.0 --Xuse-kapt4 -Kapt-stubs=output/stubs -Kapt-classes=output/classes -Kapt-sources=output/sources @@ -33,7 +32,6 @@ Test.kt # kapt -language-version 2.0 --Xuse-kapt4 -Kapt-stubs=output/stubs -Kapt-classes=output/classes -Kapt-sources=output/sources diff --git a/plugins/kapt3/kapt3-cli/testData/integration-kapt4/simple/build.txt b/plugins/kapt3/kapt3-cli/testData/integration-kapt4/simple/build.txt index f6de1d6e276..05ad9164f4a 100644 --- a/plugins/kapt3/kapt3-cli/testData/integration-kapt4/simple/build.txt +++ b/plugins/kapt3/kapt3-cli/testData/integration-kapt4/simple/build.txt @@ -17,7 +17,6 @@ output/ap/META-INF/services/javax.annotation.processing.Processor # kapt -language-version 2.0 --Xuse-kapt4 -Kapt-mode=stubsAndApt -Kapt-stubs=output/stubs -Kapt-classes=output/classes diff --git a/plugins/kapt3/kapt3-cli/testData/integration-kapt4/withoutService/build.txt b/plugins/kapt3/kapt3-cli/testData/integration-kapt4/withoutService/build.txt index e3076182cdb..d6a9562669f 100644 --- a/plugins/kapt3/kapt3-cli/testData/integration-kapt4/withoutService/build.txt +++ b/plugins/kapt3/kapt3-cli/testData/integration-kapt4/withoutService/build.txt @@ -21,7 +21,6 @@ ap/Processor.kt # kapt -language-version 2.0 --Xuse-kapt4 -Kapt-stubs=output/stubs -Kapt-classes=output/classes -Kapt-sources=output/sources diff --git a/plugins/kapt3/kapt3-cli/testData/integration/argfile/apKotlincArgs.txt b/plugins/kapt3/kapt3-cli/testData/integration/argfile/apKotlincArgs.txt index 0587b56b206..11fd97033e1 100644 --- a/plugins/kapt3/kapt3-cli/testData/integration/argfile/apKotlincArgs.txt +++ b/plugins/kapt3/kapt3-cli/testData/integration/argfile/apKotlincArgs.txt @@ -1,3 +1,4 @@ +-language-version 1.9 -cp %KOTLIN_STDLIB% -d output/ap ap/Processor.kt \ No newline at end of file diff --git a/plugins/kapt3/kapt3-cli/testData/integration/argfile/kaptArgs.txt b/plugins/kapt3/kapt3-cli/testData/integration/argfile/kaptArgs.txt index 68cf0ee1b86..85b3d5cbf41 100644 --- a/plugins/kapt3/kapt3-cli/testData/integration/argfile/kaptArgs.txt +++ b/plugins/kapt3/kapt3-cli/testData/integration/argfile/kaptArgs.txt @@ -1,3 +1,4 @@ +-language-version 1.9 -Kapt-stubs=output/stubs -Kapt-classes=output/classes -Kapt-sources=output/sources diff --git a/plugins/kapt3/kapt3-cli/testData/integration/correctErrorTypesOff/build.txt b/plugins/kapt3/kapt3-cli/testData/integration/correctErrorTypesOff/build.txt index 3a9c302792e..7cd08eb7cb7 100644 --- a/plugins/kapt3/kapt3-cli/testData/integration/correctErrorTypesOff/build.txt +++ b/plugins/kapt3/kapt3-cli/testData/integration/correctErrorTypesOff/build.txt @@ -14,11 +14,13 @@ output/javaClasses output/sources # kotlinc +-language-version 1.9 -cp %KOTLIN_STDLIB% -d output/ap ap/Processor.kt # kapt +-language-version 1.9 -Kapt-stubs=output/stubs -Kapt-classes=output/classes -Kapt-sources=output/sources @@ -41,7 +43,6 @@ test.Test # after Return code: 1 -warning: kapt currently doesn't support language version 2.0+. Falling back to 1.9. error: error: NonExistentClass type occurred Test.kt:4:8: error: unresolved reference: generated import generated.Property diff --git a/plugins/kapt3/kapt3-cli/testData/integration/correctErrorTypesOn/build.txt b/plugins/kapt3/kapt3-cli/testData/integration/correctErrorTypesOn/build.txt index 5cc53e3e9d1..606837e1c74 100644 --- a/plugins/kapt3/kapt3-cli/testData/integration/correctErrorTypesOn/build.txt +++ b/plugins/kapt3/kapt3-cli/testData/integration/correctErrorTypesOn/build.txt @@ -6,11 +6,13 @@ output/javaClasses output/sources # kotlinc +-language-version 1.9 -cp %KOTLIN_STDLIB% -d output/ap ap/Processor.kt # kapt +-language-version 1.9 -Kapt-stubs=output/stubs -Kapt-classes=output/classes -Kapt-sources=output/sources diff --git a/plugins/kapt3/kapt3-cli/testData/integration/defaultPackage/build.txt b/plugins/kapt3/kapt3-cli/testData/integration/defaultPackage/build.txt index 08ef3b796e3..4a1110803ae 100644 --- a/plugins/kapt3/kapt3-cli/testData/integration/defaultPackage/build.txt +++ b/plugins/kapt3/kapt3-cli/testData/integration/defaultPackage/build.txt @@ -10,11 +10,13 @@ output/javaClasses output/sources # kotlinc +-language-version 1.9 -cp %KOTLIN_STDLIB% -d output/ap ap/Processor.kt # kapt +-language-version 1.9 -Kapt-stubs=output/stubs -Kapt-classes=output/classes -Kapt-sources=output/sources diff --git a/plugins/kapt3/kapt3-cli/testData/integration/fallback/Test.kt b/plugins/kapt3/kapt3-cli/testData/integration/fallback/Test.kt deleted file mode 100644 index a23c6701f3b..00000000000 --- a/plugins/kapt3/kapt3-cli/testData/integration/fallback/Test.kt +++ /dev/null @@ -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) -} \ No newline at end of file diff --git a/plugins/kapt3/kapt3-cli/testData/integration/fallback/ap/META-INF/services/javax.annotation.processing.Processor b/plugins/kapt3/kapt3-cli/testData/integration/fallback/ap/META-INF/services/javax.annotation.processing.Processor deleted file mode 100644 index 078558ee7db..00000000000 --- a/plugins/kapt3/kapt3-cli/testData/integration/fallback/ap/META-INF/services/javax.annotation.processing.Processor +++ /dev/null @@ -1 +0,0 @@ -apt.SampleApt \ No newline at end of file diff --git a/plugins/kapt3/kapt3-cli/testData/integration/fallback/ap/Processor.kt b/plugins/kapt3/kapt3-cli/testData/integration/fallback/ap/Processor.kt deleted file mode 100644 index 22afdb91cc7..00000000000 --- a/plugins/kapt3/kapt3-cli/testData/integration/fallback/ap/Processor.kt +++ /dev/null @@ -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, 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") -} \ No newline at end of file diff --git a/plugins/kapt3/kapt3-cli/testData/integration/fallback/build.txt b/plugins/kapt3/kapt3-cli/testData/integration/fallback/build.txt deleted file mode 100644 index a510c56593f..00000000000 --- a/plugins/kapt3/kapt3-cli/testData/integration/fallback/build.txt +++ /dev/null @@ -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 \ No newline at end of file diff --git a/plugins/kapt3/kapt3-cli/testData/integration/kotlinFileGeneration/build.txt b/plugins/kapt3/kapt3-cli/testData/integration/kotlinFileGeneration/build.txt index d552d57b855..f343d483f23 100644 --- a/plugins/kapt3/kapt3-cli/testData/integration/kotlinFileGeneration/build.txt +++ b/plugins/kapt3/kapt3-cli/testData/integration/kotlinFileGeneration/build.txt @@ -6,6 +6,7 @@ output/sources output/kotlin-sources # kotlinc +-language-version 1.9 -cp %KOTLIN_STDLIB% -d output/ap ap/Processor.kt @@ -15,6 +16,7 @@ ap/META-INF/services/javax.annotation.processing.Processor output/ap/META-INF/services/javax.annotation.processing.Processor # kapt +-language-version 1.9 -Kapt-stubs=output/stubs -Kapt-classes=output/classes -Kapt-sources=output/sources diff --git a/plugins/kapt3/kapt3-cli/testData/integration/kotlinFileGenerationCorrectErrorTypes/build.txt b/plugins/kapt3/kapt3-cli/testData/integration/kotlinFileGenerationCorrectErrorTypes/build.txt index 3feb71f53fe..f3aecd62a2a 100644 --- a/plugins/kapt3/kapt3-cli/testData/integration/kotlinFileGenerationCorrectErrorTypes/build.txt +++ b/plugins/kapt3/kapt3-cli/testData/integration/kotlinFileGenerationCorrectErrorTypes/build.txt @@ -10,6 +10,7 @@ output/sources output/kotlin-sources # kotlinc +-language-version 1.9 -cp %KOTLIN_STDLIB% -d output/ap ap/Processor.kt @@ -19,6 +20,7 @@ ap/Processor.kt output/ap/META-INF/services/javax.annotation.processing.Processor # kapt +-language-version 1.9 -Kapt-stubs=output/stubs -Kapt-classes=output/classes -Kapt-sources=output/sources diff --git a/plugins/kapt3/kapt3-cli/testData/integration/kotlinFileGenerationDefaultOutput/build.txt b/plugins/kapt3/kapt3-cli/testData/integration/kotlinFileGenerationDefaultOutput/build.txt index b555443b1f1..85fe46be3cd 100644 --- a/plugins/kapt3/kapt3-cli/testData/integration/kotlinFileGenerationDefaultOutput/build.txt +++ b/plugins/kapt3/kapt3-cli/testData/integration/kotlinFileGenerationDefaultOutput/build.txt @@ -13,11 +13,13 @@ output/classes output/sources # kotlinc +-language-version 1.9 -cp %KOTLIN_STDLIB% -d output/ap ap/Processor.kt # kapt +-language-version 1.9 -Kapt-stubs=output/stubs -Kapt-classes=output/classes -Kapt-sources=output/sources diff --git a/plugins/kapt3/kapt3-cli/testData/integration/kt33800/build.txt b/plugins/kapt3/kapt3-cli/testData/integration/kt33800/build.txt index fce839b01e9..dda98f8ba2f 100644 --- a/plugins/kapt3/kapt3-cli/testData/integration/kt33800/build.txt +++ b/plugins/kapt3/kapt3-cli/testData/integration/kt33800/build.txt @@ -10,6 +10,7 @@ output/javaClasses output/sources # kotlinc +-language-version 1.9 -cp %KOTLIN_STDLIB% -d output/ap ap/Processor.kt @@ -19,6 +20,7 @@ ap/Processor.kt output/ap/META-INF/services/javax.annotation.processing.Processor # kapt +-language-version 1.9 -Kapt-stubs=output/stubs -Kapt-classes=output/classes -Kapt-sources=output/sources diff --git a/plugins/kapt3/kapt3-cli/testData/integration/multipass/build.txt b/plugins/kapt3/kapt3-cli/testData/integration/multipass/build.txt index 9cb0559d41d..335dfd2d5cf 100644 --- a/plugins/kapt3/kapt3-cli/testData/integration/multipass/build.txt +++ b/plugins/kapt3/kapt3-cli/testData/integration/multipass/build.txt @@ -6,11 +6,13 @@ output/javaClasses output/sources # kotlinc +-language-version 1.9 -cp %KOTLIN_STDLIB% -d output/ap ap/processors.kt # kapt +-language-version 1.9 -Kapt-stubs=output/stubs -Kapt-classes=output/classes -Kapt-sources=output/sources diff --git a/plugins/kapt3/kapt3-cli/testData/integration/separateStubAptCompilation/build.txt b/plugins/kapt3/kapt3-cli/testData/integration/separateStubAptCompilation/build.txt index 6abb00d3b8d..b988f65e117 100644 --- a/plugins/kapt3/kapt3-cli/testData/integration/separateStubAptCompilation/build.txt +++ b/plugins/kapt3/kapt3-cli/testData/integration/separateStubAptCompilation/build.txt @@ -14,11 +14,13 @@ output/javaClasses output/sources # kotlinc +-language-version 1.9 -cp %KOTLIN_STDLIB% -d output/ap ap/Processor.kt # kapt +-language-version 1.9 -Kapt-stubs=output/stubs -Kapt-classes=output/classes -Kapt-sources=output/sources @@ -29,6 +31,7 @@ ap/Processor.kt Test.kt # kapt +-language-version 1.9 -Kapt-stubs=output/stubs -Kapt-classes=output/classes -Kapt-sources=output/sources @@ -40,6 +43,7 @@ Test.kt Test.kt # kotlinc +-language-version 1.9 -d output/classes -cp output/ap:%KOTLIN_STDLIB% output/sources diff --git a/plugins/kapt3/kapt3-cli/testData/integration/simple/build.txt b/plugins/kapt3/kapt3-cli/testData/integration/simple/build.txt index 6ec1cd7527b..0ef1f625e20 100644 --- a/plugins/kapt3/kapt3-cli/testData/integration/simple/build.txt +++ b/plugins/kapt3/kapt3-cli/testData/integration/simple/build.txt @@ -6,6 +6,7 @@ output/javaClasses output/sources # kotlinc +-language-version 1.9 -cp %KOTLIN_STDLIB% -d output/ap ap/Processor.kt @@ -15,6 +16,7 @@ ap/META-INF/services/javax.annotation.processing.Processor output/ap/META-INF/services/javax.annotation.processing.Processor # kapt +-language-version 1.9 -Kapt-stubs=output/stubs -Kapt-classes=output/classes -Kapt-sources=output/sources diff --git a/plugins/kapt3/kapt3-cli/testData/integration/withoutService/build.txt b/plugins/kapt3/kapt3-cli/testData/integration/withoutService/build.txt index 741b60e3d9c..fc1ea69a8ec 100644 --- a/plugins/kapt3/kapt3-cli/testData/integration/withoutService/build.txt +++ b/plugins/kapt3/kapt3-cli/testData/integration/withoutService/build.txt @@ -14,11 +14,13 @@ output/javaClasses output/sources # kotlinc +-language-version 1.9 -cp %KOTLIN_STDLIB% -d output/ap ap/Processor.kt # kapt +-language-version 1.9 -Kapt-stubs=output/stubs -Kapt-classes=output/classes -Kapt-sources=output/sources diff --git a/plugins/kapt3/kapt3-cli/tests-gen/org/jetbrains/kotlin/kapt/cli/test/KaptToolIntegrationTestGenerated.java b/plugins/kapt3/kapt3-cli/tests-gen/org/jetbrains/kotlin/kapt/cli/test/KaptToolIntegrationTestGenerated.java index b7757217431..9f92cee0dee 100644 --- a/plugins/kapt3/kapt3-cli/tests-gen/org/jetbrains/kotlin/kapt/cli/test/KaptToolIntegrationTestGenerated.java +++ b/plugins/kapt3/kapt3-cli/tests-gen/org/jetbrains/kotlin/kapt/cli/test/KaptToolIntegrationTestGenerated.java @@ -48,12 +48,6 @@ public class KaptToolIntegrationTestGenerated extends AbstractKaptToolIntegratio runTest("plugins/kapt3/kapt3-cli/testData/integration/defaultPackage/"); } - @Test - @TestMetadata("fallback") - public void testFallback() throws Exception { - runTest("plugins/kapt3/kapt3-cli/testData/integration/fallback/"); - } - @Test @TestMetadata("kotlinFileGeneration") public void testKotlinFileGeneration() throws Exception { diff --git a/plugins/kapt3/kapt3-compiler/src/org/jetbrains/kotlin/kapt3/Kapt3Plugin.kt b/plugins/kapt3/kapt3-compiler/src/org/jetbrains/kotlin/kapt3/Kapt3Plugin.kt index 712c184c509..8266c0c52bf 100644 --- a/plugins/kapt3/kapt3-compiler/src/org/jetbrains/kotlin/kapt3/Kapt3Plugin.kt +++ b/plugins/kapt3/kapt3-compiler/src/org/jetbrains/kotlin/kapt3/Kapt3Plugin.kt @@ -123,7 +123,6 @@ class Kapt3CommandLineProcessor : CommandLineProcessor { STRICT_MODE_OPTION -> setFlag(KaptFlag.STRICT, value) STRIP_METADATA_OPTION -> setFlag(KaptFlag.STRIP_METADATA, value) KEEP_KDOC_COMMENTS_IN_STUBS -> setFlag(KaptFlag.KEEP_KDOC_COMMENTS_IN_STUBS, value) - USE_K2 -> {} SHOW_PROCESSOR_STATS -> setFlag(KaptFlag.SHOW_PROCESSOR_STATS, value) DUMP_PROCESSOR_STATS -> processorsStatsReportFile = File(value) diff --git a/plugins/kapt4/src/org/jetbrains/kotlin/kapt4/Kapt4AnalysisHandlerExtension.kt b/plugins/kapt4/src/org/jetbrains/kotlin/kapt4/Kapt4AnalysisHandlerExtension.kt index 25999924c64..e041de788d4 100644 --- a/plugins/kapt4/src/org/jetbrains/kotlin/kapt4/Kapt4AnalysisHandlerExtension.kt +++ b/plugins/kapt4/src/org/jetbrains/kotlin/kapt4/Kapt4AnalysisHandlerExtension.kt @@ -5,6 +5,7 @@ package org.jetbrains.kotlin.kapt4 +import com.intellij.openapi.extensions.ExtensionPoint import com.intellij.openapi.util.Disposer import com.intellij.psi.PsiFile import com.intellij.psi.PsiJavaFile @@ -12,6 +13,7 @@ import org.jetbrains.kotlin.analysis.api.KtAnalysisApiInternals import org.jetbrains.kotlin.analysis.api.lifetime.KtLifetimeTokenProvider import org.jetbrains.kotlin.analysis.api.standalone.KtAlwaysAccessibleLifetimeTokenProvider import org.jetbrains.kotlin.analysis.api.standalone.buildStandaloneAnalysisAPISession +import org.jetbrains.kotlin.analysis.project.structure.KtCompilerPluginsProvider import org.jetbrains.kotlin.analysis.project.structure.KtSourceModule import org.jetbrains.kotlin.asJava.classes.KtLightClassForFacade import org.jetbrains.kotlin.cli.common.CLIConfigurationKeys @@ -22,6 +24,7 @@ import org.jetbrains.kotlin.cli.jvm.config.JvmClasspathRoot import org.jetbrains.kotlin.compiler.plugin.CompilerPluginRegistrar import org.jetbrains.kotlin.config.* import org.jetbrains.kotlin.config.CommonConfigurationKeys.USE_FIR +import org.jetbrains.kotlin.extensions.ProjectExtensionDescriptor import org.jetbrains.kotlin.fir.extensions.FirAnalysisHandlerExtension import org.jetbrains.kotlin.kapt3.EfficientProcessorLoader import org.jetbrains.kotlin.kapt3.KAPT_OPTIONS @@ -75,10 +78,23 @@ private class Kapt4AnalysisHandlerExtension : FirAnalysisHandlerExtension() { buildKtModuleProviderByCompilerConfiguration(updatedConfiguration) registerProjectService(KtLifetimeTokenProvider::class.java, KtAlwaysAccessibleLifetimeTokenProvider()) + registerProjectService(KtCompilerPluginsProvider::class.java, StandaloneCompilerPluginsProvider()) } val (module, files) = standaloneAnalysisAPISession.modulesWithFiles.entries.single() + val extensionStorage = CompilerPluginRegistrar.ExtensionStorage() + for (registrar in configuration.getList(CompilerPluginRegistrar.COMPILER_PLUGIN_REGISTRARS)) { + with(registrar) { extensionStorage.registerExtensions(configuration) } + } + for ((extensionPoint, extensions) in extensionStorage.registeredExtensions) { + for (extension in extensions) { + @Suppress("TestOnlyProblems") + module.project.extensionArea.getExtensionPointIfRegistered(extensionPoint.extensionPointName.name) + ?.registerExtension(extension, module.project) + } + } + optionsBuilder.apply { projectBaseDir = projectBaseDir ?: module.project.basePath?.let(::File) val contentRoots = configuration[CLIConfigurationKeys.CONTENT_ROOTS] ?: emptyList() diff --git a/plugins/kapt4/src/org/jetbrains/kotlin/kapt4/StandaloneCompilerPluginsProvider.kt b/plugins/kapt4/src/org/jetbrains/kotlin/kapt4/StandaloneCompilerPluginsProvider.kt new file mode 100644 index 00000000000..641e942a49a --- /dev/null +++ b/plugins/kapt4/src/org/jetbrains/kotlin/kapt4/StandaloneCompilerPluginsProvider.kt @@ -0,0 +1,27 @@ +/* + * Copyright 2010-2023 JetBrains s.r.o. and Kotlin Programming Language contributors. + * Use of this source code is governed by the Apache 2.0 license that can be found in the license/LICENSE.txt file. + */ + +package org.jetbrains.kotlin.kapt4 + +import org.jetbrains.kotlin.analysis.project.structure.KtCompilerPluginsProvider +import org.jetbrains.kotlin.analysis.project.structure.KtSourceModule +import org.jetbrains.kotlin.extensions.ProjectExtensionDescriptor +import org.jetbrains.kotlin.extensions.internal.InternalNonStableExtensionPoints +import org.jetbrains.kotlin.resolve.extensions.AssignResolutionAltererExtension + +internal class StandaloneCompilerPluginsProvider : KtCompilerPluginsProvider() { + override fun getRegisteredExtensions(module: KtSourceModule, extensionType: ProjectExtensionDescriptor): List { + return extensionType.getInstances(module.project) + } + + @OptIn(InternalNonStableExtensionPoints::class) + override fun isPluginOfTypeRegistered(module: KtSourceModule, pluginType: CompilerPluginType): Boolean { + val extension = when (pluginType) { + CompilerPluginType.ASSIGNMENT -> AssignResolutionAltererExtension + else -> return false + } + return extension.getInstances(module.project).isNotEmpty() + } +} \ No newline at end of file