diff --git a/kotlin-native/runtime/src/main/kotlin/kotlin/enums/EnumEntriesNative.kt b/kotlin-native/runtime/src/main/kotlin/kotlin/enums/EnumEntriesNative.kt new file mode 100644 index 00000000000..5b9ed35e62a --- /dev/null +++ b/kotlin-native/runtime/src/main/kotlin/kotlin/enums/EnumEntriesNative.kt @@ -0,0 +1,17 @@ +/* + * Copyright 2010-2023 JetBrains s.r.o. and Kotlin Programming Language contributors. + * Use of this source code is governed by the Apache 2.0 license that can be found in the license/LICENSE.txt file. + */ + +package kotlin.enums + +@SinceKotlin("1.9") +@ExperimentalStdlibApi +@PublishedApi +internal actual inline fun > enumEntriesIntrinsic(): EnumEntries { + /* + * Implementation note: this body will be replaced with `throw NotImplementedException()` the moment + * all backends starts intrinsifying this call. + */ + return enumEntries(enumValues()) +} \ No newline at end of file diff --git a/libraries/stdlib/js/src/kotlin/enums/EnumEntriesJs.kt b/libraries/stdlib/js/src/kotlin/enums/EnumEntriesJs.kt new file mode 100644 index 00000000000..5b9ed35e62a --- /dev/null +++ b/libraries/stdlib/js/src/kotlin/enums/EnumEntriesJs.kt @@ -0,0 +1,17 @@ +/* + * Copyright 2010-2023 JetBrains s.r.o. and Kotlin Programming Language contributors. + * Use of this source code is governed by the Apache 2.0 license that can be found in the license/LICENSE.txt file. + */ + +package kotlin.enums + +@SinceKotlin("1.9") +@ExperimentalStdlibApi +@PublishedApi +internal actual inline fun > enumEntriesIntrinsic(): EnumEntries { + /* + * Implementation note: this body will be replaced with `throw NotImplementedException()` the moment + * all backends starts intrinsifying this call. + */ + return enumEntries(enumValues()) +} \ No newline at end of file diff --git a/libraries/stdlib/jvm-minimal-for-test/build.gradle.kts b/libraries/stdlib/jvm-minimal-for-test/build.gradle.kts index 8ca8886d3e9..c9d6ed74603 100644 --- a/libraries/stdlib/jvm-minimal-for-test/build.gradle.kts +++ b/libraries/stdlib/jvm-minimal-for-test/build.gradle.kts @@ -39,7 +39,8 @@ val copySources by task { "kotlin/text/TypeAliases.kt") from(stdlibProjectDir.resolve("src")) .include("kotlin/collections/TypeAliases.kt", - "kotlin/enums/EnumEntriesSerializationProxy.kt") + "kotlin/enums/EnumEntriesSerializationProxy.kt", + "kotlin/enums/EnumEntriesJVM.kt") from(stdlibProjectDir.resolve("../src")) .include("kotlin/util/Standard.kt", "kotlin/internal/Annotations.kt", @@ -52,8 +53,13 @@ val copySources by task { into(File(buildDir, "src")) } -tasks.withType { + + +tasks.compileKotlin { dependsOn(copySources) + val commonSources = listOf( + "kotlin/enums/EnumEntries.kt" + ).map { copySources.get().destinationDir.resolve(it) } kotlinOptions { freeCompilerArgs += listOf( "-Xallow-kotlin-package", @@ -63,6 +69,11 @@ tasks.withType { ) moduleName = "kotlin-stdlib" } + doFirst { + kotlinOptions.freeCompilerArgs += listOf( + "-Xcommon-sources=${commonSources.joinToString(File.pathSeparator)}", + ) + } } val jar = runtimeJar { diff --git a/libraries/stdlib/jvm/src/kotlin/enums/EnumEntriesJVM.kt b/libraries/stdlib/jvm/src/kotlin/enums/EnumEntriesJVM.kt new file mode 100644 index 00000000000..5b9ed35e62a --- /dev/null +++ b/libraries/stdlib/jvm/src/kotlin/enums/EnumEntriesJVM.kt @@ -0,0 +1,17 @@ +/* + * Copyright 2010-2023 JetBrains s.r.o. and Kotlin Programming Language contributors. + * Use of this source code is governed by the Apache 2.0 license that can be found in the license/LICENSE.txt file. + */ + +package kotlin.enums + +@SinceKotlin("1.9") +@ExperimentalStdlibApi +@PublishedApi +internal actual inline fun > enumEntriesIntrinsic(): EnumEntries { + /* + * Implementation note: this body will be replaced with `throw NotImplementedException()` the moment + * all backends starts intrinsifying this call. + */ + return enumEntries(enumValues()) +} \ No newline at end of file diff --git a/libraries/stdlib/src/kotlin/enums/EnumEntries.kt b/libraries/stdlib/src/kotlin/enums/EnumEntries.kt index da1f4600dac..27a540971d4 100644 --- a/libraries/stdlib/src/kotlin/enums/EnumEntries.kt +++ b/libraries/stdlib/src/kotlin/enums/EnumEntries.kt @@ -1,5 +1,5 @@ /* - * Copyright 2010-2022 JetBrains s.r.o. and Kotlin Programming Language contributors. + * Copyright 2010-2023 JetBrains s.r.o. and Kotlin Programming Language contributors. * Use of this source code is governed by the Apache 2.0 license that can be found in the license/LICENSE.txt file. */ @@ -29,14 +29,12 @@ public sealed interface EnumEntries> : List @PublishedApi @ExperimentalStdlibApi @SinceKotlin("1.9") -internal inline fun > enumEntries(): EnumEntries { - /* - * Implementation note: this body will be replaced with `throw NotImplementedException()` the moment - * all backends starts intrinsifying this call. - * Then this method will also be promoted to public. - */ - return enumEntries(enumValues()) -} +internal inline fun > enumEntries(): EnumEntries = enumEntriesIntrinsic() + +@PublishedApi +@ExperimentalStdlibApi +@SinceKotlin("1.9") +internal expect inline fun > enumEntriesIntrinsic(): EnumEntries @PublishedApi @SinceKotlin("1.8") // Used by pre-1.9.0 JVM compiler for the feature in preview mode. Can be safely removed around 2.1 diff --git a/libraries/stdlib/wasm/src/kotlin/enums/EnumEntriesWasm.kt b/libraries/stdlib/wasm/src/kotlin/enums/EnumEntriesWasm.kt new file mode 100644 index 00000000000..5b9ed35e62a --- /dev/null +++ b/libraries/stdlib/wasm/src/kotlin/enums/EnumEntriesWasm.kt @@ -0,0 +1,17 @@ +/* + * Copyright 2010-2023 JetBrains s.r.o. and Kotlin Programming Language contributors. + * Use of this source code is governed by the Apache 2.0 license that can be found in the license/LICENSE.txt file. + */ + +package kotlin.enums + +@SinceKotlin("1.9") +@ExperimentalStdlibApi +@PublishedApi +internal actual inline fun > enumEntriesIntrinsic(): EnumEntries { + /* + * Implementation note: this body will be replaced with `throw NotImplementedException()` the moment + * all backends starts intrinsifying this call. + */ + return enumEntries(enumValues()) +} \ No newline at end of file