From e3db014c27bfb628d494ae1e1529ff5ed3657621 Mon Sep 17 00:00:00 2001 From: Yan Zhulanow Date: Thu, 8 Dec 2016 21:00:28 +0300 Subject: [PATCH] Kapt3: Allow to use ':' in annotation processor option value (KT-15139) --- .../test/kotlin/org/jetbrains/kotlin/gradle/Kapt3IT.kt | 2 ++ .../resources/testProject/kapt2/arguments/build.gradle | 8 ++++++++ .../kapt3/src/org/jetbrains/kotlin/kapt3/Kapt3Plugin.kt | 4 ++-- 3 files changed, 12 insertions(+), 2 deletions(-) diff --git a/libraries/tools/kotlin-gradle-plugin-integration-tests/src/test/kotlin/org/jetbrains/kotlin/gradle/Kapt3IT.kt b/libraries/tools/kotlin-gradle-plugin-integration-tests/src/test/kotlin/org/jetbrains/kotlin/gradle/Kapt3IT.kt index 7c7436d1e66..73b88c60f30 100644 --- a/libraries/tools/kotlin-gradle-plugin-integration-tests/src/test/kotlin/org/jetbrains/kotlin/gradle/Kapt3IT.kt +++ b/libraries/tools/kotlin-gradle-plugin-integration-tests/src/test/kotlin/org/jetbrains/kotlin/gradle/Kapt3IT.kt @@ -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") diff --git a/libraries/tools/kotlin-gradle-plugin-integration-tests/src/test/resources/testProject/kapt2/arguments/build.gradle b/libraries/tools/kotlin-gradle-plugin-integration-tests/src/test/resources/testProject/kapt2/arguments/build.gradle index 48783e7f5a9..0f561175231 100644 --- a/libraries/tools/kotlin-gradle-plugin-integration-tests/src/test/resources/testProject/kapt2/arguments/build.gradle +++ b/libraries/tools/kotlin-gradle-plugin-integration-tests/src/test/resources/testProject/kapt2/arguments/build.gradle @@ -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:") } } \ No newline at end of file diff --git a/plugins/kapt3/src/org/jetbrains/kotlin/kapt3/Kapt3Plugin.kt b/plugins/kapt3/src/org/jetbrains/kotlin/kapt3/Kapt3Plugin.kt index b4326fc5b08..7ca760a3984 100644 --- a/plugins/kapt3/src/org/jetbrains/kotlin/kapt3/Kapt3Plugin.kt +++ b/plugins/kapt3/src/org/jetbrains/kotlin/kapt3/Kapt3Plugin.kt @@ -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()