From ffef0db30a2538233acf5179dc01539427011512 Mon Sep 17 00:00:00 2001 From: Ilya Goncharov Date: Wed, 20 Mar 2024 20:58:29 +0100 Subject: [PATCH] [Kotlin] Use wasm.js and wasm.wasi as statistics GitOrigin-RevId: 2e737fcf9cb12d3a2aa9508e3c8a2523126b4a52 --- .../checkJsPlatform/gradle.properties | 2 -- .../build.gradle.kts | 2 +- .../settings.gradle.kts | 0 .../src/commonMain/kotlin/Simple.kt | 0 .../src/commonMain/resources/index.html | 0 .../src/commonTest/kotlin/SimpleTest.kt | 0 .../src/wasmJsMain/kotlin/w.kt | 0 .../src/wasmJsTest/kotlin/wTest.kt | 0 .../checkWasmPlatform/gradle.properties | 3 -- .../checkWasmWasiPlatform/build.gradle.kts | 32 +++++++++++++++++++ .../checkWasmWasiPlatform/settings.gradle.kts | 12 +++++++ .../src/commonMain/kotlin/Simple.kt | 5 +++ .../src/commonTest/kotlin/SimpleTest.kt | 9 ++++++ .../src/wasmWasiMain/kotlin/w.kt} | 5 +-- .../src/wasmWasiTest/kotlin/wTest.kt} | 2 +- .../ConfigureKotlinInProjectUtils.kt | 20 +++++++++++- .../ProjectConfigurationCollector.kt | 15 +++++++-- 17 files changed, 93 insertions(+), 14 deletions(-) delete mode 100644 plugins/kotlin/idea/tests/testData/gradle/detectPlatforms/checkJsPlatform/gradle.properties rename plugins/kotlin/idea/tests/testData/gradle/detectPlatforms/{checkWasmPlatform => checkWasmJsPlatform}/build.gradle.kts (98%) rename plugins/kotlin/idea/tests/testData/gradle/detectPlatforms/{checkWasmPlatform => checkWasmJsPlatform}/settings.gradle.kts (100%) rename plugins/kotlin/idea/tests/testData/gradle/detectPlatforms/{checkWasmPlatform => checkWasmJsPlatform}/src/commonMain/kotlin/Simple.kt (100%) rename plugins/kotlin/idea/tests/testData/gradle/detectPlatforms/{checkWasmPlatform => checkWasmJsPlatform}/src/commonMain/resources/index.html (100%) rename plugins/kotlin/idea/tests/testData/gradle/detectPlatforms/{checkWasmPlatform => checkWasmJsPlatform}/src/commonTest/kotlin/SimpleTest.kt (100%) rename plugins/kotlin/idea/tests/testData/gradle/detectPlatforms/{checkWasmPlatform => checkWasmJsPlatform}/src/wasmJsMain/kotlin/w.kt (100%) rename plugins/kotlin/idea/tests/testData/gradle/detectPlatforms/{checkWasmPlatform => checkWasmJsPlatform}/src/wasmJsTest/kotlin/wTest.kt (100%) delete mode 100644 plugins/kotlin/idea/tests/testData/gradle/detectPlatforms/checkWasmPlatform/gradle.properties create mode 100644 plugins/kotlin/idea/tests/testData/gradle/detectPlatforms/checkWasmWasiPlatform/build.gradle.kts create mode 100644 plugins/kotlin/idea/tests/testData/gradle/detectPlatforms/checkWasmWasiPlatform/settings.gradle.kts create mode 100644 plugins/kotlin/idea/tests/testData/gradle/detectPlatforms/checkWasmWasiPlatform/src/commonMain/kotlin/Simple.kt create mode 100644 plugins/kotlin/idea/tests/testData/gradle/detectPlatforms/checkWasmWasiPlatform/src/commonTest/kotlin/SimpleTest.kt rename plugins/kotlin/idea/tests/testData/gradle/detectPlatforms/{checkWasmPlatform/src/jsMain/kotlin/main.kt => checkWasmWasiPlatform/src/wasmWasiMain/kotlin/w.kt} (57%) rename plugins/kotlin/idea/tests/testData/gradle/detectPlatforms/{checkWasmPlatform/src/jsTest/kotlin/Test.kt => checkWasmWasiPlatform/src/wasmWasiTest/kotlin/wTest.kt} (85%) diff --git a/plugins/kotlin/idea/tests/testData/gradle/detectPlatforms/checkJsPlatform/gradle.properties b/plugins/kotlin/idea/tests/testData/gradle/detectPlatforms/checkJsPlatform/gradle.properties deleted file mode 100644 index 9dcc3a7655fe..000000000000 --- a/plugins/kotlin/idea/tests/testData/gradle/detectPlatforms/checkJsPlatform/gradle.properties +++ /dev/null @@ -1,2 +0,0 @@ -kotlin.code.style=official -kotlin.js.compiler=ir diff --git a/plugins/kotlin/idea/tests/testData/gradle/detectPlatforms/checkWasmPlatform/build.gradle.kts b/plugins/kotlin/idea/tests/testData/gradle/detectPlatforms/checkWasmJsPlatform/build.gradle.kts similarity index 98% rename from plugins/kotlin/idea/tests/testData/gradle/detectPlatforms/checkWasmPlatform/build.gradle.kts rename to plugins/kotlin/idea/tests/testData/gradle/detectPlatforms/checkWasmJsPlatform/build.gradle.kts index 51f2cd84f70f..6262dca63404 100644 --- a/plugins/kotlin/idea/tests/testData/gradle/detectPlatforms/checkWasmPlatform/build.gradle.kts +++ b/plugins/kotlin/idea/tests/testData/gradle/detectPlatforms/checkWasmJsPlatform/build.gradle.kts @@ -10,7 +10,7 @@ repositories { } kotlin { - wasm { + wasmJs { binaries.executable() browser {} } diff --git a/plugins/kotlin/idea/tests/testData/gradle/detectPlatforms/checkWasmPlatform/settings.gradle.kts b/plugins/kotlin/idea/tests/testData/gradle/detectPlatforms/checkWasmJsPlatform/settings.gradle.kts similarity index 100% rename from plugins/kotlin/idea/tests/testData/gradle/detectPlatforms/checkWasmPlatform/settings.gradle.kts rename to plugins/kotlin/idea/tests/testData/gradle/detectPlatforms/checkWasmJsPlatform/settings.gradle.kts diff --git a/plugins/kotlin/idea/tests/testData/gradle/detectPlatforms/checkWasmPlatform/src/commonMain/kotlin/Simple.kt b/plugins/kotlin/idea/tests/testData/gradle/detectPlatforms/checkWasmJsPlatform/src/commonMain/kotlin/Simple.kt similarity index 100% rename from plugins/kotlin/idea/tests/testData/gradle/detectPlatforms/checkWasmPlatform/src/commonMain/kotlin/Simple.kt rename to plugins/kotlin/idea/tests/testData/gradle/detectPlatforms/checkWasmJsPlatform/src/commonMain/kotlin/Simple.kt diff --git a/plugins/kotlin/idea/tests/testData/gradle/detectPlatforms/checkWasmPlatform/src/commonMain/resources/index.html b/plugins/kotlin/idea/tests/testData/gradle/detectPlatforms/checkWasmJsPlatform/src/commonMain/resources/index.html similarity index 100% rename from plugins/kotlin/idea/tests/testData/gradle/detectPlatforms/checkWasmPlatform/src/commonMain/resources/index.html rename to plugins/kotlin/idea/tests/testData/gradle/detectPlatforms/checkWasmJsPlatform/src/commonMain/resources/index.html diff --git a/plugins/kotlin/idea/tests/testData/gradle/detectPlatforms/checkWasmPlatform/src/commonTest/kotlin/SimpleTest.kt b/plugins/kotlin/idea/tests/testData/gradle/detectPlatforms/checkWasmJsPlatform/src/commonTest/kotlin/SimpleTest.kt similarity index 100% rename from plugins/kotlin/idea/tests/testData/gradle/detectPlatforms/checkWasmPlatform/src/commonTest/kotlin/SimpleTest.kt rename to plugins/kotlin/idea/tests/testData/gradle/detectPlatforms/checkWasmJsPlatform/src/commonTest/kotlin/SimpleTest.kt diff --git a/plugins/kotlin/idea/tests/testData/gradle/detectPlatforms/checkWasmPlatform/src/wasmJsMain/kotlin/w.kt b/plugins/kotlin/idea/tests/testData/gradle/detectPlatforms/checkWasmJsPlatform/src/wasmJsMain/kotlin/w.kt similarity index 100% rename from plugins/kotlin/idea/tests/testData/gradle/detectPlatforms/checkWasmPlatform/src/wasmJsMain/kotlin/w.kt rename to plugins/kotlin/idea/tests/testData/gradle/detectPlatforms/checkWasmJsPlatform/src/wasmJsMain/kotlin/w.kt diff --git a/plugins/kotlin/idea/tests/testData/gradle/detectPlatforms/checkWasmPlatform/src/wasmJsTest/kotlin/wTest.kt b/plugins/kotlin/idea/tests/testData/gradle/detectPlatforms/checkWasmJsPlatform/src/wasmJsTest/kotlin/wTest.kt similarity index 100% rename from plugins/kotlin/idea/tests/testData/gradle/detectPlatforms/checkWasmPlatform/src/wasmJsTest/kotlin/wTest.kt rename to plugins/kotlin/idea/tests/testData/gradle/detectPlatforms/checkWasmJsPlatform/src/wasmJsTest/kotlin/wTest.kt diff --git a/plugins/kotlin/idea/tests/testData/gradle/detectPlatforms/checkWasmPlatform/gradle.properties b/plugins/kotlin/idea/tests/testData/gradle/detectPlatforms/checkWasmPlatform/gradle.properties deleted file mode 100644 index 38124e1e32b1..000000000000 --- a/plugins/kotlin/idea/tests/testData/gradle/detectPlatforms/checkWasmPlatform/gradle.properties +++ /dev/null @@ -1,3 +0,0 @@ -kotlin.code.style=official -kotlin.js.compiler=ir - diff --git a/plugins/kotlin/idea/tests/testData/gradle/detectPlatforms/checkWasmWasiPlatform/build.gradle.kts b/plugins/kotlin/idea/tests/testData/gradle/detectPlatforms/checkWasmWasiPlatform/build.gradle.kts new file mode 100644 index 000000000000..ecd090cf8e00 --- /dev/null +++ b/plugins/kotlin/idea/tests/testData/gradle/detectPlatforms/checkWasmWasiPlatform/build.gradle.kts @@ -0,0 +1,32 @@ +plugins { + kotlin("multiplatform") version "{{kotlin_plugin_version}}" +} + +group = "me.user" +version = "1.0-SNAPSHOT" + +repositories { + { { kts_kotlin_plugin_repositories } } +} + +kotlin { + wasmWasi { + binaries.executable() + nodejs {} + } + + sourceSets { + val commonTest by getting { + dependencies { + implementation(kotlin("test-common")) + implementation(kotlin("test-annotations-common")) + } + } + + val wasmWasiTest by getting { + dependencies { + implementation(kotlin("test-wasm-wasi")) + } + } + } +} diff --git a/plugins/kotlin/idea/tests/testData/gradle/detectPlatforms/checkWasmWasiPlatform/settings.gradle.kts b/plugins/kotlin/idea/tests/testData/gradle/detectPlatforms/checkWasmWasiPlatform/settings.gradle.kts new file mode 100644 index 000000000000..94e8a82bfe8b --- /dev/null +++ b/plugins/kotlin/idea/tests/testData/gradle/detectPlatforms/checkWasmWasiPlatform/settings.gradle.kts @@ -0,0 +1,12 @@ +rootProject.name = "wasm20221114" + +pluginManagement { + repositories { + { { kts_kotlin_plugin_repositories } } + } +} +dependencyResolutionManagement { + repositories { + { { kts_kotlin_plugin_repositories } } + } +} \ No newline at end of file diff --git a/plugins/kotlin/idea/tests/testData/gradle/detectPlatforms/checkWasmWasiPlatform/src/commonMain/kotlin/Simple.kt b/plugins/kotlin/idea/tests/testData/gradle/detectPlatforms/checkWasmWasiPlatform/src/commonMain/kotlin/Simple.kt new file mode 100644 index 000000000000..ca42cd7fdb4d --- /dev/null +++ b/plugins/kotlin/idea/tests/testData/gradle/detectPlatforms/checkWasmWasiPlatform/src/commonMain/kotlin/Simple.kt @@ -0,0 +1,5 @@ +fun main() { + println() +} + +fun greet() = "world" diff --git a/plugins/kotlin/idea/tests/testData/gradle/detectPlatforms/checkWasmWasiPlatform/src/commonTest/kotlin/SimpleTest.kt b/plugins/kotlin/idea/tests/testData/gradle/detectPlatforms/checkWasmWasiPlatform/src/commonTest/kotlin/SimpleTest.kt new file mode 100644 index 000000000000..63f94bd345c9 --- /dev/null +++ b/plugins/kotlin/idea/tests/testData/gradle/detectPlatforms/checkWasmWasiPlatform/src/commonTest/kotlin/SimpleTest.kt @@ -0,0 +1,9 @@ +import kotlin.test.Test +import kotlin.test.assertEquals + +class TestClient { + @Test + fun testGreet() { + assertEquals("world", greet()) + } +} \ No newline at end of file diff --git a/plugins/kotlin/idea/tests/testData/gradle/detectPlatforms/checkWasmPlatform/src/jsMain/kotlin/main.kt b/plugins/kotlin/idea/tests/testData/gradle/detectPlatforms/checkWasmWasiPlatform/src/wasmWasiMain/kotlin/w.kt similarity index 57% rename from plugins/kotlin/idea/tests/testData/gradle/detectPlatforms/checkWasmPlatform/src/jsMain/kotlin/main.kt rename to plugins/kotlin/idea/tests/testData/gradle/detectPlatforms/checkWasmWasiPlatform/src/wasmWasiMain/kotlin/w.kt index 4529c7c121c5..0a18a04310ae 100644 --- a/plugins/kotlin/idea/tests/testData/gradle/detectPlatforms/checkWasmPlatform/src/jsMain/kotlin/main.kt +++ b/plugins/kotlin/idea/tests/testData/gradle/detectPlatforms/checkWasmWasiPlatform/src/wasmWasiMain/kotlin/w.kt @@ -1,9 +1,6 @@ package foo @kotlin.js.JsExport -fun jsMain() { - Foo() +fun wasmMain() { println() } - -class Foo diff --git a/plugins/kotlin/idea/tests/testData/gradle/detectPlatforms/checkWasmPlatform/src/jsTest/kotlin/Test.kt b/plugins/kotlin/idea/tests/testData/gradle/detectPlatforms/checkWasmWasiPlatform/src/wasmWasiTest/kotlin/wTest.kt similarity index 85% rename from plugins/kotlin/idea/tests/testData/gradle/detectPlatforms/checkWasmPlatform/src/jsTest/kotlin/Test.kt rename to plugins/kotlin/idea/tests/testData/gradle/detectPlatforms/checkWasmWasiPlatform/src/wasmWasiTest/kotlin/wTest.kt index 487b44ae7a1c..ce3d516f89b9 100644 --- a/plugins/kotlin/idea/tests/testData/gradle/detectPlatforms/checkWasmPlatform/src/jsTest/kotlin/Test.kt +++ b/plugins/kotlin/idea/tests/testData/gradle/detectPlatforms/checkWasmWasiPlatform/src/wasmWasiTest/kotlin/wTest.kt @@ -1,7 +1,7 @@ import kotlin.test.Test import kotlin.test.assertEquals -class JsTestClient { +class WasmTestClient { @Test fun testGreet() { assertEquals("world", greet()) diff --git a/plugins/kotlin/project-configuration/src/org/jetbrains/kotlin/idea/configuration/ConfigureKotlinInProjectUtils.kt b/plugins/kotlin/project-configuration/src/org/jetbrains/kotlin/idea/configuration/ConfigureKotlinInProjectUtils.kt index 81df8d4069d2..bb23c2e63f59 100644 --- a/plugins/kotlin/project-configuration/src/org/jetbrains/kotlin/idea/configuration/ConfigureKotlinInProjectUtils.kt +++ b/plugins/kotlin/project-configuration/src/org/jetbrains/kotlin/idea/configuration/ConfigureKotlinInProjectUtils.kt @@ -388,7 +388,15 @@ fun getPlatform(module: Module): String { if (module.name.contains("android")) "jvm.android" else "jvm" } - module.platform.isWasm() && hasKotlinWasmRuntimeInScope(module) -> "wasm" + + module.platform.isWasm() -> { + when { + hasKotlinWasmJsRuntimeInScope(module) -> "wasm.js" + hasKotlinWasmWasiRuntimeInScope(module) -> "wasm.wasi" + else -> "wasm.unknown" + } + } + module.platform.isJs() && hasKotlinJsRuntimeInScope(module) -> "js" module.platform.isCommon() -> "common" module.platform.isNative() -> "native." + (module.platform?.componentPlatforms?.first()?.targetName ?: "unknown") @@ -436,6 +444,14 @@ fun hasKotlinWasmRuntimeInScope(module: Module): Boolean { return hasKotlinPlatformRuntimeInScope(module, KOTLIN_WASM_FQ_NAME, KotlinWasmLibraryKind) } +fun hasKotlinWasmJsRuntimeInScope(module: Module): Boolean { + return hasKotlinPlatformRuntimeInScope(module, KOTLIN_WASM_JS_FQ_NAME, KotlinWasmLibraryKind) +} + +fun hasKotlinWasmWasiRuntimeInScope(module: Module): Boolean { + return hasKotlinPlatformRuntimeInScope(module, KOTLIN_WASM_WASI_FQ_NAME, KotlinWasmLibraryKind) +} + fun hasKotlinNativeRuntimeInScope(module: Module): Boolean { return hasKotlinPlatformRuntimeInScope(module, KOTLIN_NATIVE_FQ_NAME, KotlinNativeLibraryKind) } @@ -570,6 +586,8 @@ private fun getJvmTargetFromSdkOrDefault( private val KOTLIN_JS_FQ_NAME = FqName("kotlin.js") private val KOTLIN_WASM_FQ_NAME = FqName("kotlin.wasm") +private val KOTLIN_WASM_JS_FQ_NAME = FqName("kotlin.wasm.js") +private val KOTLIN_WASM_WASI_FQ_NAME = FqName("kotlin.wasm.wasi") private val KOTLIN_NATIVE_FQ_NAME = FqName("kotlin.native") diff --git a/plugins/kotlin/project-configuration/src/org/jetbrains/kotlin/idea/statistics/ProjectConfigurationCollector.kt b/plugins/kotlin/project-configuration/src/org/jetbrains/kotlin/idea/statistics/ProjectConfigurationCollector.kt index 73506efd7e17..98953d9cf08f 100644 --- a/plugins/kotlin/project-configuration/src/org/jetbrains/kotlin/idea/statistics/ProjectConfigurationCollector.kt +++ b/plugins/kotlin/project-configuration/src/org/jetbrains/kotlin/idea/statistics/ProjectConfigurationCollector.kt @@ -57,7 +57,7 @@ internal class ProjectConfigurationCollector : ProjectUsagesCollector() { } } - private val GROUP = EventLogGroup("kotlin.project.configuration", 10) + private val GROUP = EventLogGroup("kotlin.project.configuration", 11) private val systemField = EventFields.String("system", listOf("JPS", "Maven", "Gradle", "unknown")) private val platformField = EventFields.String("platform", composePlatformFields()) @@ -69,7 +69,18 @@ internal class ProjectConfigurationCollector : ProjectUsagesCollector() { private fun composePlatformFields(): List { return listOf( - listOf("jvm", "jvm.android", "js", "wasm", "common", "native.unknown", "unknown"), + listOf( + "jvm", + "jvm.android", + "js", + "wasm", + "wasm.js", + "wasm.wasi", + "wasm.unknown", + "common", + "native.unknown", + "unknown" + ), KonanTarget.predefinedTargets.keys.map { "native.$it" } ).flatten() }