From c585d91e791274aac69546db6c22ab6f13048d5e Mon Sep 17 00:00:00 2001 From: Ilya Chernikov Date: Fri, 15 Jan 2016 14:45:22 +0300 Subject: [PATCH] Adding generation states destroying to module-based compilation, to fix kapt usage with this compilation path --- .../compiler/KotlinToJVMBytecodeCompiler.kt | 19 +++++++++++++++---- 1 file changed, 15 insertions(+), 4 deletions(-) diff --git a/compiler/cli/src/org/jetbrains/kotlin/cli/jvm/compiler/KotlinToJVMBytecodeCompiler.kt b/compiler/cli/src/org/jetbrains/kotlin/cli/jvm/compiler/KotlinToJVMBytecodeCompiler.kt index db31c056b5a..c5b5e721fd5 100644 --- a/compiler/cli/src/org/jetbrains/kotlin/cli/jvm/compiler/KotlinToJVMBytecodeCompiler.kt +++ b/compiler/cli/src/org/jetbrains/kotlin/cli/jvm/compiler/KotlinToJVMBytecodeCompiler.kt @@ -49,6 +49,7 @@ import java.io.File import java.lang.reflect.Constructor import java.lang.reflect.InvocationTargetException import java.net.URLClassLoader +import java.util.* import java.util.concurrent.TimeUnit import java.util.jar.Attributes @@ -109,6 +110,8 @@ object KotlinToJVMBytecodeCompiler { result.throwIfError() + val generationStates = ArrayList(); + for (module in chunk) { ProgressIndicatorAndCompilationCanceledStatus.checkCanceled() val ktFiles = CompileEnvironmentUtil.getKtFiles( @@ -118,13 +121,21 @@ object KotlinToJVMBytecodeCompiler { val generationState = generate(environment, result, ktFiles, module, moduleOutputDirectory, module.getModuleName()) outputFiles.put(module, generationState.factory) + generationStates.add(generationState); } - for (module in chunk) { - ProgressIndicatorAndCompilationCanceledStatus.checkCanceled() - writeOutput(configuration, outputFiles[module]!!, File(module.getOutputDirectory()), jarPath, jarRuntime, null) + try { + for (module in chunk) { + ProgressIndicatorAndCompilationCanceledStatus.checkCanceled() + writeOutput(configuration, outputFiles[module]!!, File(module.getOutputDirectory()), jarPath, jarRuntime, null) + } + return true + } + finally { + for (generationState in generationStates) { + generationState.destroy(); + } } - return true } fun createCompilerConfiguration(