Kapt: Dispose every JeElement and JeTypeMirror because some annotation processors may store them in static fields. (KT-13917)
Hello, Data Binding, why you cache them? :( (cherry picked from commit d86a30b)
This commit is contained in:
committed by
Yan Zhulanow
parent
f83e7509b2
commit
46f3eae32c
+4
@@ -16,6 +16,7 @@
|
||||
|
||||
package org.jetbrains.kotlin.annotation.processing.test.processor
|
||||
|
||||
import com.intellij.testFramework.registerServiceInstance
|
||||
import org.jetbrains.kotlin.annotation.AbstractAnnotationProcessingExtension
|
||||
import org.jetbrains.kotlin.cli.jvm.compiler.EnvironmentConfigFiles
|
||||
import org.jetbrains.kotlin.cli.jvm.compiler.KotlinCoreEnvironment
|
||||
@@ -26,6 +27,7 @@ import org.jetbrains.kotlin.java.model.elements.JeAnnotationMirror
|
||||
import org.jetbrains.kotlin.java.model.elements.JeMethodExecutableElement
|
||||
import org.jetbrains.kotlin.java.model.elements.JeTypeElement
|
||||
import org.jetbrains.kotlin.java.model.elements.JeVariableElement
|
||||
import org.jetbrains.kotlin.java.model.internal.JeElementRegistry
|
||||
import org.jetbrains.kotlin.resolve.jvm.extensions.AnalysisCompletedHandlerExtension
|
||||
import org.jetbrains.kotlin.test.ConfigurationKind
|
||||
import org.jetbrains.kotlin.test.KotlinTestUtils
|
||||
@@ -67,6 +69,8 @@ abstract class AbstractProcessorTest : AbstractBytecodeTextTest() {
|
||||
val apExtension = AnnotationProcessingExtensionForTests(processors)
|
||||
AnalysisCompletedHandlerExtension.registerExtension(project, apExtension)
|
||||
|
||||
project.registerServiceInstance(JeElementRegistry::class.java, JeElementRegistry())
|
||||
|
||||
return environment
|
||||
}
|
||||
|
||||
|
||||
+1
-1
@@ -122,7 +122,7 @@ class ProcessorTests : AbstractProcessorTest() {
|
||||
fun AnnotationMirror.getParam(name: String) = elementValues.entries.first { it.key.simpleName.toString() == name }.value
|
||||
assertTrue(anno2.getParam("a") is JeAnnotationAnnotationValue)
|
||||
assertTrue((anno2.getParam("b") as JeArrayAnnotationValue).value.first() is JeAnnotationAnnotationValue)
|
||||
assertTrue(anno2.getParam("c") is JePrimitiveAnnotationValue)
|
||||
assertTrue(anno2.getParam("c") is JePrimitiveAnnotationValue<*>)
|
||||
assertTrue(anno2.getParam("d") is JeTypeAnnotationValue)
|
||||
assertTrue((anno2.getParam("e") as JeArrayAnnotationValue).value.first() is JeTypeAnnotationValue)
|
||||
}
|
||||
|
||||
+4
@@ -19,10 +19,12 @@ package org.jetbrains.kotlin.annotation.processing.test.wrappers
|
||||
import com.intellij.openapi.util.io.FileUtil
|
||||
import com.intellij.psi.JavaPsiFacade
|
||||
import com.intellij.psi.search.GlobalSearchScope
|
||||
import com.intellij.testFramework.registerServiceInstance
|
||||
import org.jetbrains.kotlin.codegen.AbstractBytecodeTextTest
|
||||
import org.jetbrains.kotlin.codegen.CodegenTestCase
|
||||
import org.jetbrains.kotlin.codegen.CodegenTestUtil
|
||||
import org.jetbrains.kotlin.java.model.elements.DefaultJeElementRenderer
|
||||
import org.jetbrains.kotlin.java.model.internal.JeElementRegistry
|
||||
import org.jetbrains.kotlin.java.model.toJeElement
|
||||
import org.jetbrains.kotlin.test.ConfigurationKind
|
||||
import org.jetbrains.kotlin.test.KotlinTestUtils
|
||||
@@ -38,6 +40,8 @@ abstract class AbstractAnnotationProcessingTest : AbstractBytecodeTextTest() {
|
||||
|
||||
override fun doMultiFileTest(wholeFile: File, files: List<CodegenTestCase.TestFile>, javaFilesDir: File?) {
|
||||
createEnvironmentWithMockJdkAndIdeaAnnotations(ConfigurationKind.ALL, files, javaFilesDir)
|
||||
myEnvironment.project.registerServiceInstance(JeElementRegistry::class.java, JeElementRegistry())
|
||||
|
||||
loadMultiFiles(files)
|
||||
|
||||
val text = FileUtil.loadFile(wholeFile, true)
|
||||
|
||||
Reference in New Issue
Block a user