Add equals() to basic value types. (#271)

This commit is contained in:
Nikolay Igotti
2017-02-27 12:01:04 +03:00
committed by GitHub
parent 9b24f10f07
commit a51c900271
3 changed files with 46 additions and 0 deletions
@@ -33,6 +33,11 @@ public final class Boolean : Comparable<Boolean> {
external public override fun compareTo(other: Boolean): Int
// Konan-specific.
public fun equals(other: Boolean): Boolean = konan.internal.areEqualByValue(this, other)
public override fun equals(other: Any?): Boolean =
other is Boolean && konan.internal.areEqualByValue(this, other)
@SymbolName("Kotlin_Boolean_toString")
external public override fun toString(): String
+5
View File
@@ -92,6 +92,11 @@ public final class Char : Comparable<Char> {
}
// Konan-specific.
public fun equals(other: Char): Boolean = konan.internal.areEqualByValue(this, other)
public override fun equals(other: Any?): Boolean =
other is Char && konan.internal.areEqualByValue(this, other)
@SymbolName("Kotlin_Char_toString")
external public override fun toString(): String
@@ -214,6 +214,11 @@ public final class Byte : Number(), Comparable<Byte> {
}
// Konan-specific.
public fun equals(other: Byte): Boolean = konan.internal.areEqualByValue(this, other)
public override fun equals(other: Any?): Boolean =
other is Byte && konan.internal.areEqualByValue(this, other)
@SymbolName("Kotlin_Byte_toString")
external public override fun toString(): String
@@ -436,6 +441,11 @@ public final class Short : Number(), Comparable<Short> {
external public override fun toDouble(): Double
// Konan-specific.
public fun equals(other: Short): Boolean = konan.internal.areEqualByValue(this, other)
public override fun equals(other: Any?): Boolean =
other is Short && konan.internal.areEqualByValue(this, other)
@SymbolName("Kotlin_Short_toString")
external public override fun toString(): String
@@ -667,6 +677,11 @@ public final class Int : Number(), Comparable<Int> {
external public override fun toDouble(): Double
// Konan-specific.
public fun equals(other: Int): Boolean = konan.internal.areEqualByValue(this, other)
public override fun equals(other: Any?): Boolean =
other is Int && konan.internal.areEqualByValue(this, other)
@SymbolName("Kotlin_Int_toString")
external public override fun toString(): String
@@ -674,6 +689,7 @@ public final class Int : Number(), Comparable<Int> {
return this
}
// TODO: make extensions.
fun highestOneBit() : Int {
var index = 31
@@ -924,6 +940,11 @@ public final class Long : Number(), Comparable<Long> {
external public override fun toDouble(): Double
// Konan-specific.
public fun equals(other: Long): Boolean = konan.internal.areEqualByValue(this, other)
public override fun equals(other: Any?): Boolean =
other is Long && konan.internal.areEqualByValue(this, other)
@SymbolName("Kotlin_Long_toString")
external public override fun toString(): String
@@ -1130,6 +1151,14 @@ public final class Float : Number(), Comparable<Float> {
external public override fun toDouble(): Double
// Konan-specific.
// We intentionally provide this overload to equals() to avoid artifical boxing.
// Note that here we intentionally deviate from JVM Kotlin, where this method would be
// this.bits() == other.bits().
public fun equals(other: Float): Boolean = konan.internal.areEqualByValue(this, other)
public override fun equals(other: Any?): Boolean =
other is Float && konan.internal.areEqualByValue(this, other)
@SymbolName("Kotlin_Float_toString")
external public override fun toString(): String
@@ -1340,6 +1369,13 @@ public final class Double : Number(), Comparable<Double> {
external public override fun toDouble(): Double
// Konan-specific.
// Note that here we intentionally deviate from JVM Kotlin, where this method would be
// this.bits() == other.bits().
public fun equals(other: Double): Boolean = konan.internal.areEqualByValue(this, other)
public override fun equals(other: Any?): Boolean =
other is Double && konan.internal.areEqualByValue(this, other)
@SymbolName("Kotlin_Double_toString")
external public override fun toString(): String