Implemented collecting JS compilation mode

#KT-36410 Fixed
This commit is contained in:
Andrey Uskov
2020-05-27 19:49:56 +03:00
parent 97039926f0
commit 8dcbc391fe
4 changed files with 29 additions and 4 deletions
@@ -100,7 +100,8 @@ class KotlinGradleFUSLogger : StartupActivity, DumbAware, Runnable {
container.log( container.log(
GradleStatisticsEvents.MPP, GradleStatisticsEvents.MPP,
StringMetrics.MPP_PLATFORMS, StringMetrics.MPP_PLATFORMS,
BooleanMetrics.ENABLED_HMPP BooleanMetrics.ENABLED_HMPP,
StringMetrics.JS_COMPILER_MODE
) )
container.log( container.log(
@@ -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.KotlinAndroidTarget
import org.jetbrains.kotlin.gradle.plugin.mpp.KotlinJsSingleTargetPreset import org.jetbrains.kotlin.gradle.plugin.mpp.KotlinJsSingleTargetPreset
import org.jetbrains.kotlin.gradle.plugin.mpp.KotlinWithJavaTarget 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.calculateJsCompilerType
import org.jetbrains.kotlin.gradle.targets.js.dsl.KotlinJsTargetDsl import org.jetbrains.kotlin.gradle.targets.js.dsl.KotlinJsTargetDsl
import org.jetbrains.kotlin.gradle.targets.js.ir.KotlinJsIrSingleTargetPreset import org.jetbrains.kotlin.gradle.targets.js.ir.KotlinJsIrSingleTargetPreset
import org.jetbrains.kotlin.gradle.utils.lowerCamelCaseName import org.jetbrains.kotlin.gradle.utils.lowerCamelCaseName
import org.jetbrains.kotlin.konan.target.CompilerOutputKind import org.jetbrains.kotlin.konan.target.CompilerOutputKind
import org.jetbrains.kotlin.statistics.metrics.StringMetrics
import kotlin.reflect.KClass import kotlin.reflect.KClass
private const val KOTLIN_PROJECT_EXTENSION_NAME = "kotlin" private const val KOTLIN_PROJECT_EXTENSION_NAME = "kotlin"
@@ -100,6 +102,16 @@ open class KotlinJsProjectExtension :
internal var _target: KotlinJsTargetDsl? = null internal var _target: KotlinJsTargetDsl? = null
private set 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()")) @Deprecated("Use js() instead", ReplaceWith("js()"))
override var target: KotlinJsTargetDsl override var target: KotlinJsTargetDsl
get() { get() {
@@ -126,17 +138,26 @@ open class KotlinJsProjectExtension :
} }
if (_target == null) { if (_target == null) {
val target: KotlinJsTargetDsl = when (compiler ?: defaultJsCompilerType) { val compilerOrDefault = compiler ?: defaultJsCompilerType
reportJsCompilerMode(compilerOrDefault)
val target: KotlinJsTargetDsl = when (compilerOrDefault) {
KotlinJsCompilerType.LEGACY -> legacyPreset KotlinJsCompilerType.LEGACY -> legacyPreset
.also { it.irPreset = null } .also {
it.irPreset = null
KotlinBuildStatsService.getInstance()?.report(StringMetrics.JS_COMPILER_MODE, "legacy")
}
.createTarget("js") .createTarget("js")
KotlinJsCompilerType.IR -> irPreset KotlinJsCompilerType.IR -> irPreset
.also { it.mixedMode = false } .also {
it.mixedMode = false
KotlinBuildStatsService.getInstance()?.report(StringMetrics.JS_COMPILER_MODE, "ir")
}
.createTarget("js") .createTarget("js")
KotlinJsCompilerType.BOTH -> legacyPreset KotlinJsCompilerType.BOTH -> legacyPreset
.also { .also {
irPreset.mixedMode = true irPreset.mixedMode = true
it.irPreset = irPreset it.irPreset = irPreset
KotlinBuildStatsService.getInstance()?.report(StringMetrics.JS_COMPILER_MODE, "both")
} }
.createTarget( .createTarget(
lowerCamelCaseName( lowerCamelCaseName(
@@ -7,6 +7,7 @@ package org.jetbrains.kotlin.gradle.dsl
import groovy.lang.Closure import groovy.lang.Closure
import org.gradle.util.ConfigureUtil 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.plugin.*
import org.jetbrains.kotlin.gradle.targets.js.calculateJsCompilerType import org.jetbrains.kotlin.gradle.targets.js.calculateJsCompilerType
import org.jetbrains.kotlin.gradle.targets.js.dsl.KotlinJsTargetDsl import org.jetbrains.kotlin.gradle.targets.js.dsl.KotlinJsTargetDsl
@@ -94,6 +95,7 @@ private fun KotlinTargetContainerWithJsPresetFunctions.jsInternal(
} }
} }
reportJsCompilerMode(compilerOrDefault)
return configureOrCreate( return configureOrCreate(
targetName, targetName,
presets.getByName( presets.getByName(
@@ -21,6 +21,7 @@ enum class StringMetrics(val type: StringOverridePolicy, val anonymization: Stri
// Build script // Build script
MPP_PLATFORMS(CONCAT, SAFE), MPP_PLATFORMS(CONCAT, SAFE),
JS_COMPILER_MODE(CONCAT, SAFE),
// Component versions // Component versions
LIBRARY_SPRING_VERSION(OVERRIDE_VERSION_IF_NOT_SET, COMPONENT_VERSION), LIBRARY_SPRING_VERSION(OVERRIDE_VERSION_IF_NOT_SET, COMPONENT_VERSION),