Add JS stdlib dependency only when JS target is set

^KT-41642 In Progress
This commit is contained in:
Yahor Berdnikau
2022-07-14 16:22:25 +02:00
committed by Space
parent eaf6177015
commit 632009345d
2 changed files with 23 additions and 1 deletions
@@ -193,12 +193,21 @@ abstract class KotlinJsProjectExtension(project: Project) :
lateinit var legacyPreset: KotlinJsSingleTargetPreset
private val targetSetObservers = mutableListOf<(KotlinJsTargetDsl?) -> Unit>()
// target is public property
// Users can write kotlin.target and it should work
// So call of target should init default configuration
@Deprecated("Use `target` instead", ReplaceWith("target"))
var _target: KotlinJsTargetDsl? = null
private set
private set(value) {
field = value
targetSetObservers.forEach { it(value) }
}
internal fun registerTargetObserver(observer: (KotlinJsTargetDsl?) -> Unit) {
targetSetObservers.add(observer)
}
companion object {
internal fun reportJsCompilerMode(compilerType: KotlinJsCompilerType) {
@@ -130,6 +130,9 @@ private fun Project.configureStdlibDefaultDependency(
when {
project.hasKpmModel -> addStdlibToKpmProject(project, coreLibrariesVersion)
topLevelExtension is KotlinJsProjectExtension -> topLevelExtension.registerTargetObserver { target ->
target?.addStdlibDependency(configurations, dependencies, coreLibrariesVersion)
}
topLevelExtension is KotlinSingleTargetExtension<*> -> topLevelExtension
.target
.addStdlibDependency(configurations, dependencies, coreLibrariesVersion)
@@ -297,6 +300,16 @@ private fun Project.configureKotlinTestDependency(
coreLibrariesVersion: Provider<String>,
) {
when (topLevelExtension) {
is KotlinJsProjectExtension -> topLevelExtension.registerTargetObserver { target ->
target?.configureKotlinTestDependency(
configurations,
coreLibrariesVersion,
objects,
dependencies,
tasks
)
}
is KotlinSingleTargetExtension<*> -> topLevelExtension.target.configureKotlinTestDependency(
configurations,
coreLibrariesVersion,