From d6cc9e2476ea50deadf78b669778ddd172e2b7f3 Mon Sep 17 00:00:00 2001 From: Sebastian Sellmair Date: Tue, 4 Apr 2023 22:04:48 +0200 Subject: [PATCH] [Gradle] KotlinCompile: Prevent iterating calling FileCollection.getFiles multiple times for sources KTIJ-24976 --- .../kotlin/gradle/tasks/KotlinCompile.kt | 21 +++++++++++-------- 1 file changed, 12 insertions(+), 9 deletions(-) diff --git a/libraries/tools/kotlin-gradle-plugin/src/common/kotlin/org/jetbrains/kotlin/gradle/tasks/KotlinCompile.kt b/libraries/tools/kotlin-gradle-plugin/src/common/kotlin/org/jetbrains/kotlin/gradle/tasks/KotlinCompile.kt index 59ddecec538..3007b6d4908 100644 --- a/libraries/tools/kotlin-gradle-plugin/src/common/kotlin/org/jetbrains/kotlin/gradle/tasks/KotlinCompile.kt +++ b/libraries/tools/kotlin-gradle-plugin/src/common/kotlin/org/jetbrains/kotlin/gradle/tasks/KotlinCompile.kt @@ -38,7 +38,6 @@ import org.jetbrains.kotlin.gradle.logging.GradleErrorMessageCollector import org.jetbrains.kotlin.gradle.logging.GradlePrintingMessageCollector import org.jetbrains.kotlin.gradle.logging.kotlinDebug import org.jetbrains.kotlin.gradle.plugin.KotlinCompilerArgumentsProducer -import org.jetbrains.kotlin.gradle.plugin.KotlinCompilerArgumentsProducer.ArgumentType import org.jetbrains.kotlin.gradle.plugin.KotlinCompilerArgumentsProducer.CreateCompilerArgumentsContext.Companion.create import org.jetbrains.kotlin.gradle.plugin.PropertiesProvider import org.jetbrains.kotlin.gradle.plugin.getKotlinPluginVersion @@ -54,7 +53,6 @@ import org.jetbrains.kotlin.incremental.ClasspathSnapshotFiles import org.jetbrains.kotlin.incremental.classpathAsList import org.jetbrains.kotlin.incremental.destinationAsFile import org.jetbrains.kotlin.utils.addToStdlib.cast -import java.io.File import javax.inject.Inject @CacheableTask @@ -267,7 +265,18 @@ abstract class KotlinCompile @Inject constructor( args.commonSources = commonSourceSet.asFileTree.toPathsArray() } - args.freeArgs += (scriptSources.asFileTree.files + javaSources.files + sources.asFileTree.files).map { it.absolutePath } + val sourcesFiles = sources.asFileTree.files.toList() + val javaSourcesFiles = javaSources.files.toList() + val scriptSourcesFiles = scriptSources.asFileTree.files.toList() + + if (logger.isInfoEnabled) { + logger.info("Kotlin source files: ${sourcesFiles.joinToString()}") + logger.info("Java source files: ${javaSourcesFiles.joinToString()}") + logger.info("Script source files: ${scriptSourcesFiles.joinToString()}") + logger.info("Script file extensions: ${scriptExtensions.get().joinToString()}") + } + + args.freeArgs += (scriptSourcesFiles + javaSourcesFiles + sourcesFiles).map { it.absolutePath } } } @@ -278,8 +287,6 @@ abstract class KotlinCompile @Inject constructor( ) { validateKotlinAndJavaHasSameTargetCompatibility(args) - val scriptSources = scriptSources.asFileTree.files - val javaSources = javaSources.files val gradlePrintingMessageCollector = GradlePrintingMessageCollector(logger, args.allWarningsAsErrors) val gradleMessageCollector = GradleErrorMessageCollector( gradlePrintingMessageCollector, kotlinPluginVersion = getKotlinPluginVersion(logger) @@ -314,10 +321,6 @@ abstract class KotlinCompile @Inject constructor( incrementalCompilationEnvironment = icEnv, kotlinScriptExtensions = scriptExtensions.get().toTypedArray() ) - logger.info("Kotlin source files: ${sources.asFileTree.joinToString()}") - logger.info("Java source files: ${javaSources.joinToString()}") - logger.info("Script source files: ${scriptSources.joinToString()}") - logger.info("Script file extensions: ${scriptExtensions.get().joinToString()}") compilerRunner.runJvmCompilerAsync( args, environment,