Update DefaultLanguageSettings to use compiler options
^KT-27301 In Progress
This commit is contained in:
+10
-9
@@ -11,7 +11,8 @@ import org.gradle.api.provider.Provider
|
|||||||
import org.jetbrains.kotlin.config.ApiVersion
|
import org.jetbrains.kotlin.config.ApiVersion
|
||||||
import org.jetbrains.kotlin.config.LanguageFeature
|
import org.jetbrains.kotlin.config.LanguageFeature
|
||||||
import org.jetbrains.kotlin.config.LanguageVersion
|
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.LanguageSettingsBuilder
|
||||||
import org.jetbrains.kotlin.gradle.plugin.statistics.KotlinBuildStatsService
|
import org.jetbrains.kotlin.gradle.plugin.statistics.KotlinBuildStatsService
|
||||||
import org.jetbrains.kotlin.gradle.tasks.AbstractKotlinCompile
|
import org.jetbrains.kotlin.gradle.tasks.AbstractKotlinCompile
|
||||||
@@ -99,12 +100,12 @@ internal class DefaultLanguageSettingsBuilder : LanguageSettingsBuilder {
|
|||||||
get() = freeCompilerArgsProvider?.get().orEmpty()
|
get() = freeCompilerArgsProvider?.get().orEmpty()
|
||||||
}
|
}
|
||||||
|
|
||||||
internal fun applyLanguageSettingsToKotlinOptions(
|
internal fun applyLanguageSettingsToCompilerOptions(
|
||||||
languageSettingsBuilder: LanguageSettings,
|
languageSettingsBuilder: LanguageSettings,
|
||||||
kotlinOptions: KotlinCommonOptions
|
compilerOptions: CompilerCommonOptions
|
||||||
) = with(kotlinOptions) {
|
) = with(compilerOptions) {
|
||||||
languageVersion = languageVersion ?: languageSettingsBuilder.languageVersion
|
languageVersion.convention(languageSettingsBuilder.languageVersion?.let { KotlinVersion.fromVersion(it) })
|
||||||
apiVersion = apiVersion ?: languageSettingsBuilder.apiVersion
|
apiVersion.convention(languageSettingsBuilder.apiVersion?.let { KotlinVersion.fromVersion(it) })
|
||||||
|
|
||||||
val freeArgs = mutableListOf<String>().apply {
|
val freeArgs = mutableListOf<String>().apply {
|
||||||
if (languageSettingsBuilder.progressiveMode) {
|
if (languageSettingsBuilder.progressiveMode) {
|
||||||
@@ -124,12 +125,12 @@ internal fun applyLanguageSettingsToKotlinOptions(
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
freeCompilerArgs = freeCompilerArgs + freeArgs
|
freeCompilerArgs.addAll(freeArgs)
|
||||||
|
|
||||||
KotlinBuildStatsService.getInstance()?.apply {
|
KotlinBuildStatsService.getInstance()?.apply {
|
||||||
report(BooleanMetrics.KOTLIN_PROGRESSIVE_MODE, languageSettingsBuilder.progressiveMode)
|
report(BooleanMetrics.KOTLIN_PROGRESSIVE_MODE, languageSettingsBuilder.progressiveMode)
|
||||||
apiVersion?.also { v -> report(StringMetrics.KOTLIN_API_VERSION, v) }
|
apiVersion.orNull?.also { v -> report(StringMetrics.KOTLIN_API_VERSION, v.version) }
|
||||||
languageVersion?.also { v -> report(StringMetrics.KOTLIN_LANGUAGE_VERSION, v) }
|
languageVersion.orNull?.also { v -> report(StringMetrics.KOTLIN_LANGUAGE_VERSION, v.version) }
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
+3
-3
@@ -10,7 +10,7 @@ import org.gradle.api.Project
|
|||||||
import org.jetbrains.kotlin.gradle.dsl.kotlinExtension
|
import org.jetbrains.kotlin.gradle.dsl.kotlinExtension
|
||||||
import org.jetbrains.kotlin.gradle.plugin.*
|
import org.jetbrains.kotlin.gradle.plugin.*
|
||||||
import org.jetbrains.kotlin.gradle.plugin.mpp.pm20.hasKpmModel
|
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.GradleKpmMetadataTargetConfigurator
|
||||||
import org.jetbrains.kotlin.gradle.targets.metadata.KotlinMetadataTargetConfigurator
|
import org.jetbrains.kotlin.gradle.targets.metadata.KotlinMetadataTargetConfigurator
|
||||||
|
|
||||||
@@ -62,8 +62,8 @@ class KotlinMetadataTargetPreset(
|
|||||||
project.whenEvaluated {
|
project.whenEvaluated {
|
||||||
if (!project.hasKpmModel) {
|
if (!project.hasKpmModel) {
|
||||||
// Since there's no default source set, apply language settings from commonMain:
|
// Since there's no default source set, apply language settings from commonMain:
|
||||||
mainCompilation.compileKotlinTaskProvider.configure { compileKotlinMetadata ->
|
mainCompilation.compileTaskProvider.configure { compileKotlinMetadata ->
|
||||||
applyLanguageSettingsToKotlinOptions(commonMainSourceSet.languageSettings, compileKotlinMetadata.kotlinOptions)
|
applyLanguageSettingsToCompilerOptions(commonMainSourceSet.languageSettings, compileKotlinMetadata.compilerOptions)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
+2
@@ -10,6 +10,7 @@ import org.gradle.api.Action
|
|||||||
import org.gradle.api.NamedDomainObjectContainer
|
import org.gradle.api.NamedDomainObjectContainer
|
||||||
import org.gradle.api.Project
|
import org.gradle.api.Project
|
||||||
import org.gradle.api.tasks.TaskProvider
|
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.dsl.KotlinCommonOptions
|
||||||
import org.jetbrains.kotlin.gradle.plugin.*
|
import org.jetbrains.kotlin.gradle.plugin.*
|
||||||
import org.jetbrains.kotlin.gradle.plugin.mpp.pm20.KotlinNativeCompilationData
|
import org.jetbrains.kotlin.gradle.plugin.mpp.pm20.KotlinNativeCompilationData
|
||||||
@@ -22,6 +23,7 @@ import java.util.concurrent.Callable
|
|||||||
import javax.inject.Inject
|
import javax.inject.Inject
|
||||||
|
|
||||||
internal class NativeCompileOptions(private val languageSettings: LanguageSettingsBuilder) : KotlinCommonOptions {
|
internal class NativeCompileOptions(private val languageSettings: LanguageSettingsBuilder) : KotlinCommonOptions {
|
||||||
|
override val options: CompilerCommonOptions get() = TODO("TBA support")
|
||||||
|
|
||||||
override var apiVersion: String?
|
override var apiVersion: String?
|
||||||
get() = languageSettings.apiVersion
|
get() = languageSettings.apiVersion
|
||||||
|
|||||||
+3
-3
@@ -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.PropertiesProvider.Companion.kotlinPropertiesProvider
|
||||||
import org.jetbrains.kotlin.gradle.plugin.mpp.associateWithClosure
|
import org.jetbrains.kotlin.gradle.plugin.mpp.associateWithClosure
|
||||||
import org.jetbrains.kotlin.gradle.plugin.mpp.pm20.KotlinCompilationData
|
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.BuildMetricsService
|
||||||
import org.jetbrains.kotlin.gradle.report.BuildReportsService
|
import org.jetbrains.kotlin.gradle.report.BuildReportsService
|
||||||
import org.jetbrains.kotlin.gradle.tasks.AbstractKotlinCompile
|
import org.jetbrains.kotlin.gradle.tasks.AbstractKotlinCompile
|
||||||
@@ -41,8 +41,8 @@ internal abstract class AbstractKotlinCompileConfig<TASK : AbstractKotlinCompile
|
|||||||
configureTaskProvider { taskProvider ->
|
configureTaskProvider { taskProvider ->
|
||||||
project.runOnceAfterEvaluated("apply properties and language settings to ${taskProvider.name}") {
|
project.runOnceAfterEvaluated("apply properties and language settings to ${taskProvider.name}") {
|
||||||
taskProvider.configure {
|
taskProvider.configure {
|
||||||
applyLanguageSettingsToKotlinOptions(
|
applyLanguageSettingsToCompilerOptions(
|
||||||
languageSettings.get(), (it as org.jetbrains.kotlin.gradle.dsl.KotlinCompile<*>).kotlinOptions
|
languageSettings.get(), (it as org.jetbrains.kotlin.gradle.tasks.KotlinCompilationTask<*>).compilerOptions
|
||||||
)
|
)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
Reference in New Issue
Block a user