From f01a956a8b3ad91140bddcd3a6393353c74515e2 Mon Sep 17 00:00:00 2001 From: Alexey Tsvetkov Date: Thu, 27 Oct 2016 23:52:39 +0300 Subject: [PATCH] Gradle IC: fix converting class to package facade --- .../incremental/IncrementalCacheImpl.kt | 8 ++++++- .../classToPackageFacade/build.log | 24 ++++++++----------- 2 files changed, 17 insertions(+), 15 deletions(-) diff --git a/build-common/src/org/jetbrains/kotlin/incremental/IncrementalCacheImpl.kt b/build-common/src/org/jetbrains/kotlin/incremental/IncrementalCacheImpl.kt index 543cb3cfd5a..ee70f2d93ec 100644 --- a/build-common/src/org/jetbrains/kotlin/incremental/IncrementalCacheImpl.kt +++ b/build-common/src/org/jetbrains/kotlin/incremental/IncrementalCacheImpl.kt @@ -192,13 +192,19 @@ open class IncrementalCacheImpl( // the class' proto wouldn't ever be deleted, // because we don't write proto for multifile facades. // As a workaround we can remove proto values for multifile facades. + val additionalChangeInfo = if (className in protoMap) { + val info = ChangeInfo.SignatureChanged(className.fqNameForClassNameWithoutDollars, areSubclassesAffected = true) + CompilationResult(protoChanged = true, changes = sequenceOf(info)) + } + else CompilationResult.NO_CHANGES protoMap.remove(className) classFqNameToSourceMap.remove(className.fqNameForClassNameWithoutDollars) internalNameToSource.remove(className.internalName) // TODO NO_CHANGES? (delegates only) constantsMap.process(kotlinClass, isPackage = true) + - inlineFunctionsMap.process(kotlinClass, isPackage = true) + inlineFunctionsMap.process(kotlinClass, isPackage = true) + + additionalChangeInfo } KotlinClassHeader.Kind.MULTIFILE_CLASS_PART -> { assert(sourceFiles.size == 1) { "Multifile class part from several source files: $sourceFiles" } diff --git a/jps-plugin/testData/incremental/classHierarchyAffected/classToPackageFacade/build.log b/jps-plugin/testData/incremental/classHierarchyAffected/classToPackageFacade/build.log index 4e14747989d..435ae8dc53e 100644 --- a/jps-plugin/testData/incremental/classHierarchyAffected/classToPackageFacade/build.log +++ b/jps-plugin/testData/incremental/classHierarchyAffected/classToPackageFacade/build.log @@ -10,24 +10,32 @@ Compiling files: End of files Marked as dirty by Kotlin: src/AChild.kt + src/getA.kt + src/getAChild.kt src/useF.kt src/useG.kt + src/useH.kt + src/useJ.kt Exit code: ADDITIONAL_PASS_REQUIRED ------------------------------------------ Cleaning output files: out/production/module/AChild.class + out/production/module/GetAChildKt.class out/production/module/GetAKt.class out/production/module/META-INF/module.kotlin_module out/production/module/UseFKt.class out/production/module/UseGKt.class out/production/module/UseHKt.class + out/production/module/UseJKt.class End of files Compiling files: src/AChild.kt src/getA.kt + src/getAChild.kt src/useF.kt src/useG.kt src/useH.kt + src/useJ.kt End of files Exit code: ABORT ------------------------------------------ @@ -50,22 +58,10 @@ Compiling files: src/AChild.kt src/APartF.kt src/APartG.kt + src/getAChild.kt src/useF.kt src/useG.kt -End of files -Marked as dirty by Kotlin: - src/getAChild.kt - src/useJ.kt -Exit code: ADDITIONAL_PASS_REQUIRED ------------------------------------------- -Cleaning output files: - out/production/module/GetAChildKt.class - out/production/module/META-INF/module.kotlin_module - out/production/module/UseJKt.class -End of files -Compiling files: - src/getAChild.kt src/useJ.kt End of files Exit code: OK ------------------------------------------- +------------------------------------------ \ No newline at end of file