Drop identityEquals from builtins, compiler and tests.
This commit is contained in:
-12
@@ -52,17 +52,6 @@ public final class TopLevelFIF extends CompositeFIF {
|
||||
public static final DescriptorPredicate EQUALS_IN_ANY = pattern("kotlin", "Any", "equals");
|
||||
@NotNull
|
||||
public static final KotlinFunctionIntrinsic KOTLIN_EQUALS = new KotlinFunctionIntrinsic("equals");
|
||||
@NotNull
|
||||
public static final FunctionIntrinsic IDENTITY_EQUALS = new FunctionIntrinsic() {
|
||||
@NotNull
|
||||
@Override
|
||||
public JsExpression apply(
|
||||
@Nullable JsExpression receiver, @NotNull List<JsExpression> arguments, @NotNull TranslationContext context
|
||||
) {
|
||||
assert arguments.size() == 1 : "Unexpected argument size for kotlin.identityEquals: " + arguments.size();
|
||||
return new JsBinaryOperation(JsBinaryOperator.REF_EQ, receiver, arguments.get(0));
|
||||
}
|
||||
};
|
||||
|
||||
@NotNull
|
||||
public static final DescriptorPredicate HASH_CODE_IN_ANY = pattern("kotlin", "Any", "hashCode");
|
||||
@@ -141,7 +130,6 @@ public final class TopLevelFIF extends CompositeFIF {
|
||||
add(EQUALS_IN_ANY, KOTLIN_EQUALS);
|
||||
add(pattern("kotlin", "toString").isExtensionOf(FQ_NAMES.any.asString()), TO_STRING);
|
||||
add(pattern("kotlin", "equals").isExtensionOf(FQ_NAMES.any.asString()), KOTLIN_EQUALS);
|
||||
add(pattern("kotlin", "identityEquals").isExtensionOf("kotlin.Any"), IDENTITY_EQUALS);
|
||||
add(HASH_CODE_IN_ANY, KOTLIN_HASH_CODE);
|
||||
add(pattern(NamePredicate.PRIMITIVE_NUMBERS, "equals"), KOTLIN_EQUALS);
|
||||
add(pattern("String|Boolean|Char|Number.equals"), KOTLIN_EQUALS);
|
||||
|
||||
+1
-1
@@ -24,7 +24,7 @@ fun box(): String {
|
||||
val ok2 = Simple.valueOf("OK")
|
||||
if (!ok2.equals(ok)) return "ok2 not equal ok"
|
||||
if (ok2.hashCode() != ok.hashCode()) return "hash(ok2) not equal hash(ok)"
|
||||
if (!ok2.identityEquals(ok)) return "ok2 not identity equal ok"
|
||||
if (ok2 !== ok) return "ok2 not identity equal ok"
|
||||
|
||||
|
||||
if (EmptyEnum.values().size != 0) return "EmptyEnum.values().size != 0"
|
||||
|
||||
@@ -5,13 +5,13 @@ public fun hashCode(): Int = 0
|
||||
public fun toString(): String = ""
|
||||
|
||||
public class PublicClass {
|
||||
override fun equals(a: Any?): Boolean = this.identityEquals(a)
|
||||
override fun equals(a: Any?): Boolean = this === a
|
||||
override fun hashCode(): Int = 0
|
||||
override fun toString(): String = "PublicClass"
|
||||
}
|
||||
|
||||
internal class InternalClass {
|
||||
override fun equals(a: Any?): Boolean = this.identityEquals(a)
|
||||
override fun equals(a: Any?): Boolean = this === a
|
||||
override fun hashCode(): Int = 1
|
||||
override fun toString(): String = "InternalClass"
|
||||
|
||||
@@ -22,7 +22,7 @@ internal class InternalClass {
|
||||
}
|
||||
|
||||
private class PrivateClass {
|
||||
override fun equals(a: Any?): Boolean = this.identityEquals(a)
|
||||
override fun equals(a: Any?): Boolean = this === a
|
||||
override fun hashCode(): Int = 2
|
||||
override fun toString(): String = "InternalClass"
|
||||
|
||||
|
||||
+8
-8
@@ -5,17 +5,17 @@ class X
|
||||
fun box(): String {
|
||||
val a = X()
|
||||
val b = X()
|
||||
if (!a.identityEquals(a)) return "a !== a"
|
||||
if (a.identityEquals(b)) return "X() === X()"
|
||||
if (a !== a) return "a !== a"
|
||||
if (a === b) return "X() === X()"
|
||||
val c = a
|
||||
if (!c.identityEquals(a)) return "c = a; c !== a"
|
||||
if (c !== a) return "c = a; c !== a"
|
||||
|
||||
if (X().identityEquals(a)) return "X() identityEquals a"
|
||||
if (X() === a) return "X() === a"
|
||||
|
||||
val t = !(X().identityEquals(a))
|
||||
if (!t) return "t = !(X() identityEquals a); t == false"
|
||||
val t = !(X() === a)
|
||||
if (!t) return "t = !(X() === a); t == false"
|
||||
|
||||
val f = !!(X().identityEquals(a))
|
||||
if (f) return "f = !!(X() identityEquals null); f == true"
|
||||
val f = !!(X() === a)
|
||||
if (f) return "f = !!(X() === null); f == true"
|
||||
return "OK";
|
||||
}
|
||||
Vendored
+6
-6
@@ -1,13 +1,13 @@
|
||||
package foo
|
||||
|
||||
fun box(): String {
|
||||
if (!null.identityEquals(null)) return "null !== null"
|
||||
if (!("ab".identityEquals("ab"))) return "ab !== ab"
|
||||
if (("ab".identityEquals("a"))) return "ab === a"
|
||||
if (null !== null) return "null !== null"
|
||||
if (!("ab" === "ab")) return "ab !== ab"
|
||||
if ("ab" === "a") return "ab === a"
|
||||
|
||||
if ("0".identityEquals(0)) return "'0' === 0"
|
||||
if (!(0.identityEquals(0))) return "0 !== 0"
|
||||
if (0.identityEquals(1)) return "0 === 1"
|
||||
if ("0" as Any === 0) return "'0' === 0"
|
||||
if (!(0 === 0)) return "0 !== 0"
|
||||
if (0 === 1) return "0 === 1"
|
||||
|
||||
|
||||
return "OK";
|
||||
|
||||
@@ -17,7 +17,7 @@ fun String.myHashCode(): Int {
|
||||
class Foo(val name: String) {
|
||||
override fun equals(other: Any?): Boolean {
|
||||
if (other is Foo) return name == other.name
|
||||
return this.identityEquals(other)
|
||||
return this === other
|
||||
}
|
||||
override fun hashCode(): Int = name.myHashCode()
|
||||
override fun toString(): String = "Foo($name)"
|
||||
|
||||
@@ -3,11 +3,11 @@ package foo
|
||||
class A
|
||||
|
||||
inline fun compare1(a: A): Boolean {
|
||||
return a.identityEquals(a)
|
||||
return a === a
|
||||
}
|
||||
|
||||
inline fun compare2(a1: A, a2: A): Boolean {
|
||||
return a1.identityEquals(a2)
|
||||
return a1 === a2
|
||||
}
|
||||
|
||||
fun box(): String {
|
||||
|
||||
Reference in New Issue
Block a user