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.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<String>().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) }
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
+3
-3
@@ -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)
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
+2
@@ -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
|
||||
|
||||
+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.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<TASK : AbstractKotlinCompile
|
||||
configureTaskProvider { taskProvider ->
|
||||
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
|
||||
)
|
||||
}
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user