[Gradle, JS] Inject ir's classes into legacy for mixed mode #2

This commit is contained in:
Ilya Goncharov
2020-01-20 16:27:23 +03:00
parent fd93654c4f
commit 04c0b8c07d
4 changed files with 33 additions and 17 deletions
@@ -12,17 +12,17 @@ import org.jetbrains.kotlin.gradle.plugin.KotlinTarget
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
open class KotlinJsCompilation( open class KotlinJsCompilation(
target: KotlinTarget, target: KotlinTarget,
name: String name: String
) : AbstractKotlinCompilationToRunnableFiles<KotlinJsOptions>(target, name), KotlinCompilationWithResources<KotlinJsOptions> { ) : AbstractKotlinCompilationToRunnableFiles<KotlinJsOptions>(target, name), KotlinCompilationWithResources<KotlinJsOptions> {
override val processResourcesTaskName: String override val processResourcesTaskName: String
get() = disambiguateName("processResources") get() = disambiguateName("processResources")
override val compileKotlinTask: Kotlin2JsCompile override val compileKotlinTask: Kotlin2JsCompile
get() = super.compileKotlinTask as Kotlin2JsCompile get() = super.compileKotlinTask as Kotlin2JsCompile
internal val packageJsonHandlers = mutableListOf<PackageJson.() -> Unit>() internal val packageJsonHandlers = mutableListOf<PackageJson.() -> Unit>()
@Suppress("unused") @Suppress("unused")
fun packageJson(handler: PackageJson.() -> Unit) { fun packageJson(handler: PackageJson.() -> Unit) {
@@ -6,15 +6,16 @@
package org.jetbrains.kotlin.gradle.targets.js package org.jetbrains.kotlin.gradle.targets.js
import org.jetbrains.kotlin.gradle.plugin.Kotlin2JsSourceSetProcessor import org.jetbrains.kotlin.gradle.plugin.Kotlin2JsSourceSetProcessor
import org.jetbrains.kotlin.gradle.plugin.KotlinSourceSetProcessor
import org.jetbrains.kotlin.gradle.plugin.KotlinOnlyTargetConfigurator import org.jetbrains.kotlin.gradle.plugin.KotlinOnlyTargetConfigurator
import org.jetbrains.kotlin.gradle.plugin.KotlinSourceSetProcessor
import org.jetbrains.kotlin.gradle.plugin.KotlinTargetWithTestsConfigurator import org.jetbrains.kotlin.gradle.plugin.KotlinTargetWithTestsConfigurator
import org.jetbrains.kotlin.gradle.plugin.mpp.KotlinJsCompilation import org.jetbrains.kotlin.gradle.plugin.mpp.KotlinJsCompilation
import org.jetbrains.kotlin.gradle.targets.js.ir.KotlinJsIrTargetConfigurator
import org.jetbrains.kotlin.gradle.tasks.KotlinTasksProvider import org.jetbrains.kotlin.gradle.tasks.KotlinTasksProvider
import org.jetbrains.kotlin.gradle.testing.internal.kotlinTestRegistry import org.jetbrains.kotlin.gradle.testing.internal.kotlinTestRegistry
import org.jetbrains.kotlin.gradle.testing.testTaskName import org.jetbrains.kotlin.gradle.testing.testTaskName
open class KotlinJsTargetConfigurator(kotlinPluginVersion: String) : open class KotlinJsTargetConfigurator(kotlinPluginVersion: String, val irConfigurator: KotlinJsIrTargetConfigurator?) :
KotlinOnlyTargetConfigurator<KotlinJsCompilation, KotlinJsTarget>(true, true, kotlinPluginVersion), KotlinOnlyTargetConfigurator<KotlinJsCompilation, KotlinJsTarget>(true, true, kotlinPluginVersion),
KotlinTargetWithTestsConfigurator<KotlinJsReportAggregatingTestRun, KotlinJsTarget> { KotlinTargetWithTestsConfigurator<KotlinJsReportAggregatingTestRun, KotlinJsTarget> {
@@ -58,5 +59,7 @@ open class KotlinJsTargetConfigurator(kotlinPluginVersion: String) :
sourceMapEmbedSources = null sourceMapEmbedSources = null
} }
} }
irConfigurator?.configureCompilations(target.irTarget!!)
} }
} }
@@ -14,12 +14,13 @@ 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.KotlinJsIrSingleTargetPreset import org.jetbrains.kotlin.gradle.targets.js.ir.KotlinJsIrSingleTargetPreset
import org.jetbrains.kotlin.gradle.targets.js.ir.KotlinJsIrTarget import org.jetbrains.kotlin.gradle.targets.js.ir.KotlinJsIrTarget
import org.jetbrains.kotlin.gradle.targets.js.ir.KotlinJsIrTargetConfigurator
import org.jetbrains.kotlin.gradle.targets.js.ir.KotlinJsIrTargetPreset import org.jetbrains.kotlin.gradle.targets.js.ir.KotlinJsIrTargetPreset
open class KotlinJsTargetPreset( open class KotlinJsTargetPreset(
project: Project, project: Project,
kotlinPluginVersion: String, kotlinPluginVersion: String,
irPreset: KotlinJsIrTargetPreset? val irPreset: KotlinJsIrTargetPreset?
) : KotlinOnlyTargetPreset<KotlinJsTarget, KotlinJsCompilation>( ) : KotlinOnlyTargetPreset<KotlinJsTarget, KotlinJsCompilation>(
project, project,
kotlinPluginVersion kotlinPluginVersion
@@ -47,6 +48,12 @@ open class KotlinJsTargetPreset(
val compilationFactory = createCompilationFactory(this) val compilationFactory = createCompilationFactory(this)
compilations = project.container(compilationFactory.itemClass, compilationFactory) compilations = project.container(compilationFactory.itemClass, compilationFactory)
if (irTarget != null) {
val irCompilationFactory = irPreset?.createCompilationFactory(irTarget)!!
irTarget.targetName = "${name}Ir"
irTarget.compilations = project.container(irCompilationFactory.itemClass, irCompilationFactory)
}
} }
createKotlinTargetConfigurator().configureTarget(result) createKotlinTargetConfigurator().configureTarget(result)
@@ -54,13 +61,16 @@ open class KotlinJsTargetPreset(
return result return result
} }
override fun createKotlinTargetConfigurator() = KotlinJsTargetConfigurator(kotlinPluginVersion) override fun createKotlinTargetConfigurator() = KotlinJsTargetConfigurator(
kotlinPluginVersion,
irPreset?.let { KotlinJsIrTargetConfigurator(kotlinPluginVersion) }
)
override fun getName(): String = PRESET_NAME override fun getName(): String = PRESET_NAME
override fun createCompilationFactory(forTarget: KotlinOnlyTarget<KotlinJsCompilation>): KotlinJsCompilationFactory { override fun createCompilationFactory(forTarget: KotlinOnlyTarget<KotlinJsCompilation>): KotlinJsCompilationFactory {
forTarget as KotlinJsTarget forTarget as KotlinJsTarget
return KotlinJsCompilationFactory(project, forTarget, forTarget.irTarget) return KotlinJsCompilationFactory(project, forTarget, irPreset?.let { forTarget.irTarget })
} }
companion object { companion object {
@@ -81,5 +91,8 @@ 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? = null override fun provideTargetDisambiguationClassifier(target: KotlinOnlyTarget<KotlinJsCompilation>): String? = null
override fun createKotlinTargetConfigurator() = KotlinJsTargetConfigurator(kotlinPluginVersion) override fun createKotlinTargetConfigurator() = KotlinJsTargetConfigurator(
kotlinPluginVersion,
irPreset?.let { KotlinJsIrTargetConfigurator(kotlinPluginVersion) }
)
} }
@@ -9,7 +9,6 @@ import org.gradle.api.Project
import org.jetbrains.kotlin.gradle.plugin.KotlinOnlyTargetConfigurator import org.jetbrains.kotlin.gradle.plugin.KotlinOnlyTargetConfigurator
import org.jetbrains.kotlin.gradle.plugin.KotlinPlatformType import org.jetbrains.kotlin.gradle.plugin.KotlinPlatformType
import org.jetbrains.kotlin.gradle.plugin.mpp.KotlinCompilationFactory import org.jetbrains.kotlin.gradle.plugin.mpp.KotlinCompilationFactory
import org.jetbrains.kotlin.gradle.plugin.mpp.KotlinJsCompilationFactory
import org.jetbrains.kotlin.gradle.plugin.mpp.KotlinOnlyTarget import org.jetbrains.kotlin.gradle.plugin.mpp.KotlinOnlyTarget
import org.jetbrains.kotlin.gradle.plugin.mpp.KotlinOnlyTargetPreset import org.jetbrains.kotlin.gradle.plugin.mpp.KotlinOnlyTargetPreset
@@ -32,7 +31,8 @@ open class KotlinJsIrTargetPreset(
override fun getName(): String = PRESET_NAME override fun getName(): String = PRESET_NAME
override fun createCompilationFactory( //TODO[Ilya Goncharov] remove public morozov
public override fun createCompilationFactory(
forTarget: KotlinOnlyTarget<KotlinJsIrCompilation> forTarget: KotlinOnlyTarget<KotlinJsIrCompilation>
): KotlinCompilationFactory<KotlinJsIrCompilation> = ): KotlinCompilationFactory<KotlinJsIrCompilation> =
KotlinJsIrCompilationFactory(project, forTarget) KotlinJsIrCompilationFactory(project, forTarget)