diff --git a/libraries/tools/kotlin-gradle-plugin/src/main/kotlin/org/jetbrains/kotlin/compilerRunner/GradleKotlinCompilerRunner.kt b/libraries/tools/kotlin-gradle-plugin/src/main/kotlin/org/jetbrains/kotlin/compilerRunner/GradleKotlinCompilerRunner.kt index c1f751af447..ee8d153a854 100644 --- a/libraries/tools/kotlin-gradle-plugin/src/main/kotlin/org/jetbrains/kotlin/compilerRunner/GradleKotlinCompilerRunner.kt +++ b/libraries/tools/kotlin-gradle-plugin/src/main/kotlin/org/jetbrains/kotlin/compilerRunner/GradleKotlinCompilerRunner.kt @@ -361,6 +361,7 @@ internal class GradleCompilerRunner(private val project: Project) : KotlinCompil for (task in project.tasks.withType(KotlinCompile::class.java)) { val module = IncrementalModuleEntry(project.path, task.moduleName, project.buildDir, task.buildHistoryFile) dirToModule[task.destinationDir] = module + task.javaOutputDir?.let { dirToModule[it] = module } nameToModules.getOrPut(module.name) { HashSet() }.add(module) } } diff --git a/libraries/tools/kotlin-gradle-plugin/src/main/kotlin/org/jetbrains/kotlin/gradle/plugin/KotlinPlugin.kt b/libraries/tools/kotlin-gradle-plugin/src/main/kotlin/org/jetbrains/kotlin/gradle/plugin/KotlinPlugin.kt index 11597630b52..3326746f13e 100755 --- a/libraries/tools/kotlin-gradle-plugin/src/main/kotlin/org/jetbrains/kotlin/gradle/plugin/KotlinPlugin.kt +++ b/libraries/tools/kotlin-gradle-plugin/src/main/kotlin/org/jetbrains/kotlin/gradle/plugin/KotlinPlugin.kt @@ -632,6 +632,8 @@ abstract class AbstractAndroidProjectHandler(private val kotlinConfigurationT } internal fun configureJavaTask(kotlinTask: KotlinCompile, javaTask: AbstractCompile, logger: Logger) { + kotlinTask.javaOutputDir = javaTask.destinationDir + // Gradle Java IC in older Gradle versions (before 2.14) cannot check .class directories updates. // To make it work, reset the up-to-date status of compileJava with this flag. kotlinTask.anyClassesCompiled = false diff --git a/libraries/tools/kotlin-gradle-plugin/src/main/kotlin/org/jetbrains/kotlin/gradle/tasks/Tasks.kt b/libraries/tools/kotlin-gradle-plugin/src/main/kotlin/org/jetbrains/kotlin/gradle/tasks/Tasks.kt index aed3047dc80..6421968aa17 100644 --- a/libraries/tools/kotlin-gradle-plugin/src/main/kotlin/org/jetbrains/kotlin/gradle/tasks/Tasks.kt +++ b/libraries/tools/kotlin-gradle-plugin/src/main/kotlin/org/jetbrains/kotlin/gradle/tasks/Tasks.kt @@ -185,10 +185,15 @@ abstract class AbstractKotlinCompile() : AbstractKo @get:Internal // takes part in the compiler arguments var friendPaths: Lazy?> = lazy { friendTask?.let { friendTask -> - mutableListOf().apply { - add((friendTask.javaOutputDir ?: friendTask.destinationDir).absolutePath) - addAll(friendTask.attachedClassesDirs.mapNotNull { it.value?.absolutePath }) - }.toTypedArray() + val possibleFriendDirs = ArrayList().apply { + add(friendTask.javaOutputDir) + add(friendTask.destinationDir) + addAll(friendTask.attachedClassesDirs.map { it.value }) + } + + possibleFriendDirs.filterNotNullTo(HashSet()) + .map { it.absolutePath } + .toTypedArray() } }