From dcab981ee8a6c2fc63c48b5b10741697b67c30f8 Mon Sep 17 00:00:00 2001 From: Ilya Goncharov Date: Mon, 20 Nov 2023 10:30:16 +0000 Subject: [PATCH] [Gradle, Wasm] Use static source sets accessors for wasm ^KT-62955 fixed --- .../app/build.gradle.kts | 4 +-- .../api/kotlin-gradle-plugin.api | 8 ++++++ ...KotlinMultiplatformSourceSetConventions.kt | 25 +++++++++++++++++++ .../targets/js/dsl/ExperimentalWasmDsl.kt | 2 +- 4 files changed, 36 insertions(+), 3 deletions(-) diff --git a/libraries/tools/kotlin-gradle-plugin-integration-tests/src/test/resources/testProject/new-mpp-wasm-wasi-js-test/app/build.gradle.kts b/libraries/tools/kotlin-gradle-plugin-integration-tests/src/test/resources/testProject/new-mpp-wasm-wasi-js-test/app/build.gradle.kts index 2dc6ecbcd6d..64f3c41e9b8 100644 --- a/libraries/tools/kotlin-gradle-plugin-integration-tests/src/test/resources/testProject/new-mpp-wasm-wasi-js-test/app/build.gradle.kts +++ b/libraries/tools/kotlin-gradle-plugin-integration-tests/src/test/resources/testProject/new-mpp-wasm-wasi-js-test/app/build.gradle.kts @@ -15,13 +15,13 @@ kotlin { } sourceSets { - val wasmJsMain by getting { + wasmJsMain { dependencies { implementation(project(":lib")) } } - val wasmWasiMain by getting { + wasmWasiMain { dependencies { implementation(project(":lib")) } diff --git a/libraries/tools/kotlin-gradle-plugin/api/kotlin-gradle-plugin.api b/libraries/tools/kotlin-gradle-plugin/api/kotlin-gradle-plugin.api index 12ffbf569ce..4908c5e28c8 100644 --- a/libraries/tools/kotlin-gradle-plugin/api/kotlin-gradle-plugin.api +++ b/libraries/tools/kotlin-gradle-plugin/api/kotlin-gradle-plugin.api @@ -67,6 +67,10 @@ public abstract class org/jetbrains/kotlin/gradle/dsl/KotlinMultiplatformExtensi public final fun getTestableTargets ()Lorg/gradle/api/NamedDomainObjectCollection; public fun getTvosMain (Lorg/gradle/api/NamedDomainObjectContainer;)Lorg/gradle/api/NamedDomainObjectProvider; public fun getTvosTest (Lorg/gradle/api/NamedDomainObjectContainer;)Lorg/gradle/api/NamedDomainObjectProvider; + public fun getWasmJsMain (Lorg/gradle/api/NamedDomainObjectContainer;)Lorg/gradle/api/NamedDomainObjectProvider; + public fun getWasmJsTest (Lorg/gradle/api/NamedDomainObjectContainer;)Lorg/gradle/api/NamedDomainObjectProvider; + public fun getWasmWasiMain (Lorg/gradle/api/NamedDomainObjectContainer;)Lorg/gradle/api/NamedDomainObjectProvider; + public fun getWasmWasiTest (Lorg/gradle/api/NamedDomainObjectContainer;)Lorg/gradle/api/NamedDomainObjectProvider; public fun getWatchosMain (Lorg/gradle/api/NamedDomainObjectContainer;)Lorg/gradle/api/NamedDomainObjectProvider; public fun getWatchosTest (Lorg/gradle/api/NamedDomainObjectContainer;)Lorg/gradle/api/NamedDomainObjectProvider; public fun invoke (Lorg/gradle/api/NamedDomainObjectProvider;Lkotlin/jvm/functions/Function1;)V @@ -272,6 +276,10 @@ public abstract interface class org/jetbrains/kotlin/gradle/dsl/KotlinMultiplatf public abstract fun getNativeTest (Lorg/gradle/api/NamedDomainObjectContainer;)Lorg/gradle/api/NamedDomainObjectProvider; public abstract fun getTvosMain (Lorg/gradle/api/NamedDomainObjectContainer;)Lorg/gradle/api/NamedDomainObjectProvider; public abstract fun getTvosTest (Lorg/gradle/api/NamedDomainObjectContainer;)Lorg/gradle/api/NamedDomainObjectProvider; + public abstract fun getWasmJsMain (Lorg/gradle/api/NamedDomainObjectContainer;)Lorg/gradle/api/NamedDomainObjectProvider; + public abstract fun getWasmJsTest (Lorg/gradle/api/NamedDomainObjectContainer;)Lorg/gradle/api/NamedDomainObjectProvider; + public abstract fun getWasmWasiMain (Lorg/gradle/api/NamedDomainObjectContainer;)Lorg/gradle/api/NamedDomainObjectProvider; + public abstract fun getWasmWasiTest (Lorg/gradle/api/NamedDomainObjectContainer;)Lorg/gradle/api/NamedDomainObjectProvider; public abstract fun getWatchosMain (Lorg/gradle/api/NamedDomainObjectContainer;)Lorg/gradle/api/NamedDomainObjectProvider; public abstract fun getWatchosTest (Lorg/gradle/api/NamedDomainObjectContainer;)Lorg/gradle/api/NamedDomainObjectProvider; public abstract fun invoke (Lorg/gradle/api/NamedDomainObjectProvider;Lkotlin/jvm/functions/Function1;)V diff --git a/libraries/tools/kotlin-gradle-plugin/src/common/kotlin/org/jetbrains/kotlin/gradle/dsl/KotlinMultiplatformSourceSetConventions.kt b/libraries/tools/kotlin-gradle-plugin/src/common/kotlin/org/jetbrains/kotlin/gradle/dsl/KotlinMultiplatformSourceSetConventions.kt index d31a36f22d5..8432d1c41ec 100644 --- a/libraries/tools/kotlin-gradle-plugin/src/common/kotlin/org/jetbrains/kotlin/gradle/dsl/KotlinMultiplatformSourceSetConventions.kt +++ b/libraries/tools/kotlin-gradle-plugin/src/common/kotlin/org/jetbrains/kotlin/gradle/dsl/KotlinMultiplatformSourceSetConventions.kt @@ -21,6 +21,7 @@ import org.jetbrains.kotlin.gradle.plugin.diagnostics.KotlinToolingDiagnostics.P import org.jetbrains.kotlin.gradle.plugin.diagnostics.KotlinToolingDiagnosticsCollector import org.jetbrains.kotlin.gradle.plugin.diagnostics.reportDiagnostic import org.jetbrains.kotlin.gradle.plugin.mpp.KotlinNativeTarget +import org.jetbrains.kotlin.gradle.targets.js.dsl.ExperimentalWasmDsl import org.jetbrains.kotlin.gradle.targets.js.dsl.KotlinJsTargetDsl import org.jetbrains.kotlin.gradle.targets.jvm.KotlinJvmTarget import org.jetbrains.kotlin.konan.target.Family @@ -53,6 +54,18 @@ interface KotlinMultiplatformSourceSetConventions { val NamedDomainObjectContainer.jsTest: NamedDomainObjectProvider val NamedDomainObjectContainer.androidMain: NamedDomainObjectProvider + @ExperimentalWasmDsl + val NamedDomainObjectContainer.wasmJsMain: NamedDomainObjectProvider + + @ExperimentalWasmDsl + val NamedDomainObjectContainer.wasmJsTest: NamedDomainObjectProvider + + @ExperimentalWasmDsl + val NamedDomainObjectContainer.wasmWasiMain: NamedDomainObjectProvider + + @ExperimentalWasmDsl + val NamedDomainObjectContainer.wasmWasiTest: NamedDomainObjectProvider + operator fun NamedDomainObjectProvider.invoke( configure: KotlinSourceSet.() -> Unit, ): Unit = get().run(configure) @@ -94,6 +107,18 @@ internal object KotlinMultiplatformSourceSetConventionsImpl : KotlinMultiplatfor override val NamedDomainObjectContainer.jsMain by KotlinSourceSetConvention override val NamedDomainObjectContainer.jsTest by KotlinSourceSetConvention override val NamedDomainObjectContainer.androidMain by KotlinSourceSetConvention + + @ExperimentalWasmDsl + override val NamedDomainObjectContainer.wasmJsMain by KotlinSourceSetConvention + + @ExperimentalWasmDsl + override val NamedDomainObjectContainer.wasmJsTest by KotlinSourceSetConvention + + @ExperimentalWasmDsl + override val NamedDomainObjectContainer.wasmWasiMain by KotlinSourceSetConvention + + @ExperimentalWasmDsl + override val NamedDomainObjectContainer.wasmWasiTest by KotlinSourceSetConvention } /* Checkers */ diff --git a/libraries/tools/kotlin-gradle-plugin/src/common/kotlin/org/jetbrains/kotlin/gradle/targets/js/dsl/ExperimentalWasmDsl.kt b/libraries/tools/kotlin-gradle-plugin/src/common/kotlin/org/jetbrains/kotlin/gradle/targets/js/dsl/ExperimentalWasmDsl.kt index 31dc81c6a5e..79371328cc0 100644 --- a/libraries/tools/kotlin-gradle-plugin/src/common/kotlin/org/jetbrains/kotlin/gradle/targets/js/dsl/ExperimentalWasmDsl.kt +++ b/libraries/tools/kotlin-gradle-plugin/src/common/kotlin/org/jetbrains/kotlin/gradle/targets/js/dsl/ExperimentalWasmDsl.kt @@ -6,5 +6,5 @@ package org.jetbrains.kotlin.gradle.targets.js.dsl @RequiresOptIn(level = RequiresOptIn.Level.WARNING) -@Target(AnnotationTarget.FUNCTION) +@Target(AnnotationTarget.FUNCTION, AnnotationTarget.PROPERTY) annotation class ExperimentalWasmDsl