From 3e1edf006f0d90725eff77717492392f42f4b448 Mon Sep 17 00:00:00 2001 From: Alexey Tsvetkov Date: Thu, 15 Dec 2016 20:25:49 +0300 Subject: [PATCH] Set coroutines setting for JS in Gradle plugin --- .../kotlin/gradle/plugin/KotlinProperties.kt | 15 ++++++++------- .../org/jetbrains/kotlin/gradle/tasks/Tasks.kt | 18 ++++++++---------- .../kotlin/gradle/tasks/TasksProvider.kt | 1 + 3 files changed, 17 insertions(+), 17 deletions(-) diff --git a/libraries/tools/kotlin-gradle-plugin/src/main/kotlin/org/jetbrains/kotlin/gradle/plugin/KotlinProperties.kt b/libraries/tools/kotlin-gradle-plugin/src/main/kotlin/org/jetbrains/kotlin/gradle/plugin/KotlinProperties.kt index 2eff69c8b4a..35a84a4ed81 100644 --- a/libraries/tools/kotlin-gradle-plugin/src/main/kotlin/org/jetbrains/kotlin/gradle/plugin/KotlinProperties.kt +++ b/libraries/tools/kotlin-gradle-plugin/src/main/kotlin/org/jetbrains/kotlin/gradle/plugin/KotlinProperties.kt @@ -17,11 +17,12 @@ package org.jetbrains.kotlin.gradle.plugin import org.gradle.api.Project +import org.jetbrains.kotlin.gradle.tasks.AbstractKotlinCompile import org.jetbrains.kotlin.gradle.tasks.KotlinCompile import java.util.* import kotlin.reflect.KMutableProperty1 -fun mapKotlinTaskProperties(project: Project, task: KotlinCompile) { +fun mapKotlinTaskProperties(project: Project, task: AbstractKotlinCompile<*>) { propertyMappings.forEach { it.apply(project, task) } val localPropertiesFile = project.rootProject.file("local.properties") @@ -33,26 +34,26 @@ fun mapKotlinTaskProperties(project: Project, task: KotlinCompile) { } private val propertyMappings = listOf( - KotlinPropertyMapping("kotlin.incremental", KotlinCompile::incremental, String::toBoolean), - KotlinPropertyMapping("kotlin.coroutines", KotlinCompile::coroutines) { CoroutineSupport.byCompilerArgument(it) } + KotlinPropertyMapping("kotlin.incremental", AbstractKotlinCompile<*>::incremental, String::toBoolean), + KotlinPropertyMapping("kotlin.coroutines", AbstractKotlinCompile<*>::coroutines) { CoroutineSupport.byCompilerArgument(it) } ) private class KotlinPropertyMapping( private val projectPropName: String, - private val taskProperty: KMutableProperty1, + private val taskProperty: KMutableProperty1, T>, private val transform: (String) -> T ) { - fun apply(project: Project, task: KotlinCompile) { + fun apply(project: Project, task: AbstractKotlinCompile<*>) { if (!project.hasProperty(projectPropName)) return setPropertyValue(task, project.property(projectPropName)) } - fun apply(properties: Properties, task: KotlinCompile) { + fun apply(properties: Properties, task: AbstractKotlinCompile<*>) { setPropertyValue(task, properties.getProperty(projectPropName)) } - private fun setPropertyValue(task: KotlinCompile, value: Any?) { + private fun setPropertyValue(task: AbstractKotlinCompile<*>, value: Any?) { if (value !is String) return val transformedValue = transform(value) ?: return diff --git a/libraries/tools/kotlin-gradle-plugin/src/main/kotlin/org/jetbrains/kotlin/gradle/tasks/Tasks.kt b/libraries/tools/kotlin-gradle-plugin/src/main/kotlin/org/jetbrains/kotlin/gradle/tasks/Tasks.kt index 22735beba17..f6fc4fbf3a2 100644 --- a/libraries/tools/kotlin-gradle-plugin/src/main/kotlin/org/jetbrains/kotlin/gradle/tasks/Tasks.kt +++ b/libraries/tools/kotlin-gradle-plugin/src/main/kotlin/org/jetbrains/kotlin/gradle/tasks/Tasks.kt @@ -105,12 +105,20 @@ abstract class AbstractKotlinCompile() : AbstractCo sourceRoots.log(this.name, logger) val args = populateCompilerArguments() + args.setupCoroutineSupportArgs() + compilerCalled = true callCompiler(args, sourceRoots, ChangedFiles(inputs)) } internal abstract fun getSourceRoots(): SourceRoots internal abstract fun callCompiler(args: T, sourceRoots: SourceRoots, changedFiles: ChangedFiles) + + private fun CommonCompilerArguments.setupCoroutineSupportArgs() { + coroutinesEnable = coroutines == CoroutineSupport.ENABLED + coroutinesWarn = coroutines == CoroutineSupport.ENABLED_WITH_WARNING + coroutinesError = coroutines == CoroutineSupport.DISABLED + } } open class KotlinCompile : AbstractKotlinCompile(), KotlinJvmCompile { @@ -186,12 +194,6 @@ open class KotlinCompile : AbstractKotlinCompile(), Kotl val outputDir = destinationDir - args.coroutinesEnable = coroutines == CoroutineSupport.ENABLED - args.coroutinesWarn = coroutines == CoroutineSupport.ENABLED_WITH_WARNING - args.coroutinesError = coroutines == CoroutineSupport.DISABLED - - logger.warn("Using kotlin.coroutines=${coroutines.compilerArgument}") - if (!incremental) { anyClassesCompiled = true processCompilerExitCode(compileJvmNotIncrementally( @@ -357,10 +359,6 @@ open class Kotlin2JsCompile() : AbstractKotlinCompile(), destinationDir.mkdirs() args.freeArgs = args.freeArgs + sourceRoots.kotlinSourceFiles.map { it.absolutePath } - args.coroutinesEnable = coroutines == CoroutineSupport.ENABLED - args.coroutinesWarn = coroutines == CoroutineSupport.ENABLED_WITH_WARNING - args.coroutinesError = coroutines == CoroutineSupport.DISABLED - if (args.outputFile == null) { args.outputFile = defaultOutputFile.canonicalPath } diff --git a/libraries/tools/kotlin-gradle-plugin/src/main/kotlin/org/jetbrains/kotlin/gradle/tasks/TasksProvider.kt b/libraries/tools/kotlin-gradle-plugin/src/main/kotlin/org/jetbrains/kotlin/gradle/tasks/TasksProvider.kt index a3115d75bcf..76b1d121cf5 100644 --- a/libraries/tools/kotlin-gradle-plugin/src/main/kotlin/org/jetbrains/kotlin/gradle/tasks/TasksProvider.kt +++ b/libraries/tools/kotlin-gradle-plugin/src/main/kotlin/org/jetbrains/kotlin/gradle/tasks/TasksProvider.kt @@ -41,6 +41,7 @@ internal open class KotlinTasksProvider { project.tasks.create(name, KotlinCompileCommon::class.java).apply { this.sourceSetName = sourceSetName friendTaskName = taskToFriendTaskMapper[this] + mapKotlinTaskProperties(project, this) } protected open val taskToFriendTaskMapper: TaskToFriendTaskMapper =