Generate hashCode and equals for unsigned types
This commit is contained in:
@@ -229,6 +229,17 @@ class UnsignedTypeGenerator(val type: UnsignedType, out: PrintWriter) : BuiltIns
|
||||
UnsignedType.ULONG -> out.println("ulongToString(data)")
|
||||
else -> error(type)
|
||||
}
|
||||
out.println()
|
||||
|
||||
out.print(" public override fun hashCode(): Int = ")
|
||||
when (type) {
|
||||
UnsignedType.UBYTE, UnsignedType.USHORT, UnsignedType.UINT -> out.println("toInt()")
|
||||
UnsignedType.ULONG -> out.println("((this shr 32).toInt() xor this.toInt())")
|
||||
}
|
||||
out.println()
|
||||
|
||||
out.println(" public override fun equals(other: Any?): Boolean =")
|
||||
out.println(" other is ${type.capitalized} && this.data == other.data")
|
||||
|
||||
out.println()
|
||||
}
|
||||
|
||||
@@ -138,6 +138,11 @@ public inline class UByte internal constructor(private val data: Byte) : Compara
|
||||
|
||||
public override fun toString(): String = toInt().toString()
|
||||
|
||||
public override fun hashCode(): Int = toInt()
|
||||
|
||||
public override fun equals(other: Any?): Boolean =
|
||||
other is UByte && this.data == other.data
|
||||
|
||||
}
|
||||
|
||||
@SinceKotlin("1.3")
|
||||
|
||||
@@ -142,6 +142,11 @@ public inline class UInt internal constructor(private val data: Int) : Comparabl
|
||||
|
||||
public override fun toString(): String = toLong().toString()
|
||||
|
||||
public override fun hashCode(): Int = toInt()
|
||||
|
||||
public override fun equals(other: Any?): Boolean =
|
||||
other is UInt && this.data == other.data
|
||||
|
||||
}
|
||||
|
||||
@SinceKotlin("1.3")
|
||||
|
||||
@@ -142,6 +142,11 @@ public inline class ULong internal constructor(private val data: Long) : Compara
|
||||
|
||||
public override fun toString(): String = ulongToString(data)
|
||||
|
||||
public override fun hashCode(): Int = ((this shr 32).toInt() xor this.toInt())
|
||||
|
||||
public override fun equals(other: Any?): Boolean =
|
||||
other is ULong && this.data == other.data
|
||||
|
||||
}
|
||||
|
||||
@SinceKotlin("1.3")
|
||||
|
||||
@@ -138,6 +138,11 @@ public inline class UShort internal constructor(private val data: Short) : Compa
|
||||
|
||||
public override fun toString(): String = toInt().toString()
|
||||
|
||||
public override fun hashCode(): Int = toInt()
|
||||
|
||||
public override fun equals(other: Any?): Boolean =
|
||||
other is UShort && this.data == other.data
|
||||
|
||||
}
|
||||
|
||||
@SinceKotlin("1.3")
|
||||
|
||||
+16
@@ -229,6 +229,8 @@ public final class kotlin/UByte : java/lang/Comparable {
|
||||
public final fun div (I)I
|
||||
public final fun div (J)J
|
||||
public final fun div (S)I
|
||||
public fun equals (Ljava/lang/Object;)Z
|
||||
public fun hashCode ()I
|
||||
public final fun inc ()B
|
||||
public final fun inv ()B
|
||||
public final fun minus (B)I
|
||||
@@ -277,6 +279,8 @@ public final class kotlin/UByte$Erased {
|
||||
public static final fun div (BI)I
|
||||
public static final fun div (BJ)J
|
||||
public static final fun div (BS)I
|
||||
public static fun equals (BLjava/lang/Object;)Z
|
||||
public static fun hashCode (B)I
|
||||
public static final fun inc (B)B
|
||||
public static final fun inv (B)B
|
||||
public static final fun minus (BB)I
|
||||
@@ -373,6 +377,8 @@ public final class kotlin/UInt : java/lang/Comparable {
|
||||
public final fun div (I)I
|
||||
public final fun div (J)J
|
||||
public final fun div (S)I
|
||||
public fun equals (Ljava/lang/Object;)Z
|
||||
public fun hashCode ()I
|
||||
public final fun inc ()I
|
||||
public final fun inv ()I
|
||||
public final fun minus (B)I
|
||||
@@ -423,6 +429,8 @@ public final class kotlin/UInt$Erased {
|
||||
public static final fun div (II)I
|
||||
public static final fun div (IJ)J
|
||||
public static final fun div (IS)I
|
||||
public static fun equals (ILjava/lang/Object;)Z
|
||||
public static fun hashCode (I)I
|
||||
public static final fun inc (I)I
|
||||
public static final fun inv (I)I
|
||||
public static final fun minus (IB)I
|
||||
@@ -521,6 +529,8 @@ public final class kotlin/ULong : java/lang/Comparable {
|
||||
public final fun div (I)J
|
||||
public final fun div (J)J
|
||||
public final fun div (S)J
|
||||
public fun equals (Ljava/lang/Object;)Z
|
||||
public fun hashCode ()I
|
||||
public final fun inc ()J
|
||||
public final fun inv ()J
|
||||
public final fun minus (B)J
|
||||
@@ -571,6 +581,8 @@ public final class kotlin/ULong$Erased {
|
||||
public static final fun div (JI)J
|
||||
public static final fun div (JJ)J
|
||||
public static final fun div (JS)J
|
||||
public static fun equals (JLjava/lang/Object;)Z
|
||||
public static fun hashCode (J)I
|
||||
public static final fun inc (J)J
|
||||
public static final fun inv (J)J
|
||||
public static final fun minus (JB)J
|
||||
@@ -669,6 +681,8 @@ public final class kotlin/UShort : java/lang/Comparable {
|
||||
public final fun div (I)I
|
||||
public final fun div (J)J
|
||||
public final fun div (S)I
|
||||
public fun equals (Ljava/lang/Object;)Z
|
||||
public fun hashCode ()I
|
||||
public final fun inc ()S
|
||||
public final fun inv ()S
|
||||
public final fun minus (B)I
|
||||
@@ -717,6 +731,8 @@ public final class kotlin/UShort$Erased {
|
||||
public static final fun div (SI)I
|
||||
public static final fun div (SJ)J
|
||||
public static final fun div (SS)I
|
||||
public static fun equals (SLjava/lang/Object;)Z
|
||||
public static fun hashCode (S)I
|
||||
public static final fun inc (S)S
|
||||
public static final fun inv (S)S
|
||||
public static final fun minus (SB)I
|
||||
|
||||
Reference in New Issue
Block a user