diff --git a/plugins/kapt3/kapt3-base/src/org/jetbrains/kotlin/kapt3/base/incremental/classStructureCache.kt b/plugins/kapt3/kapt3-base/src/org/jetbrains/kotlin/kapt3/base/incremental/classStructureCache.kt index 69fd4fa71d9..ae89a466d28 100644 --- a/plugins/kapt3/kapt3-base/src/org/jetbrains/kotlin/kapt3/base/incremental/classStructureCache.kt +++ b/plugins/kapt3/kapt3-base/src/org/jetbrains/kotlin/kapt3/base/incremental/classStructureCache.kt @@ -5,12 +5,12 @@ package org.jetbrains.kotlin.kapt3.base.incremental -import com.sun.tools.javac.processing.JavacProcessingEnvironment import java.io.File import java.io.ObjectInputStream import java.io.ObjectOutputStream import java.io.Serializable import java.net.URI +import java.util.regex.Pattern class JavaClassCache() : Serializable { private var sourceCache = mutableMapOf() @@ -130,7 +130,18 @@ class JavaClassCache() : Serializable { * annotation processor. This search is not transitive. */ fun invalidateEntriesAnnotatedWith(annotations: Set): Set { - val patterns = annotations.map { JavacProcessingEnvironment.validImportStringToPattern(it) } + val patterns: List = if ("*" in annotations) { + // optimize this case - create only one pattern + listOf(Pattern.compile(".*")) + } else { + annotations.map { + Pattern.compile( + // These are already valid import statements, otherwise run fails when loading the annotation processor. + // Handles structure; TypeName [.*] e.g. org.jetbrains.annotations.NotNull and org.jetbrains.annotations.* + it.replace(".", "\\.").replace("*", ".+") + ) + } + } val matchesAnyPattern = { name: String -> patterns.any { it.matcher(name).matches() } } val toReprocess = mutableSetOf()