[Lombok] Make FQNs of Guava collections shade-safe

^KT-53683
This commit is contained in:
Dmitriy Novozhilov
2022-09-19 18:24:14 +03:00
parent b1d42e1383
commit 367761008b
4 changed files with 53 additions and 15 deletions
@@ -22,7 +22,7 @@ object LombokNames {
val BUILDER = FqName("lombok.Builder")
val SINGULAR = FqName("lombok.Singular")
val TABLE = FqName("com.google.common.collect.Table")
val TABLE = FqName("Table".guavaPackage())
val ACCESSORS_ID = ClassId.topLevel(ACCESSORS)
val GETTER_ID = ClassId.topLevel(GETTER)
@@ -86,23 +86,35 @@ object LombokNames {
"kotlin.collections.MutableMap",
)
val SUPPORTED_GUAVA_COLLECTIONS = setOf(
"com.google.common.collect.ImmutableCollection",
"com.google.common.collect.ImmutableList",
"com.google.common.collect.ImmutableSet",
"com.google.common.collect.ImmutableSortedSet",
)
val SUPPORTED_GUAVA_COLLECTIONS = listOf(
"ImmutableCollection",
"ImmutableList",
"ImmutableSet",
"ImmutableSortedSet",
).guavaPackage()
private val SUPPORTED_GUAVA_MAPS = listOf(
"ImmutableMap",
"ImmutableBiMap",
"ImmutableSortedMap",
).guavaPackage()
private val SUPPORTED_GUAVA_MAPS = setOf(
"com.google.common.collect.ImmutableMap",
"com.google.common.collect.ImmutableBiMap",
"com.google.common.collect.ImmutableSortedMap",
)
val SUPPORTED_COLLECTIONS = SUPPORTED_JAVA_COLLECTIONS + SUPPORTED_KOTLIN_COLLECTIONS + SUPPORTED_GUAVA_COLLECTIONS
val SUPPORTED_MAPS = SUPPORTED_JAVA_MAPS + SUPPORTED_KOTLIN_MAPS + SUPPORTED_GUAVA_MAPS
val SUPPORTED_TABLES = setOf(
"com.google.common.collect.ImmutableTable",
)
val SUPPORTED_TABLES = listOf(
"ImmutableTable",
).guavaPackage()
// Such ugly function is needed because shade plugin shades any name starting with com.google
// which causes shading even from string literals
private fun Collection<String>.guavaPackage(): Set<String> {
return mapTo(mutableSetOf()) { it.guavaPackage() }
}
private fun String.guavaPackage(): String {
val prefix = listOf("com", "google", "common", "collect").joinToString(".")
return "$prefix.$this"
}
}