diff --git a/jps/jps-plugin/src/org/jetbrains/kotlin/jps/build/KotlinBuilder.kt b/jps/jps-plugin/src/org/jetbrains/kotlin/jps/build/KotlinBuilder.kt index a738daa1641..cede5205b5c 100644 --- a/jps/jps-plugin/src/org/jetbrains/kotlin/jps/build/KotlinBuilder.kt +++ b/jps/jps-plugin/src/org/jetbrains/kotlin/jps/build/KotlinBuilder.kt @@ -137,18 +137,12 @@ public class KotlinBuilder : ModuleLevelBuilder(BuilderCategory.SOURCE_PROCESSOR val dataManager = projectDescriptor.dataManager - if (!IncrementalCompilation.isEnabled()) { - dataManager.clean() - dataManager.flush(true) - } - else { - if (chunk.targets.any { dataManager.dataPaths.getKotlinCacheVersion(it).isIncompatible() }) { - LOG.info("Clearing caches for " + chunk.targets.map { it.presentableName }.join()) - val incrementalCaches = getIncrementalCaches(chunk, context) - incrementalCaches.values().forEach(StorageOwner::clean) - FSOperations.markDirtyRecursively(context, CompilationRound.NEXT, chunk) - return ADDITIONAL_PASS_REQUIRED - } + if (chunk.targets.any { dataManager.dataPaths.getKotlinCacheVersion(it).isIncompatible() }) { + LOG.info("Clearing caches for " + chunk.targets.map { it.presentableName }.join()) + val incrementalCaches = getIncrementalCaches(chunk, context) + incrementalCaches.values().forEach(StorageOwner::clean) + FSOperations.markDirtyRecursively(context, CompilationRound.NEXT, chunk) + return ADDITIONAL_PASS_REQUIRED } if (!dirtyFilesHolder.hasDirtyFiles() && !dirtyFilesHolder.hasRemovedFiles() diff --git a/jps/jps-plugin/src/org/jetbrains/kotlin/jps/incremental/CacheFormatVersion.kt b/jps/jps-plugin/src/org/jetbrains/kotlin/jps/incremental/CacheFormatVersion.kt index 42233675171..7f2a402cc25 100644 --- a/jps/jps-plugin/src/org/jetbrains/kotlin/jps/incremental/CacheFormatVersion.kt +++ b/jps/jps-plugin/src/org/jetbrains/kotlin/jps/incremental/CacheFormatVersion.kt @@ -38,9 +38,10 @@ class CacheFormatVersion(targetDataRoot: File) { private val file = File(targetDataRoot, FORMAT_VERSION_FILE_PATH) fun isIncompatible(): Boolean { - assert(IncrementalCompilation.isEnabled()) { "Incremental compilation is not enabled" } if (!file.exists()) return false + if (!IncrementalCompilation.isEnabled()) return true + val versionNumber = file.readText().toInt() if (versionNumber != CACHE_FORMAT_VERSION) { diff --git a/jps/jps-plugin/testData/incremental/lazyKotlinCaches/incrementalCompilationOff/build.log b/jps/jps-plugin/testData/incremental/lazyKotlinCaches/incrementalCompilationOff/build.log index d5edf8c4424..7cf680292e1 100644 --- a/jps/jps-plugin/testData/incremental/lazyKotlinCaches/incrementalCompilationOff/build.log +++ b/jps/jps-plugin/testData/incremental/lazyKotlinCaches/incrementalCompilationOff/build.log @@ -1,10 +1,26 @@ Cleaning output files: out/production/module1/module1/A.class End of files +Cleaning output files: +out/production/module1/META-INF/module1.kotlin_module +out/production/module1/module1/Module1Package.class +out/production/module1/module1/Module1_otherKt.class +End of files Compiling files: module1/src/module1_a.kt module1/src/module1_other.kt End of files +Cleaning output files: +out/production/module3/META-INF/module3.kotlin_module +out/production/module3/module3/Module3Package.class +out/production/module3/module3/Module3_cKt.class +End of files +Compiling files: +module3/src/module3_c.kt +End of files +Cleaning output files: +out/production/module2/B.class +End of files Compiling files: module2/src/module2_B.java End of files \ No newline at end of file diff --git a/jps/jps-plugin/testData/incremental/lazyKotlinCaches/incrementalCompilationOff/dependencies.txt b/jps/jps-plugin/testData/incremental/lazyKotlinCaches/incrementalCompilationOff/dependencies.txt index ec937d3cdd9..42b512b6648 100644 --- a/jps/jps-plugin/testData/incremental/lazyKotlinCaches/incrementalCompilationOff/dependencies.txt +++ b/jps/jps-plugin/testData/incremental/lazyKotlinCaches/incrementalCompilationOff/dependencies.txt @@ -1,2 +1,3 @@ module1-> -module2->module1 \ No newline at end of file +module2->module1 +module3-> \ No newline at end of file diff --git a/jps/jps-plugin/testData/incremental/lazyKotlinCaches/incrementalCompilationOff/module3_c.kt b/jps/jps-plugin/testData/incremental/lazyKotlinCaches/incrementalCompilationOff/module3_c.kt new file mode 100644 index 00000000000..c7cd3fc4b22 --- /dev/null +++ b/jps/jps-plugin/testData/incremental/lazyKotlinCaches/incrementalCompilationOff/module3_c.kt @@ -0,0 +1,3 @@ +package module3 + +fun c() {} \ No newline at end of file diff --git a/jps/jps-plugin/testData/incremental/lazyKotlinCaches/incrementalCompilationOffOn/build.log b/jps/jps-plugin/testData/incremental/lazyKotlinCaches/incrementalCompilationOffOn/build.log index 74d77ecd7d8..d3894733f30 100644 --- a/jps/jps-plugin/testData/incremental/lazyKotlinCaches/incrementalCompilationOffOn/build.log +++ b/jps/jps-plugin/testData/incremental/lazyKotlinCaches/incrementalCompilationOffOn/build.log @@ -1,24 +1,53 @@ Cleaning output files: out/production/module1/module1/A.class End of files +Cleaning output files: +out/production/module1/META-INF/module1.kotlin_module +out/production/module1/module1/Module1Package.class +out/production/module1/module1/Module1_otherKt.class +End of files Compiling files: module1/src/module1_a.kt module1/src/module1_other.kt End of files +Cleaning output files: +out/production/module3/META-INF/module3.kotlin_module +out/production/module3/module3/Module3Package.class +out/production/module3/module3/Module3_cKt.class +End of files Compiling files: module3/src/module3_c.kt End of files +Cleaning output files: +out/production/module2/B.class +End of files Compiling files: module2/src/module2_B.java End of files +Cleaning output files: +out/production/module1/META-INF/module1.kotlin_module +out/production/module1/module1/A.class +out/production/module1/module1/Module1Package.class +out/production/module1/module1/Module1_aKt.class +End of files +Compiling files: +module1/src/module1_a.kt +End of files +Cleaning output files: +out/production/module1/META-INF/module1.kotlin_module +out/production/module1/module1/A.class +out/production/module1/module1/Module1Package.class +out/production/module1/module1/Module1_aKt.class +out/production/module1/module1/Module1_otherKt.class +End of files Compiling files: module1/src/module1_a.kt module1/src/module1_other.kt End of files -Compiling files: -module3/src/module3_c.kt +Cleaning output files: +out/production/module2/B.class End of files Compiling files: module2/src/module2_B.java