From 94ce4c06a7f490749301892d10fcfdbac0e29016 Mon Sep 17 00:00:00 2001 From: Ilya Goncharov Date: Mon, 20 Nov 2023 10:30:58 +0000 Subject: [PATCH] [Gradle, Wasm] Use separate hierarchical methods for JS and wasi ^KT-63417 fixed --- .../api/kotlin-gradle-plugin-api.api | 2 ++ .../kotlin/gradle/plugin/KotlinHierarchyBuilder.kt | 3 +++ .../plugin/hierarchy/KotlinHierarchyBuilderImpl.kt | 12 +++++++++++- .../gradle/unitTests/KotlinHierarchyDslTest.kt | 4 ++-- 4 files changed, 18 insertions(+), 3 deletions(-) diff --git a/libraries/tools/kotlin-gradle-plugin-api/api/kotlin-gradle-plugin-api.api b/libraries/tools/kotlin-gradle-plugin-api/api/kotlin-gradle-plugin-api.api index 3015561a19f..324c12205f7 100644 --- a/libraries/tools/kotlin-gradle-plugin-api/api/kotlin-gradle-plugin-api.api +++ b/libraries/tools/kotlin-gradle-plugin-api/api/kotlin-gradle-plugin-api.api @@ -944,6 +944,8 @@ public abstract interface class org/jetbrains/kotlin/gradle/plugin/KotlinHierarc public abstract fun withTvosX64 ()V public abstract fun withWasm ()V public abstract fun withWasm32 ()V + public abstract fun withWasmJs ()V + public abstract fun withWasmWasi ()V public abstract fun withWatchos ()V public abstract fun withWatchosArm32 ()V public abstract fun withWatchosArm64 ()V diff --git a/libraries/tools/kotlin-gradle-plugin-api/src/common/kotlin/org/jetbrains/kotlin/gradle/plugin/KotlinHierarchyBuilder.kt b/libraries/tools/kotlin-gradle-plugin-api/src/common/kotlin/org/jetbrains/kotlin/gradle/plugin/KotlinHierarchyBuilder.kt index 719c6767480..a232ccb5aa0 100644 --- a/libraries/tools/kotlin-gradle-plugin-api/src/common/kotlin/org/jetbrains/kotlin/gradle/plugin/KotlinHierarchyBuilder.kt +++ b/libraries/tools/kotlin-gradle-plugin-api/src/common/kotlin/org/jetbrains/kotlin/gradle/plugin/KotlinHierarchyBuilder.kt @@ -137,7 +137,10 @@ interface KotlinHierarchyBuilder { /* Actual targets */ fun withJs() + @Deprecated("Renamed to 'withWasmJs''", replaceWith = ReplaceWith("withWasmJs()")) fun withWasm() + fun withWasmJs() + fun withWasmWasi() fun withJvm() @Deprecated("Renamed to 'withAndroidTarget''", replaceWith = ReplaceWith("withAndroidTarget()")) diff --git a/libraries/tools/kotlin-gradle-plugin/src/common/kotlin/org/jetbrains/kotlin/gradle/plugin/hierarchy/KotlinHierarchyBuilderImpl.kt b/libraries/tools/kotlin-gradle-plugin/src/common/kotlin/org/jetbrains/kotlin/gradle/plugin/hierarchy/KotlinHierarchyBuilderImpl.kt index a0d894a691b..fb18b4f01f8 100644 --- a/libraries/tools/kotlin-gradle-plugin/src/common/kotlin/org/jetbrains/kotlin/gradle/plugin/hierarchy/KotlinHierarchyBuilderImpl.kt +++ b/libraries/tools/kotlin-gradle-plugin/src/common/kotlin/org/jetbrains/kotlin/gradle/plugin/hierarchy/KotlinHierarchyBuilderImpl.kt @@ -8,6 +8,8 @@ package org.jetbrains.kotlin.gradle.plugin.hierarchy import org.gradle.api.InvalidUserCodeException import org.jetbrains.kotlin.gradle.plugin.* import org.jetbrains.kotlin.gradle.plugin.mpp.* +import org.jetbrains.kotlin.gradle.targets.js.KotlinWasmTargetType +import org.jetbrains.kotlin.gradle.targets.js.ir.KotlinJsIrTarget import org.jetbrains.kotlin.gradle.targets.jvm.KotlinJvmTarget import org.jetbrains.kotlin.konan.target.DEPRECATED_TARGET_MESSAGE import org.jetbrains.kotlin.konan.target.Family @@ -148,7 +150,15 @@ private class KotlinHierarchyBuilderImpl( // Don't check for instance of [KotlinJsTargetDsl] or [KotlinWasmTargetDsl] because they are implemented by single target [KotlinJsIrTarget] override fun withJs() = withTargets { it.platformType == KotlinPlatformType.js } - override fun withWasm() = withTargets { it.platformType == KotlinPlatformType.wasm } + override fun withWasm() = withWasmJs() + + override fun withWasmJs() = withTargets { + it.platformType == KotlinPlatformType.wasm && it is KotlinJsIrTarget && it.wasmTargetType == KotlinWasmTargetType.JS + } + + override fun withWasmWasi() = withTargets { + it.platformType == KotlinPlatformType.wasm && it is KotlinJsIrTarget && it.wasmTargetType == KotlinWasmTargetType.WASI + } override fun withJvm() = withTargets { it is KotlinJvmTarget || diff --git a/libraries/tools/kotlin-gradle-plugin/src/functionalTest/kotlin/org/jetbrains/kotlin/gradle/unitTests/KotlinHierarchyDslTest.kt b/libraries/tools/kotlin-gradle-plugin/src/functionalTest/kotlin/org/jetbrains/kotlin/gradle/unitTests/KotlinHierarchyDslTest.kt index c9451a946f8..a6bfebc82d8 100644 --- a/libraries/tools/kotlin-gradle-plugin/src/functionalTest/kotlin/org/jetbrains/kotlin/gradle/unitTests/KotlinHierarchyDslTest.kt +++ b/libraries/tools/kotlin-gradle-plugin/src/functionalTest/kotlin/org/jetbrains/kotlin/gradle/unitTests/KotlinHierarchyDslTest.kt @@ -319,7 +319,7 @@ class KotlinHierarchyDslTest { common { group("web") { withJs() - withWasm() + withWasmJs() } } } @@ -347,7 +347,7 @@ class KotlinHierarchyDslTest { withJvm() } group("wasmAndLinux") { - withWasm() + withWasmJs() withLinuxX64() } }