Fix invalid usage of getOverriddenDescriptors in JetLineMarkerProvider
This commit is contained in:
@@ -70,6 +70,8 @@ import javax.swing.*;
|
||||
import java.awt.event.MouseEvent;
|
||||
import java.util.*;
|
||||
|
||||
import static org.jetbrains.jet.lang.resolve.BindingContextUtils.getDirectlyOverriddenDeclarations;
|
||||
|
||||
public class JetLineMarkerProvider implements LineMarkerProvider {
|
||||
public static final Icon OVERRIDING_MARK = AllIcons.Gutter.OverridingMethod;
|
||||
public static final Icon IMPLEMENTING_MARK = AllIcons.Gutter.ImplementingMethod;
|
||||
@@ -245,7 +247,8 @@ public class JetLineMarkerProvider implements LineMarkerProvider {
|
||||
return null;
|
||||
}
|
||||
|
||||
Set<? extends CallableMemberDescriptor> overriddenMembers = ((CallableMemberDescriptor)descriptor).getOverriddenDescriptors();
|
||||
Set<? extends CallableMemberDescriptor> overriddenMembers = getDirectlyOverriddenDeclarations(
|
||||
(CallableMemberDescriptor) descriptor);
|
||||
if (overriddenMembers.size() == 0) {
|
||||
return null;
|
||||
}
|
||||
@@ -287,7 +290,7 @@ public class JetLineMarkerProvider implements LineMarkerProvider {
|
||||
return;
|
||||
}
|
||||
|
||||
Set<? extends CallableMemberDescriptor> overriddenMembers = ((CallableMemberDescriptor)descriptor).getOverriddenDescriptors();
|
||||
Set<CallableMemberDescriptor> overriddenMembers = getDirectlyOverriddenDeclarations((CallableMemberDescriptor) descriptor);
|
||||
if (overriddenMembers.size() == 0) {
|
||||
return;
|
||||
}
|
||||
@@ -331,7 +334,7 @@ public class JetLineMarkerProvider implements LineMarkerProvider {
|
||||
return "";
|
||||
}
|
||||
|
||||
Set<? extends CallableMemberDescriptor> overriddenMembers = ((CallableMemberDescriptor)descriptor).getOverriddenDescriptors();
|
||||
Set<CallableMemberDescriptor> overriddenMembers = getDirectlyOverriddenDeclarations((CallableMemberDescriptor) descriptor);
|
||||
if (overriddenMembers.size() == 0) {
|
||||
return "";
|
||||
}
|
||||
|
||||
@@ -0,0 +1,13 @@
|
||||
trait <lineMarker></lineMarker>A {
|
||||
fun <lineMarker></lineMarker>f() {
|
||||
}
|
||||
}
|
||||
|
||||
trait <lineMarker></lineMarker>B : A
|
||||
|
||||
open class <lineMarker></lineMarker>C(b : B) : B by b, A {
|
||||
}
|
||||
|
||||
class D(b : B) : C(b) {
|
||||
override fun <lineMarker descr="<b>internal</b> <b>open</b> <b>fun</b> f(): jet.Unit <i>defined in</i> D<br/>overrides<br/><b>internal</b> <b>open</b> <b>fun</b> f(): jet.Unit <i>defined in</i> A"></lineMarker>f() {}
|
||||
}
|
||||
@@ -0,0 +1,13 @@
|
||||
trait <lineMarker></lineMarker>A {
|
||||
val <lineMarker></lineMarker>f: Int
|
||||
get() = 3
|
||||
}
|
||||
|
||||
trait <lineMarker></lineMarker>B : A
|
||||
|
||||
open class <lineMarker></lineMarker>C(b : B) : B by b, A {
|
||||
}
|
||||
|
||||
class D(b : B) : C(b) {
|
||||
override val <lineMarker descr="<b>internal</b> <b>open</b> <b>val</b> f: jet.Int <i>defined in</i> D<br/>overrides<br/><b>internal</b> <b>open</b> <b>val</b> f: jet.Int <i>defined in</i> A"></lineMarker>f: Int = 2
|
||||
}
|
||||
@@ -0,0 +1,11 @@
|
||||
trait <lineMarker></lineMarker>A {
|
||||
fun <lineMarker></lineMarker>f() {}
|
||||
}
|
||||
|
||||
trait <lineMarker></lineMarker>B : A
|
||||
|
||||
trait <lineMarker></lineMarker>C : B, A
|
||||
|
||||
class SomeClass() : C {
|
||||
override fun <lineMarker descr="<b>internal</b> <b>open</b> <b>fun</b> f(): jet.Unit <i>defined in</i> SomeClass<br/>overrides<br/><b>internal</b> <b>open</b> <b>fun</b> f(): jet.Unit <i>defined in</i> A"></lineMarker>f() {}
|
||||
}
|
||||
@@ -0,0 +1,13 @@
|
||||
trait <lineMarker></lineMarker>A {
|
||||
fun <lineMarker></lineMarker><lineMarker></lineMarker>f() {}
|
||||
}
|
||||
|
||||
trait <lineMarker></lineMarker>B : A {
|
||||
override fun <lineMarker></lineMarker>f() {}
|
||||
}
|
||||
|
||||
trait <lineMarker></lineMarker>C : B, A
|
||||
|
||||
class SomeClass() : C {
|
||||
override fun <lineMarker descr="<b>internal</b> <b>open</b> <b>fun</b> f(): jet.Unit <i>defined in</i> SomeClass<br/>overrides<br/><b>internal</b> <b>open</b> <b>fun</b> f(): jet.Unit <i>defined in</i> B"></lineMarker>f() {}
|
||||
}
|
||||
@@ -0,0 +1,12 @@
|
||||
trait <lineMarker></lineMarker>A {
|
||||
val <lineMarker></lineMarker>f: Int
|
||||
get() = 2
|
||||
}
|
||||
|
||||
trait <lineMarker></lineMarker>B : A
|
||||
|
||||
trait <lineMarker></lineMarker>C : B, A
|
||||
|
||||
class SomeClass() : C {
|
||||
override val <lineMarker descr="<b>internal</b> <b>open</b> <b>val</b> f: jet.Int <i>defined in</i> SomeClass<br/>overrides<br/><b>internal</b> <b>open</b> <b>val</b> f: jet.Int <i>defined in</i> A"></lineMarker>f: Int = 4
|
||||
}
|
||||
@@ -49,6 +49,26 @@ public class OverrideImplementLineMarkerTest extends JetLightCodeInsightFixtureT
|
||||
doTest();
|
||||
}
|
||||
|
||||
public void testDelegatedFun() throws Exception {
|
||||
doTest();
|
||||
}
|
||||
|
||||
public void testFakeOverrideFun() throws Exception {
|
||||
doTest();
|
||||
}
|
||||
|
||||
public void testDelegatedProperty() throws Exception {
|
||||
doTest();
|
||||
}
|
||||
|
||||
public void testFakeOverrideProperty() throws Exception {
|
||||
doTest();
|
||||
}
|
||||
|
||||
public void testFakeOverrideFunWithMostRelevantImplementation() throws Exception {
|
||||
doTest();
|
||||
}
|
||||
|
||||
private void doTest() {
|
||||
try {
|
||||
myFixture.configureByFile(fileName());
|
||||
|
||||
Reference in New Issue
Block a user