diff --git a/js/js.tests/test/org/jetbrains/k2js/test/semantics/EqualsTest.java b/js/js.tests/test/org/jetbrains/k2js/test/semantics/EqualsTest.java index 7c78890e80d..7ebe4de9adf 100644 --- a/js/js.tests/test/org/jetbrains/k2js/test/semantics/EqualsTest.java +++ b/js/js.tests/test/org/jetbrains/k2js/test/semantics/EqualsTest.java @@ -22,6 +22,10 @@ public final class EqualsTest extends AbstractExpressionTest { super("equals/"); } + public void TODO_testCustomEqualsMethodOnAny() throws Exception { + fooBoxTest(); + } + public void testCustomEqualsMethod() throws Exception { fooBoxTest(); } diff --git a/js/js.translator/testFiles/expression/equals/cases/customEqualsMethod.kt b/js/js.translator/testFiles/expression/equals/cases/customEqualsMethod.kt index 4dae1afc721..595520c16a9 100644 --- a/js/js.translator/testFiles/expression/equals/cases/customEqualsMethod.kt +++ b/js/js.translator/testFiles/expression/equals/cases/customEqualsMethod.kt @@ -9,13 +9,16 @@ class Foo(val name: String) { } } +fun callEqualsMethod(v1: Foo?, v2: Foo?): Boolean { + return v1 == v2 +} + fun box() : Boolean { val a = Foo("abc") val b = Foo("abc") val c = Foo("def") - if (a != b) return false - if (a == c) return false - + if (!callEqualsMethod(a, b)) return false + if (callEqualsMethod(a, c)) return false return true } \ No newline at end of file diff --git a/js/js.translator/testFiles/expression/equals/cases/customEqualsMethodOnAny.kt b/js/js.translator/testFiles/expression/equals/cases/customEqualsMethodOnAny.kt new file mode 100644 index 00000000000..8146c2b3cdb --- /dev/null +++ b/js/js.translator/testFiles/expression/equals/cases/customEqualsMethodOnAny.kt @@ -0,0 +1,24 @@ +package foo + +class Foo(val name: String) { + public fun equals(that: Any?): Boolean { + if (that !is Foo) { + return false + } + return this.name == that.name + } +} + +fun callEqualsMethod(v1: Any?, v2: Any?): Boolean { + return v1 == v2 +} + +fun box() : Boolean { + val a = Foo("abc") + val b = Foo("abc") + val c = Foo("def") + + if (!callEqualsMethod(a, b)) return false + if (callEqualsMethod(a, c)) return false + return true +} \ No newline at end of file