From 34316d09bf1f528184c0497637559a59610c6ff1 Mon Sep 17 00:00:00 2001 From: Yan Zhulanow Date: Thu, 24 Nov 2016 00:30:08 +0300 Subject: [PATCH] Kapt3: Close annotation processing ClassLoader (KT-9440) --- .../org/jetbrains/kotlin/kapt3/Kapt3Extension.kt | 16 ++++++++++++++++ 1 file changed, 16 insertions(+) diff --git a/plugins/kapt3/src/org/jetbrains/kotlin/kapt3/Kapt3Extension.kt b/plugins/kapt3/src/org/jetbrains/kotlin/kapt3/Kapt3Extension.kt index 96d9dc349cc..c04407663b6 100644 --- a/plugins/kapt3/src/org/jetbrains/kotlin/kapt3/Kapt3Extension.kt +++ b/plugins/kapt3/src/org/jetbrains/kotlin/kapt3/Kapt3Extension.kt @@ -55,8 +55,24 @@ class ClasspathBasedKapt3Extension( override val analyzePartially: Boolean get() = useLightAnalysis + private var annotationProcessingClassLoader: URLClassLoader? = null + + override fun analysisCompleted( + project: Project, + module: ModuleDescriptor, + bindingTrace: BindingTrace, + files: Collection + ): AnalysisResult? { + try { + return super.analysisCompleted(project, module, bindingTrace, files) + } finally { + annotationProcessingClassLoader?.close() + } + } + override fun loadProcessors(): List { val classLoader = URLClassLoader(annotationProcessingClasspath.map { it.toURI().toURL() }.toTypedArray()) + this.annotationProcessingClassLoader = classLoader val processors = ServiceLoader.load(Processor::class.java, classLoader).toList() if (processors.isEmpty()) {