[Gradle, JS] Fix multimodule IC for K/JS plugin

#KT-52946 Fixed
This commit is contained in:
Alexander Likhachev
2022-07-05 20:18:27 +02:00
committed by Space
parent 18560db373
commit 1e76404163
@@ -21,6 +21,7 @@ import org.jetbrains.kotlin.daemon.client.CompileServiceSession
import org.jetbrains.kotlin.daemon.common.CompilerId import org.jetbrains.kotlin.daemon.common.CompilerId
import org.jetbrains.kotlin.daemon.common.configureDaemonJVMOptions import org.jetbrains.kotlin.daemon.common.configureDaemonJVMOptions
import org.jetbrains.kotlin.daemon.common.filterExtractProps 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.KotlinMultiplatformExtension
import org.jetbrains.kotlin.gradle.dsl.multiplatformExtensionOrNull import org.jetbrains.kotlin.gradle.dsl.multiplatformExtensionOrNull
import org.jetbrains.kotlin.gradle.logging.kotlinDebug 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.tasks.*
import org.jetbrains.kotlin.gradle.utils.IsolatedKotlinClasspathClassCastException import org.jetbrains.kotlin.gradle.utils.IsolatedKotlinClasspathClassCastException
import org.jetbrains.kotlin.gradle.utils.archivePathCompatible 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.newTmpFile
import org.jetbrains.kotlin.gradle.utils.relativeOrCanonical import org.jetbrains.kotlin.gradle.utils.relativeOrCanonical
import org.jetbrains.kotlin.incremental.IncrementalModuleEntry import org.jetbrains.kotlin.incremental.IncrementalModuleEntry
@@ -306,7 +308,8 @@ internal open class GradleCompilerRunner(
nameToModules.getOrPut(module.name) { HashSet() }.add(module) nameToModules.getOrPut(module.name) { HashSet() }.add(module)
if (task is Kotlin2JsCompile) { 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 jarToModule[it] = module
} }
} }
@@ -361,7 +364,7 @@ internal open class GradleCompilerRunner(
} }
} }
private fun jarForSourceSet( private fun jarForJavaSourceSet(
project: Project, project: Project,
sourceSetName: String sourceSetName: String
): File? { ): File? {
@@ -374,6 +377,17 @@ internal open class GradleCompilerRunner(
return jarTask?.archiveFile?.get()?.asFile 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<KotlinJsProjectExtension>()?.js()?.artifactsTaskName
val jarTask = jarTaskName?.let { project.tasks.findByName(jarTaskName) } as? Jar
return jarTask?.archiveFile?.get()?.asFile
}
@Synchronized @Synchronized
internal fun clearBuildModulesInfo() { internal fun clearBuildModulesInfo() {
cachedGradle = WeakReference<Gradle>(null) cachedGradle = WeakReference<Gradle>(null)