From 18d4b91b2db10d344603273a14dd3af604aa6f13 Mon Sep 17 00:00:00 2001 From: Ilya Gorbunov Date: Sun, 15 Oct 2017 19:36:15 +0300 Subject: [PATCH] Minor: improve message from future for `use` and `useLines` Annotate RequireKotlin and apiVersionIsAtLeast with SinceKotlin --- libraries/stdlib/src/kotlin/internal/Annotations.kt | 2 ++ libraries/stdlib/src/kotlin/internal/PlatformImplementations.kt | 2 +- libraries/stdlib/src/kotlin/io/Closeable.kt | 2 +- libraries/stdlib/src/kotlin/io/FileReadWrite.kt | 2 +- libraries/stdlib/src/kotlin/io/ReadWrite.kt | 2 +- 5 files changed, 6 insertions(+), 4 deletions(-) diff --git a/libraries/stdlib/src/kotlin/internal/Annotations.kt b/libraries/stdlib/src/kotlin/internal/Annotations.kt index 76c49b9f836..dcbfc25cc6b 100644 --- a/libraries/stdlib/src/kotlin/internal/Annotations.kt +++ b/libraries/stdlib/src/kotlin/internal/Annotations.kt @@ -95,6 +95,7 @@ internal annotation class AccessibleLateinitPropertyLiteral */ @Target(AnnotationTarget.CLASS, AnnotationTarget.FUNCTION, AnnotationTarget.PROPERTY, AnnotationTarget.CONSTRUCTOR, AnnotationTarget.TYPEALIAS) @Retention(AnnotationRetention.SOURCE) +@SinceKotlin("1.2") internal annotation class RequireKotlin( val version: String, val message: String = "", @@ -106,6 +107,7 @@ internal annotation class RequireKotlin( /** * The kind of the version that is required by [RequireKotlin]. */ +@SinceKotlin("1.2") internal enum class RequireKotlinVersionKind { LANGUAGE_VERSION, COMPILER_VERSION, diff --git a/libraries/stdlib/src/kotlin/internal/PlatformImplementations.kt b/libraries/stdlib/src/kotlin/internal/PlatformImplementations.kt index d53f02588b2..f50047e4d7d 100644 --- a/libraries/stdlib/src/kotlin/internal/PlatformImplementations.kt +++ b/libraries/stdlib/src/kotlin/internal/PlatformImplementations.kt @@ -72,6 +72,6 @@ private fun getJavaVersion(): Int { * The function usages are validated to have literal argument values. */ @PublishedApi -@RequireKotlin("1.2", versionKind = RequireKotlinVersionKind.COMPILER_VERSION) +@SinceKotlin("1.2") 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/stdlib/src/kotlin/io/Closeable.kt b/libraries/stdlib/src/kotlin/io/Closeable.kt index d2a2acbfdbb..ba02b69a753 100644 --- a/libraries/stdlib/src/kotlin/io/Closeable.kt +++ b/libraries/stdlib/src/kotlin/io/Closeable.kt @@ -29,7 +29,7 @@ import kotlin.internal.* * @return the result of [block] function invoked on this resource. */ @InlineOnly -@RequireKotlin("1.2", versionKind = RequireKotlinVersionKind.COMPILER_VERSION) +@RequireKotlin("1.2", versionKind = RequireKotlinVersionKind.COMPILER_VERSION, message = "Requires newer compiler version to be inlined correctly.") public inline fun T.use(block: (T) -> R): R { var exception: Throwable? = null try { diff --git a/libraries/stdlib/src/kotlin/io/FileReadWrite.kt b/libraries/stdlib/src/kotlin/io/FileReadWrite.kt index b52f865f9b6..426b5b05896 100644 --- a/libraries/stdlib/src/kotlin/io/FileReadWrite.kt +++ b/libraries/stdlib/src/kotlin/io/FileReadWrite.kt @@ -196,6 +196,6 @@ public fun File.readLines(charset: Charset = Charsets.UTF_8): List { * @param charset character set to use. By default uses UTF-8 charset. * @return the value returned by [block]. */ -@RequireKotlin("1.2", versionKind = RequireKotlinVersionKind.COMPILER_VERSION) +@RequireKotlin("1.2", versionKind = RequireKotlinVersionKind.COMPILER_VERSION, message = "Requires newer compiler version to be inlined correctly.") public inline fun File.useLines(charset: Charset = Charsets.UTF_8, block: (Sequence) -> T): T = bufferedReader(charset).use { block(it.lineSequence()) } diff --git a/libraries/stdlib/src/kotlin/io/ReadWrite.kt b/libraries/stdlib/src/kotlin/io/ReadWrite.kt index d74a930c09a..e30d0068c73 100644 --- a/libraries/stdlib/src/kotlin/io/ReadWrite.kt +++ b/libraries/stdlib/src/kotlin/io/ReadWrite.kt @@ -43,7 +43,7 @@ public fun Reader.readLines(): List { * the processing is complete. * @return the value returned by [block]. */ -@RequireKotlin("1.2", versionKind = RequireKotlinVersionKind.COMPILER_VERSION) +@RequireKotlin("1.2", versionKind = RequireKotlinVersionKind.COMPILER_VERSION, message = "Requires newer compiler version to be inlined correctly.") public inline fun Reader.useLines(block: (Sequence) -> T): T = buffered().use { block(it.lineSequence()) }