From ca84505376f0b96ce250a66ffa9b2a2b168516c4 Mon Sep 17 00:00:00 2001 From: Sebastian Sellmair Date: Wed, 5 Apr 2023 17:02:54 +0200 Subject: [PATCH] [Gradle] KotlinJsIrLink: Handle KotlinBuildStatsService invocation outside of creating compiler args KTIJ-24976 --- .../gradle/targets/js/ir/KotlinJsIrLink.kt | 30 +++++++++---------- .../kotlin/gradle/tasks/Kotlin2JsCompile.kt | 3 ++ 2 files changed, 18 insertions(+), 15 deletions(-) diff --git a/libraries/tools/kotlin-gradle-plugin/src/common/kotlin/org/jetbrains/kotlin/gradle/targets/js/ir/KotlinJsIrLink.kt b/libraries/tools/kotlin-gradle-plugin/src/common/kotlin/org/jetbrains/kotlin/gradle/targets/js/ir/KotlinJsIrLink.kt index b906ff08c29..1151b23afa3 100644 --- a/libraries/tools/kotlin-gradle-plugin/src/common/kotlin/org/jetbrains/kotlin/gradle/targets/js/ir/KotlinJsIrLink.kt +++ b/libraries/tools/kotlin-gradle-plugin/src/common/kotlin/org/jetbrains/kotlin/gradle/targets/js/ir/KotlinJsIrLink.kt @@ -16,7 +16,6 @@ import org.jetbrains.kotlin.cli.common.arguments.K2JSCompilerArguments import org.jetbrains.kotlin.cli.common.arguments.parseCommandLineArguments import org.jetbrains.kotlin.compilerRunner.ArgumentUtils import org.jetbrains.kotlin.gradle.dsl.KotlinJsCompilerOptionsDefault -import org.jetbrains.kotlin.gradle.plugin.KotlinCompilerArgumentsProducer import org.jetbrains.kotlin.gradle.plugin.KotlinCompilerArgumentsProducer.ContributeCompilerArgumentsContext import org.jetbrains.kotlin.gradle.plugin.KotlinPlatformType import org.jetbrains.kotlin.gradle.plugin.PropertiesProvider @@ -98,20 +97,6 @@ abstract class KotlinJsIrLink @Inject constructor( super.contributeAdditionalCompilerArguments(context) context.primitive { args -> - // TODO Ilya Goncharov: This should not be part of creating compiler arguments; - KotlinBuildStatsService.applyIfInitialised { - it.report(BooleanMetrics.JS_IR_INCREMENTAL, this.incrementalJsIr) - val newArgs = K2JSCompilerArguments() - parseCommandLineArguments(ArgumentUtils.convertArgumentsToStringList(args), newArgs) - it.report( - StringMetrics.JS_OUTPUT_GRANULARITY, - if (newArgs.irPerModule) - KotlinJsIrOutputGranularity.PER_MODULE.name.toLowerCaseAsciiOnly() - else - KotlinJsIrOutputGranularity.WHOLE_PROGRAM.name.toLowerCaseAsciiOnly() - ) - } - // moduleName can start with @ for group of NPM packages // but args parsing @ as start of argfile // so WA we provide moduleName as one parameter @@ -128,6 +113,21 @@ abstract class KotlinJsIrLink @Inject constructor( } } + override fun processArgsBeforeCompile(args: K2JSCompilerArguments) { + KotlinBuildStatsService.applyIfInitialised { + it.report(BooleanMetrics.JS_IR_INCREMENTAL, incrementalJsIr) + val newArgs = K2JSCompilerArguments() + parseCommandLineArguments(ArgumentUtils.convertArgumentsToStringList(args), newArgs) + it.report( + StringMetrics.JS_OUTPUT_GRANULARITY, + if (newArgs.irPerModule) + KotlinJsIrOutputGranularity.PER_MODULE.name.toLowerCaseAsciiOnly() + else + KotlinJsIrOutputGranularity.WHOLE_PROGRAM.name.toLowerCaseAsciiOnly() + ) + } + } + private fun usingCacheDirectory() = incrementalJsIr && modeProperty.get() == DEVELOPMENT } diff --git a/libraries/tools/kotlin-gradle-plugin/src/common/kotlin/org/jetbrains/kotlin/gradle/tasks/Kotlin2JsCompile.kt b/libraries/tools/kotlin-gradle-plugin/src/common/kotlin/org/jetbrains/kotlin/gradle/tasks/Kotlin2JsCompile.kt index 149367a3fa0..60264524b6c 100644 --- a/libraries/tools/kotlin-gradle-plugin/src/common/kotlin/org/jetbrains/kotlin/gradle/tasks/Kotlin2JsCompile.kt +++ b/libraries/tools/kotlin-gradle-plugin/src/common/kotlin/org/jetbrains/kotlin/gradle/tasks/Kotlin2JsCompile.kt @@ -286,6 +286,8 @@ abstract class Kotlin2JsCompile @Inject constructor( override val incrementalProps: List get() = super.incrementalProps + listOf(friendDependencies) + protected open fun processArgsBeforeCompile(args: K2JSCompilerArguments) = Unit + protected open fun contributeAdditionalCompilerArguments(context: ContributeCompilerArgumentsContext) = Unit override fun callCompilerAsync( @@ -339,6 +341,7 @@ abstract class Kotlin2JsCompile @Inject constructor( reportingSettings = reportingSettings(), incrementalCompilationEnvironment = icEnv ) + processArgsBeforeCompile(args) compilerRunner.runJsCompilerAsync( args, environment,