Align the Boolean.hashCode() value across platforms

Boolean.hashCode() should return 1231/1237 for true/false correspondingly.

As a part of efforts to stabilize Native stdlib.
This commit is contained in:
Abduqodiri Qurbonzoda
2023-06-12 17:40:09 +03:00
committed by Space Team
parent 668157eb41
commit 193aa0f935
9 changed files with 23 additions and 14 deletions
@@ -48,11 +48,15 @@ internal fun hashCode(obj: dynamic): Int {
"object" -> if ("function" === jsTypeOf(obj.hashCode)) (obj.hashCode)() else getObjectHashCode(obj)
"function" -> getObjectHashCode(obj)
"number" -> getNumberHashCode(obj)
"boolean" -> if(obj.unsafeCast<Boolean>()) 1 else 0
"boolean" -> getBooleanHashCode(obj.unsafeCast<Boolean>())
else -> getStringHashCode(js("String")(obj))
}
}
internal fun getBooleanHashCode(value: Boolean): Int {
return if (value) 1231 else 1237
}
private const val POW_2_32 = 4294967296.0
private const val OBJECT_HASH_CODE_PROPERTY_NAME = "kotlinHashCodeValue$"
+1 -1
View File
@@ -42,7 +42,7 @@ Kotlin.hashCode = function (obj) {
return Kotlin.numberHashCode(obj);
}
if ("boolean" === objType) {
return Number(obj)
return obj ? 1231 : 1237;
}
var str = String(obj);
@@ -58,7 +58,7 @@ public class Boolean private constructor(private val value: Boolean) : Comparabl
if (this) "true" else "false"
override fun hashCode(): Int =
toInt()
if (this) 1231 else 1237
@kotlin.internal.IntrinsicConstEvaluation
override fun equals(other: Any?): Boolean {
@@ -79,7 +79,7 @@ return (obj) => {
case "number":
return numberHashCode(obj);
case "boolean":
return obj;
return obj ? 1231 : 1237;
default:
return getStringHashCode(String(obj));
}