From 3d1db387f77a45fad33fa4b0abc68aff937f6e75 Mon Sep 17 00:00:00 2001 From: Ilya Goncharov Date: Mon, 19 Sep 2022 20:04:29 +0200 Subject: [PATCH] [Gradle, JS] Extension for outputFileProperty --- .../gradle/targets/js/ir/KotlinJsIrLink.kt | 19 ++++++++++++++++++- .../targets/js/ir/KotlinJsIrSubTarget.kt | 13 +------------ .../jetbrains/kotlin/gradle/tasks/Tasks.kt | 15 ++++++--------- .../configuration/Kotlin2JsCompileConfig.kt | 9 +++++++-- 4 files changed, 32 insertions(+), 24 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 c7a1d26cafd..d30476cb21f 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 @@ -56,6 +56,10 @@ abstract class KotlinJsIrLink @Inject constructor( return !entryModule.get().asFile.exists() } + val platformType by lazy { + compilation.platformType + } + @Transient @get:Internal internal lateinit var compilation: KotlinCompilationData<*> @@ -146,4 +150,17 @@ abstract class KotlinJsIrLink @Inject constructor( .toTypedArray() .filterNot { it.isEmpty() } } -} \ No newline at end of file +} + +val KotlinPlatformType.fileExtension + get() = when (this) { + KotlinPlatformType.wasm -> { + ".mjs" + } + + KotlinPlatformType.js -> { + ".js" + } + + else -> error("Only JS and WASM supported for KotlinJsTest") + } \ No newline at end of file diff --git a/libraries/tools/kotlin-gradle-plugin/src/common/kotlin/org/jetbrains/kotlin/gradle/targets/js/ir/KotlinJsIrSubTarget.kt b/libraries/tools/kotlin-gradle-plugin/src/common/kotlin/org/jetbrains/kotlin/gradle/targets/js/ir/KotlinJsIrSubTarget.kt index 9abc82d11b8..12a08a16586 100644 --- a/libraries/tools/kotlin-gradle-plugin/src/common/kotlin/org/jetbrains/kotlin/gradle/targets/js/ir/KotlinJsIrSubTarget.kt +++ b/libraries/tools/kotlin-gradle-plugin/src/common/kotlin/org/jetbrains/kotlin/gradle/targets/js/ir/KotlinJsIrSubTarget.kt @@ -124,22 +124,11 @@ abstract class KotlinJsIrSubTarget( testJs.inputFileProperty.set( project.layout.file( binary.linkSyncTask.flatMap { copyTask -> - val extension = when (compilation.platformType) { - KotlinPlatformType.wasm -> { - ".mjs" - } - - KotlinPlatformType.js -> { - ".js" - } - - else -> error("Only JS and WASM supported for KotlinJsTest") - } binary.linkTask .flatMap { linkTask -> linkTask.compilerOptions.moduleName } .map { outputName -> copyTask.destinationDir - .resolve(outputName + extension) + .resolve(outputName + compilation.platformType.fileExtension) } } ) diff --git a/libraries/tools/kotlin-gradle-plugin/src/common/kotlin/org/jetbrains/kotlin/gradle/tasks/Tasks.kt b/libraries/tools/kotlin-gradle-plugin/src/common/kotlin/org/jetbrains/kotlin/gradle/tasks/Tasks.kt index 21449221642..91d35595f03 100644 --- a/libraries/tools/kotlin-gradle-plugin/src/common/kotlin/org/jetbrains/kotlin/gradle/tasks/Tasks.kt +++ b/libraries/tools/kotlin-gradle-plugin/src/common/kotlin/org/jetbrains/kotlin/gradle/tasks/Tasks.kt @@ -1006,6 +1006,12 @@ abstract class Kotlin2JsCompile @Inject constructor( (compilerOptions as CompilerJsOptionsDefault).fillDefaultValues(args) super.setupCompilerArgs(args, defaultsOnly = defaultsOnly, ignoreClasspathResolutionErrors = ignoreClasspathResolutionErrors) + if (defaultsOnly) return + + (compilerOptions as CompilerJsOptionsDefault).fillCompilerArguments(args) + if (!args.sourceMapPrefix.isNullOrEmpty()) { + args.sourceMapBaseDirs = sourceMapBaseDir.get().asFile.absolutePath + } if (isIrBackendEnabled()) { val outputFilePath: String? = compilerOptions.outputFile.orNull if (outputFilePath != null) { @@ -1019,15 +1025,6 @@ abstract class Kotlin2JsCompile @Inject constructor( } else { args.outputFile = outputFileProperty.get().absoluteFile.normalize().absolutePath } - - if (defaultsOnly) return - - (compilerOptions as CompilerJsOptionsDefault).fillCompilerArguments(args) - if (!args.sourceMapPrefix.isNullOrEmpty()) { - args.sourceMapBaseDirs = sourceMapBaseDir.get().asFile.absolutePath - } - // Rewriting default outputFile property back to outputFilePropertyValue - args.outputFile = outputFileProperty.get().absoluteFile.normalize().absolutePath // Overriding freeArgs from compilerOptions with enhanced one + additional one set on execution phase // containing additional arguments based on the js compilation configuration args.freeArgs = enhancedFreeCompilerArgs.get().union(additionalFreeCompilerArgs).toList() diff --git a/libraries/tools/kotlin-gradle-plugin/src/common/kotlin/org/jetbrains/kotlin/gradle/tasks/configuration/Kotlin2JsCompileConfig.kt b/libraries/tools/kotlin-gradle-plugin/src/common/kotlin/org/jetbrains/kotlin/gradle/tasks/configuration/Kotlin2JsCompileConfig.kt index 42d3283b8ea..693a6c4c71c 100644 --- a/libraries/tools/kotlin-gradle-plugin/src/common/kotlin/org/jetbrains/kotlin/gradle/tasks/configuration/Kotlin2JsCompileConfig.kt +++ b/libraries/tools/kotlin-gradle-plugin/src/common/kotlin/org/jetbrains/kotlin/gradle/tasks/configuration/Kotlin2JsCompileConfig.kt @@ -13,6 +13,7 @@ import org.jetbrains.kotlin.gradle.targets.js.ir.PRODUCE_UNZIPPED_KLIB import org.jetbrains.kotlin.gradle.targets.js.ir.PRODUCE_ZIPPED_KLIB import org.jetbrains.kotlin.gradle.tasks.Kotlin2JsCompile import org.jetbrains.kotlin.gradle.utils.klibModuleName +import java.io.File internal typealias Kotlin2JsCompileConfig = BaseKotlin2JsCompileConfig @@ -39,8 +40,12 @@ internal open class BaseKotlin2JsCompileConfig( @Suppress("DEPRECATION") task.outputFileProperty.value( task.destinationDirectory.flatMap { dir -> - task.compilerOptions.moduleName.map { name -> - dir.file(name).asFile + if (task.compilerOptions.outputFile.orNull != null) { + task.compilerOptions.outputFile.map { File(it) } + } else { + task.compilerOptions.moduleName.map { name -> + dir.file(name + compilation.platformType.fileExtension).asFile + } } } )