Implement members: implement functions in the same order as within Java interface

#KT-31760 Fixed
This commit is contained in:
Toshiaki Kameyama
2020-04-17 15:49:57 +09:00
committed by Yan Zhulanow
parent 741ebeb7b8
commit 098469eb85
6 changed files with 55 additions and 1 deletions
@@ -75,7 +75,7 @@ class LazyJavaClassMemberScope(
override fun computeMemberIndex() = ClassDeclaredMemberIndex(jClass) { !it.isStatic }
override fun computeFunctionNames(kindFilter: DescriptorKindFilter, nameFilter: ((Name) -> Boolean)?) =
ownerDescriptor.typeConstructor.supertypes.flatMapTo(hashSetOf()) {
ownerDescriptor.typeConstructor.supertypes.flatMapTo(linkedSetOf()) {
it.memberScope.getFunctionNames()
}.apply {
addAll(declaredMemberIndex().getMethodNames())
@@ -0,0 +1,4 @@
package foo
class <caret>Impl : TestJavaInterface {
}
@@ -0,0 +1,27 @@
package foo
class Impl : TestJavaInterface {
override fun onTextEvent() {
TODO("Not yet implemented")
}
override fun onAttachmentEvent() {
TODO("Not yet implemented")
}
override fun onEventDeleted() {
TODO("Not yet implemented")
}
override fun onSeenReceipt() {
TODO("Not yet implemented")
}
override fun onDeliveredReceipt() {
TODO("Not yet implemented")
}
override fun onTypingEvent() {
TODO("Not yet implemented")
}
}
@@ -0,0 +1,15 @@
package foo;
public interface TestJavaInterface {
void onTextEvent();
void onAttachmentEvent();
void onEventDeleted();
void onSeenReceipt();
void onDeliveredReceipt();
void onTypingEvent();
}
@@ -63,6 +63,10 @@ abstract class AbstractOverrideImplementTest : KotlinLightCodeInsightFixtureTest
doDirectoryTest(OverrideMembersHandler(), memberToImplement)
}
protected fun doMultiImplementDirectoryTest() {
doMultiDirectoryTest(ImplementMembersHandler())
}
protected fun doMultiOverrideDirectoryTest() {
doMultiDirectoryTest(OverrideMembersHandler())
}
@@ -45,6 +45,10 @@ class OverrideImplementTest : AbstractOverrideImplementTest() {
doImplementDirectoryTest()
}
fun testJavaInterfaceMethodInCorrectOrder() {
doMultiImplementDirectoryTest()
}
fun testJavaParameters() {
doImplementDirectoryTest()
}