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 7a63673555c..60157c5df94 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 @@ -14,7 +14,6 @@ import kotlin.io.path.name import kotlin.io.path.walk @DisplayName("Kapt 4 base checks") -@Disabled("Causes OOM on Windows") class Kapt4IT : Kapt3IT() { override val defaultBuildOptions = super.defaultBuildOptions.copyEnsuringK2() 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 9d3decf159c..901b9aed7f1 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 @@ -4,7 +4,6 @@ import org.gradle.api.logging.LogLevel import org.gradle.testkit.runner.BuildResult import org.gradle.util.GradleVersion import org.jetbrains.kotlin.gradle.testbase.* -import org.junit.jupiter.api.Disabled import org.junit.jupiter.api.DisplayName import java.io.File import java.nio.file.Path @@ -15,7 +14,6 @@ import kotlin.io.path.deleteRecursively import kotlin.io.path.writeText import kotlin.test.assertEquals -@Disabled("Causes OOM on Windows") @DisplayName("Kapt incremental compilation") @OtherGradlePluginTests open class KaptIncrementalIT : KGPBaseTest() { 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 9589ba48a14..08c3e4cbea0 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 @@ -12,7 +12,6 @@ import org.jetbrains.kotlin.gradle.incapt.IncrementalBinaryIsolatingProcessor import org.jetbrains.kotlin.gradle.incapt.IncrementalIsolatingProcessor import org.jetbrains.kotlin.gradle.incapt.IncrementalProcessor import org.jetbrains.kotlin.gradle.testbase.* -import org.junit.jupiter.api.Disabled import org.junit.jupiter.api.DisplayName import java.io.File import kotlin.io.path.createDirectories @@ -21,7 +20,6 @@ import kotlin.io.path.writeText import kotlin.test.assertEquals import kotlin.test.assertTrue -@Disabled("Causes OOM on Windows") @DisplayName("Kapt incremental tests with aggregating apt") open class KaptIncrementalWithAggregatingApt : KaptIncrementalIT() { 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 d33e6483f1c..5adb3c84297 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,7 +12,6 @@ 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 @@ -24,7 +23,6 @@ import java.util.zip.ZipOutputStream import kotlin.io.path.* import kotlin.test.assertEquals -@Disabled("Causes OOM on Windows") @DisplayName("Kapt incremental tests with isolating apt") open class KaptIncrementalWithIsolatingApt : KaptIncrementalIT() { diff --git a/plugins/kapt4/src/org/jetbrains/kotlin/kapt4/Kapt4AnalysisHandlerExtension.kt b/plugins/kapt4/src/org/jetbrains/kotlin/kapt4/Kapt4AnalysisHandlerExtension.kt index b39e0818d68..db563db601d 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.util.Disposer import com.intellij.psi.PsiFile import com.intellij.psi.PsiJavaFile import org.jetbrains.kotlin.analysis.api.KtAnalysisApiInternals @@ -64,56 +65,63 @@ private class Kapt4AnalysisHandlerExtension : FirAnalysisHandlerExtension() { } } - val standaloneAnalysisAPISession = - buildStandaloneAnalysisAPISession(classLoader = Kapt4AnalysisHandlerExtension::class.java.classLoader) { - @Suppress("DEPRECATION") // TODO: KT-61319 Kapt: remove usages of deprecated buildKtModuleProviderByCompilerConfiguration - buildKtModuleProviderByCompilerConfiguration(updatedConfiguration) + val projectDisposable = Disposer.newDisposable("StandaloneAnalysisAPISession.project") + try { + val standaloneAnalysisAPISession = + buildStandaloneAnalysisAPISession( + projectDisposable = projectDisposable, + classLoader = Kapt4AnalysisHandlerExtension::class.java.classLoader) { + @Suppress("DEPRECATION") // TODO: KT-61319 Kapt: remove usages of deprecated buildKtModuleProviderByCompilerConfiguration + buildKtModuleProviderByCompilerConfiguration(updatedConfiguration) - registerProjectService(KtLifetimeTokenProvider::class.java, KtAlwaysAccessibleLifetimeTokenProvider()) - } - - val (module, files) = standaloneAnalysisAPISession.modulesWithFiles.entries.single() - - optionsBuilder.apply { - projectBaseDir = projectBaseDir ?: module.project.basePath?.let(::File) - val contentRoots = configuration[CLIConfigurationKeys.CONTENT_ROOTS] ?: emptyList() - compileClasspath.addAll(contentRoots.filterIsInstance().map { it.file }) - javaSourceRoots.addAll(contentRoots.filterIsInstance().map { it.file }) - classesOutputDir = classesOutputDir ?: configuration.get(JVMConfigurationKeys.OUTPUT_DIRECTORY) - } - - if (!optionsBuilder.checkOptions(logger, configuration)) return false - val options = optionsBuilder.build() - if (options[KaptFlag.VERBOSE]) { - logger.info(options.logString()) - } - - return try { - if (options.mode.generateStubs) { - generateAndSaveStubs( - module, - files, - options, - logger, - configuration.getBoolean(CommonConfigurationKeys.REPORT_OUTPUT_FILES), - configuration[CommonConfigurationKeys.METADATA_VERSION] - ) - - } - if (options.mode.runAnnotationProcessing) { - KaptContext( - options, - false, - logger - ).use { context -> - runProcessors(context, options) + registerProjectService(KtLifetimeTokenProvider::class.java, KtAlwaysAccessibleLifetimeTokenProvider()) } - } - true - } catch (e: Exception) { - logger.exception(e) - false + val (module, files) = standaloneAnalysisAPISession.modulesWithFiles.entries.single() + + optionsBuilder.apply { + projectBaseDir = projectBaseDir ?: module.project.basePath?.let(::File) + val contentRoots = configuration[CLIConfigurationKeys.CONTENT_ROOTS] ?: emptyList() + compileClasspath.addAll(contentRoots.filterIsInstance().map { it.file }) + javaSourceRoots.addAll(contentRoots.filterIsInstance().map { it.file }) + classesOutputDir = classesOutputDir ?: configuration.get(JVMConfigurationKeys.OUTPUT_DIRECTORY) + } + + if (!optionsBuilder.checkOptions(logger, configuration)) return false + val options = optionsBuilder.build() + if (options[KaptFlag.VERBOSE]) { + logger.info(options.logString()) + } + + return try { + if (options.mode.generateStubs) { + generateAndSaveStubs( + module, + files, + options, + logger, + configuration.getBoolean(CommonConfigurationKeys.REPORT_OUTPUT_FILES), + configuration[CommonConfigurationKeys.METADATA_VERSION] + ) + + } + if (options.mode.runAnnotationProcessing) { + KaptContext( + options, + false, + logger + ).use { context -> + runProcessors(context, options) + } + } + true + + } catch (e: Exception) { + logger.exception(e) + false + } + } finally { + Disposer.dispose(projectDisposable) } }