From 1e76404163d2a54b726bbe660f44cb694df35128 Mon Sep 17 00:00:00 2001 From: Alexander Likhachev Date: Tue, 5 Jul 2022 20:18:27 +0200 Subject: [PATCH] [Gradle, JS] Fix multimodule IC for K/JS plugin #KT-52946 Fixed --- .../GradleKotlinCompilerRunner.kt | 18 ++++++++++++++++-- 1 file changed, 16 insertions(+), 2 deletions(-) diff --git a/libraries/tools/kotlin-gradle-plugin/src/common/kotlin/org/jetbrains/kotlin/compilerRunner/GradleKotlinCompilerRunner.kt b/libraries/tools/kotlin-gradle-plugin/src/common/kotlin/org/jetbrains/kotlin/compilerRunner/GradleKotlinCompilerRunner.kt index 70480a962dc..19b024604e2 100644 --- a/libraries/tools/kotlin-gradle-plugin/src/common/kotlin/org/jetbrains/kotlin/compilerRunner/GradleKotlinCompilerRunner.kt +++ b/libraries/tools/kotlin-gradle-plugin/src/common/kotlin/org/jetbrains/kotlin/compilerRunner/GradleKotlinCompilerRunner.kt @@ -21,6 +21,7 @@ import org.jetbrains.kotlin.daemon.client.CompileServiceSession import org.jetbrains.kotlin.daemon.common.CompilerId import org.jetbrains.kotlin.daemon.common.configureDaemonJVMOptions import org.jetbrains.kotlin.daemon.common.filterExtractProps +import org.jetbrains.kotlin.gradle.dsl.KotlinJsProjectExtension import org.jetbrains.kotlin.gradle.dsl.KotlinMultiplatformExtension import org.jetbrains.kotlin.gradle.dsl.multiplatformExtensionOrNull import org.jetbrains.kotlin.gradle.logging.kotlinDebug @@ -34,6 +35,7 @@ import org.jetbrains.kotlin.gradle.plugin.variantImplementationFactory import org.jetbrains.kotlin.gradle.tasks.* import org.jetbrains.kotlin.gradle.utils.IsolatedKotlinClasspathClassCastException import org.jetbrains.kotlin.gradle.utils.archivePathCompatible +import org.jetbrains.kotlin.gradle.utils.findByType import org.jetbrains.kotlin.gradle.utils.newTmpFile import org.jetbrains.kotlin.gradle.utils.relativeOrCanonical import org.jetbrains.kotlin.incremental.IncrementalModuleEntry @@ -306,7 +308,8 @@ internal open class GradleCompilerRunner( nameToModules.getOrPut(module.name) { HashSet() }.add(module) if (task is Kotlin2JsCompile) { - jarForSourceSet(project, task.sourceSetName.get())?.let { + (jarForJavaSourceSet(project, task.sourceSetName.get()) ?: jarForSingleTargetJs(project, task.sourceSetName.get()))?.let { + project.logger.info("iteration jarToModule[$it] = $module") jarToModule[it] = module } } @@ -361,7 +364,7 @@ internal open class GradleCompilerRunner( } } - private fun jarForSourceSet( + private fun jarForJavaSourceSet( project: Project, sourceSetName: String ): File? { @@ -374,6 +377,17 @@ internal open class GradleCompilerRunner( return jarTask?.archiveFile?.get()?.asFile } + private fun jarForSingleTargetJs( + project: Project, + sourceSetName: String, + ): File? { + if (sourceSetName != KotlinCompilation.MAIN_COMPILATION_NAME) return null + val jarTaskName = project.extensions.findByType()?.js()?.artifactsTaskName + + val jarTask = jarTaskName?.let { project.tasks.findByName(jarTaskName) } as? Jar + return jarTask?.archiveFile?.get()?.asFile + } + @Synchronized internal fun clearBuildModulesInfo() { cachedGradle = WeakReference(null)