[Gradle, JS] With both compilers fully disambiguated names

This commit is contained in:
Ilya Goncharov
2020-02-14 12:22:48 +03:00
parent ae391f3776
commit 397ff26e20
5 changed files with 22 additions and 21 deletions
@@ -9,8 +9,10 @@
package org.jetbrains.kotlin.gradle.plugin.mpp package org.jetbrains.kotlin.gradle.plugin.mpp
import org.jetbrains.kotlin.gradle.dsl.KotlinJsOptions import org.jetbrains.kotlin.gradle.dsl.KotlinJsOptions
import org.jetbrains.kotlin.gradle.plugin.JsCompilerType
import org.jetbrains.kotlin.gradle.plugin.KotlinCompilationWithResources import org.jetbrains.kotlin.gradle.plugin.KotlinCompilationWithResources
import org.jetbrains.kotlin.gradle.plugin.KotlinTarget import org.jetbrains.kotlin.gradle.plugin.KotlinTarget
import org.jetbrains.kotlin.gradle.targets.js.KotlinJsTarget
import org.jetbrains.kotlin.gradle.targets.js.npm.PackageJson import org.jetbrains.kotlin.gradle.targets.js.npm.PackageJson
import org.jetbrains.kotlin.gradle.tasks.Kotlin2JsCompile import org.jetbrains.kotlin.gradle.tasks.Kotlin2JsCompile
import org.jetbrains.kotlin.gradle.utils.lowerCamelCaseName import org.jetbrains.kotlin.gradle.utils.lowerCamelCaseName
@@ -34,7 +36,9 @@ open class KotlinJsCompilation(
override val defaultSourceSetName: String override val defaultSourceSetName: String
get() = lowerCamelCaseName( get() = lowerCamelCaseName(
target.disambiguationClassifier?.removePrefix(LEGACY_DISAMBIGUATION_CLASSIFIER), (target as KotlinJsTarget).irTarget?.let {
target.disambiguationClassifier?.removeSuffix(JsCompilerType.legacy.name.capitalize())
} ?: target.disambiguationClassifier,
compilationName compilationName
) )
} }
@@ -10,10 +10,12 @@ import org.gradle.api.Project
import org.gradle.api.plugins.JavaBasePlugin import org.gradle.api.plugins.JavaBasePlugin
import org.jetbrains.kotlin.gradle.dsl.KotlinJsProjectExtension import org.jetbrains.kotlin.gradle.dsl.KotlinJsProjectExtension
import org.jetbrains.kotlin.gradle.dsl.kotlinExtension import org.jetbrains.kotlin.gradle.dsl.kotlinExtension
import org.jetbrains.kotlin.gradle.plugin.JsCompilerType
import org.jetbrains.kotlin.gradle.plugin.configureDefaultVersionsResolutionStrategy import org.jetbrains.kotlin.gradle.plugin.configureDefaultVersionsResolutionStrategy
import org.jetbrains.kotlin.gradle.plugin.mpp.KotlinJsSingleTargetPreset import org.jetbrains.kotlin.gradle.plugin.mpp.KotlinJsSingleTargetPreset
import org.jetbrains.kotlin.gradle.targets.js.ir.KotlinJsIrSingleTargetPreset import org.jetbrains.kotlin.gradle.targets.js.ir.KotlinJsIrSingleTargetPreset
import org.jetbrains.kotlin.gradle.utils.checkGradleCompatibility import org.jetbrains.kotlin.gradle.utils.checkGradleCompatibility
import org.jetbrains.kotlin.gradle.utils.lowerCamelCaseName
open class KotlinJsPlugin( open class KotlinJsPlugin(
private val kotlinPluginVersion: String, private val kotlinPluginVersion: String,
@@ -35,7 +37,13 @@ open class KotlinJsPlugin(
KotlinJsIrSingleTargetPreset(project, kotlinPluginVersion, mixedMode) KotlinJsIrSingleTargetPreset(project, kotlinPluginVersion, mixedMode)
else null else null
val target = KotlinJsSingleTargetPreset(project, kotlinPluginVersion, irPreset).createTarget("Js") val target = KotlinJsSingleTargetPreset(project, kotlinPluginVersion, irPreset)
.createTarget(
lowerCamelCaseName(
"js",
irPreset?.let { JsCompilerType.legacy.name }
)
)
kotlinExtension.target = target kotlinExtension.target = target
@@ -13,7 +13,6 @@ import org.jetbrains.kotlin.gradle.plugin.JsCompilerType
import org.jetbrains.kotlin.gradle.plugin.KotlinPlatformType import org.jetbrains.kotlin.gradle.plugin.KotlinPlatformType
import org.jetbrains.kotlin.gradle.targets.js.KotlinJsTarget import org.jetbrains.kotlin.gradle.targets.js.KotlinJsTarget
import org.jetbrains.kotlin.gradle.targets.js.KotlinJsTargetConfigurator import org.jetbrains.kotlin.gradle.targets.js.KotlinJsTargetConfigurator
import org.jetbrains.kotlin.gradle.targets.js.ir.IR_TARGET_SUFFIX
import org.jetbrains.kotlin.gradle.targets.js.ir.KotlinJsIrSingleTargetPreset import org.jetbrains.kotlin.gradle.targets.js.ir.KotlinJsIrSingleTargetPreset
import org.jetbrains.kotlin.gradle.targets.js.ir.KotlinJsIrTargetPreset import org.jetbrains.kotlin.gradle.targets.js.ir.KotlinJsIrTargetPreset
import org.jetbrains.kotlin.gradle.utils.lowerCamelCaseName import org.jetbrains.kotlin.gradle.utils.lowerCamelCaseName
@@ -35,18 +34,12 @@ open class KotlinJsTargetPreset(
project, project,
platformType platformType
).apply { ).apply {
this.irTarget = irPreset?.createTarget("$name$IR_TARGET_SUFFIX") this.irTarget = irPreset?.createTarget(
lowerCamelCaseName(name.removeSuffix(JsCompilerType.legacy.name.capitalize()), JsCompilerType.ir.name)
)
} }
} }
override fun provideTargetDisambiguationClassifier(target: KotlinOnlyTarget<KotlinJsCompilation>): String? =
if (irPreset == null) {
super.provideTargetDisambiguationClassifier(target)
} else {
LEGACY_DISAMBIGUATION_CLASSIFIER +
super.provideTargetDisambiguationClassifier(target)
}
override fun createKotlinTargetConfigurator() = KotlinJsTargetConfigurator( override fun createKotlinTargetConfigurator() = KotlinJsTargetConfigurator(
kotlinPluginVersion kotlinPluginVersion
) )
@@ -79,11 +72,9 @@ class KotlinJsSingleTargetPreset(
// In a Kotlin/JS single-platform project, we don't need any disambiguation suffixes or prefixes in the names: // In a Kotlin/JS single-platform project, we don't need any disambiguation suffixes or prefixes in the names:
override fun provideTargetDisambiguationClassifier(target: KotlinOnlyTarget<KotlinJsCompilation>): String? = override fun provideTargetDisambiguationClassifier(target: KotlinOnlyTarget<KotlinJsCompilation>): String? =
irPreset?.let { LEGACY_DISAMBIGUATION_CLASSIFIER } null
override fun createKotlinTargetConfigurator() = KotlinJsTargetConfigurator( override fun createKotlinTargetConfigurator() = KotlinJsTargetConfigurator(
kotlinPluginVersion kotlinPluginVersion
) )
} }
const val LEGACY_DISAMBIGUATION_CLASSIFIER = "legacy"
@@ -5,9 +5,9 @@
package org.jetbrains.kotlin.gradle.targets.js.ir package org.jetbrains.kotlin.gradle.targets.js.ir
import org.gradle.api.Task
import org.gradle.api.file.SourceDirectorySet import org.gradle.api.file.SourceDirectorySet
import org.gradle.api.tasks.TaskProvider import org.gradle.api.tasks.TaskProvider
import org.jetbrains.kotlin.gradle.plugin.JsCompilerType
import org.jetbrains.kotlin.gradle.plugin.KotlinCompilation import org.jetbrains.kotlin.gradle.plugin.KotlinCompilation
import org.jetbrains.kotlin.gradle.plugin.KotlinSourceSet import org.jetbrains.kotlin.gradle.plugin.KotlinSourceSet
import org.jetbrains.kotlin.gradle.plugin.KotlinTarget import org.jetbrains.kotlin.gradle.plugin.KotlinTarget
@@ -51,7 +51,7 @@ class KotlinJsIrCompilation(
return lowerCamelCaseName( return lowerCamelCaseName(
if ((target as KotlinJsIrTarget).mixedMode) if ((target as KotlinJsIrTarget).mixedMode)
target.disambiguationClassifier target.disambiguationClassifier
?.removeSuffix(IR_TARGET_SUFFIX) ?.removeSuffix(JsCompilerType.ir.name.capitalize())
else else
target.disambiguationClassifier, target.disambiguationClassifier,
compilationName compilationName
@@ -60,6 +60,4 @@ class KotlinJsIrSingleTargetPreset(
override fun createKotlinTargetConfigurator(): KotlinOnlyTargetConfigurator<KotlinJsIrCompilation, KotlinJsIrTarget> = override fun createKotlinTargetConfigurator(): KotlinOnlyTargetConfigurator<KotlinJsIrCompilation, KotlinJsIrTarget> =
KotlinJsIrTargetConfigurator(kotlinPluginVersion) KotlinJsIrTargetConfigurator(kotlinPluginVersion)
} }
const val IR_TARGET_SUFFIX = "Ir"