From 4977858fc8e791b8261d1f6753866672f480cff7 Mon Sep 17 00:00:00 2001 From: Yahor Berdnikau Date: Thu, 8 Sep 2022 12:47:50 +0200 Subject: [PATCH] Update DefaultLanguageSettings to use compiler options ^KT-27301 In Progress --- .../sources/DefaultLanguageSettingsBuilder.kt | 19 ++++++++++--------- .../metadata/KotlinMetadataTargetPreset.kt | 6 +++--- .../targets/native/KotlinNativeCompilation.kt | 2 ++ .../AbstractKotlinCompileConfig.kt | 6 +++--- 4 files changed, 18 insertions(+), 15 deletions(-) diff --git a/libraries/tools/kotlin-gradle-plugin/src/common/kotlin/org/jetbrains/kotlin/gradle/plugin/sources/DefaultLanguageSettingsBuilder.kt b/libraries/tools/kotlin-gradle-plugin/src/common/kotlin/org/jetbrains/kotlin/gradle/plugin/sources/DefaultLanguageSettingsBuilder.kt index 87f07374c9b..24633c9fe96 100644 --- a/libraries/tools/kotlin-gradle-plugin/src/common/kotlin/org/jetbrains/kotlin/gradle/plugin/sources/DefaultLanguageSettingsBuilder.kt +++ b/libraries/tools/kotlin-gradle-plugin/src/common/kotlin/org/jetbrains/kotlin/gradle/plugin/sources/DefaultLanguageSettingsBuilder.kt @@ -11,7 +11,8 @@ import org.gradle.api.provider.Provider import org.jetbrains.kotlin.config.ApiVersion import org.jetbrains.kotlin.config.LanguageFeature import org.jetbrains.kotlin.config.LanguageVersion -import org.jetbrains.kotlin.gradle.dsl.KotlinCommonOptions +import org.jetbrains.kotlin.gradle.dsl.CompilerCommonOptions +import org.jetbrains.kotlin.gradle.dsl.KotlinVersion import org.jetbrains.kotlin.gradle.plugin.LanguageSettingsBuilder import org.jetbrains.kotlin.gradle.plugin.statistics.KotlinBuildStatsService import org.jetbrains.kotlin.gradle.tasks.AbstractKotlinCompile @@ -99,12 +100,12 @@ internal class DefaultLanguageSettingsBuilder : LanguageSettingsBuilder { get() = freeCompilerArgsProvider?.get().orEmpty() } -internal fun applyLanguageSettingsToKotlinOptions( +internal fun applyLanguageSettingsToCompilerOptions( languageSettingsBuilder: LanguageSettings, - kotlinOptions: KotlinCommonOptions -) = with(kotlinOptions) { - languageVersion = languageVersion ?: languageSettingsBuilder.languageVersion - apiVersion = apiVersion ?: languageSettingsBuilder.apiVersion + compilerOptions: CompilerCommonOptions +) = with(compilerOptions) { + languageVersion.convention(languageSettingsBuilder.languageVersion?.let { KotlinVersion.fromVersion(it) }) + apiVersion.convention(languageSettingsBuilder.apiVersion?.let { KotlinVersion.fromVersion(it) }) val freeArgs = mutableListOf().apply { if (languageSettingsBuilder.progressiveMode) { @@ -124,12 +125,12 @@ internal fun applyLanguageSettingsToKotlinOptions( } } - freeCompilerArgs = freeCompilerArgs + freeArgs + freeCompilerArgs.addAll(freeArgs) KotlinBuildStatsService.getInstance()?.apply { report(BooleanMetrics.KOTLIN_PROGRESSIVE_MODE, languageSettingsBuilder.progressiveMode) - apiVersion?.also { v -> report(StringMetrics.KOTLIN_API_VERSION, v) } - languageVersion?.also { v -> report(StringMetrics.KOTLIN_LANGUAGE_VERSION, v) } + apiVersion.orNull?.also { v -> report(StringMetrics.KOTLIN_API_VERSION, v.version) } + languageVersion.orNull?.also { v -> report(StringMetrics.KOTLIN_LANGUAGE_VERSION, v.version) } } } diff --git a/libraries/tools/kotlin-gradle-plugin/src/common/kotlin/org/jetbrains/kotlin/gradle/targets/metadata/KotlinMetadataTargetPreset.kt b/libraries/tools/kotlin-gradle-plugin/src/common/kotlin/org/jetbrains/kotlin/gradle/targets/metadata/KotlinMetadataTargetPreset.kt index 1f89404cc89..2e99b459b81 100644 --- a/libraries/tools/kotlin-gradle-plugin/src/common/kotlin/org/jetbrains/kotlin/gradle/targets/metadata/KotlinMetadataTargetPreset.kt +++ b/libraries/tools/kotlin-gradle-plugin/src/common/kotlin/org/jetbrains/kotlin/gradle/targets/metadata/KotlinMetadataTargetPreset.kt @@ -10,7 +10,7 @@ import org.gradle.api.Project import org.jetbrains.kotlin.gradle.dsl.kotlinExtension import org.jetbrains.kotlin.gradle.plugin.* import org.jetbrains.kotlin.gradle.plugin.mpp.pm20.hasKpmModel -import org.jetbrains.kotlin.gradle.plugin.sources.applyLanguageSettingsToKotlinOptions +import org.jetbrains.kotlin.gradle.plugin.sources.applyLanguageSettingsToCompilerOptions import org.jetbrains.kotlin.gradle.targets.metadata.GradleKpmMetadataTargetConfigurator import org.jetbrains.kotlin.gradle.targets.metadata.KotlinMetadataTargetConfigurator @@ -62,8 +62,8 @@ class KotlinMetadataTargetPreset( project.whenEvaluated { if (!project.hasKpmModel) { // Since there's no default source set, apply language settings from commonMain: - mainCompilation.compileKotlinTaskProvider.configure { compileKotlinMetadata -> - applyLanguageSettingsToKotlinOptions(commonMainSourceSet.languageSettings, compileKotlinMetadata.kotlinOptions) + mainCompilation.compileTaskProvider.configure { compileKotlinMetadata -> + applyLanguageSettingsToCompilerOptions(commonMainSourceSet.languageSettings, compileKotlinMetadata.compilerOptions) } } } diff --git a/libraries/tools/kotlin-gradle-plugin/src/common/kotlin/org/jetbrains/kotlin/gradle/targets/native/KotlinNativeCompilation.kt b/libraries/tools/kotlin-gradle-plugin/src/common/kotlin/org/jetbrains/kotlin/gradle/targets/native/KotlinNativeCompilation.kt index 48bf8eb749d..affc35aa06d 100644 --- a/libraries/tools/kotlin-gradle-plugin/src/common/kotlin/org/jetbrains/kotlin/gradle/targets/native/KotlinNativeCompilation.kt +++ b/libraries/tools/kotlin-gradle-plugin/src/common/kotlin/org/jetbrains/kotlin/gradle/targets/native/KotlinNativeCompilation.kt @@ -10,6 +10,7 @@ import org.gradle.api.Action import org.gradle.api.NamedDomainObjectContainer import org.gradle.api.Project import org.gradle.api.tasks.TaskProvider +import org.jetbrains.kotlin.gradle.dsl.CompilerCommonOptions import org.jetbrains.kotlin.gradle.dsl.KotlinCommonOptions import org.jetbrains.kotlin.gradle.plugin.* import org.jetbrains.kotlin.gradle.plugin.mpp.pm20.KotlinNativeCompilationData @@ -22,6 +23,7 @@ import java.util.concurrent.Callable import javax.inject.Inject internal class NativeCompileOptions(private val languageSettings: LanguageSettingsBuilder) : KotlinCommonOptions { + override val options: CompilerCommonOptions get() = TODO("TBA support") override var apiVersion: String? get() = languageSettings.apiVersion diff --git a/libraries/tools/kotlin-gradle-plugin/src/common/kotlin/org/jetbrains/kotlin/gradle/tasks/configuration/AbstractKotlinCompileConfig.kt b/libraries/tools/kotlin-gradle-plugin/src/common/kotlin/org/jetbrains/kotlin/gradle/tasks/configuration/AbstractKotlinCompileConfig.kt index 51c34c71c68..c9ba7abc582 100644 --- a/libraries/tools/kotlin-gradle-plugin/src/common/kotlin/org/jetbrains/kotlin/gradle/tasks/configuration/AbstractKotlinCompileConfig.kt +++ b/libraries/tools/kotlin-gradle-plugin/src/common/kotlin/org/jetbrains/kotlin/gradle/tasks/configuration/AbstractKotlinCompileConfig.kt @@ -18,7 +18,7 @@ import org.jetbrains.kotlin.gradle.plugin.* import org.jetbrains.kotlin.gradle.plugin.PropertiesProvider.Companion.kotlinPropertiesProvider import org.jetbrains.kotlin.gradle.plugin.mpp.associateWithClosure import org.jetbrains.kotlin.gradle.plugin.mpp.pm20.KotlinCompilationData -import org.jetbrains.kotlin.gradle.plugin.sources.applyLanguageSettingsToKotlinOptions +import org.jetbrains.kotlin.gradle.plugin.sources.applyLanguageSettingsToCompilerOptions import org.jetbrains.kotlin.gradle.report.BuildMetricsService import org.jetbrains.kotlin.gradle.report.BuildReportsService import org.jetbrains.kotlin.gradle.tasks.AbstractKotlinCompile @@ -41,8 +41,8 @@ internal abstract class AbstractKotlinCompileConfig project.runOnceAfterEvaluated("apply properties and language settings to ${taskProvider.name}") { taskProvider.configure { - applyLanguageSettingsToKotlinOptions( - languageSettings.get(), (it as org.jetbrains.kotlin.gradle.dsl.KotlinCompile<*>).kotlinOptions + applyLanguageSettingsToCompilerOptions( + languageSettings.get(), (it as org.jetbrains.kotlin.gradle.tasks.KotlinCompilationTask<*>).compilerOptions ) } }