From 07a0cb91d4d5c7d946c53014c197317b35bb633a Mon Sep 17 00:00:00 2001 From: Ilya Gorbunov Date: Fri, 22 Jun 2018 21:24:55 +0300 Subject: [PATCH] Introduce Char.MIN_VALUE and MAX_VALUE constants (KT-21763) Add Char.MIN_VALUE and Char.MAX_VALUE implementations in primitive companion objects. Update builtins test data and public API. Co-authored-by: Oskar Drozda --- compiler/testData/builtin-classes/default/kotlin.txt | 4 ++++ compiler/testData/builtin-classes/java6/kotlin.txt | 4 ++++ compiler/testData/builtin-classes/java8/kotlin.txt | 4 ++++ .../testData/builtin-classes/newMethods/kotlin.txt | 4 ++++ core/builtins/native/kotlin/Char.kt | 12 ++++++++++++ .../stdlib/js/runtime/primitiveCompanionObjects.kt | 6 ++++++ .../kotlin/jvm/internal/PrimitiveCompanionObjects.kt | 2 ++ .../reference-public-api/kotlin-runtime.txt | 2 ++ .../kotlin-stdlib-runtime-merged.txt | 2 ++ 9 files changed, 40 insertions(+) diff --git a/compiler/testData/builtin-classes/default/kotlin.txt b/compiler/testData/builtin-classes/default/kotlin.txt index fbd6e359925..5140257d06a 100644 --- a/compiler/testData/builtin-classes/default/kotlin.txt +++ b/compiler/testData/builtin-classes/default/kotlin.txt @@ -163,12 +163,16 @@ public final class Char : kotlin.Comparable { public final fun (): kotlin.Char public const final val MAX_SURROGATE: kotlin.Char public final fun (): kotlin.Char + @kotlin.SinceKotlin(version = "1.3") public const final val MAX_VALUE: 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 + @kotlin.SinceKotlin(version = "1.3") public const final val MIN_VALUE: kotlin.Char + public final fun (): kotlin.Char @kotlin.SinceKotlin(version = "1.3") public const final val SIZE_BITS: kotlin.Int public final fun (): kotlin.Int @kotlin.SinceKotlin(version = "1.3") public const final val SIZE_BYTES: kotlin.Int diff --git a/compiler/testData/builtin-classes/java6/kotlin.txt b/compiler/testData/builtin-classes/java6/kotlin.txt index 7465130585f..589af2c83ae 100644 --- a/compiler/testData/builtin-classes/java6/kotlin.txt +++ b/compiler/testData/builtin-classes/java6/kotlin.txt @@ -166,12 +166,16 @@ public final class Char : kotlin.Comparable, java.io.Serializable { public final fun (): kotlin.Char public const final val MAX_SURROGATE: kotlin.Char public final fun (): kotlin.Char + @kotlin.SinceKotlin(version = "1.3") public const final val MAX_VALUE: 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 + @kotlin.SinceKotlin(version = "1.3") public const final val MIN_VALUE: kotlin.Char + public final fun (): kotlin.Char @kotlin.SinceKotlin(version = "1.3") public const final val SIZE_BITS: kotlin.Int public final fun (): kotlin.Int @kotlin.SinceKotlin(version = "1.3") public const final val SIZE_BYTES: kotlin.Int diff --git a/compiler/testData/builtin-classes/java8/kotlin.txt b/compiler/testData/builtin-classes/java8/kotlin.txt index 6bca6b04be1..4a6c3ebdcf8 100644 --- a/compiler/testData/builtin-classes/java8/kotlin.txt +++ b/compiler/testData/builtin-classes/java8/kotlin.txt @@ -166,12 +166,16 @@ public final class Char : kotlin.Comparable, java.io.Serializable { public final fun (): kotlin.Char public const final val MAX_SURROGATE: kotlin.Char public final fun (): kotlin.Char + @kotlin.SinceKotlin(version = "1.3") public const final val MAX_VALUE: 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 + @kotlin.SinceKotlin(version = "1.3") public const final val MIN_VALUE: kotlin.Char + public final fun (): kotlin.Char @kotlin.SinceKotlin(version = "1.3") public const final val SIZE_BITS: kotlin.Int public final fun (): kotlin.Int @kotlin.SinceKotlin(version = "1.3") public const final val SIZE_BYTES: kotlin.Int diff --git a/compiler/testData/builtin-classes/newMethods/kotlin.txt b/compiler/testData/builtin-classes/newMethods/kotlin.txt index 54b59185953..2bb26a0b6aa 100644 --- a/compiler/testData/builtin-classes/newMethods/kotlin.txt +++ b/compiler/testData/builtin-classes/newMethods/kotlin.txt @@ -166,12 +166,16 @@ public final class Char : kotlin.Comparable, java.io.Serializable { public final fun (): kotlin.Char public const final val MAX_SURROGATE: kotlin.Char public final fun (): kotlin.Char + @kotlin.SinceKotlin(version = "1.3") public const final val MAX_VALUE: 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 + @kotlin.SinceKotlin(version = "1.3") public const final val MIN_VALUE: kotlin.Char + public final fun (): kotlin.Char @kotlin.SinceKotlin(version = "1.3") public const final val SIZE_BITS: kotlin.Int public final fun (): kotlin.Int @kotlin.SinceKotlin(version = "1.3") public const final val SIZE_BYTES: kotlin.Int diff --git a/core/builtins/native/kotlin/Char.kt b/core/builtins/native/kotlin/Char.kt index 2d50bf2e594..e2d328fe74c 100644 --- a/core/builtins/native/kotlin/Char.kt +++ b/core/builtins/native/kotlin/Char.kt @@ -62,6 +62,18 @@ public class Char private constructor() : Comparable { public fun toDouble(): Double companion object { + /** + * The minimum value of a character code unit. + */ + @SinceKotlin("1.3") + public const val MIN_VALUE: Char = '\u0000' + + /** + * The maximum value of a character code unit. + */ + @SinceKotlin("1.3") + public const val MAX_VALUE: Char = '\uFFFF' + /** * The minimum value of a Unicode high-surrogate code unit. */ diff --git a/libraries/stdlib/js/runtime/primitiveCompanionObjects.kt b/libraries/stdlib/js/runtime/primitiveCompanionObjects.kt index 58a592cc0dd..bc8768808cd 100644 --- a/libraries/stdlib/js/runtime/primitiveCompanionObjects.kt +++ b/libraries/stdlib/js/runtime/primitiveCompanionObjects.kt @@ -103,6 +103,12 @@ private object ByteCompanionObject { @JsName("CharCompanionObject") private object CharCompanionObject { + @JsName("MIN_VALUE") + public const val MIN_VALUE: Char = '\u0000' + + @JsName("MAX_VALUE") + public const val MAX_VALUE: Char = '\uFFFF' + @JsName("MIN_HIGH_SURROGATE") public const val MIN_HIGH_SURROGATE: Char = '\uD800' diff --git a/libraries/stdlib/jvm/runtime/kotlin/jvm/internal/PrimitiveCompanionObjects.kt b/libraries/stdlib/jvm/runtime/kotlin/jvm/internal/PrimitiveCompanionObjects.kt index 03e4421cb3a..b94e1cbc13e 100644 --- a/libraries/stdlib/jvm/runtime/kotlin/jvm/internal/PrimitiveCompanionObjects.kt +++ b/libraries/stdlib/jvm/runtime/kotlin/jvm/internal/PrimitiveCompanionObjects.kt @@ -51,6 +51,8 @@ internal object ByteCompanionObject { internal object CharCompanionObject { + const val MIN_VALUE: Char = '\u0000' + const val MAX_VALUE: Char = '\uFFFF' const val MIN_HIGH_SURROGATE: Char = '\uD800' const val MAX_HIGH_SURROGATE: Char = '\uDBFF' const val MIN_LOW_SURROGATE: Char = '\uDC00' diff --git a/libraries/tools/binary-compatibility-validator/reference-public-api/kotlin-runtime.txt b/libraries/tools/binary-compatibility-validator/reference-public-api/kotlin-runtime.txt index 4895ca698ed..8744df73c07 100644 --- a/libraries/tools/binary-compatibility-validator/reference-public-api/kotlin-runtime.txt +++ b/libraries/tools/binary-compatibility-validator/reference-public-api/kotlin-runtime.txt @@ -420,9 +420,11 @@ public final class kotlin/jvm/internal/CharCompanionObject { public static final field MAX_HIGH_SURROGATE C public static final field MAX_LOW_SURROGATE C public static final field MAX_SURROGATE C + public static final field MAX_VALUE C public static final field MIN_HIGH_SURROGATE C public static final field MIN_LOW_SURROGATE C public static final field MIN_SURROGATE C + public static final field MIN_VALUE C public static final field SIZE_BITS I public static final field SIZE_BYTES I } 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 bff3536a0d0..e6224c74064 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 @@ -3242,9 +3242,11 @@ public final class kotlin/jvm/internal/CharCompanionObject { public static final field MAX_HIGH_SURROGATE C public static final field MAX_LOW_SURROGATE C public static final field MAX_SURROGATE C + public static final field MAX_VALUE C public static final field MIN_HIGH_SURROGATE C public static final field MIN_LOW_SURROGATE C public static final field MIN_SURROGATE C + public static final field MIN_VALUE C public static final field SIZE_BITS I public static final field SIZE_BYTES I }