[Gradle, JS] Create KotlinJsIrCompilationFactory

This commit is contained in:
Ilya Goncharov
2019-12-26 15:40:09 +03:00
parent 5bdf9f6e39
commit ad321e45dc
5 changed files with 41 additions and 14 deletions
@@ -23,8 +23,8 @@ class KotlinJsIrCompilation(
target.targetName
)
val productionCompileTask: Kotlin2JsCompile =
(target.project.tasks.getByName(productionCompileTaskName) as Kotlin2JsCompile)
val productionCompileTask: Kotlin2JsCompile
get() = (target.project.tasks.getByName(productionCompileTaskName) as Kotlin2JsCompile)
val developmentCompileTaskName: String = lowerCamelCaseName(
"compile",
@@ -34,6 +34,6 @@ class KotlinJsIrCompilation(
target.targetName
)
val developmentCompileTask: Kotlin2JsCompile =
(target.project.tasks.getByName(developmentCompileTaskName) as Kotlin2JsCompile)
val developmentCompileTask: Kotlin2JsCompile
get() = (target.project.tasks.getByName(developmentCompileTaskName) as Kotlin2JsCompile)
}
@@ -0,0 +1,22 @@
/*
* Copyright 2010-2018 JetBrains s.r.o. and Kotlin Programming Language contributors.
* Use of this source code is governed by the Apache 2.0 license that can be found in the license/LICENSE.txt file.
*/
package org.jetbrains.kotlin.gradle.targets.js.ir
import org.gradle.api.Project
import org.jetbrains.kotlin.gradle.plugin.mpp.KotlinCompilationFactory
import org.jetbrains.kotlin.gradle.plugin.mpp.KotlinJsCompilation
import org.jetbrains.kotlin.gradle.plugin.mpp.KotlinOnlyTarget
class KotlinJsIrCompilationFactory(
val project: Project,
val target: KotlinOnlyTarget<KotlinJsIrCompilation>
) : KotlinCompilationFactory<KotlinJsIrCompilation> {
override val itemClass: Class<KotlinJsIrCompilation>
get() = KotlinJsIrCompilation::class.java
override fun create(name: String): KotlinJsIrCompilation =
KotlinJsIrCompilation(target, name)
}
@@ -25,7 +25,7 @@ import org.jetbrains.kotlin.gradle.utils.lowerCamelCaseName
import javax.inject.Inject
open class KotlinJsIrTarget @Inject constructor(project: Project, platformType: KotlinPlatformType) :
KotlinOnlyTarget<KotlinJsCompilation>(project, platformType),
KotlinOnlyTarget<KotlinJsIrCompilation>(project, platformType),
KotlinTargetWithTests<JsIrAggregatingExecutionSource, KotlinJsIrReportAggregatingTestRun>,
KotlinJsIrTargetDsl {
override lateinit var testRuns: NamedDomainObjectContainer<KotlinJsIrReportAggregatingTestRun>
@@ -16,7 +16,7 @@ import org.jetbrains.kotlin.gradle.testing.internal.kotlinTestRegistry
import org.jetbrains.kotlin.gradle.testing.testTaskName
open class KotlinJsIrTargetConfigurator(kotlinPluginVersion: String) :
KotlinOnlyTargetConfigurator<KotlinJsCompilation, KotlinJsIrTarget>(true, true, kotlinPluginVersion),
KotlinOnlyTargetConfigurator<KotlinJsIrCompilation, KotlinJsIrTarget>(true, true, kotlinPluginVersion),
KotlinTargetWithTestsConfigurator<KotlinJsIrReportAggregatingTestRun, KotlinJsIrTarget> {
override val testRunClass: Class<KotlinJsIrReportAggregatingTestRun> get() = KotlinJsIrReportAggregatingTestRun::class.java
@@ -44,7 +44,7 @@ open class KotlinJsIrTargetConfigurator(kotlinPluginVersion: String) :
return result
}
override fun buildCompilationProcessor(compilation: KotlinJsCompilation): KotlinSourceSetProcessor<*> {
override fun buildCompilationProcessor(compilation: KotlinJsIrCompilation): KotlinSourceSetProcessor<*> {
val tasksProvider = KotlinTasksProvider(compilation.target.targetName)
return KotlinJsIrSourceSetProcessor(compilation.target.project, tasksProvider, compilation, kotlinPluginVersion)
}
@@ -6,8 +6,9 @@
package org.jetbrains.kotlin.gradle.targets.js.ir
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.KotlinJsCompilation
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
@@ -15,7 +16,7 @@ import org.jetbrains.kotlin.gradle.plugin.mpp.KotlinOnlyTargetPreset
open class KotlinJsIrTargetPreset(
project: Project,
kotlinPluginVersion: String
) : KotlinOnlyTargetPreset<KotlinJsIrTarget, KotlinJsCompilation>(
) : KotlinOnlyTargetPreset<KotlinJsIrTarget, KotlinJsIrCompilation>(
project,
kotlinPluginVersion
) {
@@ -26,12 +27,15 @@ open class KotlinJsIrTargetPreset(
return project.objects.newInstance(KotlinJsIrTarget::class.java, project, platformType)
}
override fun createKotlinTargetConfigurator() = KotlinJsIrTargetConfigurator(kotlinPluginVersion)
override fun createKotlinTargetConfigurator(): KotlinOnlyTargetConfigurator<KotlinJsIrCompilation, KotlinJsIrTarget> =
KotlinJsIrTargetConfigurator(kotlinPluginVersion)
override fun getName(): String = PRESET_NAME
override fun createCompilationFactory(forTarget: KotlinOnlyTarget<KotlinJsCompilation>) =
KotlinJsCompilationFactory(project, forTarget)
override fun createCompilationFactory(
forTarget: KotlinOnlyTarget<KotlinJsIrCompilation>
): KotlinCompilationFactory<KotlinJsIrCompilation> =
KotlinJsIrCompilationFactory(project, forTarget)
companion object {
const val PRESET_NAME = "jsIr"
@@ -45,7 +49,8 @@ class KotlinJsIrSingleTargetPreset(
KotlinJsIrTargetPreset(project, kotlinPluginVersion) {
// 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<KotlinJsIrCompilation>): String? = null
override fun createKotlinTargetConfigurator() = KotlinJsIrTargetConfigurator(kotlinPluginVersion)
override fun createKotlinTargetConfigurator(): KotlinOnlyTargetConfigurator<KotlinJsIrCompilation, KotlinJsIrTarget> =
KotlinJsIrTargetConfigurator(kotlinPluginVersion)
}