From 52102d359a70fe96fecc3d9091212d5979c7b98f Mon Sep 17 00:00:00 2001 From: Alexey Sedunov Date: Wed, 8 Feb 2017 11:54:50 +0300 Subject: [PATCH] Kotlin Gradle Plugin: Expose default compiler arguments via compilation task API --- .../kotlin/gradle/dsl/KotlinCompile.kt | 1 + .../kotlin/gradle/tasks/KotlinCompileCommon.kt | 2 +- .../org/jetbrains/kotlin/gradle/tasks/Tasks.kt | 18 +++++++++++++++--- 3 files changed, 17 insertions(+), 4 deletions(-) diff --git a/libraries/tools/kotlin-gradle-plugin/src/main/kotlin/org/jetbrains/kotlin/gradle/dsl/KotlinCompile.kt b/libraries/tools/kotlin-gradle-plugin/src/main/kotlin/org/jetbrains/kotlin/gradle/dsl/KotlinCompile.kt index aae749f6d01..31b4d1f24d2 100644 --- a/libraries/tools/kotlin-gradle-plugin/src/main/kotlin/org/jetbrains/kotlin/gradle/dsl/KotlinCompile.kt +++ b/libraries/tools/kotlin-gradle-plugin/src/main/kotlin/org/jetbrains/kotlin/gradle/dsl/KotlinCompile.kt @@ -21,6 +21,7 @@ import org.gradle.api.Task interface CompilerArgumentAware { val serializedCompilerArguments: List + val defaultSerializedCompilerArguments: List } interface KotlinCompile : Task, CompilerArgumentAware { diff --git a/libraries/tools/kotlin-gradle-plugin/src/main/kotlin/org/jetbrains/kotlin/gradle/tasks/KotlinCompileCommon.kt b/libraries/tools/kotlin-gradle-plugin/src/main/kotlin/org/jetbrains/kotlin/gradle/tasks/KotlinCompileCommon.kt index a42acb58848..9af913e2d56 100644 --- a/libraries/tools/kotlin-gradle-plugin/src/main/kotlin/org/jetbrains/kotlin/gradle/tasks/KotlinCompileCommon.kt +++ b/libraries/tools/kotlin-gradle-plugin/src/main/kotlin/org/jetbrains/kotlin/gradle/tasks/KotlinCompileCommon.kt @@ -26,7 +26,7 @@ import org.jetbrains.kotlin.incremental.ChangedFiles import java.io.File internal open class KotlinCompileCommon : AbstractKotlinCompile() { - override fun populateCompilerArguments(): K2MetadataCompilerArguments = + override fun populateCompilerArguments(defaultsOnly: Boolean): K2MetadataCompilerArguments = K2MetadataCompilerArguments() override fun getSourceRoots(): SourceRoots = 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 481db39cadd..08c6153f94e 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 @@ -53,7 +53,7 @@ const val KOTLIN_BUILD_DIR_NAME = "kotlin" const val USING_EXPERIMENTAL_INCREMENTAL_MESSAGE = "Using experimental kotlin incremental compilation" abstract class AbstractKotlinCompile() : AbstractCompile(), CompilerArgumentAware { - abstract protected fun populateCompilerArguments(): T + abstract protected fun populateCompilerArguments(defaultsOnly: Boolean = false): T protected val additionalClasspath = arrayListOf() protected val compileClasspath: Iterable @@ -67,6 +67,13 @@ abstract class AbstractKotlinCompile() : AbstractCo return ArgumentUtils.convertArgumentsToStringList(arguments) } + override val defaultSerializedCompilerArguments: List + get() { + val arguments = populateCompilerArguments(true) + arguments.setupCommonCompilerArgs() + return ArgumentUtils.convertArgumentsToStringList(arguments) + } + private val kotlinExt: KotlinProjectExtension get() = project.extensions.findByType(KotlinProjectExtension::class.java)!! @@ -180,9 +187,11 @@ open class KotlinCompile : AbstractKotlinCompile(), Kotl override fun findKotlinCompilerJar(project: Project): File? = findKotlinJvmCompilerJar(project) - override fun populateCompilerArguments(): K2JVMCompilerArguments { + override fun populateCompilerArguments(defaultsOnly: Boolean): K2JVMCompilerArguments { val args = K2JVMCompilerArguments().apply { fillDefaultValues() } + if (defaultsOnly) return args + handleKaptProperties() args.pluginClasspaths = pluginOptions.classpath.toTypedArray() args.pluginOptions = pluginOptions.arguments.toTypedArray() @@ -320,8 +329,11 @@ open class Kotlin2JsCompile() : AbstractKotlinCompile(), override fun findKotlinCompilerJar(project: Project): File? = findKotlinJsCompilerJar(project) - override fun populateCompilerArguments(): K2JSCompilerArguments { + override fun populateCompilerArguments(defaultsOnly: Boolean): K2JSCompilerArguments { val args = K2JSCompilerArguments().apply { fillDefaultValues() } + + if (defaultsOnly) return args + args.outputFile = outputFile kotlinOptionsImpl.updateArguments(args) return args