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 4d2e131e33f..58e22ffcf51 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 @@ -577,4 +577,14 @@ open class Kapt3IT : Kapt3BaseIT() { testResolveAllConfigurations() } + + @Test + fun testMPPKaptPresence() { + val project = Project("mpp-kapt-presence", directoryPrefix = "kapt2") + + project.build("build") { + assertSuccessful() + assertTasksExecuted(":dac:jdk:kaptGenerateStubsKotlin", ":dac:jdk:compileKotlin") + } + } } \ No newline at end of file diff --git a/libraries/tools/kotlin-gradle-plugin-integration-tests/src/test/resources/testProject/kapt2/mpp-kapt-presence/build.gradle b/libraries/tools/kotlin-gradle-plugin-integration-tests/src/test/resources/testProject/kapt2/mpp-kapt-presence/build.gradle new file mode 100644 index 00000000000..bf41cdefeac --- /dev/null +++ b/libraries/tools/kotlin-gradle-plugin-integration-tests/src/test/resources/testProject/kapt2/mpp-kapt-presence/build.gradle @@ -0,0 +1,26 @@ +buildscript { + ext.deps = [ + 'kotlin': [ + 'stdlib': [ + 'common': "org.jetbrains.kotlin:kotlin-stdlib-common:$kotlin_version", + 'jdk': "org.jetbrains.kotlin:kotlin-stdlib:$kotlin_version", + ], + ], + ] + + repositories { + mavenLocal() + mavenCentral() + } + + dependencies { + classpath "org.jetbrains.kotlin:kotlin-gradle-plugin:$kotlin_version" + } +} + +allprojects { + repositories { + mavenLocal() + mavenCentral() + } +} diff --git a/libraries/tools/kotlin-gradle-plugin-integration-tests/src/test/resources/testProject/kapt2/mpp-kapt-presence/dac/build.gradle b/libraries/tools/kotlin-gradle-plugin-integration-tests/src/test/resources/testProject/kapt2/mpp-kapt-presence/dac/build.gradle new file mode 100644 index 00000000000..f011d28696d --- /dev/null +++ b/libraries/tools/kotlin-gradle-plugin-integration-tests/src/test/resources/testProject/kapt2/mpp-kapt-presence/dac/build.gradle @@ -0,0 +1,5 @@ +apply plugin: 'org.jetbrains.kotlin.platform.common' + +dependencies { + compile deps.kotlin.stdlib.common +} diff --git a/libraries/tools/kotlin-gradle-plugin-integration-tests/src/test/resources/testProject/kapt2/mpp-kapt-presence/dac/jdk/build.gradle b/libraries/tools/kotlin-gradle-plugin-integration-tests/src/test/resources/testProject/kapt2/mpp-kapt-presence/dac/jdk/build.gradle new file mode 100644 index 00000000000..065c65527d2 --- /dev/null +++ b/libraries/tools/kotlin-gradle-plugin-integration-tests/src/test/resources/testProject/kapt2/mpp-kapt-presence/dac/jdk/build.gradle @@ -0,0 +1,10 @@ +apply plugin: 'org.jetbrains.kotlin.platform.jvm' +apply plugin: 'kotlin-kapt' + +sourceCompatibility = JavaVersion.VERSION_1_8 +targetCompatibility = JavaVersion.VERSION_1_8 + +dependencies { + expectedBy project(':dac') + implementation deps.kotlin.stdlib.jdk +} diff --git a/libraries/tools/kotlin-gradle-plugin-integration-tests/src/test/resources/testProject/kapt2/mpp-kapt-presence/dac/jdk/src/main/kotlin/DocumentationService.kt b/libraries/tools/kotlin-gradle-plugin-integration-tests/src/test/resources/testProject/kapt2/mpp-kapt-presence/dac/jdk/src/main/kotlin/DocumentationService.kt new file mode 100644 index 00000000000..1b356018e2f --- /dev/null +++ b/libraries/tools/kotlin-gradle-plugin-integration-tests/src/test/resources/testProject/kapt2/mpp-kapt-presence/dac/jdk/src/main/kotlin/DocumentationService.kt @@ -0,0 +1,5 @@ +package test.abc + +actual interface DocumentationService { + actual fun list(): List +} diff --git a/libraries/tools/kotlin-gradle-plugin-integration-tests/src/test/resources/testProject/kapt2/mpp-kapt-presence/dac/src/main/kotlin/DocumentationService.kt b/libraries/tools/kotlin-gradle-plugin-integration-tests/src/test/resources/testProject/kapt2/mpp-kapt-presence/dac/src/main/kotlin/DocumentationService.kt new file mode 100644 index 00000000000..e3d9886ff2f --- /dev/null +++ b/libraries/tools/kotlin-gradle-plugin-integration-tests/src/test/resources/testProject/kapt2/mpp-kapt-presence/dac/src/main/kotlin/DocumentationService.kt @@ -0,0 +1,5 @@ +package test.abc + +expect interface DocumentationService { + fun list(): List +} diff --git a/libraries/tools/kotlin-gradle-plugin-integration-tests/src/test/resources/testProject/kapt2/mpp-kapt-presence/dac/src/main/kotlin/Item.kt b/libraries/tools/kotlin-gradle-plugin-integration-tests/src/test/resources/testProject/kapt2/mpp-kapt-presence/dac/src/main/kotlin/Item.kt new file mode 100644 index 00000000000..4d3e6e21a24 --- /dev/null +++ b/libraries/tools/kotlin-gradle-plugin-integration-tests/src/test/resources/testProject/kapt2/mpp-kapt-presence/dac/src/main/kotlin/Item.kt @@ -0,0 +1,3 @@ +package test.abc + +class Item diff --git a/libraries/tools/kotlin-gradle-plugin-integration-tests/src/test/resources/testProject/kapt2/mpp-kapt-presence/settings.gradle b/libraries/tools/kotlin-gradle-plugin-integration-tests/src/test/resources/testProject/kapt2/mpp-kapt-presence/settings.gradle new file mode 100644 index 00000000000..0d970f1f278 --- /dev/null +++ b/libraries/tools/kotlin-gradle-plugin-integration-tests/src/test/resources/testProject/kapt2/mpp-kapt-presence/settings.gradle @@ -0,0 +1,2 @@ +include ':dac' +include ':dac:jdk' diff --git a/libraries/tools/kotlin-gradle-plugin/src/main/kotlin/org/jetbrains/kotlin/gradle/plugin/KotlinMultiplatformPlugin.kt b/libraries/tools/kotlin-gradle-plugin/src/main/kotlin/org/jetbrains/kotlin/gradle/plugin/KotlinMultiplatformPlugin.kt index a40d006115b..40ca8109574 100644 --- a/libraries/tools/kotlin-gradle-plugin/src/main/kotlin/org/jetbrains/kotlin/gradle/plugin/KotlinMultiplatformPlugin.kt +++ b/libraries/tools/kotlin-gradle-plugin/src/main/kotlin/org/jetbrains/kotlin/gradle/plugin/KotlinMultiplatformPlugin.kt @@ -162,12 +162,12 @@ open class KotlinPlatformImplementationPluginBase(platformName: String) : Kotlin protected open fun addCommonSourceSetToPlatformSourceSet(commonSourceSet: Named, platformProject: Project) { platformProject.whenEvaluated { // At the point when the source set in the platform module is created, the task does not exist - val platformTask = platformProject.tasks + val platformTasks = platformProject.tasks .withType(AbstractKotlinCompile::class.java) - .singleOrNull { it.sourceSetName == commonSourceSet.name } // TODO use strict check once this code is not run in K/N + .filter { it.sourceSetName == commonSourceSet.name } // TODO use strict check once this code is not run in K/N val commonSources = getKotlinSourceDirectorySetSafe(commonSourceSet)!! - if (platformTask != null) { + for (platformTask in platformTasks) { platformTask.source(commonSources) platformTask.commonSourceSet += commonSources }