KT-8822 Override Members: do not show private members from java classes
#KT-8822 Fixed
This commit is contained in:
+2
-5
@@ -17,10 +17,7 @@
|
||||
package org.jetbrains.kotlin.idea.core.overrideImplement
|
||||
|
||||
import com.intellij.openapi.project.Project
|
||||
import org.jetbrains.kotlin.descriptors.CallableMemberDescriptor
|
||||
import org.jetbrains.kotlin.descriptors.ClassDescriptor
|
||||
import org.jetbrains.kotlin.descriptors.ClassKind
|
||||
import org.jetbrains.kotlin.descriptors.Modality
|
||||
import org.jetbrains.kotlin.descriptors.*
|
||||
import java.util.ArrayList
|
||||
import java.util.LinkedHashMap
|
||||
|
||||
@@ -31,7 +28,7 @@ public class OverrideMethodsHandler : OverrideImplementMethodsHandler() {
|
||||
if (member is CallableMemberDescriptor
|
||||
&& (member.kind == CallableMemberDescriptor.Kind.FAKE_OVERRIDE || member.kind == CallableMemberDescriptor.Kind.DELEGATION)) {
|
||||
val overridden = member.overriddenDescriptors
|
||||
if (overridden.any { it.modality == Modality.FINAL }) continue
|
||||
if (overridden.any { it.modality == Modality.FINAL || it.visibility.normalize() == Visibilities.PRIVATE }) continue
|
||||
|
||||
val realSuperToImmediates = LinkedHashMap<CallableMemberDescriptor, MutableCollection<CallableMemberDescriptor>>()
|
||||
for (immediateSuper in overridden) {
|
||||
|
||||
@@ -0,0 +1,5 @@
|
||||
public class A {
|
||||
public void x(){}
|
||||
private void y(){}
|
||||
private void z(){}
|
||||
}
|
||||
@@ -0,0 +1,7 @@
|
||||
interface I {
|
||||
fun z()
|
||||
}
|
||||
|
||||
class C : A(), I {
|
||||
<caret>
|
||||
}
|
||||
+25
@@ -0,0 +1,25 @@
|
||||
interface I {
|
||||
fun z()
|
||||
}
|
||||
|
||||
class C : A(), I {
|
||||
override fun equals(other: Any?): Boolean {
|
||||
<selection><caret>return super<A>.equals(other)</selection>
|
||||
}
|
||||
|
||||
override fun hashCode(): Int {
|
||||
return super<A>.hashCode()
|
||||
}
|
||||
|
||||
override fun toString(): String {
|
||||
return super<A>.toString()
|
||||
}
|
||||
|
||||
override fun x() {
|
||||
super<A>.x()
|
||||
}
|
||||
|
||||
override fun z() {
|
||||
throw UnsupportedOperationException()
|
||||
}
|
||||
}
|
||||
@@ -70,6 +70,10 @@ public abstract class AbstractOverrideImplementTest : JetLightCodeInsightFixture
|
||||
doDirectoryTest(OverrideMethodsHandler(), memberToImplement)
|
||||
}
|
||||
|
||||
protected fun doMultiOverrideDirectoryTest() {
|
||||
doMultiDirectoryTest(OverrideMethodsHandler())
|
||||
}
|
||||
|
||||
protected fun doImplementJavaDirectoryTest(className: String, methodName: String) {
|
||||
myFixture.copyDirectoryToProject(getTestName(true), "")
|
||||
myFixture.configureFromTempProjectFile("foo/JavaClass.java")
|
||||
@@ -110,6 +114,13 @@ public abstract class AbstractOverrideImplementTest : JetLightCodeInsightFixture
|
||||
checkResultByFile(getTestName(true) + "/foo/Impl.kt.after")
|
||||
}
|
||||
|
||||
private fun doMultiDirectoryTest(handler: OverrideImplementMethodsHandler) {
|
||||
myFixture.copyDirectoryToProject(getTestName(true), "")
|
||||
myFixture.configureFromTempProjectFile("foo/Impl.kt")
|
||||
doMultiOverrideImplement(handler)
|
||||
checkResultByFile(getTestName(true) + "/foo/Impl.kt.after")
|
||||
}
|
||||
|
||||
private fun doOverrideImplement(handler: OverrideImplementMethodsHandler, memberToOverride: String?) {
|
||||
val elementAtCaret = myFixture.file.findElementAt(myFixture.editor.caretModel.offset)
|
||||
val classOrObject = PsiTreeUtil.getParentOfType(elementAtCaret, javaClass<JetClassOrObject>())
|
||||
|
||||
@@ -151,6 +151,10 @@ public final class OverrideImplementTest extends AbstractOverrideImplementTest {
|
||||
doOverrideDirectoryTest("getFooBar");
|
||||
}
|
||||
|
||||
public void testPrivateJavaMethod() {
|
||||
doMultiOverrideDirectoryTest();
|
||||
}
|
||||
|
||||
public void testInheritVisibilities() {
|
||||
doMultiOverrideFileTest();
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user