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
|
package org.jetbrains.kotlin.idea.core.overrideImplement
|
||||||
|
|
||||||
import com.intellij.openapi.project.Project
|
import com.intellij.openapi.project.Project
|
||||||
import org.jetbrains.kotlin.descriptors.CallableMemberDescriptor
|
import org.jetbrains.kotlin.descriptors.*
|
||||||
import org.jetbrains.kotlin.descriptors.ClassDescriptor
|
|
||||||
import org.jetbrains.kotlin.descriptors.ClassKind
|
|
||||||
import org.jetbrains.kotlin.descriptors.Modality
|
|
||||||
import java.util.ArrayList
|
import java.util.ArrayList
|
||||||
import java.util.LinkedHashMap
|
import java.util.LinkedHashMap
|
||||||
|
|
||||||
@@ -31,7 +28,7 @@ public class OverrideMethodsHandler : OverrideImplementMethodsHandler() {
|
|||||||
if (member is CallableMemberDescriptor
|
if (member is CallableMemberDescriptor
|
||||||
&& (member.kind == CallableMemberDescriptor.Kind.FAKE_OVERRIDE || member.kind == CallableMemberDescriptor.Kind.DELEGATION)) {
|
&& (member.kind == CallableMemberDescriptor.Kind.FAKE_OVERRIDE || member.kind == CallableMemberDescriptor.Kind.DELEGATION)) {
|
||||||
val overridden = member.overriddenDescriptors
|
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>>()
|
val realSuperToImmediates = LinkedHashMap<CallableMemberDescriptor, MutableCollection<CallableMemberDescriptor>>()
|
||||||
for (immediateSuper in overridden) {
|
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)
|
doDirectoryTest(OverrideMethodsHandler(), memberToImplement)
|
||||||
}
|
}
|
||||||
|
|
||||||
|
protected fun doMultiOverrideDirectoryTest() {
|
||||||
|
doMultiDirectoryTest(OverrideMethodsHandler())
|
||||||
|
}
|
||||||
|
|
||||||
protected fun doImplementJavaDirectoryTest(className: String, methodName: String) {
|
protected fun doImplementJavaDirectoryTest(className: String, methodName: String) {
|
||||||
myFixture.copyDirectoryToProject(getTestName(true), "")
|
myFixture.copyDirectoryToProject(getTestName(true), "")
|
||||||
myFixture.configureFromTempProjectFile("foo/JavaClass.java")
|
myFixture.configureFromTempProjectFile("foo/JavaClass.java")
|
||||||
@@ -110,6 +114,13 @@ public abstract class AbstractOverrideImplementTest : JetLightCodeInsightFixture
|
|||||||
checkResultByFile(getTestName(true) + "/foo/Impl.kt.after")
|
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?) {
|
private fun doOverrideImplement(handler: OverrideImplementMethodsHandler, memberToOverride: String?) {
|
||||||
val elementAtCaret = myFixture.file.findElementAt(myFixture.editor.caretModel.offset)
|
val elementAtCaret = myFixture.file.findElementAt(myFixture.editor.caretModel.offset)
|
||||||
val classOrObject = PsiTreeUtil.getParentOfType(elementAtCaret, javaClass<JetClassOrObject>())
|
val classOrObject = PsiTreeUtil.getParentOfType(elementAtCaret, javaClass<JetClassOrObject>())
|
||||||
|
|||||||
@@ -151,6 +151,10 @@ public final class OverrideImplementTest extends AbstractOverrideImplementTest {
|
|||||||
doOverrideDirectoryTest("getFooBar");
|
doOverrideDirectoryTest("getFooBar");
|
||||||
}
|
}
|
||||||
|
|
||||||
|
public void testPrivateJavaMethod() {
|
||||||
|
doMultiOverrideDirectoryTest();
|
||||||
|
}
|
||||||
|
|
||||||
public void testInheritVisibilities() {
|
public void testInheritVisibilities() {
|
||||||
doMultiOverrideFileTest();
|
doMultiOverrideFileTest();
|
||||||
}
|
}
|
||||||
|
|||||||
Reference in New Issue
Block a user