[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 target.targetName
) )
val productionCompileTask: Kotlin2JsCompile = val productionCompileTask: Kotlin2JsCompile
(target.project.tasks.getByName(productionCompileTaskName) as Kotlin2JsCompile) get() = (target.project.tasks.getByName(productionCompileTaskName) as Kotlin2JsCompile)
val developmentCompileTaskName: String = lowerCamelCaseName( val developmentCompileTaskName: String = lowerCamelCaseName(
"compile", "compile",
@@ -34,6 +34,6 @@ class KotlinJsIrCompilation(
target.targetName target.targetName
) )
val developmentCompileTask: Kotlin2JsCompile = val developmentCompileTask: Kotlin2JsCompile
(target.project.tasks.getByName(developmentCompileTaskName) as 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 import javax.inject.Inject
open class KotlinJsIrTarget @Inject constructor(project: Project, platformType: KotlinPlatformType) : open class KotlinJsIrTarget @Inject constructor(project: Project, platformType: KotlinPlatformType) :
KotlinOnlyTarget<KotlinJsCompilation>(project, platformType), KotlinOnlyTarget<KotlinJsIrCompilation>(project, platformType),
KotlinTargetWithTests<JsIrAggregatingExecutionSource, KotlinJsIrReportAggregatingTestRun>, KotlinTargetWithTests<JsIrAggregatingExecutionSource, KotlinJsIrReportAggregatingTestRun>,
KotlinJsIrTargetDsl { KotlinJsIrTargetDsl {
override lateinit var testRuns: NamedDomainObjectContainer<KotlinJsIrReportAggregatingTestRun> 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 import org.jetbrains.kotlin.gradle.testing.testTaskName
open class KotlinJsIrTargetConfigurator(kotlinPluginVersion: String) : open class KotlinJsIrTargetConfigurator(kotlinPluginVersion: String) :
KotlinOnlyTargetConfigurator<KotlinJsCompilation, KotlinJsIrTarget>(true, true, kotlinPluginVersion), KotlinOnlyTargetConfigurator<KotlinJsIrCompilation, KotlinJsIrTarget>(true, true, kotlinPluginVersion),
KotlinTargetWithTestsConfigurator<KotlinJsIrReportAggregatingTestRun, KotlinJsIrTarget> { KotlinTargetWithTestsConfigurator<KotlinJsIrReportAggregatingTestRun, KotlinJsIrTarget> {
override val testRunClass: Class<KotlinJsIrReportAggregatingTestRun> get() = KotlinJsIrReportAggregatingTestRun::class.java override val testRunClass: Class<KotlinJsIrReportAggregatingTestRun> get() = KotlinJsIrReportAggregatingTestRun::class.java
@@ -44,7 +44,7 @@ open class KotlinJsIrTargetConfigurator(kotlinPluginVersion: String) :
return result return result
} }
override fun buildCompilationProcessor(compilation: KotlinJsCompilation): KotlinSourceSetProcessor<*> { override fun buildCompilationProcessor(compilation: KotlinJsIrCompilation): KotlinSourceSetProcessor<*> {
val tasksProvider = KotlinTasksProvider(compilation.target.targetName) val tasksProvider = KotlinTasksProvider(compilation.target.targetName)
return KotlinJsIrSourceSetProcessor(compilation.target.project, tasksProvider, compilation, kotlinPluginVersion) return KotlinJsIrSourceSetProcessor(compilation.target.project, tasksProvider, compilation, kotlinPluginVersion)
} }
@@ -6,8 +6,9 @@
package org.jetbrains.kotlin.gradle.targets.js.ir package org.jetbrains.kotlin.gradle.targets.js.ir
import org.gradle.api.Project 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.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.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
@@ -15,7 +16,7 @@ import org.jetbrains.kotlin.gradle.plugin.mpp.KotlinOnlyTargetPreset
open class KotlinJsIrTargetPreset( open class KotlinJsIrTargetPreset(
project: Project, project: Project,
kotlinPluginVersion: String kotlinPluginVersion: String
) : KotlinOnlyTargetPreset<KotlinJsIrTarget, KotlinJsCompilation>( ) : KotlinOnlyTargetPreset<KotlinJsIrTarget, KotlinJsIrCompilation>(
project, project,
kotlinPluginVersion kotlinPluginVersion
) { ) {
@@ -26,12 +27,15 @@ open class KotlinJsIrTargetPreset(
return project.objects.newInstance(KotlinJsIrTarget::class.java, project, platformType) 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 getName(): String = PRESET_NAME
override fun createCompilationFactory(forTarget: KotlinOnlyTarget<KotlinJsCompilation>) = override fun createCompilationFactory(
KotlinJsCompilationFactory(project, forTarget) forTarget: KotlinOnlyTarget<KotlinJsIrCompilation>
): KotlinCompilationFactory<KotlinJsIrCompilation> =
KotlinJsIrCompilationFactory(project, forTarget)
companion object { companion object {
const val PRESET_NAME = "jsIr" const val PRESET_NAME = "jsIr"
@@ -45,7 +49,8 @@ class KotlinJsIrSingleTargetPreset(
KotlinJsIrTargetPreset(project, kotlinPluginVersion) { KotlinJsIrTargetPreset(project, kotlinPluginVersion) {
// 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<KotlinJsIrCompilation>): String? = null
override fun createKotlinTargetConfigurator() = KotlinJsIrTargetConfigurator(kotlinPluginVersion) override fun createKotlinTargetConfigurator(): KotlinOnlyTargetConfigurator<KotlinJsIrCompilation, KotlinJsIrTarget> =
KotlinJsIrTargetConfigurator(kotlinPluginVersion)
} }