Handle methods descriptor clash in data class
1. Extension functions declared in data classes are generated earlier by `generateMembersDeclaredInClassBody` 2. Extension functions fake override from parent class are generated earlier by `generateFakeOverrideMemberDeclarations` So it is safe to filter out extension functions inside `generateAdditionalMembersForDataClass` #KT-49715 #KT-51798
This commit is contained in:
committed by
Alexander Udalov
parent
4c461d7864
commit
24105139ea
@@ -0,0 +1,22 @@
|
||||
// IGNORE_BACKEND_FIR: JVM_IR
|
||||
// FIR status: [IR VALIDATION] Duplicate IR node: FUN GENERATED_DATA_CLASS_MEMBER name:toString
|
||||
// CHECK_BYTECODE_LISTING
|
||||
// WITH_STDLIB
|
||||
|
||||
import kotlin.test.*
|
||||
|
||||
interface A {
|
||||
fun Any.toString(): String = "hello"
|
||||
}
|
||||
|
||||
data class B(val x: Int) : A {
|
||||
fun Any.hi() = "hi"
|
||||
}
|
||||
|
||||
fun box(): String {
|
||||
val b = B(1)
|
||||
assertEquals("B(x=1)", b.toString())
|
||||
assertTrue(b == B(1))
|
||||
assertTrue(1.hashCode() == b.hashCode())
|
||||
return "OK"
|
||||
}
|
||||
Reference in New Issue
Block a user