From a33affc3254f36f1cff0103837c7fe09dcad6677 Mon Sep 17 00:00:00 2001 From: Ilya Goncharov Date: Fri, 7 Feb 2020 12:38:59 +0300 Subject: [PATCH] [Gradle, JS] Fix android tests - Can't write npm project to task data because 2 reasons: -- May be not npm project (if not declared nodejs or browser) -- In Android there is clash of clean tasks on creating NPM project --- .../jetbrains/kotlin/gradle/plugin/KotlinPlugin.kt | 11 +++-------- .../kotlin/gradle/targets/js/ir/KotlinJsIrLink.kt | 8 ++++++++ .../kotlin/org/jetbrains/kotlin/gradle/tasks/Tasks.kt | 3 ++- 3 files changed, 13 insertions(+), 9 deletions(-) diff --git a/libraries/tools/kotlin-gradle-plugin/src/main/kotlin/org/jetbrains/kotlin/gradle/plugin/KotlinPlugin.kt b/libraries/tools/kotlin-gradle-plugin/src/main/kotlin/org/jetbrains/kotlin/gradle/plugin/KotlinPlugin.kt index 024f341134f..10928594e69 100755 --- a/libraries/tools/kotlin-gradle-plugin/src/main/kotlin/org/jetbrains/kotlin/gradle/plugin/KotlinPlugin.kt +++ b/libraries/tools/kotlin-gradle-plugin/src/main/kotlin/org/jetbrains/kotlin/gradle/plugin/KotlinPlugin.kt @@ -41,7 +41,6 @@ import org.jetbrains.kotlin.gradle.scripting.internal.ScriptingGradleSubplugin import org.jetbrains.kotlin.gradle.targets.js.ir.KotlinJsIrCompilation import org.jetbrains.kotlin.gradle.targets.js.ir.KotlinJsIrLink import org.jetbrains.kotlin.gradle.targets.js.ir.KotlinJsIrType -import org.jetbrains.kotlin.gradle.targets.js.npm.npmProject import org.jetbrains.kotlin.gradle.targets.jvm.KotlinJvmTarget import org.jetbrains.kotlin.gradle.tasks.* import org.jetbrains.kotlin.gradle.tasks.KotlinCompile @@ -107,14 +106,11 @@ internal abstract class KotlinSourceSetProcessor>( kotlinCompilation.output.addClassesDir { project.files(task.map { it.destinationDir }) } } - protected fun registerKotlinCompileTask( - name: String = kotlinCompilation.compileKotlinTaskName, - compileDestinationDir: File = defaultKotlinDestinationDir - ): TaskProvider { + protected fun registerKotlinCompileTask(name: String = kotlinCompilation.compileKotlinTaskName): TaskProvider { logger.kotlinDebug("Creating kotlin compile task $name") KotlinCompileTaskData.register(name, kotlinCompilation).apply { - destinationDir.set(project.provider { compileDestinationDir }) + destinationDir.set(project.provider { defaultKotlinDestinationDir }) } return doRegisterTask(project, name) { @@ -378,8 +374,7 @@ internal class KotlinJsIrSourceSetProcessor( compilation.developmentLinkTaskName ).onEach { taskName -> registerKotlinCompileTask( - taskName, - compilation.npmProject.dist + taskName ) }.forEach { taskName -> project.tasks.named(taskName).configure { diff --git a/libraries/tools/kotlin-gradle-plugin/src/main/kotlin/org/jetbrains/kotlin/gradle/targets/js/ir/KotlinJsIrLink.kt b/libraries/tools/kotlin-gradle-plugin/src/main/kotlin/org/jetbrains/kotlin/gradle/targets/js/ir/KotlinJsIrLink.kt index 7aca03ed642..914ea706d5d 100644 --- a/libraries/tools/kotlin-gradle-plugin/src/main/kotlin/org/jetbrains/kotlin/gradle/targets/js/ir/KotlinJsIrLink.kt +++ b/libraries/tools/kotlin-gradle-plugin/src/main/kotlin/org/jetbrains/kotlin/gradle/targets/js/ir/KotlinJsIrLink.kt @@ -41,6 +41,14 @@ open class KotlinJsIrLink : Kotlin2JsCompile() { return !inputs.isIncremental && !entryModule.exists() } + override fun getDestinationDir(): File { + return if (kotlinOptions.outputFile == null) { + super.getDestinationDir() + } else { + outputFile.parentFile + } + } + @OutputFile val outputFileProperty: RegularFileProperty = project.newFileProperty { outputFile diff --git a/libraries/tools/kotlin-gradle-plugin/src/main/kotlin/org/jetbrains/kotlin/gradle/tasks/Tasks.kt b/libraries/tools/kotlin-gradle-plugin/src/main/kotlin/org/jetbrains/kotlin/gradle/tasks/Tasks.kt index 51279ac89e2..b3ee5ffbe12 100644 --- a/libraries/tools/kotlin-gradle-plugin/src/main/kotlin/org/jetbrains/kotlin/gradle/tasks/Tasks.kt +++ b/libraries/tools/kotlin-gradle-plugin/src/main/kotlin/org/jetbrains/kotlin/gradle/tasks/Tasks.kt @@ -514,7 +514,8 @@ open class Kotlin2JsCompile : AbstractKotlinCompile(), Ko override val kotlinOptions: KotlinJsOptions get() = kotlinOptionsImpl - private val defaultOutputFile: File + @get:Internal + protected val defaultOutputFile: File get() = File(destinationDir, "${taskData.compilation.ownModuleName}.js") @Suppress("unused")