From 3ab7946c4d1e5da701a451e22a58ef668208080a Mon Sep 17 00:00:00 2001 From: Ilya Gorbunov Date: Thu, 7 Sep 2017 17:50:15 +0300 Subject: [PATCH] Introduce apiVersionIsAtLeast function to branch in inlines #KT-16028 --- .../src/kotlin/internal/PlatformImplementations.kt | 12 ++++++++++++ .../kotlin-stdlib-runtime-merged.txt | 4 ++++ .../reference-public-api/kotlin-stdlib.txt | 4 ++++ 3 files changed, 20 insertions(+) diff --git a/libraries/stdlib/src/kotlin/internal/PlatformImplementations.kt b/libraries/stdlib/src/kotlin/internal/PlatformImplementations.kt index cdd0c9cab63..106290cf0d6 100644 --- a/libraries/stdlib/src/kotlin/internal/PlatformImplementations.kt +++ b/libraries/stdlib/src/kotlin/internal/PlatformImplementations.kt @@ -62,3 +62,15 @@ private fun getJavaVersion(): Int { default } } + +/** + * Constant check of api version used during compilation + * + * This function is evaluated at compile time to a constant value, + * so there should be no references to it in other modules. + * + * The function usages are validated to have literal argument values. + */ +@PublishedApi +internal fun apiVersionIsAtLeast(major: Int, minor: Int, patch: Int) = + KotlinVersion.CURRENT.isAtLeast(major, minor, patch) \ No newline at end of file diff --git a/libraries/tools/binary-compatibility-validator/reference-public-api/kotlin-stdlib-runtime-merged.txt b/libraries/tools/binary-compatibility-validator/reference-public-api/kotlin-stdlib-runtime-merged.txt index 1352de47248..38c869563ba 100644 --- a/libraries/tools/binary-compatibility-validator/reference-public-api/kotlin-stdlib-runtime-merged.txt +++ b/libraries/tools/binary-compatibility-validator/reference-public-api/kotlin-stdlib-runtime-merged.txt @@ -2076,6 +2076,10 @@ public final class kotlin/coroutines/experimental/jvm/internal/CoroutineIntrinsi public static final fun normalizeContinuation (Lkotlin/coroutines/experimental/Continuation;)Lkotlin/coroutines/experimental/Continuation; } +public final class kotlin/internal/PlatformImplementationsKt { + public static final fun apiVersionIsAtLeast (III)Z +} + public final class kotlin/io/AccessDeniedException : kotlin/io/FileSystemException { public fun (Ljava/io/File;Ljava/io/File;Ljava/lang/String;)V public synthetic fun (Ljava/io/File;Ljava/io/File;Ljava/lang/String;ILkotlin/jvm/internal/DefaultConstructorMarker;)V diff --git a/libraries/tools/binary-compatibility-validator/reference-public-api/kotlin-stdlib.txt b/libraries/tools/binary-compatibility-validator/reference-public-api/kotlin-stdlib.txt index 9863b5d95fd..78a59e4f657 100644 --- a/libraries/tools/binary-compatibility-validator/reference-public-api/kotlin-stdlib.txt +++ b/libraries/tools/binary-compatibility-validator/reference-public-api/kotlin-stdlib.txt @@ -1895,6 +1895,10 @@ public final class kotlin/coroutines/experimental/jvm/internal/CoroutineIntrinsi public static final fun normalizeContinuation (Lkotlin/coroutines/experimental/Continuation;)Lkotlin/coroutines/experimental/Continuation; } +public final class kotlin/internal/PlatformImplementationsKt { + public static final fun apiVersionIsAtLeast (III)Z +} + public final class kotlin/io/AccessDeniedException : kotlin/io/FileSystemException { public fun (Ljava/io/File;Ljava/io/File;Ljava/lang/String;)V public synthetic fun (Ljava/io/File;Ljava/io/File;Ljava/lang/String;ILkotlin/jvm/internal/DefaultConstructorMarker;)V