Kapt: Provide SourceRetentionAnnotationHandler for incremental compilation.
Collect annotations with the "SOURCE" retention. (cherry picked from commit 6ef66e7)
This commit is contained in:
committed by
Yan Zhulanow
parent
c3ae66bc9c
commit
975364b2ed
@@ -34,5 +34,6 @@
|
||||
<orderEntry type="module" module-name="light-classes" scope="TEST" />
|
||||
<orderEntry type="library" scope="TEST" name="junit-plugin" level="project" />
|
||||
<orderEntry type="module" module-name="annotation-processing" scope="TEST" />
|
||||
<orderEntry type="module" module-name="build-common" scope="TEST" />
|
||||
</component>
|
||||
</module>
|
||||
+13
-1
@@ -21,9 +21,12 @@ import org.jetbrains.kotlin.cli.jvm.compiler.EnvironmentConfigFiles
|
||||
import org.jetbrains.kotlin.cli.jvm.compiler.KotlinCoreEnvironment
|
||||
import org.jetbrains.kotlin.codegen.AbstractBytecodeTextTest
|
||||
import org.jetbrains.kotlin.codegen.CodegenTestUtil
|
||||
import org.jetbrains.kotlin.incremental.SourceRetentionAnnotationHandlerImpl
|
||||
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.load.kotlin.incremental.components.IncrementalCompilationComponents
|
||||
import org.jetbrains.kotlin.modules.TargetId
|
||||
import org.jetbrains.kotlin.resolve.jvm.extensions.AnalysisCompletedHandlerExtension
|
||||
import org.jetbrains.kotlin.test.ConfigurationKind
|
||||
import org.jetbrains.kotlin.test.KotlinTestUtils
|
||||
@@ -39,7 +42,8 @@ import javax.lang.model.element.*
|
||||
|
||||
class AnnotationProcessingExtensionForTests(
|
||||
val processors: List<Processor>
|
||||
) : AbstractAnnotationProcessingExtension(createTempDir(), createTempDir(), listOf(), true, createIncrementalDataFile()) {
|
||||
) : AbstractAnnotationProcessingExtension(createTempDir(), createTempDir(), listOf(), true,
|
||||
createIncrementalDataFile(), StubIncrementalCompilationComponents()) {
|
||||
override fun loadAnnotationProcessors() = processors
|
||||
|
||||
private companion object {
|
||||
@@ -51,6 +55,14 @@ class AnnotationProcessingExtensionForTests(
|
||||
deleteOnExit()
|
||||
}
|
||||
}
|
||||
|
||||
private class StubIncrementalCompilationComponents : IncrementalCompilationComponents {
|
||||
private val sourceRetentionAnnotationHandler = SourceRetentionAnnotationHandlerImpl()
|
||||
|
||||
override fun getIncrementalCache(target: TargetId) = null!!
|
||||
override fun getLookupTracker() = null!!
|
||||
override fun getSourceRetentionAnnotationHandler() = sourceRetentionAnnotationHandler
|
||||
}
|
||||
}
|
||||
|
||||
abstract class AbstractProcessorTest : AbstractBytecodeTextTest() {
|
||||
|
||||
+15
-2
@@ -17,6 +17,7 @@
|
||||
package org.jetbrains.kotlin.annotation.processing.test.processor
|
||||
|
||||
import org.intellij.lang.annotations.Language
|
||||
import org.jetbrains.kotlin.incremental.SourceRetentionAnnotationHandlerImpl
|
||||
import org.jetbrains.kotlin.java.model.elements.*
|
||||
import org.jetbrains.kotlin.java.model.types.JeDeclaredType
|
||||
import org.jetbrains.kotlin.java.model.types.JeMethodExecutableTypeMirror
|
||||
@@ -191,13 +192,25 @@ class ProcessorTests : AbstractProcessorTest() {
|
||||
"IncrementalDataSimple",
|
||||
"i Intf, i Test, i Test2, i Test3, i Test8")
|
||||
|
||||
private fun getKapt2Extension() = AnalysisCompletedHandlerExtension.getInstances(myEnvironment.project)
|
||||
.firstIsInstance<AnnotationProcessingExtensionForTests>()
|
||||
|
||||
private fun incrementalDataTest(fileName: String, @Language("TEXT") expectedText: String) {
|
||||
test(fileName, "Anno", "Anno2", "Anno3") { set, roundEnv, env -> }
|
||||
val ext = AnalysisCompletedHandlerExtension.getInstances(myEnvironment.project)
|
||||
.firstIsInstance<AnnotationProcessingExtensionForTests>()
|
||||
val ext = getKapt2Extension()
|
||||
val incrementalDataFile = ext.incrementalDataFile
|
||||
assertNotNull(incrementalDataFile)
|
||||
val text = incrementalDataFile!!.readText().lines().sorted().joinToString(", ")
|
||||
assertEquals(expectedText, text)
|
||||
}
|
||||
|
||||
fun testSourceRetention() {
|
||||
test("SourceRetention", "*") { set, roundEnv, env -> }
|
||||
val ext = getKapt2Extension()
|
||||
val incrementalCompilationComponents = ext.incrementalCompilationComponents
|
||||
assertNotNull(incrementalCompilationComponents)
|
||||
val annotationHandler = incrementalCompilationComponents!!.getSourceRetentionAnnotationHandler()
|
||||
val annotations = (annotationHandler as SourceRetentionAnnotationHandlerImpl).sourceRetentionAnnotations.sorted()
|
||||
assertEquals("Source1, Source2, Source3, Source4, Test5\$Source5", annotations.joinToString())
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user