diff --git a/libraries/stdlib/jvm/build.gradle b/libraries/stdlib/jvm/build.gradle index 4b5ff5a0556..506b0bf8a78 100644 --- a/libraries/stdlib/jvm/build.gradle +++ b/libraries/stdlib/jvm/build.gradle @@ -15,6 +15,11 @@ configurations { } sourceSets { + compileOnlyDeclarations { + java { + srcDir 'compileOnly' + } + } main { java { srcDir "${rootDir}/core/builtins/src" @@ -74,6 +79,7 @@ dependencies { api group: 'org.jetbrains', name: 'annotations', version:'13.0' + compileOnly sourceSets.compileOnlyDeclarations.output mainJdk7Api sourceSets.main.output mainJdk8Api sourceSets.main.output mainJdk8Api sourceSets.mainJdk7.output @@ -176,6 +182,14 @@ compileMainJdk8Kotlin { kotlinOptions.moduleName = "kotlin-stdlib-jdk8" } +compileCompileOnlyDeclarationsKotlin { + kotlinOptions { + freeCompilerArgs = [ + "-Xallow-kotlin-package", + ] + } +} + compileTestKotlin { kotlinOptions { freeCompilerArgs += [ diff --git a/libraries/stdlib/jvm/compileOnly/JDK8PlatformImplementations.kt b/libraries/stdlib/jvm/compileOnly/JDK8PlatformImplementations.kt new file mode 100644 index 00000000000..ae5c174dcd6 --- /dev/null +++ b/libraries/stdlib/jvm/compileOnly/JDK8PlatformImplementations.kt @@ -0,0 +1,11 @@ +/* + * 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.internal.jdk8 + +// forward-reference declaration of JDK8PlatformImplementations +// declared in the source set compiled against JDK 8 +// used in the source set compiled against JDK 6 +public open class JDK8PlatformImplementations() diff --git a/libraries/stdlib/jvm/src/kotlin/internal/PlatformImplementations.kt b/libraries/stdlib/jvm/src/kotlin/internal/PlatformImplementations.kt index ad213cb9a6e..81bdd41e90c 100644 --- a/libraries/stdlib/jvm/src/kotlin/internal/PlatformImplementations.kt +++ b/libraries/stdlib/jvm/src/kotlin/internal/PlatformImplementations.kt @@ -1,5 +1,5 @@ /* - * Copyright 2010-2020 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. */ @@ -47,22 +47,8 @@ internal open class PlatformImplementations { @JvmField -internal val IMPLEMENTATIONS: PlatformImplementations = run { - try { - return@run castToBaseType(Class.forName("kotlin.internal.jdk8.JDK8PlatformImplementations").newInstance()) - } catch (e: ClassNotFoundException) { } - try { - return@run castToBaseType(Class.forName("kotlin.internal.JRE8PlatformImplementations").newInstance()) - } catch (e: ClassNotFoundException) { } - try { - return@run castToBaseType(Class.forName("kotlin.internal.jdk7.JDK7PlatformImplementations").newInstance()) - } catch (e: ClassNotFoundException) { } - try { - return@run castToBaseType(Class.forName("kotlin.internal.JRE7PlatformImplementations").newInstance()) - } catch (e: ClassNotFoundException) { } - - PlatformImplementations() -} +internal val IMPLEMENTATIONS: PlatformImplementations = + castToBaseType(kotlin.internal.jdk8.JDK8PlatformImplementations()) @kotlin.internal.InlineOnly private inline fun castToBaseType(instance: Any): T {