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 154ee5cc9ec..76a76ef7fd3 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 @@ -14,14 +14,11 @@ import org.jetbrains.kotlin.config.LanguageVersion import org.jetbrains.kotlin.gradle.dsl.KotlinCommonCompilerOptions 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 import org.jetbrains.kotlin.gradle.tasks.AbstractKotlinCompileTool import org.jetbrains.kotlin.gradle.tasks.AbstractKotlinNativeCompile import org.jetbrains.kotlin.gradle.tasks.toSingleCompilerPluginOptions import org.jetbrains.kotlin.project.model.LanguageSettings -import org.jetbrains.kotlin.statistics.metrics.BooleanMetrics -import org.jetbrains.kotlin.statistics.metrics.StringMetrics import kotlin.properties.Delegates internal class DefaultLanguageSettingsBuilder : LanguageSettingsBuilder { @@ -136,13 +133,6 @@ internal fun applyLanguageSettingsToCompilerOptions( freeCompilerArgs.addAll(freeArgs) } } - - // TODO: Fix it - get actual values on execution - KotlinBuildStatsService.getInstance()?.apply { - report(BooleanMetrics.KOTLIN_PROGRESSIVE_MODE, languageSettingsBuilder.progressiveMode) - apiVersion.orNull?.also { v -> report(StringMetrics.KOTLIN_API_VERSION, v.version) } - languageVersion.orNull?.also { v -> report(StringMetrics.KOTLIN_LANGUAGE_VERSION, v.version) } - } } private val apiVersionValues = ApiVersion.run { diff --git a/libraries/tools/kotlin-gradle-plugin/src/common/kotlin/org/jetbrains/kotlin/gradle/targets/native/tasks/KotlinNativeTasks.kt b/libraries/tools/kotlin-gradle-plugin/src/common/kotlin/org/jetbrains/kotlin/gradle/targets/native/tasks/KotlinNativeTasks.kt index 5cc365533da..cdeeda312da 100644 --- a/libraries/tools/kotlin-gradle-plugin/src/common/kotlin/org/jetbrains/kotlin/gradle/targets/native/tasks/KotlinNativeTasks.kt +++ b/libraries/tools/kotlin-gradle-plugin/src/common/kotlin/org/jetbrains/kotlin/gradle/targets/native/tasks/KotlinNativeTasks.kt @@ -36,6 +36,7 @@ import org.jetbrains.kotlin.gradle.plugin.mpp.* import org.jetbrains.kotlin.gradle.plugin.mpp.pm20.GradleKpmMetadataCompilationData import org.jetbrains.kotlin.gradle.plugin.mpp.pm20.GradleKpmNativeCompilationData import org.jetbrains.kotlin.gradle.plugin.sources.DefaultLanguageSettingsBuilder +import org.jetbrains.kotlin.gradle.plugin.statistics.KotlinBuildStatsService import org.jetbrains.kotlin.gradle.targets.native.KonanPropertiesBuildService import org.jetbrains.kotlin.gradle.targets.native.internal.isAllowCommonizer import org.jetbrains.kotlin.gradle.targets.native.tasks.* @@ -49,6 +50,8 @@ import org.jetbrains.kotlin.konan.target.Distribution import org.jetbrains.kotlin.konan.target.KonanTarget import org.jetbrains.kotlin.library.* import org.jetbrains.kotlin.project.model.LanguageSettings +import org.jetbrains.kotlin.statistics.metrics.BooleanMetrics +import org.jetbrains.kotlin.statistics.metrics.StringMetrics import java.io.File import java.nio.file.Files import javax.inject.Inject @@ -488,6 +491,7 @@ internal constructor( val output = outputFile.get() output.parentFile.mkdirs() + collectCommonCompilerStats() val buildArgs = buildCompilerArgs() KotlinNativeCompilerRunner( @@ -495,6 +499,18 @@ internal constructor( executionContext = KotlinToolRunner.GradleExecutionContext.fromTaskContext(objectFactory, execOperations, logger) ).run(buildArgs) } + + private fun collectCommonCompilerStats() { + KotlinBuildStatsService.getInstance()?.apply { + report(BooleanMetrics.KOTLIN_PROGRESSIVE_MODE, compilerOptions.progressiveMode.get()) + compilerOptions.apiVersion.orNull?.also { v -> + report(StringMetrics.KOTLIN_API_VERSION, v.version) + } + compilerOptions.languageVersion.orNull?.also { v -> + report(StringMetrics.KOTLIN_LANGUAGE_VERSION, v.version) + } + } + } } internal class ExternalDependenciesBuilder( diff --git a/libraries/tools/kotlin-gradle-plugin/src/common/kotlin/org/jetbrains/kotlin/gradle/tasks/AbstractKotlinCompile.kt b/libraries/tools/kotlin-gradle-plugin/src/common/kotlin/org/jetbrains/kotlin/gradle/tasks/AbstractKotlinCompile.kt index 8e16a3d98b2..1e69eea61ce 100644 --- a/libraries/tools/kotlin-gradle-plugin/src/common/kotlin/org/jetbrains/kotlin/gradle/tasks/AbstractKotlinCompile.kt +++ b/libraries/tools/kotlin-gradle-plugin/src/common/kotlin/org/jetbrains/kotlin/gradle/tasks/AbstractKotlinCompile.kt @@ -30,6 +30,7 @@ import org.jetbrains.kotlin.compilerRunner.GradleCompilerRunner import org.jetbrains.kotlin.compilerRunner.GradleCompilerRunnerWithWorkers import org.jetbrains.kotlin.compilerRunner.UsesCompilerSystemPropertiesService import org.jetbrains.kotlin.daemon.common.MultiModuleICSettings +import org.jetbrains.kotlin.gradle.dsl.KotlinCommonCompilerOptions import org.jetbrains.kotlin.gradle.incremental.UsesIncrementalModuleInfoBuildService import org.jetbrains.kotlin.gradle.internal.AbstractKotlinCompileArgumentsContributor import org.jetbrains.kotlin.gradle.internal.compilerArgumentsConfigurationFlags @@ -52,6 +53,7 @@ import org.jetbrains.kotlin.gradle.utils.propertyWithNewInstance import org.jetbrains.kotlin.incremental.ChangedFiles import org.jetbrains.kotlin.incremental.IncrementalCompilerRunner import org.jetbrains.kotlin.statistics.metrics.BooleanMetrics +import org.jetbrains.kotlin.statistics.metrics.StringMetrics import java.io.File import javax.inject.Inject import org.jetbrains.kotlin.gradle.tasks.cleanOutputsAndLocalState as cleanOutputsAndLocalStateUtil @@ -86,6 +88,9 @@ abstract class AbstractKotlinCompile @Inject constr @get:LocalState internal abstract val taskBuildLocalStateDirectory: DirectoryProperty + @get:Nested + abstract val compilerOptions: KotlinCommonCompilerOptions + @get:Internal internal val buildHistoryFile get() = taskBuildLocalStateDirectory.file("build-history.bin") @@ -239,6 +244,7 @@ abstract class AbstractKotlinCompile @Inject constr it.report(BooleanMetrics.COMPILATION_STARTED, true) } validateCompilerClasspath() + collectCommonCompilerStats() systemPropertiesService.get().startIntercept() CompilerSystemProperties.KOTLIN_COMPILER_ENVIRONMENT_KEEPALIVE_PROPERTY.value = "true" @@ -272,6 +278,18 @@ abstract class AbstractKotlinCompile @Inject constr buildMetricsService.orNull?.also { it.addTask(path, this.javaClass, buildMetrics) } } + private fun collectCommonCompilerStats() { + KotlinBuildStatsService.getInstance()?.apply { + report(BooleanMetrics.KOTLIN_PROGRESSIVE_MODE, compilerOptions.progressiveMode.get()) + compilerOptions.apiVersion.orNull?.also { v -> + report(StringMetrics.KOTLIN_API_VERSION, v.version) + } + compilerOptions.languageVersion.orNull?.also { v -> + report(StringMetrics.KOTLIN_LANGUAGE_VERSION, v.version) + } + } + } + protected open fun cleanOutputsAndLocalState(reason: String?) { cleanOutputsAndLocalStateUtil(reason) }