KotlinBuilder: use proper API to update Java mappings

This commit is contained in:
Zalim Bashorov
2016-02-19 16:48:00 +03:00
parent ae32698c78
commit d832a3d290
25 changed files with 176 additions and 51 deletions
@@ -261,7 +261,7 @@ class KotlinBuilder : ModuleLevelBuilder(BuilderCategory.SOURCE_PROCESSOR) {
@Suppress("REIFIED_TYPE_UNSAFE_SUBSTITUTION")
val generatedClasses = generatedFiles.filterIsInstance<GeneratedJvmClass<ModuleBuildTarget>>()
val additionalPassRequired = updateJavaMappings(chunk, compilationErrors, context, dirtyFilesHolder, filesToCompile, generatedClasses, incrementalCaches)
updateJavaMappings(chunk, compilationErrors, context, dirtyFilesHolder, filesToCompile, generatedClasses, incrementalCaches)
if (!IncrementalCompilation.isEnabled()) {
return OK
@@ -279,7 +279,7 @@ class KotlinBuilder : ModuleLevelBuilder(BuilderCategory.SOURCE_PROCESSOR) {
processChanges(filesToCompile.values().toSet(), allCompiledFiles, dataManager, incrementalCaches.values, changesInfo, fsOperations)
incrementalCaches.values.forEach { it.cleanDirtyInlineFunctions() }
return if (additionalPassRequired) ADDITIONAL_PASS_REQUIRED else OK
return OK
}
private fun applyActionsOnCacheVersionChange(
@@ -476,10 +476,10 @@ class KotlinBuilder : ModuleLevelBuilder(BuilderCategory.SOURCE_PROCESSOR) {
filesToCompile: MultiMap<ModuleBuildTarget, File>,
generatedClasses: List<GeneratedJvmClass<ModuleBuildTarget>>,
incrementalCaches: Map<ModuleBuildTarget, JpsIncrementalCacheImpl>
): Boolean {
) {
val previousMappings = context.projectDescriptor.dataManager.mappings
val delta = previousMappings.createDelta()
val callback = delta.callback
val callback = JavaBuilderUtil.getDependenciesRegistrar(context)
val targetDirtyFiles: Map<ModuleBuildTarget, Set<File>> = chunk.targets.keysToMap {
val files = HashSet<File>()
dirtyFilesHolder.getRemovedFiles(it).mapTo(files, ::File)
@@ -511,9 +511,10 @@ class KotlinBuilder : ModuleLevelBuilder(BuilderCategory.SOURCE_PROCESSOR) {
}
val allCompiled = filesToCompile.values()
val compiledInThisRound = if (compilationErrors) listOf<File>() else allCompiled
val successfullyCompiled = if (compilationErrors) listOf<File>() else allCompiled
return JavaBuilderUtil.updateMappings(context, delta, dirtyFilesHolder, chunk, allCompiled, compiledInThisRound)
JavaBuilderUtil.registerFilesToCompile(context, allCompiled)
JavaBuilderUtil.registerSuccessfullyCompiled(context, successfullyCompiled)
}
private fun registerOutputItems(outputConsumer: ModuleLevelBuilder.OutputConsumer, generatedFiles: List<GeneratedFile<ModuleBuildTarget>>) {
@@ -11,11 +11,9 @@ Exit code: ADDITIONAL_PASS_REQUIRED
------------------------------------------
Cleaning output files:
out/production/module/META-INF/module.kotlin_module
out/production/module/constant/ConstantKt.class
out/production/module/usage/UsageKt.class
End of files
Compiling files:
src/constant.kt
src/usage.kt
End of files
Exit code: OK
@@ -9,14 +9,7 @@ Compiling files:
End of files
Exit code: ADDITIONAL_PASS_REQUIRED
------------------------------------------
Cleaning output files:
out/production/module1/META-INF/module1.kotlin_module
out/production/module1/test/Module1_constKt.class
End of files
Compiling files:
module1/src/module1_const.kt
End of files
Exit code: OK
Exit code: NOTHING_DONE
------------------------------------------
Cleaning output files:
out/production/module2/usage/Usage.class
@@ -22,12 +22,9 @@ End of files
Exit code: ADDITIONAL_PASS_REQUIRED
------------------------------------------
Cleaning output files:
out/production/module/META-INF/module.kotlin_module
out/production/module/test/ConstKt.class
out/production/module/test/Usage.class
End of files
Compiling files:
src/const.kt
src/usage.kt
End of files
Exit code: OK
@@ -10,12 +10,9 @@ End of files
Exit code: ADDITIONAL_PASS_REQUIRED
------------------------------------------
Cleaning output files:
out/production/module/test/Klass$Companion.class
out/production/module/test/Klass.class
out/production/module/test/Usage.class
End of files
Compiling files:
src/const.kt
src/usage.kt
End of files
Exit code: OK
@@ -0,0 +1,22 @@
================ Step #1 =================
Cleaning output files:
out/production/module/test/Klass$Companion.class
out/production/module/test/Klass.class
End of files
Compiling files:
src/const.kt
End of files
Exit code: OK
------------------------------------------
Cleaning output files:
out/production/module/test/Klass$Companion.class
out/production/module/test/Klass.class
out/production/module/test/Usage.class
End of files
Compiling files:
src/const.kt
src/usage.kt
End of files
Exit code: OK
------------------------------------------
@@ -3,7 +3,7 @@
Compiling files:
src/class2.kt
End of files
Exit code: ADDITIONAL_PASS_REQUIRED
Exit code: OK
------------------------------------------
Cleaning output files:
out/production/module/Klass.class
@@ -20,7 +20,7 @@ Compiling files:
src/other.kt
src/usage.kt
End of files
Exit code: ADDITIONAL_PASS_REQUIRED
Exit code: OK
------------------------------------------
Cleaning output files:
out/production/module/META-INF/module.kotlin_module
@@ -0,0 +1,22 @@
================ Step #1 =================
Cleaning output files:
out/production/module/META-INF/module.kotlin_module
out/production/module/test/Test.class
out/production/module/test/Test__BKt.class
End of files
Compiling files:
src/b.kt
End of files
Exit code: OK
------------------------------------------
Cleaning output files:
out/production/module/META-INF/module.kotlin_module
out/production/module/test/Test.class
out/production/module/test/Test__AKt.class
End of files
Compiling files:
src/a.kt
End of files
Exit code: OK
------------------------------------------
@@ -9,11 +9,9 @@ End of files
Exit code: ADDITIONAL_PASS_REQUIRED
------------------------------------------
Cleaning output files:
out/production/module/test/Object.class
out/production/module/test/Usage.class
End of files
Compiling files:
src/const.kt
src/usage.kt
End of files
Exit code: OK
@@ -0,0 +1,20 @@
================ Step #1 =================
Cleaning output files:
out/production/module/test/Object.class
End of files
Compiling files:
src/const.kt
End of files
Exit code: OK
------------------------------------------
Cleaning output files:
out/production/module/test/Object.class
out/production/module/test/Usage.class
End of files
Compiling files:
src/const.kt
src/usage.kt
End of files
Exit code: OK
------------------------------------------
@@ -10,12 +10,9 @@ End of files
Exit code: ADDITIONAL_PASS_REQUIRED
------------------------------------------
Cleaning output files:
out/production/module/META-INF/module.kotlin_module
out/production/module/test/ConstKt.class
out/production/module/test/Usage.class
End of files
Compiling files:
src/const.kt
src/usage.kt
End of files
Exit code: OK
@@ -10,12 +10,9 @@ End of files
Exit code: ADDITIONAL_PASS_REQUIRED
------------------------------------------
Cleaning output files:
out/production/module/test/Trait$Companion.class
out/production/module/test/Trait.class
out/production/module/test/Usage.class
End of files
Compiling files:
src/const.kt
src/usage.kt
End of files
Exit code: OK
@@ -0,0 +1,22 @@
================ Step #1 =================
Cleaning output files:
out/production/module/test/Trait$Companion.class
out/production/module/test/Trait.class
End of files
Compiling files:
src/const.kt
End of files
Exit code: OK
------------------------------------------
Cleaning output files:
out/production/module/test/Trait$Companion.class
out/production/module/test/Trait.class
out/production/module/test/Usage.class
End of files
Compiling files:
src/const.kt
src/usage.kt
End of files
Exit code: OK
------------------------------------------
@@ -0,0 +1,23 @@
================ Step #1 =================
Cleaning output files:
out/production/module/TheClass.class
End of files
Compiling files:
src/TheClass.kt
End of files
Exit code: OK
------------------------------------------
Cleaning output files:
out/production/module/META-INF/module.kotlin_module
out/production/module/Usage.class
out/production/module/UsageInKotlinKt.class
End of files
Compiling files:
src/usageInKotlin.kt
End of files
Exit code: OK
------------------------------------------
Compiling files:
src/Usage.java
End of files
@@ -11,7 +11,7 @@ Compiling files:
src/Foo.kt
src/usage.kt
End of files
Exit code: ADDITIONAL_PASS_REQUIRED
Exit code: OK
------------------------------------------
Cleaning output files:
out/production/module/META-INF/module.kotlin_module
@@ -7,7 +7,7 @@ End of files
Compiling files:
src/fun.kt
End of files
Exit code: ADDITIONAL_PASS_REQUIRED
Exit code: OK
------------------------------------------
Cleaning output files:
out/production/module/JavaUsage.class
@@ -7,7 +7,7 @@ End of files
Compiling files:
src/fun.kt
End of files
Exit code: ADDITIONAL_PASS_REQUIRED
Exit code: OK
------------------------------------------
Cleaning output files:
out/production/module/Usage.class
@@ -11,13 +11,8 @@ Exit code: ADDITIONAL_PASS_REQUIRED
------------------------------------------
Cleaning output files:
out/production/module/Usage.class
out/production/module/test/Klass$Companion.class
out/production/module/test/Klass.class
End of files
Compiling files:
src/const.kt
End of files
Exit code: OK
Exit code: NOTHING_DONE
------------------------------------------
Compiling files:
src/Usage.java
@@ -0,0 +1,24 @@
================ Step #1 =================
Cleaning output files:
out/production/module/test/Klass$Companion.class
out/production/module/test/Klass.class
End of files
Compiling files:
src/const.kt
End of files
Exit code: OK
------------------------------------------
Cleaning output files:
out/production/module/Usage.class
out/production/module/test/Klass$Companion.class
out/production/module/test/Klass.class
End of files
Compiling files:
src/const.kt
End of files
Exit code: OK
------------------------------------------
Compiling files:
src/Usage.java
End of files
@@ -7,7 +7,7 @@ End of files
Compiling files:
src/fun.kt
End of files
Exit code: ADDITIONAL_PASS_REQUIRED
Exit code: OK
------------------------------------------
Cleaning output files:
out/production/module/WillBeUnresolved.class
@@ -11,13 +11,8 @@ Exit code: ADDITIONAL_PASS_REQUIRED
------------------------------------------
Cleaning output files:
out/production/module/Usage.class
out/production/module/test/Klass$Companion.class
out/production/module/test/Klass.class
End of files
Compiling files:
src/const.kt
End of files
Exit code: OK
Exit code: NOTHING_DONE
------------------------------------------
Compiling files:
src/Usage.java
@@ -0,0 +1,24 @@
================ Step #1 =================
Cleaning output files:
out/production/module/test/Klass$Companion.class
out/production/module/test/Klass.class
End of files
Compiling files:
src/const.kt
End of files
Exit code: OK
------------------------------------------
Cleaning output files:
out/production/module/Usage.class
out/production/module/test/Klass$Companion.class
out/production/module/test/Klass.class
End of files
Compiling files:
src/const.kt
End of files
Exit code: OK
------------------------------------------
Compiling files:
src/Usage.java
End of files
@@ -6,7 +6,7 @@ End of files
Compiling files:
src/Super.kt
End of files
Exit code: ADDITIONAL_PASS_REQUIRED
Exit code: OK
------------------------------------------
Cleaning output files:
out/production/module/Sub.class
@@ -7,7 +7,7 @@ End of files
Compiling files:
src/prop.kt
End of files
Exit code: ADDITIONAL_PASS_REQUIRED
Exit code: OK
------------------------------------------
Cleaning output files:
out/production/module/WillBeUnresolved.class