Kapt3: Allow to use ':' in annotation processor option value (KT-15139)

This commit is contained in:
Yan Zhulanow
2016-12-08 21:00:28 +03:00
committed by Yan Zhulanow
parent 3ecac1bbd3
commit e3db014c27
3 changed files with 12 additions and 2 deletions
@@ -106,6 +106,8 @@ class Kapt3IT : BaseGradleIT() {
Project("arguments", GRADLE_VERSION, directoryPrefix = "kapt2").build("build") {
assertSuccessful()
assertKaptSuccessful()
assertContains("Options: {suffix=Customized, justColon=:, justEquals==, containsColon=a:b, " +
"containsEquals=a=b, startsWithColon=:a, startsWithEquals==a, endsWithColon=a:, endsWithEquals=a:}")
assertFileExists("build/generated/source/kapt/main/example/TestClassCustomized.java")
assertFileExists("build/classes/main/example/TestClass.class")
assertFileExists("build/classes/main/example/TestClassCustomized.class")
@@ -23,5 +23,13 @@ dependencies {
kapt {
arguments {
arg("suffix", "Customized")
arg("justColon", ":")
arg("justEquals", "=")
arg("containsColon", "a:b")
arg("containsEquals", "a=b")
arg("startsWithColon", ":a")
arg("startsWithEquals", "=a")
arg("endsWithColon", "a:")
arg("endsWithEquals", "a:")
}
}
@@ -128,8 +128,8 @@ class Kapt3ComponentRegistrar : ComponentRegistrar {
val apClasspath = configuration.get(ANNOTATION_PROCESSOR_CLASSPATH)?.map(::File) ?: return
val apOptions = (configuration.get(APT_OPTIONS) ?: listOf())
.map { it.split(':') }
.filter { it.isNotEmpty() && it.size <= 2 }
.map { it.split(':', limit = 2) }
.filter { it.isNotEmpty() }
.map { it[0] to it.getOrElse(1) { "" } }
.toMap()