From 272f9b8a107462b04846a50b129246b7b9eeb238 Mon Sep 17 00:00:00 2001 From: Alexey Tsvetkov Date: Fri, 13 Jul 2018 01:54:10 +0300 Subject: [PATCH] Recompile all subclasses of changed classes Previously inter-project IC recompiled only direct subclasses of changed classes #KT-25455 fixed --- .../src/org/jetbrains/kotlin/incremental/buildUtil.kt | 1 + .../kotlin/gradle/IncrementalCompilationMultiProjectIT.kt | 2 +- .../incrementalMultiproject/app/src/main/kotlin/foo/AA.kt | 2 +- .../incrementalMultiproject/app/src/main/kotlin/foo/AAA.kt | 6 +----- 4 files changed, 4 insertions(+), 7 deletions(-) diff --git a/build-common/src/org/jetbrains/kotlin/incremental/buildUtil.kt b/build-common/src/org/jetbrains/kotlin/incremental/buildUtil.kt index 3d36439924d..44c427be531 100644 --- a/build-common/src/org/jetbrains/kotlin/incremental/buildUtil.kt +++ b/build-common/src/org/jetbrains/kotlin/incremental/buildUtil.kt @@ -132,6 +132,7 @@ fun ChangesCollector.getDirtyData( if (change is ChangeInfo.SignatureChanged) { val fqNames = if (!change.areSubclassesAffected) listOf(change.fqName) else withSubtypes(change.fqName, caches) + dirtyClassesFqNames.addAll(fqNames) for (classFqName in fqNames) { assert(!classFqName.isRoot) { "$classFqName is root when processing $change" } diff --git a/libraries/tools/kotlin-gradle-plugin-integration-tests/src/test/kotlin/org/jetbrains/kotlin/gradle/IncrementalCompilationMultiProjectIT.kt b/libraries/tools/kotlin-gradle-plugin-integration-tests/src/test/kotlin/org/jetbrains/kotlin/gradle/IncrementalCompilationMultiProjectIT.kt index 8811c005b78..fde8bb330b2 100644 --- a/libraries/tools/kotlin-gradle-plugin-integration-tests/src/test/kotlin/org/jetbrains/kotlin/gradle/IncrementalCompilationMultiProjectIT.kt +++ b/libraries/tools/kotlin-gradle-plugin-integration-tests/src/test/kotlin/org/jetbrains/kotlin/gradle/IncrementalCompilationMultiProjectIT.kt @@ -144,7 +144,7 @@ open class A { project.build("build") { assertSuccessful() - val affectedSources = project.projectDir.getFilesByNames("A.kt", "B.kt", "AA.kt", "BB.kt") + val affectedSources = project.projectDir.getFilesByNames("A.kt", "B.kt", "AA.kt", "AAA.kt", "BB.kt") val relativePaths = project.relativize(affectedSources) assertCompiledKotlinSources(relativePaths) } diff --git a/libraries/tools/kotlin-gradle-plugin-integration-tests/src/test/resources/testProject/incrementalMultiproject/app/src/main/kotlin/foo/AA.kt b/libraries/tools/kotlin-gradle-plugin-integration-tests/src/test/resources/testProject/incrementalMultiproject/app/src/main/kotlin/foo/AA.kt index ace5a2395c2..b10cb723a71 100644 --- a/libraries/tools/kotlin-gradle-plugin-integration-tests/src/test/resources/testProject/incrementalMultiproject/app/src/main/kotlin/foo/AA.kt +++ b/libraries/tools/kotlin-gradle-plugin-integration-tests/src/test/resources/testProject/incrementalMultiproject/app/src/main/kotlin/foo/AA.kt @@ -2,6 +2,6 @@ package foo import bar.* -class AA : A() { +open class AA : A() { fun aa() {} } \ No newline at end of file diff --git a/libraries/tools/kotlin-gradle-plugin-integration-tests/src/test/resources/testProject/incrementalMultiproject/app/src/main/kotlin/foo/AAA.kt b/libraries/tools/kotlin-gradle-plugin-integration-tests/src/test/resources/testProject/incrementalMultiproject/app/src/main/kotlin/foo/AAA.kt index d11f178ffa2..b96fa3ed574 100644 --- a/libraries/tools/kotlin-gradle-plugin-integration-tests/src/test/resources/testProject/incrementalMultiproject/app/src/main/kotlin/foo/AAA.kt +++ b/libraries/tools/kotlin-gradle-plugin-integration-tests/src/test/resources/testProject/incrementalMultiproject/app/src/main/kotlin/foo/AAA.kt @@ -5,8 +5,4 @@ package foo -import bar.* - -class AAA : A() { - fun aa() {} -} \ No newline at end of file +class AAA : AA() \ No newline at end of file