From 6bea6431763c6c20cc3bb0629b077bdd27ff29bd Mon Sep 17 00:00:00 2001 From: Sergey Igushkin Date: Tue, 12 Dec 2017 20:58:52 +0300 Subject: [PATCH] Fix JS DCE classpath duplicated in two input properties * Do not add the classpath elements to source to avoid them being treated as task inputs without proper classpath normalization * Move resolution of the classpath configuration to execution time --- .../jetbrains/kotlin/gradle/plugin/KotlinJsDcePlugin.kt | 7 +++---- .../org/jetbrains/kotlin/gradle/tasks/KotlinJsDce.kt | 6 ++++-- 2 files changed, 7 insertions(+), 6 deletions(-) diff --git a/libraries/tools/kotlin-gradle-plugin/src/main/kotlin/org/jetbrains/kotlin/gradle/plugin/KotlinJsDcePlugin.kt b/libraries/tools/kotlin-gradle-plugin/src/main/kotlin/org/jetbrains/kotlin/gradle/plugin/KotlinJsDcePlugin.kt index 341c6ac8b23..7aa72f38f6c 100644 --- a/libraries/tools/kotlin-gradle-plugin/src/main/kotlin/org/jetbrains/kotlin/gradle/plugin/KotlinJsDcePlugin.kt +++ b/libraries/tools/kotlin-gradle-plugin/src/main/kotlin/org/jetbrains/kotlin/gradle/plugin/KotlinJsDcePlugin.kt @@ -52,13 +52,12 @@ class KotlinJsDcePlugin : Plugin { val outputDir = File(File(project.buildDir, DEFAULT_OUT_DIR), sourceSet.name) val configuration = project.configurations.findByName(sourceSet.compileConfigurationName)!! - val dceInputTrees = listOf(project.fileTree(kotlinTask.outputFile)) + configuration.map { project.fileTree(it) } - val dceInputFiles = dceInputTrees.reduce { acc: FileTree, tree -> acc + tree } + val dceInputTree = project.fileTree(kotlinTask.outputFile) with (dceTask) { - classpath = sourceSet.compileClasspath + classpath = configuration destinationDir = dceTask.dceOptions.outputDirectory?.let { File(it) } ?: outputDir - source(dceInputFiles) + source(dceInputTree) } } } diff --git a/libraries/tools/kotlin-gradle-plugin/src/main/kotlin/org/jetbrains/kotlin/gradle/tasks/KotlinJsDce.kt b/libraries/tools/kotlin-gradle-plugin/src/main/kotlin/org/jetbrains/kotlin/gradle/tasks/KotlinJsDce.kt index faa9c7f75c8..66605d74f36 100644 --- a/libraries/tools/kotlin-gradle-plugin/src/main/kotlin/org/jetbrains/kotlin/gradle/tasks/KotlinJsDce.kt +++ b/libraries/tools/kotlin-gradle-plugin/src/main/kotlin/org/jetbrains/kotlin/gradle/tasks/KotlinJsDce.kt @@ -17,13 +17,13 @@ package org.jetbrains.kotlin.gradle.tasks import org.gradle.api.Project +import org.gradle.api.file.FileTree import org.gradle.api.tasks.CacheableTask import org.gradle.api.tasks.Input import org.gradle.api.tasks.Internal import org.gradle.api.tasks.TaskAction import org.jetbrains.kotlin.cli.common.arguments.K2JSDceArguments import org.jetbrains.kotlin.cli.js.dce.K2JSDce -import org.jetbrains.kotlin.compilerRunner.ArgumentUtils import org.jetbrains.kotlin.compilerRunner.GradleKotlinLogger import org.jetbrains.kotlin.compilerRunner.createLoggingMessageCollector import org.jetbrains.kotlin.compilerRunner.runToolInSeparateProcess @@ -61,7 +61,9 @@ open class KotlinJsDce : AbstractKotlinCompileTool(), KotlinJs @TaskAction fun performDce() { - val inputFiles = getSource().files.map { it.path } + val inputFiles = (listOf(getSource()) + classpath.map { project.fileTree(it) }) + .reduce(FileTree::plus) + .files.map { it.path } val outputDirArgs = arrayOf("-output-dir", destinationDir.path)