Kapt: Clear stubs directory on non-incremental stub generation (KT-21735)

This commit is contained in:
Yan Zhulanow
2017-12-23 00:21:42 +09:00
parent f4a7ecc1bb
commit a85b4ddb0f
2 changed files with 19 additions and 3 deletions
@@ -21,6 +21,7 @@ import org.gradle.api.tasks.*
import org.gradle.api.tasks.incremental.IncrementalTaskInputs
import org.jetbrains.kotlin.cli.common.arguments.K2JVMCompilerArguments
import org.jetbrains.kotlin.gradle.plugin.kotlinDebug
import org.jetbrains.kotlin.gradle.plugin.kotlinWarn
import org.jetbrains.kotlin.gradle.tasks.FilteringSourceRootsContainer
import org.jetbrains.kotlin.gradle.tasks.KotlinCompile
import org.jetbrains.kotlin.incremental.ChangedFiles
@@ -72,6 +73,16 @@ open class KaptGenerateStubsTask : KotlinCompile() {
args.destinationAsFile = this.destinationDir
}
override fun clearOutputsBeforeNonIncrementalBuild() {
super.clearOutputsBeforeNonIncrementalBuild()
if (!stubsDir.deleteRecursively()) {
logger.kotlinWarn("Could not delete $stubsDir")
}
stubsDir.mkdirs()
}
override fun execute(inputs: IncrementalTaskInputs) {
val sourceRoots = kotlinCompileTask.getSourceRoots()
val allKotlinSources = sourceRoots.kotlinSourceFiles
@@ -339,6 +339,13 @@ open class KotlinCompile : AbstractKotlinCompile<K2JVMCompilerArguments>(), Kotl
@Internal
override fun getSourceRoots() = SourceRoots.ForJvm.create(getSource(), sourceRootsContainer)
protected open fun clearOutputsBeforeNonIncrementalBuild() {
logger.kotlinDebug { "Removing all kotlin classes in $destinationDir" }
destinationDir.deleteRecursively()
destinationDir.mkdirs()
}
override fun callCompiler(args: K2JVMCompilerArguments, sourceRoots: SourceRoots, changedFiles: ChangedFiles) {
sourceRoots as SourceRoots.ForJvm
@@ -368,9 +375,7 @@ open class KotlinCompile : AbstractKotlinCompile<K2JVMCompilerArguments>(), Kotl
}
if (!incremental) {
logger.kotlinDebug { "Removing all kotlin classes in $destinationDir" }
destinationDir.deleteRecursively()
destinationDir.mkdirs()
clearOutputsBeforeNonIncrementalBuild()
}
try {