diff --git a/libraries/tools/kotlin-gradle-plugin-integration-tests/src/test/kotlin/org/jetbrains/kotlin/gradle/AbstractKotlinAndroidGradleTests.kt b/libraries/tools/kotlin-gradle-plugin-integration-tests/src/test/kotlin/org/jetbrains/kotlin/gradle/AbstractKotlinAndroidGradleTests.kt
index 1228a81d22f..2a63de162c8 100644
--- a/libraries/tools/kotlin-gradle-plugin-integration-tests/src/test/kotlin/org/jetbrains/kotlin/gradle/AbstractKotlinAndroidGradleTests.kt
+++ b/libraries/tools/kotlin-gradle-plugin-integration-tests/src/test/kotlin/org/jetbrains/kotlin/gradle/AbstractKotlinAndroidGradleTests.kt
@@ -157,6 +157,16 @@ fun getSomething() = 10
}
}
+ @Test
+ fun testKaptKt15814() {
+ val project = Project("kaptKt15814", gradleVersion)
+ val options = defaultBuildOptions().copy(incremental = false)
+
+ project.build("assembleDebug", "test", options = options) {
+ assertSuccessful()
+ }
+ }
+
@Test
fun testAndroidIcepickProject() {
val project = Project("AndroidIcepickProject", gradleVersion)
diff --git a/libraries/tools/kotlin-gradle-plugin-integration-tests/src/test/resources/testProject/kaptKt15814/app/build.gradle b/libraries/tools/kotlin-gradle-plugin-integration-tests/src/test/resources/testProject/kaptKt15814/app/build.gradle
new file mode 100644
index 00000000000..0bb75b5e125
--- /dev/null
+++ b/libraries/tools/kotlin-gradle-plugin-integration-tests/src/test/resources/testProject/kaptKt15814/app/build.gradle
@@ -0,0 +1,41 @@
+apply plugin: 'com.android.application'
+apply plugin: 'kotlin-android'
+
+android {
+ compileSdkVersion 23
+ buildToolsVersion "23.0.1"
+ defaultConfig {
+ applicationId "com.example.genclassesnotfound"
+ minSdkVersion 19
+ targetSdkVersion 23
+ versionCode 1
+ versionName "1.0"
+ testInstrumentationRunner "android.support.test.runner.AndroidJUnitRunner"
+ }
+ buildTypes {
+ release {
+ minifyEnabled false
+ proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro'
+ }
+ }
+ sourceSets {
+ main.java.srcDirs += 'src/main/kotlin'
+ test.java.srcDirs += 'src/test/kotlin'
+ }
+}
+
+dependencies {
+ compile fileTree(dir: 'libs', include: ['*.jar'])
+ androidTestCompile('com.android.support.test.espresso:espresso-core:2.2.2', {
+ exclude group: 'com.android.support', module: 'support-annotations'
+ })
+ testCompile 'junit:junit:4.12'
+ compile "org.jetbrains.kotlin:kotlin-stdlib:$kotlin_version"
+ kaptTest "com.squareup.dagger:dagger-compiler:$dagger_version"
+ compile "com.squareup.dagger:dagger:$dagger_version"
+}
+
+repositories {
+ mavenLocal()
+ mavenCentral()
+}
diff --git a/libraries/tools/kotlin-gradle-plugin-integration-tests/src/test/resources/testProject/kaptKt15814/app/proguard-rules.pro b/libraries/tools/kotlin-gradle-plugin-integration-tests/src/test/resources/testProject/kaptKt15814/app/proguard-rules.pro
new file mode 100644
index 00000000000..f7a47c7ac07
--- /dev/null
+++ b/libraries/tools/kotlin-gradle-plugin-integration-tests/src/test/resources/testProject/kaptKt15814/app/proguard-rules.pro
@@ -0,0 +1,25 @@
+# Add project specific ProGuard rules here.
+# By default, the flags in this file are appended to flags specified
+# in /Users/knjohn/.android-sdk/tools/proguard/proguard-android.txt
+# You can edit the include path and order by changing the proguardFiles
+# directive in build.gradle.
+#
+# For more details, see
+# http://developer.android.com/guide/developing/tools/proguard.html
+
+# Add any project specific keep options here:
+
+# If your project uses WebView with JS, uncomment the following
+# and specify the fully qualified class name to the JavaScript interface
+# class:
+#-keepclassmembers class fqcn.of.javascript.interface.for.webview {
+# public *;
+#}
+
+# Uncomment this to preserve the line number information for
+# debugging stack traces.
+#-keepattributes SourceFile,LineNumberTable
+
+# If you keep the line number information, uncomment this to
+# hide the original source file name.
+#-renamesourcefileattribute SourceFile
diff --git a/libraries/tools/kotlin-gradle-plugin-integration-tests/src/test/resources/testProject/kaptKt15814/app/src/main/AndroidManifest.xml b/libraries/tools/kotlin-gradle-plugin-integration-tests/src/test/resources/testProject/kaptKt15814/app/src/main/AndroidManifest.xml
new file mode 100644
index 00000000000..dbea6bace73
--- /dev/null
+++ b/libraries/tools/kotlin-gradle-plugin-integration-tests/src/test/resources/testProject/kaptKt15814/app/src/main/AndroidManifest.xml
@@ -0,0 +1,15 @@
+
+
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/libraries/tools/kotlin-gradle-plugin-integration-tests/src/test/resources/testProject/kaptKt15814/app/src/main/java/com/example/genclassesnotfound/MainActivity.java b/libraries/tools/kotlin-gradle-plugin-integration-tests/src/test/resources/testProject/kaptKt15814/app/src/main/java/com/example/genclassesnotfound/MainActivity.java
new file mode 100644
index 00000000000..0ddcbddf0b9
--- /dev/null
+++ b/libraries/tools/kotlin-gradle-plugin-integration-tests/src/test/resources/testProject/kaptKt15814/app/src/main/java/com/example/genclassesnotfound/MainActivity.java
@@ -0,0 +1,13 @@
+package com.example.genclassesnotfound;
+
+import android.app.Activity;
+import android.os.Bundle;
+
+public class MainActivity extends Activity {
+
+ @Override
+ protected void onCreate(Bundle savedInstanceState) {
+ super.onCreate(savedInstanceState);
+ setContentView(R.layout.activity_main);
+ }
+}
diff --git a/libraries/tools/kotlin-gradle-plugin-integration-tests/src/test/resources/testProject/kaptKt15814/app/src/main/res/layout/activity_main.xml b/libraries/tools/kotlin-gradle-plugin-integration-tests/src/test/resources/testProject/kaptKt15814/app/src/main/res/layout/activity_main.xml
new file mode 100644
index 00000000000..6f42dc6c58f
--- /dev/null
+++ b/libraries/tools/kotlin-gradle-plugin-integration-tests/src/test/resources/testProject/kaptKt15814/app/src/main/res/layout/activity_main.xml
@@ -0,0 +1,12 @@
+
+
+
+
+
+
diff --git a/libraries/tools/kotlin-gradle-plugin-integration-tests/src/test/resources/testProject/kaptKt15814/app/src/main/res/values/strings.xml b/libraries/tools/kotlin-gradle-plugin-integration-tests/src/test/resources/testProject/kaptKt15814/app/src/main/res/values/strings.xml
new file mode 100644
index 00000000000..11dd1068c4c
--- /dev/null
+++ b/libraries/tools/kotlin-gradle-plugin-integration-tests/src/test/resources/testProject/kaptKt15814/app/src/main/res/values/strings.xml
@@ -0,0 +1,3 @@
+
+ GenClassesNotFound
+
diff --git a/libraries/tools/kotlin-gradle-plugin-integration-tests/src/test/resources/testProject/kaptKt15814/app/src/test/kotlin/com/example.genclassesnotfound/ExampleUnitTest.kt b/libraries/tools/kotlin-gradle-plugin-integration-tests/src/test/resources/testProject/kaptKt15814/app/src/test/kotlin/com/example.genclassesnotfound/ExampleUnitTest.kt
new file mode 100644
index 00000000000..70f5bc086db
--- /dev/null
+++ b/libraries/tools/kotlin-gradle-plugin-integration-tests/src/test/resources/testProject/kaptKt15814/app/src/test/kotlin/com/example.genclassesnotfound/ExampleUnitTest.kt
@@ -0,0 +1,40 @@
+package com.example.genclassesnotfound
+
+import dagger.Module
+import dagger.ObjectGraph
+import dagger.Provides
+import org.junit.Assert.assertEquals
+import org.junit.Before
+import org.junit.Test
+import javax.inject.Inject
+
+class ExampleUnitTest {
+
+ lateinit var graph: ObjectGraph
+ lateinit @Inject var config: Config
+
+ @Before
+ fun setUp() {
+ graph = ObjectGraph.create(TestModule())
+ graph.inject(this)
+ }
+
+ @Test
+ fun addition_isCorrect() {
+ assertEquals(4 + config.magicNumber, 9)
+ }
+
+ @Module(
+ injects = arrayOf(ExampleUnitTest::class),
+ complete = true,
+ library = true
+
+ )
+ class TestModule {
+ @Provides fun providesDependency(): Config {
+ return Config(5)
+ }
+ }
+
+ data class Config(val magicNumber : Int)
+}
\ No newline at end of file
diff --git a/libraries/tools/kotlin-gradle-plugin-integration-tests/src/test/resources/testProject/kaptKt15814/build.gradle b/libraries/tools/kotlin-gradle-plugin-integration-tests/src/test/resources/testProject/kaptKt15814/build.gradle
new file mode 100644
index 00000000000..086ca334fd2
--- /dev/null
+++ b/libraries/tools/kotlin-gradle-plugin-integration-tests/src/test/resources/testProject/kaptKt15814/build.gradle
@@ -0,0 +1,25 @@
+// Top-level build file where you can add configuration options common to all sub-projects/modules.
+
+buildscript {
+ ext.dagger_version = '1.2.5'
+ repositories {
+ mavenLocal()
+ jcenter()
+ }
+ dependencies {
+ classpath "com.android.tools.build:gradle:$android_tools_version"
+ classpath "org.jetbrains.kotlin:kotlin-gradle-plugin:$kotlin_version"
+ classpath "com.jakewharton.sdkmanager:gradle-plugin:0.12.+"
+ }
+}
+
+allprojects {
+ repositories {
+ mavenLocal()
+ jcenter()
+ }
+}
+
+task clean(type: Delete) {
+ delete rootProject.buildDir
+}
diff --git a/libraries/tools/kotlin-gradle-plugin-integration-tests/src/test/resources/testProject/kaptKt15814/gradle.properties b/libraries/tools/kotlin-gradle-plugin-integration-tests/src/test/resources/testProject/kaptKt15814/gradle.properties
new file mode 100644
index 00000000000..5fcc74643cf
--- /dev/null
+++ b/libraries/tools/kotlin-gradle-plugin-integration-tests/src/test/resources/testProject/kaptKt15814/gradle.properties
@@ -0,0 +1 @@
+org.gradle.jvmargs=-ea -XX:MaxPermSize=512m
\ No newline at end of file
diff --git a/libraries/tools/kotlin-gradle-plugin-integration-tests/src/test/resources/testProject/kaptKt15814/settings.gradle b/libraries/tools/kotlin-gradle-plugin-integration-tests/src/test/resources/testProject/kaptKt15814/settings.gradle
new file mode 100644
index 00000000000..e7b4def49cb
--- /dev/null
+++ b/libraries/tools/kotlin-gradle-plugin-integration-tests/src/test/resources/testProject/kaptKt15814/settings.gradle
@@ -0,0 +1 @@
+include ':app'
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 058cfcfc28e..ccbe841a90b 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
@@ -124,7 +124,7 @@ internal class Kotlin2JvmSourceSetProcessor(
var kotlinAfterJavaTask: KotlinCompile? = null
- if (aptConfiguration.dependencies.size > 1 && !Kapt3GradleSubplugin.isEnabled(project)) {
+ if (!Kapt3GradleSubplugin.isEnabled(project) && aptConfiguration.allDependencies.size > 1) {
javaTask.dependsOn(aptConfiguration.buildDependencies)
val (aptOutputDir, aptWorkingDir) = project.getAptDirsForSourceSet(sourceSetName)
@@ -388,7 +388,7 @@ internal open class KotlinAndroidPlugin(
for (provider in variantData.sourceProviders) {
val aptConfiguration = aptConfigurations[(provider as AndroidSourceSet).name]
// Ignore if there's only an annotation processor wrapper in dependencies (added by default)
- if (aptConfiguration != null && aptConfiguration.dependencies.size > 1) {
+ if (aptConfiguration != null && aptConfiguration.allDependencies.size > 1) {
javaTask.dependsOn(aptConfiguration.buildDependencies)
aptFiles.addAll(aptConfiguration.resolve())
}
@@ -609,6 +609,7 @@ private fun Project.getAptDirsForSourceSet(sourceSetName: String): Pair