diff --git a/libraries/tools/kotlin-gradle-plugin-integration-tests/src/test/kotlin/org/jetbrains/kotlin/gradle/Kapt3AndroidIT.kt b/libraries/tools/kotlin-gradle-plugin-integration-tests/src/test/kotlin/org/jetbrains/kotlin/gradle/Kapt3AndroidIT.kt
index 041a0afe2e5..96e854799a0 100644
--- a/libraries/tools/kotlin-gradle-plugin-integration-tests/src/test/kotlin/org/jetbrains/kotlin/gradle/Kapt3AndroidIT.kt
+++ b/libraries/tools/kotlin-gradle-plugin-integration-tests/src/test/kotlin/org/jetbrains/kotlin/gradle/Kapt3AndroidIT.kt
@@ -1,6 +1,7 @@
package org.jetbrains.kotlin.gradle
import org.jetbrains.kotlin.gradle.util.AGPVersion
+import org.jetbrains.kotlin.gradle.util.checkedReplace
import org.jetbrains.kotlin.gradle.util.getFileByName
import org.jetbrains.kotlin.gradle.util.modify
import org.jetbrains.kotlin.test.KotlinTestUtils
@@ -127,6 +128,33 @@ open class Kapt3AndroidIT : Kapt3BaseIT() {
}
}
+ @Test
+ fun testInterProjectIC() = with(Project("android-inter-project-ic", directoryPrefix = "kapt2")) {
+ build("assembleDebug") {
+ assertSuccessful()
+ assertKaptSuccessful()
+ }
+
+ fun modifyAndCheck(utilFileName: String, useUtilFileName: String) {
+ val utilKt = projectDir.getFileByName(utilFileName)
+ utilKt.modify {
+ it.checkedReplace("Int", "Number")
+ }
+
+ build("assembleDebug") {
+ assertSuccessful()
+ val affectedFile = projectDir.getFileByName(useUtilFileName)
+ assertCompiledKotlinSources(
+ relativize(affectedFile),
+ tasks = listOf("app:kaptGenerateStubsDebugKotlin", "app:compileDebugKotlin")
+ )
+ }
+ }
+
+ modifyAndCheck("libAndroidUtil.kt", "useLibAndroidUtil.kt")
+ modifyAndCheck("libJvmUtil.kt", "useLibJvmUtil.kt")
+ }
+
@Test
fun testICWithAnonymousClasses() {
val project = Project("icAnonymousTypes", directoryPrefix = "kapt2")
diff --git a/libraries/tools/kotlin-gradle-plugin-integration-tests/src/test/resources/testProject/kapt2/android-inter-project-ic/app/build.gradle b/libraries/tools/kotlin-gradle-plugin-integration-tests/src/test/resources/testProject/kapt2/android-inter-project-ic/app/build.gradle
new file mode 100644
index 00000000000..9c107be68b2
--- /dev/null
+++ b/libraries/tools/kotlin-gradle-plugin-integration-tests/src/test/resources/testProject/kapt2/android-inter-project-ic/app/build.gradle
@@ -0,0 +1,28 @@
+apply plugin: 'com.android.application'
+apply plugin: 'kotlin-android'
+apply plugin: 'kotlin-kapt'
+
+android {
+ compileSdkVersion 23
+ buildToolsVersion "25.0.2"
+
+ defaultConfig {
+ applicationId "org.example.inter.project.ic"
+ minSdkVersion 15
+ targetSdkVersion 23
+ versionCode 1
+ versionName "1.0"
+ javaCompileOptions.annotationProcessorOptions.includeCompileClasspath = true
+ }
+}
+
+dependencies {
+ compile fileTree(dir: 'libs', include: ['*.jar'])
+
+ compile 'com.android.support:appcompat-v7:23.3.0'
+ compile "org.jetbrains.kotlin:kotlin-stdlib:$kotlin_version"
+ compile project(':lib-android')
+ compile project(':lib-jvm')
+ compile "org.jetbrains.kotlin:annotation-processor-example:$kotlin_version"
+ kapt "org.jetbrains.kotlin:annotation-processor-example:$kotlin_version"
+}
\ No newline at end of file
diff --git a/libraries/tools/kotlin-gradle-plugin-integration-tests/src/test/resources/testProject/kapt2/android-inter-project-ic/app/src/main/AndroidManifest.xml b/libraries/tools/kotlin-gradle-plugin-integration-tests/src/test/resources/testProject/kapt2/android-inter-project-ic/app/src/main/AndroidManifest.xml
new file mode 100644
index 00000000000..9fa3becd54a
--- /dev/null
+++ b/libraries/tools/kotlin-gradle-plugin-integration-tests/src/test/resources/testProject/kapt2/android-inter-project-ic/app/src/main/AndroidManifest.xml
@@ -0,0 +1,8 @@
+
+
+
+
+
+
+
diff --git a/libraries/tools/kotlin-gradle-plugin-integration-tests/src/test/resources/testProject/kapt2/android-inter-project-ic/app/src/main/kotlin/org.example.inter.project.ic/App.kt b/libraries/tools/kotlin-gradle-plugin-integration-tests/src/test/resources/testProject/kapt2/android-inter-project-ic/app/src/main/kotlin/org.example.inter.project.ic/App.kt
new file mode 100644
index 00000000000..41e35dd903f
--- /dev/null
+++ b/libraries/tools/kotlin-gradle-plugin-integration-tests/src/test/resources/testProject/kapt2/android-inter-project-ic/app/src/main/kotlin/org.example.inter.project.ic/App.kt
@@ -0,0 +1,13 @@
+/*
+ * Copyright 2010-2019 JetBrains s.r.o. Use of this source code is governed by the Apache 2.0 license
+ * that can be found in the license/LICENSE.txt file.
+ */
+
+package org.example.inter.project.ic
+
+import android.app.Application
+
+@example.ExampleAnnotation
+class App : Application() {
+ private fun generated() = AppGenerated()
+}
diff --git a/libraries/tools/kotlin-gradle-plugin-integration-tests/src/test/resources/testProject/kapt2/android-inter-project-ic/app/src/main/kotlin/org.example.inter.project.ic/appDummy.kt b/libraries/tools/kotlin-gradle-plugin-integration-tests/src/test/resources/testProject/kapt2/android-inter-project-ic/app/src/main/kotlin/org.example.inter.project.ic/appDummy.kt
new file mode 100644
index 00000000000..bc90d0916d6
--- /dev/null
+++ b/libraries/tools/kotlin-gradle-plugin-integration-tests/src/test/resources/testProject/kapt2/android-inter-project-ic/app/src/main/kotlin/org.example.inter.project.ic/appDummy.kt
@@ -0,0 +1,8 @@
+/*
+ * Copyright 2010-2019 JetBrains s.r.o. Use of this source code is governed by the Apache 2.0 license
+ * that can be found in the license/LICENSE.txt file.
+ */
+
+package org.example.inter.project.ic
+
+fun appDummy() {}
\ No newline at end of file
diff --git a/libraries/tools/kotlin-gradle-plugin-integration-tests/src/test/resources/testProject/kapt2/android-inter-project-ic/app/src/main/kotlin/org.example.inter.project.ic/useLibAndroidUtil.kt b/libraries/tools/kotlin-gradle-plugin-integration-tests/src/test/resources/testProject/kapt2/android-inter-project-ic/app/src/main/kotlin/org.example.inter.project.ic/useLibAndroidUtil.kt
new file mode 100644
index 00000000000..a6b5a40d179
--- /dev/null
+++ b/libraries/tools/kotlin-gradle-plugin-integration-tests/src/test/resources/testProject/kapt2/android-inter-project-ic/app/src/main/kotlin/org.example.inter.project.ic/useLibAndroidUtil.kt
@@ -0,0 +1,10 @@
+/*
+ * Copyright 2010-2019 JetBrains s.r.o. Use of this source code is governed by the Apache 2.0 license
+ * that can be found in the license/LICENSE.txt file.
+ */
+
+package org.example.inter.project.ic
+
+import org.example.inter.project.ic.androidLib.*
+
+fun useLibAndroidUtil() = libAndroidUtil()
\ No newline at end of file
diff --git a/libraries/tools/kotlin-gradle-plugin-integration-tests/src/test/resources/testProject/kapt2/android-inter-project-ic/app/src/main/kotlin/org.example.inter.project.ic/useLibJvmUtil.kt b/libraries/tools/kotlin-gradle-plugin-integration-tests/src/test/resources/testProject/kapt2/android-inter-project-ic/app/src/main/kotlin/org.example.inter.project.ic/useLibJvmUtil.kt
new file mode 100644
index 00000000000..6c3f618768a
--- /dev/null
+++ b/libraries/tools/kotlin-gradle-plugin-integration-tests/src/test/resources/testProject/kapt2/android-inter-project-ic/app/src/main/kotlin/org.example.inter.project.ic/useLibJvmUtil.kt
@@ -0,0 +1,10 @@
+/*
+ * Copyright 2010-2019 JetBrains s.r.o. Use of this source code is governed by the Apache 2.0 license
+ * that can be found in the license/LICENSE.txt file.
+ */
+
+package org.example.inter.project.ic
+
+import org.example.inter.project.ic.jvmLib.*
+
+fun useLibJvmUtil() = libJvmUtil()
\ No newline at end of file
diff --git a/libraries/tools/kotlin-gradle-plugin-integration-tests/src/test/resources/testProject/kapt2/android-inter-project-ic/build.gradle b/libraries/tools/kotlin-gradle-plugin-integration-tests/src/test/resources/testProject/kapt2/android-inter-project-ic/build.gradle
new file mode 100644
index 00000000000..ac038ee658d
--- /dev/null
+++ b/libraries/tools/kotlin-gradle-plugin-integration-tests/src/test/resources/testProject/kapt2/android-inter-project-ic/build.gradle
@@ -0,0 +1,19 @@
+buildscript {
+ repositories {
+ mavenLocal()
+ maven { url 'https://maven.google.com' }
+ jcenter()
+ }
+ dependencies {
+ classpath "com.android.tools.build:gradle:$android_tools_version"
+ classpath "org.jetbrains.kotlin:kotlin-gradle-plugin:$kotlin_version"
+ }
+}
+
+subprojects {
+ repositories {
+ mavenLocal()
+ maven { url 'https://maven.google.com' }
+ jcenter()
+ }
+}
\ No newline at end of file
diff --git a/libraries/tools/kotlin-gradle-plugin-integration-tests/src/test/resources/testProject/kapt2/android-inter-project-ic/gradle.properties b/libraries/tools/kotlin-gradle-plugin-integration-tests/src/test/resources/testProject/kapt2/android-inter-project-ic/gradle.properties
new file mode 100644
index 00000000000..dc3793168f1
--- /dev/null
+++ b/libraries/tools/kotlin-gradle-plugin-integration-tests/src/test/resources/testProject/kapt2/android-inter-project-ic/gradle.properties
@@ -0,0 +1 @@
+kapt.verbose=true
\ No newline at end of file
diff --git a/libraries/tools/kotlin-gradle-plugin-integration-tests/src/test/resources/testProject/kapt2/android-inter-project-ic/lib-android/build.gradle b/libraries/tools/kotlin-gradle-plugin-integration-tests/src/test/resources/testProject/kapt2/android-inter-project-ic/lib-android/build.gradle
new file mode 100644
index 00000000000..144a8f25025
--- /dev/null
+++ b/libraries/tools/kotlin-gradle-plugin-integration-tests/src/test/resources/testProject/kapt2/android-inter-project-ic/lib-android/build.gradle
@@ -0,0 +1,18 @@
+apply plugin: 'com.android.library'
+apply plugin: 'kotlin-android'
+
+android {
+ compileSdkVersion 23
+ buildToolsVersion "25.0.2"
+
+ defaultConfig {
+ minSdkVersion 15
+ targetSdkVersion 23
+ versionCode 1
+ versionName "1.0"
+ }
+}
+
+dependencies {
+ compile "org.jetbrains.kotlin:kotlin-stdlib:$kotlin_version"
+}
\ No newline at end of file
diff --git a/libraries/tools/kotlin-gradle-plugin-integration-tests/src/test/resources/testProject/kapt2/android-inter-project-ic/lib-android/src/main/AndroidManifest.xml b/libraries/tools/kotlin-gradle-plugin-integration-tests/src/test/resources/testProject/kapt2/android-inter-project-ic/lib-android/src/main/AndroidManifest.xml
new file mode 100644
index 00000000000..fc9e7c87af6
--- /dev/null
+++ b/libraries/tools/kotlin-gradle-plugin-integration-tests/src/test/resources/testProject/kapt2/android-inter-project-ic/lib-android/src/main/AndroidManifest.xml
@@ -0,0 +1,3 @@
+
+
+
diff --git a/libraries/tools/kotlin-gradle-plugin-integration-tests/src/test/resources/testProject/kapt2/android-inter-project-ic/lib-android/src/main/kotlin/libAndroidDummy.kt b/libraries/tools/kotlin-gradle-plugin-integration-tests/src/test/resources/testProject/kapt2/android-inter-project-ic/lib-android/src/main/kotlin/libAndroidDummy.kt
new file mode 100644
index 00000000000..7335059a753
--- /dev/null
+++ b/libraries/tools/kotlin-gradle-plugin-integration-tests/src/test/resources/testProject/kapt2/android-inter-project-ic/lib-android/src/main/kotlin/libAndroidDummy.kt
@@ -0,0 +1,8 @@
+/*
+ * Copyright 2010-2019 JetBrains s.r.o. Use of this source code is governed by the Apache 2.0 license
+ * that can be found in the license/LICENSE.txt file.
+ */
+
+package org.example.inter.project.ic.androidLib
+
+fun libAndroidDummy() {}
\ No newline at end of file
diff --git a/libraries/tools/kotlin-gradle-plugin-integration-tests/src/test/resources/testProject/kapt2/android-inter-project-ic/lib-android/src/main/kotlin/libAndroidUtil.kt b/libraries/tools/kotlin-gradle-plugin-integration-tests/src/test/resources/testProject/kapt2/android-inter-project-ic/lib-android/src/main/kotlin/libAndroidUtil.kt
new file mode 100644
index 00000000000..eb9b5e3b5dc
--- /dev/null
+++ b/libraries/tools/kotlin-gradle-plugin-integration-tests/src/test/resources/testProject/kapt2/android-inter-project-ic/lib-android/src/main/kotlin/libAndroidUtil.kt
@@ -0,0 +1,8 @@
+/*
+ * Copyright 2010-2019 JetBrains s.r.o. Use of this source code is governed by the Apache 2.0 license
+ * that can be found in the license/LICENSE.txt file.
+ */
+
+package org.example.inter.project.ic.androidLib
+
+fun libAndroidUtil(): Int = 0
diff --git a/libraries/tools/kotlin-gradle-plugin-integration-tests/src/test/resources/testProject/kapt2/android-inter-project-ic/lib-jvm/build.gradle b/libraries/tools/kotlin-gradle-plugin-integration-tests/src/test/resources/testProject/kapt2/android-inter-project-ic/lib-jvm/build.gradle
new file mode 100644
index 00000000000..94c8ab22d92
--- /dev/null
+++ b/libraries/tools/kotlin-gradle-plugin-integration-tests/src/test/resources/testProject/kapt2/android-inter-project-ic/lib-jvm/build.gradle
@@ -0,0 +1,5 @@
+apply plugin: 'kotlin'
+
+dependencies {
+ compile "org.jetbrains.kotlin:kotlin-stdlib:$kotlin_version"
+}
\ No newline at end of file
diff --git a/libraries/tools/kotlin-gradle-plugin-integration-tests/src/test/resources/testProject/kapt2/android-inter-project-ic/lib-jvm/src/main/kotlin/libJvmDummy.kt b/libraries/tools/kotlin-gradle-plugin-integration-tests/src/test/resources/testProject/kapt2/android-inter-project-ic/lib-jvm/src/main/kotlin/libJvmDummy.kt
new file mode 100644
index 00000000000..8d72dc92f4e
--- /dev/null
+++ b/libraries/tools/kotlin-gradle-plugin-integration-tests/src/test/resources/testProject/kapt2/android-inter-project-ic/lib-jvm/src/main/kotlin/libJvmDummy.kt
@@ -0,0 +1,8 @@
+/*
+ * Copyright 2010-2019 JetBrains s.r.o. Use of this source code is governed by the Apache 2.0 license
+ * that can be found in the license/LICENSE.txt file.
+ */
+
+package org.example.inter.project.ic.jvmLib
+
+fun libJvmDummy() {}
\ No newline at end of file
diff --git a/libraries/tools/kotlin-gradle-plugin-integration-tests/src/test/resources/testProject/kapt2/android-inter-project-ic/lib-jvm/src/main/kotlin/libJvmUtil.kt b/libraries/tools/kotlin-gradle-plugin-integration-tests/src/test/resources/testProject/kapt2/android-inter-project-ic/lib-jvm/src/main/kotlin/libJvmUtil.kt
new file mode 100644
index 00000000000..4c98460bf0e
--- /dev/null
+++ b/libraries/tools/kotlin-gradle-plugin-integration-tests/src/test/resources/testProject/kapt2/android-inter-project-ic/lib-jvm/src/main/kotlin/libJvmUtil.kt
@@ -0,0 +1,8 @@
+/*
+ * Copyright 2010-2019 JetBrains s.r.o. Use of this source code is governed by the Apache 2.0 license
+ * that can be found in the license/LICENSE.txt file.
+ */
+
+package org.example.inter.project.ic.jvmLib
+
+fun libJvmUtil(): Int = 0
diff --git a/libraries/tools/kotlin-gradle-plugin-integration-tests/src/test/resources/testProject/kapt2/android-inter-project-ic/settings.gradle b/libraries/tools/kotlin-gradle-plugin-integration-tests/src/test/resources/testProject/kapt2/android-inter-project-ic/settings.gradle
new file mode 100644
index 00000000000..d69b439db3e
--- /dev/null
+++ b/libraries/tools/kotlin-gradle-plugin-integration-tests/src/test/resources/testProject/kapt2/android-inter-project-ic/settings.gradle
@@ -0,0 +1 @@
+include ':app', ':lib-android', ':lib-jvm'
diff --git a/libraries/tools/kotlin-gradle-plugin/src/main/kotlin/org/jetbrains/kotlin/gradle/internal/kapt/KaptGenerateStubsTask.kt b/libraries/tools/kotlin-gradle-plugin/src/main/kotlin/org/jetbrains/kotlin/gradle/internal/kapt/KaptGenerateStubsTask.kt
index 63f557e40a5..61beb0bc253 100644
--- a/libraries/tools/kotlin-gradle-plugin/src/main/kotlin/org/jetbrains/kotlin/gradle/internal/kapt/KaptGenerateStubsTask.kt
+++ b/libraries/tools/kotlin-gradle-plugin/src/main/kotlin/org/jetbrains/kotlin/gradle/internal/kapt/KaptGenerateStubsTask.kt
@@ -59,6 +59,13 @@ open class KaptGenerateStubsTask : KotlinCompile() {
internal val kotlinTaskPluginClasspath
get() = kotlinCompileTask.pluginClasspath
+ @get:Input
+ override var useModuleDetection: Boolean
+ get() = kotlinCompileTask.useModuleDetection
+ set(_) {
+ error("KaptGenerateStubsTask.useModuleDetection setter should not be called!")
+ }
+
override fun source(vararg sources: Any?): SourceTask? {
return super.source(sourceRootsContainer.add(sources))
}
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 e20b3b3ebd4..5776e242743 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
@@ -141,7 +141,7 @@ abstract class AbstractKotlinCompile() : AbstractKo
get() = File(taskBuildDirectory, "build-history.bin")
@get:Input
- internal var useModuleDetection: Boolean = false
+ internal open var useModuleDetection: Boolean = false
@get:Internal
protected val multiModuleICSettings: MultiModuleICSettings