Stabilized order of methods inherited by delegation.
This commit is contained in:
@@ -23,6 +23,8 @@ import kotlin.platform.platformStatic
|
||||
import org.jetbrains.jet.lang.descriptors.CallableDescriptor
|
||||
import org.jetbrains.jet.utils.keysToMapExceptNulls
|
||||
import org.jetbrains.jet.lang.resolve.DescriptorUtils
|
||||
import org.jetbrains.jet.lang.resolve.MemberComparator
|
||||
import java.util.Comparator
|
||||
|
||||
public object CodegenUtilKt {
|
||||
|
||||
@@ -40,6 +42,8 @@ public object CodegenUtilKt {
|
||||
return descriptor.getDefaultType().getMemberScope().getAllDescriptors().stream()
|
||||
.filterIsInstance(javaClass<CallableMemberDescriptor>())
|
||||
.filter { it.getKind() == CallableMemberDescriptor.Kind.DELEGATION }
|
||||
.toList()
|
||||
.sortBy(MemberComparator.INSTANCE as Comparator<CallableMemberDescriptor>) // Workaround for KT-6030
|
||||
.keysToMapExceptNulls {
|
||||
delegatingMember ->
|
||||
|
||||
|
||||
@@ -25,6 +25,29 @@ import java.util.ArrayList
|
||||
import junit.framework.TestCase
|
||||
|
||||
public class MethodOrderTest: CodegenTestCase() {
|
||||
public fun testDelegatedMethod() {
|
||||
doTest(
|
||||
"""
|
||||
trait Trait {
|
||||
fun f0()
|
||||
fun f4()
|
||||
fun f3()
|
||||
fun f2()
|
||||
fun f1()
|
||||
fun f5()
|
||||
}
|
||||
|
||||
val delegate: Trait = throw Error()
|
||||
|
||||
val obj = object : Trait by delegate {
|
||||
override fun f3() { }
|
||||
}
|
||||
""",
|
||||
"\$obj$1",
|
||||
listOf("<clinit>()V", "f3()V", "<init>()V", "f0()V", "f1()V", "f2()V", "f4()V", "f5()V")
|
||||
)
|
||||
}
|
||||
|
||||
public fun testLambdaClosureOrdering() {
|
||||
doTest(
|
||||
"""
|
||||
|
||||
Reference in New Issue
Block a user