[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.tasks.Kotlin2JsCompile
open class KotlinJsCompilation(
target: KotlinTarget,
name: String
) : AbstractKotlinCompilationToRunnableFiles<KotlinJsOptions>(target, name), KotlinCompilationWithResources<KotlinJsOptions> {
override val processResourcesTaskName: String
get() = disambiguateName("processResources")
open class KotlinJsCompilation(
target: KotlinTarget,
name: String
) : AbstractKotlinCompilationToRunnableFiles<KotlinJsOptions>(target, name), KotlinCompilationWithResources<KotlinJsOptions> {
override val processResourcesTaskName: String
get() = disambiguateName("processResources")
override val compileKotlinTask: Kotlin2JsCompile
get() = super.compileKotlinTask as Kotlin2JsCompile
override val compileKotlinTask: Kotlin2JsCompile
get() = super.compileKotlinTask as Kotlin2JsCompile
internal val packageJsonHandlers = mutableListOf<PackageJson.() -> Unit>()
internal val packageJsonHandlers = mutableListOf<PackageJson.() -> Unit>()
@Suppress("unused")
fun packageJson(handler: PackageJson.() -> Unit) {
@@ -6,15 +6,16 @@
package org.jetbrains.kotlin.gradle.targets.js
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.KotlinSourceSetProcessor
import org.jetbrains.kotlin.gradle.plugin.KotlinTargetWithTestsConfigurator
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.testing.internal.kotlinTestRegistry
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),
KotlinTargetWithTestsConfigurator<KotlinJsReportAggregatingTestRun, KotlinJsTarget> {
@@ -58,5 +59,7 @@ open class KotlinJsTargetConfigurator(kotlinPluginVersion: String) :
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.ir.KotlinJsIrSingleTargetPreset
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
open class KotlinJsTargetPreset(
project: Project,
kotlinPluginVersion: String,
irPreset: KotlinJsIrTargetPreset?
val irPreset: KotlinJsIrTargetPreset?
) : KotlinOnlyTargetPreset<KotlinJsTarget, KotlinJsCompilation>(
project,
kotlinPluginVersion
@@ -47,6 +48,12 @@ open class KotlinJsTargetPreset(
val compilationFactory = createCompilationFactory(this)
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)
@@ -54,13 +61,16 @@ open class KotlinJsTargetPreset(
return result
}
override fun createKotlinTargetConfigurator() = KotlinJsTargetConfigurator(kotlinPluginVersion)
override fun createKotlinTargetConfigurator() = KotlinJsTargetConfigurator(
kotlinPluginVersion,
irPreset?.let { KotlinJsIrTargetConfigurator(kotlinPluginVersion) }
)
override fun getName(): String = PRESET_NAME
override fun createCompilationFactory(forTarget: KotlinOnlyTarget<KotlinJsCompilation>): KotlinJsCompilationFactory {
forTarget as KotlinJsTarget
return KotlinJsCompilationFactory(project, forTarget, forTarget.irTarget)
return KotlinJsCompilationFactory(project, forTarget, irPreset?.let { forTarget.irTarget })
}
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:
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.KotlinPlatformType
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.KotlinOnlyTargetPreset
@@ -32,7 +31,8 @@ open class KotlinJsIrTargetPreset(
override fun getName(): String = PRESET_NAME
override fun createCompilationFactory(
//TODO[Ilya Goncharov] remove public morozov
public override fun createCompilationFactory(
forTarget: KotlinOnlyTarget<KotlinJsIrCompilation>
): KotlinCompilationFactory<KotlinJsIrCompilation> =
KotlinJsIrCompilationFactory(project, forTarget)