KT-2819 Duplicate toString() method generated in data class
#KT-2819 Fixed
This commit is contained in:
@@ -0,0 +1,8 @@
|
||||
data class A(val x: Int) {
|
||||
fun equals(other: Any?): Boolean = false
|
||||
}
|
||||
|
||||
fun box(): String {
|
||||
val a = A(0)
|
||||
return if (a equals a) "fail" else "OK"
|
||||
}
|
||||
@@ -0,0 +1,38 @@
|
||||
data class A(val x: Int) {
|
||||
fun equals(other: Any): Boolean = false
|
||||
}
|
||||
|
||||
data class B(val x: Int) {
|
||||
fun equals(other: B): Boolean = false
|
||||
}
|
||||
|
||||
data class C(val x: Int) {
|
||||
fun equals(): Boolean = false
|
||||
}
|
||||
|
||||
data class D(val x: Int) {
|
||||
fun equals(other: Any?, another: String): Boolean = false
|
||||
}
|
||||
|
||||
data class E(val x: Int) {
|
||||
fun equals(x: E): Boolean = false
|
||||
fun equals(x: Any?): Boolean = false
|
||||
}
|
||||
|
||||
fun box(): String {
|
||||
javaClass<A>().getDeclaredMethod("equals", javaClass<Any>())
|
||||
|
||||
javaClass<B>().getDeclaredMethod("equals", javaClass<Any>())
|
||||
javaClass<B>().getDeclaredMethod("equals", javaClass<B>())
|
||||
|
||||
javaClass<C>().getDeclaredMethod("equals", javaClass<Any>())
|
||||
javaClass<C>().getDeclaredMethod("equals")
|
||||
|
||||
javaClass<D>().getDeclaredMethod("equals", javaClass<Any>())
|
||||
javaClass<D>().getDeclaredMethod("equals", javaClass<Any>(), javaClass<String>())
|
||||
|
||||
javaClass<E>().getDeclaredMethod("equals", javaClass<Any>())
|
||||
javaClass<E>().getDeclaredMethod("equals", javaClass<E>())
|
||||
|
||||
return "OK"
|
||||
}
|
||||
@@ -0,0 +1,7 @@
|
||||
data class A(val x: Int) {
|
||||
fun hashCode(): Int = -3
|
||||
}
|
||||
|
||||
fun box(): String {
|
||||
return if (A(0).hashCode() == -3) "OK" else "fail"
|
||||
}
|
||||
@@ -0,0 +1,17 @@
|
||||
data class A(val x: Int) {
|
||||
fun hashCode(other: Any): Int = 0
|
||||
}
|
||||
|
||||
data class B(val x: Int) {
|
||||
fun hashCode(other: B, another: Any): Int = 0
|
||||
}
|
||||
|
||||
fun box(): String {
|
||||
javaClass<A>().getDeclaredMethod("hashCode")
|
||||
javaClass<A>().getDeclaredMethod("hashCode", javaClass<Any>())
|
||||
|
||||
javaClass<B>().getDeclaredMethod("hashCode")
|
||||
javaClass<B>().getDeclaredMethod("hashCode", javaClass<B>(), javaClass<Any>())
|
||||
|
||||
return "OK"
|
||||
}
|
||||
@@ -0,0 +1,7 @@
|
||||
data class A(val x: Int) {
|
||||
fun toString(): String = "!"
|
||||
}
|
||||
|
||||
fun box(): String {
|
||||
return if (A(0).toString() == "!") "OK" else "fail"
|
||||
}
|
||||
@@ -0,0 +1,17 @@
|
||||
data class A(val x: Int) {
|
||||
fun toString(other: Any): String = ""
|
||||
}
|
||||
|
||||
data class B(val x: Int) {
|
||||
fun toString(other: B, another: Any): String = ""
|
||||
}
|
||||
|
||||
fun box(): String {
|
||||
javaClass<A>().getDeclaredMethod("toString")
|
||||
javaClass<A>().getDeclaredMethod("toString", javaClass<Any>())
|
||||
|
||||
javaClass<B>().getDeclaredMethod("toString")
|
||||
javaClass<B>().getDeclaredMethod("toString", javaClass<B>(), javaClass<Any>())
|
||||
|
||||
return "OK"
|
||||
}
|
||||
Reference in New Issue
Block a user