From f9ba35af6486e6c8b594022eeafb3caa3c791071 Mon Sep 17 00:00:00 2001 From: Ilya Gorbunov Date: Sat, 21 Nov 2015 07:31:43 +0300 Subject: [PATCH] Place Char constants into builtin Char companion object. --- compiler/testData/builtin-classes.txt | 12 +++++++ core/builtins/native/kotlin/Char.kt | 34 ++++++++++++++++++- .../jvm/internal/PrimitiveCompanionObjects.kt | 9 ++++- .../src/internal/primitiveCompanionObjects.kt | 9 ++++- libraries/stdlib/src/kotlin/text/Char.kt | 6 ++++ 5 files changed, 67 insertions(+), 3 deletions(-) diff --git a/compiler/testData/builtin-classes.txt b/compiler/testData/builtin-classes.txt index de382827d92..c118b731633 100644 --- a/compiler/testData/builtin-classes.txt +++ b/compiler/testData/builtin-classes.txt @@ -233,6 +233,18 @@ public final class Char : kotlin.Comparable { public companion object Companion { /*primary*/ private constructor Companion() + public const final val MAX_HIGH_SURROGATE: kotlin.Char + public final fun (): kotlin.Char + public const final val MAX_LOW_SURROGATE: kotlin.Char + public final fun (): kotlin.Char + public const final val MAX_SURROGATE: kotlin.Char + public final fun (): kotlin.Char + public const final val MIN_HIGH_SURROGATE: kotlin.Char + public final fun (): kotlin.Char + public const final val MIN_LOW_SURROGATE: kotlin.Char + public final fun (): kotlin.Char + public const final val MIN_SURROGATE: kotlin.Char + public final fun (): kotlin.Char } } diff --git a/core/builtins/native/kotlin/Char.kt b/core/builtins/native/kotlin/Char.kt index 329663908b8..b927a12ee68 100644 --- a/core/builtins/native/kotlin/Char.kt +++ b/core/builtins/native/kotlin/Char.kt @@ -21,7 +21,6 @@ package kotlin * On the JVM, non-nullable values of this type are represented as values of the primitive type `char`. */ public class Char private () : Comparable { - companion object {} /** * Compares this value with the specified value for order. @@ -60,5 +59,38 @@ public class Char private () : Comparable { public override fun toFloat(): Float /** Returns the value of this character as a `Double`. */ public override fun toDouble(): Double + + companion object { + /** + * The minimum value of a Unicode high-surrogate code unit. + */ + public const val MIN_HIGH_SURROGATE: Char = '\uD800' + + /** + * The maximum value of a Unicode high-surrogate code unit. + */ + public const val MAX_HIGH_SURROGATE: Char = '\uDBFF' + + /** + * The minimum value of a Unicode low-surrogate code unit. + */ + public const val MIN_LOW_SURROGATE: Char = '\uDC00' + + /** + * The maximum value of a Unicode low-surrogate code unit. + */ + public const val MAX_LOW_SURROGATE: Char = '\uDFFF' + + /** + * The minimum value of a Unicode surrogate code unit. + */ + public const val MIN_SURROGATE: Char = MIN_HIGH_SURROGATE + + /** + * The maximum value of a Unicode surrogate code unit. + */ + public const val MAX_SURROGATE: Char = MAX_LOW_SURROGATE + } + } diff --git a/core/runtime.jvm/src/kotlin/jvm/internal/PrimitiveCompanionObjects.kt b/core/runtime.jvm/src/kotlin/jvm/internal/PrimitiveCompanionObjects.kt index 74e2e7f9fa6..76f94d2ab73 100644 --- a/core/runtime.jvm/src/kotlin/jvm/internal/PrimitiveCompanionObjects.kt +++ b/core/runtime.jvm/src/kotlin/jvm/internal/PrimitiveCompanionObjects.kt @@ -53,7 +53,14 @@ private object ByteCompanionObject { } -private object CharCompanionObject {} +private object CharCompanionObject { + public const val MIN_HIGH_SURROGATE: Char = '\uD800' + public const val MAX_HIGH_SURROGATE: Char = '\uDBFF' + public const val MIN_LOW_SURROGATE: Char = '\uDC00' + public const val MAX_LOW_SURROGATE: Char = '\uDFFF' + public const val MIN_SURROGATE: Char = MIN_HIGH_SURROGATE + public const val MAX_SURROGATE: Char = MAX_LOW_SURROGATE +} private object StringCompanionObject {} private object EnumCompanionObject {} \ No newline at end of file diff --git a/js/js.libraries/src/internal/primitiveCompanionObjects.kt b/js/js.libraries/src/internal/primitiveCompanionObjects.kt index 51692251387..ce02b52579b 100644 --- a/js/js.libraries/src/internal/primitiveCompanionObjects.kt +++ b/js/js.libraries/src/internal/primitiveCompanionObjects.kt @@ -52,7 +52,14 @@ private object ByteCompanionObject { val MAX_VALUE: Byte = 127 } -private object CharCompanionObject {} +private object CharCompanionObject { + public const val MIN_HIGH_SURROGATE: Char = '\uD800' + public const val MAX_HIGH_SURROGATE: Char = '\uDBFF' + public const val MIN_LOW_SURROGATE: Char = '\uDC00' + public const val MAX_LOW_SURROGATE: Char = '\uDFFF' + public const val MIN_SURROGATE: Char = MIN_HIGH_SURROGATE + public const val MAX_SURROGATE: Char = MAX_LOW_SURROGATE +} private object StringCompanionObject {} private object EnumCompanionObject {} diff --git a/libraries/stdlib/src/kotlin/text/Char.kt b/libraries/stdlib/src/kotlin/text/Char.kt index 99ae2cf938c..0e32af62250 100644 --- a/libraries/stdlib/src/kotlin/text/Char.kt +++ b/libraries/stdlib/src/kotlin/text/Char.kt @@ -61,35 +61,41 @@ public fun Char.isSurrogate(): Boolean = this in Char.MIN_SURROGATE..Char.MAX_SU /** * The minimum value of a Unicode high-surrogate code unit. */ +@Deprecated("Provided for binary compatibility", level = DeprecationLevel.HIDDEN) public val Char.Companion.MIN_HIGH_SURROGATE: Char get() = '\uD800' /** * The maximum value of a Unicode high-surrogate code unit. */ +@Deprecated("Provided for binary compatibility", level = DeprecationLevel.HIDDEN) public val Char.Companion.MAX_HIGH_SURROGATE: Char get() = '\uDBFF' /** * The minimum value of a Unicode low-surrogate code unit. */ +@Deprecated("Provided for binary compatibility", level = DeprecationLevel.HIDDEN) public val Char.Companion.MIN_LOW_SURROGATE: Char get() = '\uDC00' /** * The maximum value of a Unicode low-surrogate code unit. */ +@Deprecated("Provided for binary compatibility", level = DeprecationLevel.HIDDEN) public val Char.Companion.MAX_LOW_SURROGATE: Char get() = '\uDFFF' /** * The minimum value of a Unicode surrogate code unit. */ +@Deprecated("Provided for binary compatibility", level = DeprecationLevel.HIDDEN) public val Char.Companion.MIN_SURROGATE: Char get() = MIN_HIGH_SURROGATE /** * The maximum value of a Unicode surrogate code unit. */ +@Deprecated("Provided for binary compatibility", level = DeprecationLevel.HIDDEN) public val Char.Companion.MAX_SURROGATE: Char get() = MAX_LOW_SURROGATE