Filter out non-Java files from kapt inputs
#KT-23878 fixed
This commit is contained in:
+18
-5
@@ -9,7 +9,23 @@ import org.junit.Test
|
|||||||
class KaptIncrementalNoStubsIT : KaptIncrementalBaseIT(shouldUseStubs = false)
|
class KaptIncrementalNoStubsIT : KaptIncrementalBaseIT(shouldUseStubs = false)
|
||||||
class KaptIncrementalWithStubsIT : KaptIncrementalBaseIT(shouldUseStubs = true)
|
class KaptIncrementalWithStubsIT : KaptIncrementalBaseIT(shouldUseStubs = true)
|
||||||
|
|
||||||
class Kapt3Incremental : KaptIncrementalBaseIT(shouldUseStubs = false, useKapt3 = true)
|
class Kapt3Incremental : KaptIncrementalBaseIT(shouldUseStubs = false, useKapt3 = true) {
|
||||||
|
@Test
|
||||||
|
fun testAddNewLine() {
|
||||||
|
val project = Project("simple", directoryPrefix = "kapt2")
|
||||||
|
|
||||||
|
project.build("clean", "build") {
|
||||||
|
assertSuccessful()
|
||||||
|
}
|
||||||
|
|
||||||
|
project.projectFile("test.kt").modify { "\n$it" }
|
||||||
|
project.build("build") {
|
||||||
|
assertSuccessful()
|
||||||
|
assertTasksExecuted(":kaptGenerateStubsKotlin", ":compileJava", ":compileKotlin")
|
||||||
|
assertTasksUpToDate(":kaptKotlin")
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
abstract class KaptIncrementalBaseIT(val shouldUseStubs: Boolean, val useKapt3: Boolean = false) : BaseGradleIT() {
|
abstract class KaptIncrementalBaseIT(val shouldUseStubs: Boolean, val useKapt3: Boolean = false) : BaseGradleIT() {
|
||||||
init {
|
init {
|
||||||
@@ -277,10 +293,7 @@ abstract class KaptIncrementalBaseIT(val shouldUseStubs: Boolean, val useKapt3:
|
|||||||
|
|
||||||
private fun CompiledProject.assertKapt3FullyExecuted() {
|
private fun CompiledProject.assertKapt3FullyExecuted() {
|
||||||
if (useKapt3) {
|
if (useKapt3) {
|
||||||
assertNotContains(
|
assertTasksExecuted(":kaptKotlin", ":kaptGenerateStubsKotlin")
|
||||||
":kaptKotlin UP-TO-DATE",
|
|
||||||
":kaptGenerateStubsKotlin UP-TO-DATE"
|
|
||||||
)
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
+21
-20
@@ -12,6 +12,7 @@ import org.jetbrains.kotlin.compilerRunner.GradleCompilerEnvironment
|
|||||||
import org.jetbrains.kotlin.compilerRunner.GradleCompilerRunner
|
import org.jetbrains.kotlin.compilerRunner.GradleCompilerRunner
|
||||||
import org.jetbrains.kotlin.compilerRunner.OutputItemsCollectorImpl
|
import org.jetbrains.kotlin.compilerRunner.OutputItemsCollectorImpl
|
||||||
import org.jetbrains.kotlin.gradle.tasks.*
|
import org.jetbrains.kotlin.gradle.tasks.*
|
||||||
|
import org.jetbrains.kotlin.incremental.isJavaFile
|
||||||
import java.io.File
|
import java.io.File
|
||||||
|
|
||||||
@CacheableTask
|
@CacheableTask
|
||||||
@@ -36,11 +37,6 @@ open class KaptTask : ConventionTask(), CompilerArgumentAwareWithInput<K2JVMComp
|
|||||||
@get:Internal
|
@get:Internal
|
||||||
internal lateinit var stubsDir: File
|
internal lateinit var stubsDir: File
|
||||||
|
|
||||||
private fun isInsideDestinationDirs(file: File): Boolean {
|
|
||||||
return FileUtil.isAncestor(destinationDir, file, /* strict = */ false)
|
|
||||||
|| FileUtil.isAncestor(classesDir, file, /* strict = */ false)
|
|
||||||
}
|
|
||||||
|
|
||||||
@get:Classpath @get:InputFiles
|
@get:Classpath @get:InputFiles
|
||||||
val kaptClasspath: FileCollection
|
val kaptClasspath: FileCollection
|
||||||
get() = project.files(*kaptClasspathConfigurations.toTypedArray())
|
get() = project.files(*kaptClasspathConfigurations.toTypedArray())
|
||||||
@@ -87,25 +83,29 @@ open class KaptTask : ConventionTask(), CompilerArgumentAwareWithInput<K2JVMComp
|
|||||||
internal val pluginClasspath get() = pluginOptions.classpath
|
internal val pluginClasspath get() = pluginOptions.classpath
|
||||||
|
|
||||||
@get:InputFiles @get:PathSensitive(PathSensitivity.RELATIVE)
|
@get:InputFiles @get:PathSensitive(PathSensitivity.RELATIVE)
|
||||||
val source: FileCollection
|
val source: Collection<File>
|
||||||
get() {
|
get() {
|
||||||
val sourcesFromKotlinTask = kotlinCompileTask.source
|
val result = HashSet<File>()
|
||||||
.filter { it.extension == "java" && !isInsideDestinationDirs(it) }
|
for (root in javaSourceRoots) {
|
||||||
|
root.walk().filterTo(result) { it.isJavaFile() }
|
||||||
val stubSources = project.fileTree(stubsDir)
|
}
|
||||||
return sourcesFromKotlinTask + stubSources
|
return result
|
||||||
}
|
}
|
||||||
|
|
||||||
|
private val javaSourceRoots: Set<File>
|
||||||
|
get() = (kotlinCompileTask.sourceRootsContainer.sourceRoots + stubsDir)
|
||||||
|
.filterTo(HashSet(), ::isRootAllowed)
|
||||||
|
|
||||||
|
private fun isRootAllowed(file: File): Boolean =
|
||||||
|
!FileUtil.isAncestor(destinationDir, file, /* strict = */ false) &&
|
||||||
|
!FileUtil.isAncestor(classesDir, file, /* strict = */ false)
|
||||||
|
|
||||||
@TaskAction
|
@TaskAction
|
||||||
fun compile() {
|
fun compile() {
|
||||||
/** Delete everything inside generated sources and classes output directory
|
/** Delete everything inside generated sources and classes output directory
|
||||||
* (annotation processing is not incremental) */
|
* (annotation processing is not incremental) */
|
||||||
clearOutputDirectories()
|
clearOutputDirectories()
|
||||||
|
|
||||||
val sourceRootsFromKotlin = kotlinCompileTask.sourceRootsContainer.sourceRoots
|
|
||||||
val rawSourceRoots = FilteringSourceRootsContainer(sourceRootsFromKotlin, { !isInsideDestinationDirs(it) })
|
|
||||||
val sourceRoots = SourceRoots.ForJvm.create(kotlinCompileTask.source, rawSourceRoots)
|
|
||||||
|
|
||||||
val args = prepareCompilerArguments()
|
val args = prepareCompilerArguments()
|
||||||
|
|
||||||
val messageCollector = GradleMessageCollector(logger)
|
val messageCollector = GradleMessageCollector(logger)
|
||||||
@@ -117,11 +117,12 @@ open class KaptTask : ConventionTask(), CompilerArgumentAwareWithInput<K2JVMComp
|
|||||||
|
|
||||||
val compilerRunner = GradleCompilerRunner(project)
|
val compilerRunner = GradleCompilerRunner(project)
|
||||||
val exitCode = compilerRunner.runJvmCompiler(
|
val exitCode = compilerRunner.runJvmCompiler(
|
||||||
sourceRoots.kotlinSourceFiles,
|
sourcesToCompile = emptyList(),
|
||||||
sourceRoots.javaSourceRoots,
|
javaSourceRoots = javaSourceRoots,
|
||||||
kotlinCompileTask.javaPackagePrefix,
|
javaPackagePrefix = kotlinCompileTask.javaPackagePrefix,
|
||||||
args,
|
args = args,
|
||||||
environment)
|
environment = environment
|
||||||
|
)
|
||||||
throwGradleExceptionIfError(exitCode)
|
throwGradleExceptionIfError(exitCode)
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
Reference in New Issue
Block a user