Kapt: Handle exceptions during annotation processing gracefully
(cherry picked from commit ee26c19)
This commit is contained in:
committed by
Yan Zhulanow
parent
82160bc86d
commit
2f933cfcf2
+6
@@ -16,12 +16,15 @@
|
||||
|
||||
package org.jetbrains.kotlin.annotation.processing.test.processor
|
||||
|
||||
import com.intellij.openapi.extensions.Extensions
|
||||
import com.intellij.testFramework.registerServiceInstance
|
||||
import org.jetbrains.kotlin.annotation.AbstractAnnotationProcessingExtension
|
||||
import org.jetbrains.kotlin.annotation.processing.diagnostic.DefaultErrorMessagesAnnotationProcessing
|
||||
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.diagnostics.rendering.DefaultErrorMessages
|
||||
import org.jetbrains.kotlin.incremental.SourceRetentionAnnotationHandlerImpl
|
||||
import org.jetbrains.kotlin.java.model.elements.JeAnnotationMirror
|
||||
import org.jetbrains.kotlin.java.model.elements.JeMethodExecutableElement
|
||||
@@ -74,6 +77,9 @@ abstract class AbstractProcessorTest : AbstractBytecodeTextTest() {
|
||||
|
||||
project.registerServiceInstance(JeElementRegistry::class.java, JeElementRegistry())
|
||||
|
||||
Extensions.getRootArea().getExtensionPoint(DefaultErrorMessages.Extension.EP_NAME)
|
||||
.registerExtension(DefaultErrorMessagesAnnotationProcessing())
|
||||
|
||||
return environment
|
||||
}
|
||||
|
||||
|
||||
+18
@@ -362,4 +362,22 @@ class ProcessorTests : AbstractProcessorTest() {
|
||||
test("c", "java.util.Map<java.lang.Integer,Test>")
|
||||
test("d", "java.util.Map<java.lang.Integer,Test>")
|
||||
}
|
||||
|
||||
fun testExceptionDuringAp() {
|
||||
class HiThere : RuntimeException()
|
||||
|
||||
var kotlinEnv: KotlinProcessingEnvironment? = null
|
||||
try {
|
||||
test("MapMutableMap", "*") { set, roundEnv, env ->
|
||||
kotlinEnv = env as KotlinProcessingEnvironment
|
||||
throw HiThere()
|
||||
}
|
||||
} catch (e: IllegalStateException) {
|
||||
assertTrue(e.message!!.startsWith("ANNOTATION_PROCESSING_ERROR"))
|
||||
}
|
||||
val env = kotlinEnv!!
|
||||
|
||||
assertEquals(1, env.messager.errorCount)
|
||||
assertEquals(0, env.messager.warningCount)
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user