Fix CCE when creating kotlin-js task in gradle plugin

This commit is contained in:
Alexey Tsvetkov
2016-06-20 16:48:45 +03:00
parent 453ee55615
commit 34181402fb
@@ -45,11 +45,10 @@ abstract class KotlinSourceSetProcessor<T : AbstractCompile>(
val project: ProjectInternal, val project: ProjectInternal,
val javaBasePlugin: JavaBasePlugin, val javaBasePlugin: JavaBasePlugin,
val sourceSet: SourceSet, val sourceSet: SourceSet,
val tasksProvider: KotlinTasksProvider,
val pluginName: String, val pluginName: String,
val compileTaskNameSuffix: String, val compileTaskNameSuffix: String,
val taskDescription: String, val taskDescription: String
val compilerClass: Class<T>,
val tasksProvider: KotlinTasksProvider
) { ) {
abstract protected fun doTargetSpecificProcessing() abstract protected fun doTargetSpecificProcessing()
val logger = Logging.getLogger(this.javaClass) val logger = Logging.getLogger(this.javaClass)
@@ -98,10 +97,10 @@ abstract class KotlinSourceSetProcessor<T : AbstractCompile>(
open protected fun createKotlinCompileTask(suffix: String = ""): T { open protected fun createKotlinCompileTask(suffix: String = ""): T {
val name = sourceSet.getCompileTaskName(compileTaskNameSuffix) + suffix val name = sourceSet.getCompileTaskName(compileTaskNameSuffix) + suffix
logger.kotlinDebug("Creating kotlin compile task $name with class $compilerClass") logger.kotlinDebug("Creating kotlin compile task $name")
val compile = tasksProvider.createKotlinJVMTask(project, name) val kotlinCompile = doCreateTask(project, name)
compile.extensions.extraProperties.set("defaultModuleName", "${project.name}-$name") kotlinCompile.extensions.extraProperties.set("defaultModuleName", "${project.name}-$name")
return compilerClass.cast(compile) return kotlinCompile
} }
open protected fun commonTaskConfiguration() { open protected fun commonTaskConfiguration() {
@@ -110,6 +109,8 @@ abstract class KotlinSourceSetProcessor<T : AbstractCompile>(
kotlinTask.source(kotlinDirSet) kotlinTask.source(kotlinDirSet)
mapKotlinTaskProperties(project, kotlinTask) mapKotlinTaskProperties(project, kotlinTask)
} }
protected abstract fun doCreateTask(project: Project, taskName: String): T
} }
class Kotlin2JvmSourceSetProcessor( class Kotlin2JvmSourceSetProcessor(
@@ -119,18 +120,19 @@ class Kotlin2JvmSourceSetProcessor(
val scriptHandler: ScriptHandler, val scriptHandler: ScriptHandler,
tasksProvider: KotlinTasksProvider tasksProvider: KotlinTasksProvider
) : KotlinSourceSetProcessor<AbstractCompile>( ) : KotlinSourceSetProcessor<AbstractCompile>(
project, javaBasePlugin, sourceSet, project, javaBasePlugin, sourceSet, tasksProvider,
pluginName = "kotlin", pluginName = "kotlin",
compileTaskNameSuffix = "kotlin", compileTaskNameSuffix = "kotlin",
taskDescription = "Compiles the $sourceSet.kotlin.", taskDescription = "Compiles the $sourceSet.kotlin."
compilerClass = tasksProvider.kotlinJVMCompileTaskClass,
tasksProvider = tasksProvider
) { ) {
private companion object { private companion object {
private var cachedKotlinAnnotationProcessingDep: String? = null private var cachedKotlinAnnotationProcessingDep: String? = null
} }
override fun doCreateTask(project: Project, taskName: String): AbstractCompile =
tasksProvider.createKotlinJVMTask(project, taskName)
override fun doTargetSpecificProcessing() { override fun doTargetSpecificProcessing() {
val kotlinAnnotationProcessingDep = cachedKotlinAnnotationProcessingDep ?: run { val kotlinAnnotationProcessingDep = cachedKotlinAnnotationProcessingDep ?: run {
val projectVersion = loadKotlinVersionFromResource(project.logger) val projectVersion = loadKotlinVersionFromResource(project.logger)
@@ -190,12 +192,10 @@ class Kotlin2JsSourceSetProcessor(
val scriptHandler: ScriptHandler, val scriptHandler: ScriptHandler,
tasksProvider: KotlinTasksProvider tasksProvider: KotlinTasksProvider
) : KotlinSourceSetProcessor<AbstractCompile>( ) : KotlinSourceSetProcessor<AbstractCompile>(
project, javaBasePlugin, sourceSet, project, javaBasePlugin, sourceSet, tasksProvider,
pluginName = "kotlin2js", pluginName = "kotlin2js",
taskDescription = "Compiles the kotlin sources in $sourceSet to JavaScript.", taskDescription = "Compiles the kotlin sources in $sourceSet to JavaScript.",
compileTaskNameSuffix = "kotlin2Js", compileTaskNameSuffix = "kotlin2Js"
compilerClass = tasksProvider.kotlinJSCompileTaskClass,
tasksProvider = tasksProvider
) { ) {
val copyKotlinJsTaskName = sourceSet.getTaskName("copy", "kotlinJs") val copyKotlinJsTaskName = sourceSet.getTaskName("copy", "kotlinJs")
@@ -213,6 +213,9 @@ class Kotlin2JsSourceSetProcessor(
private fun shouldGenerateSourceMap() = kotlinTask.property("sourceMap") private fun shouldGenerateSourceMap() = kotlinTask.property("sourceMap")
override fun doCreateTask(project: Project, taskName: String): AbstractCompile =
tasksProvider.createKotlinJSTask(project, taskName)
override fun doTargetSpecificProcessing() { override fun doTargetSpecificProcessing() {
kotlinTask.kotlinDestinationDir = defaultKotlinDestinationDir kotlinTask.kotlinDestinationDir = defaultKotlinDestinationDir
build?.dependsOn(kotlinTaskName) build?.dependsOn(kotlinTaskName)