From 8dcbc391fee21de0907082999ed3a937c37cf8e0 Mon Sep 17 00:00:00 2001 From: Andrey Uskov Date: Wed, 27 May 2020 19:49:56 +0300 Subject: [PATCH] Implemented collecting JS compilation mode #KT-36410 Fixed --- .../idea/statistics/KotlinGradleFUSLogger.kt | 3 ++- .../gradle/dsl/KotlinProjectExtension.kt | 27 ++++++++++++++++--- ...linTargetContainerWithJsPresetFunctions.kt | 2 ++ .../statistics/metrics/StringMetrics.kt | 1 + 4 files changed, 29 insertions(+), 4 deletions(-) diff --git a/idea/idea-gradle/src/org/jetbrains/kotlin/idea/statistics/KotlinGradleFUSLogger.kt b/idea/idea-gradle/src/org/jetbrains/kotlin/idea/statistics/KotlinGradleFUSLogger.kt index f30e95620f2..50f0ac80aeb 100644 --- a/idea/idea-gradle/src/org/jetbrains/kotlin/idea/statistics/KotlinGradleFUSLogger.kt +++ b/idea/idea-gradle/src/org/jetbrains/kotlin/idea/statistics/KotlinGradleFUSLogger.kt @@ -100,7 +100,8 @@ class KotlinGradleFUSLogger : StartupActivity, DumbAware, Runnable { container.log( GradleStatisticsEvents.MPP, StringMetrics.MPP_PLATFORMS, - BooleanMetrics.ENABLED_HMPP + BooleanMetrics.ENABLED_HMPP, + StringMetrics.JS_COMPILER_MODE ) container.log( diff --git a/libraries/tools/kotlin-gradle-plugin/src/main/kotlin/org/jetbrains/kotlin/gradle/dsl/KotlinProjectExtension.kt b/libraries/tools/kotlin-gradle-plugin/src/main/kotlin/org/jetbrains/kotlin/gradle/dsl/KotlinProjectExtension.kt index 167bdf78d74..ea1b69626aa 100644 --- a/libraries/tools/kotlin-gradle-plugin/src/main/kotlin/org/jetbrains/kotlin/gradle/dsl/KotlinProjectExtension.kt +++ b/libraries/tools/kotlin-gradle-plugin/src/main/kotlin/org/jetbrains/kotlin/gradle/dsl/KotlinProjectExtension.kt @@ -14,11 +14,13 @@ import org.jetbrains.kotlin.gradle.plugin.* import org.jetbrains.kotlin.gradle.plugin.mpp.KotlinAndroidTarget import org.jetbrains.kotlin.gradle.plugin.mpp.KotlinJsSingleTargetPreset import org.jetbrains.kotlin.gradle.plugin.mpp.KotlinWithJavaTarget +import org.jetbrains.kotlin.gradle.plugin.statistics.KotlinBuildStatsService import org.jetbrains.kotlin.gradle.targets.js.calculateJsCompilerType import org.jetbrains.kotlin.gradle.targets.js.dsl.KotlinJsTargetDsl import org.jetbrains.kotlin.gradle.targets.js.ir.KotlinJsIrSingleTargetPreset import org.jetbrains.kotlin.gradle.utils.lowerCamelCaseName import org.jetbrains.kotlin.konan.target.CompilerOutputKind +import org.jetbrains.kotlin.statistics.metrics.StringMetrics import kotlin.reflect.KClass private const val KOTLIN_PROJECT_EXTENSION_NAME = "kotlin" @@ -100,6 +102,16 @@ open class KotlinJsProjectExtension : internal var _target: KotlinJsTargetDsl? = null private set + companion object { + internal fun reportJsCompilerMode(compilerType: KotlinJsCompilerType) { + when (compilerType) { + KotlinJsCompilerType.LEGACY -> KotlinBuildStatsService.getInstance()?.report(StringMetrics.JS_COMPILER_MODE, "legacy") + KotlinJsCompilerType.IR -> KotlinBuildStatsService.getInstance()?.report(StringMetrics.JS_COMPILER_MODE, "ir") + KotlinJsCompilerType.BOTH -> KotlinBuildStatsService.getInstance()?.report(StringMetrics.JS_COMPILER_MODE, "both") + } + } + } + @Deprecated("Use js() instead", ReplaceWith("js()")) override var target: KotlinJsTargetDsl get() { @@ -126,17 +138,26 @@ open class KotlinJsProjectExtension : } if (_target == null) { - val target: KotlinJsTargetDsl = when (compiler ?: defaultJsCompilerType) { + val compilerOrDefault = compiler ?: defaultJsCompilerType + reportJsCompilerMode(compilerOrDefault) + val target: KotlinJsTargetDsl = when (compilerOrDefault) { KotlinJsCompilerType.LEGACY -> legacyPreset - .also { it.irPreset = null } + .also { + it.irPreset = null + KotlinBuildStatsService.getInstance()?.report(StringMetrics.JS_COMPILER_MODE, "legacy") + } .createTarget("js") KotlinJsCompilerType.IR -> irPreset - .also { it.mixedMode = false } + .also { + it.mixedMode = false + KotlinBuildStatsService.getInstance()?.report(StringMetrics.JS_COMPILER_MODE, "ir") + } .createTarget("js") KotlinJsCompilerType.BOTH -> legacyPreset .also { irPreset.mixedMode = true it.irPreset = irPreset + KotlinBuildStatsService.getInstance()?.report(StringMetrics.JS_COMPILER_MODE, "both") } .createTarget( lowerCamelCaseName( diff --git a/libraries/tools/kotlin-gradle-plugin/src/main/kotlin/org/jetbrains/kotlin/gradle/dsl/KotlinTargetContainerWithJsPresetFunctions.kt b/libraries/tools/kotlin-gradle-plugin/src/main/kotlin/org/jetbrains/kotlin/gradle/dsl/KotlinTargetContainerWithJsPresetFunctions.kt index a98065dc3d7..d3217d33e56 100644 --- a/libraries/tools/kotlin-gradle-plugin/src/main/kotlin/org/jetbrains/kotlin/gradle/dsl/KotlinTargetContainerWithJsPresetFunctions.kt +++ b/libraries/tools/kotlin-gradle-plugin/src/main/kotlin/org/jetbrains/kotlin/gradle/dsl/KotlinTargetContainerWithJsPresetFunctions.kt @@ -7,6 +7,7 @@ package org.jetbrains.kotlin.gradle.dsl import groovy.lang.Closure import org.gradle.util.ConfigureUtil +import org.jetbrains.kotlin.gradle.dsl.KotlinJsProjectExtension.Companion.reportJsCompilerMode import org.jetbrains.kotlin.gradle.plugin.* import org.jetbrains.kotlin.gradle.targets.js.calculateJsCompilerType import org.jetbrains.kotlin.gradle.targets.js.dsl.KotlinJsTargetDsl @@ -94,6 +95,7 @@ private fun KotlinTargetContainerWithJsPresetFunctions.jsInternal( } } + reportJsCompilerMode(compilerOrDefault) return configureOrCreate( targetName, presets.getByName( diff --git a/libraries/tools/kotlin-gradle-statistics/src/org/jetbrains/kotlin/statistics/metrics/StringMetrics.kt b/libraries/tools/kotlin-gradle-statistics/src/org/jetbrains/kotlin/statistics/metrics/StringMetrics.kt index 31848350a68..b59b121678d 100644 --- a/libraries/tools/kotlin-gradle-statistics/src/org/jetbrains/kotlin/statistics/metrics/StringMetrics.kt +++ b/libraries/tools/kotlin-gradle-statistics/src/org/jetbrains/kotlin/statistics/metrics/StringMetrics.kt @@ -21,6 +21,7 @@ enum class StringMetrics(val type: StringOverridePolicy, val anonymization: Stri // Build script MPP_PLATFORMS(CONCAT, SAFE), + JS_COMPILER_MODE(CONCAT, SAFE), // Component versions LIBRARY_SPRING_VERSION(OVERRIDE_VERSION_IF_NOT_SET, COMPONENT_VERSION),