diff --git a/idea/src/org/jetbrains/jet/plugin/highlighter/JetLineMarkerProvider.java b/idea/src/org/jetbrains/jet/plugin/highlighter/JetLineMarkerProvider.java index f046de1f9e6..95a78a08dfd 100644 --- a/idea/src/org/jetbrains/jet/plugin/highlighter/JetLineMarkerProvider.java +++ b/idea/src/org/jetbrains/jet/plugin/highlighter/JetLineMarkerProvider.java @@ -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 overriddenMembers = ((CallableMemberDescriptor)descriptor).getOverriddenDescriptors(); + Set overriddenMembers = getDirectlyOverriddenDeclarations( + (CallableMemberDescriptor) descriptor); if (overriddenMembers.size() == 0) { return null; } @@ -287,7 +290,7 @@ public class JetLineMarkerProvider implements LineMarkerProvider { return; } - Set overriddenMembers = ((CallableMemberDescriptor)descriptor).getOverriddenDescriptors(); + Set overriddenMembers = getDirectlyOverriddenDeclarations((CallableMemberDescriptor) descriptor); if (overriddenMembers.size() == 0) { return; } @@ -331,7 +334,7 @@ public class JetLineMarkerProvider implements LineMarkerProvider { return ""; } - Set overriddenMembers = ((CallableMemberDescriptor)descriptor).getOverriddenDescriptors(); + Set overriddenMembers = getDirectlyOverriddenDeclarations((CallableMemberDescriptor) descriptor); if (overriddenMembers.size() == 0) { return ""; } diff --git a/idea/testData/codeInsight/lineMarker/DelegatedFun.kt b/idea/testData/codeInsight/lineMarker/DelegatedFun.kt new file mode 100644 index 00000000000..c4b118febd8 --- /dev/null +++ b/idea/testData/codeInsight/lineMarker/DelegatedFun.kt @@ -0,0 +1,13 @@ +trait A { + fun f() { + } +} + +trait B : A + +open class C(b : B) : B by b, A { +} + +class D(b : B) : C(b) { + override fun f() {} +} \ No newline at end of file diff --git a/idea/testData/codeInsight/lineMarker/DelegatedProperty.kt b/idea/testData/codeInsight/lineMarker/DelegatedProperty.kt new file mode 100644 index 00000000000..a3428a629da --- /dev/null +++ b/idea/testData/codeInsight/lineMarker/DelegatedProperty.kt @@ -0,0 +1,13 @@ +trait A { + val f: Int + get() = 3 +} + +trait B : A + +open class C(b : B) : B by b, A { +} + +class D(b : B) : C(b) { + override val f: Int = 2 +} \ No newline at end of file diff --git a/idea/testData/codeInsight/lineMarker/FakeOverrideFun.kt b/idea/testData/codeInsight/lineMarker/FakeOverrideFun.kt new file mode 100644 index 00000000000..5b7732142f4 --- /dev/null +++ b/idea/testData/codeInsight/lineMarker/FakeOverrideFun.kt @@ -0,0 +1,11 @@ +trait A { + fun f() {} +} + +trait B : A + +trait C : B, A + +class SomeClass() : C { + override fun f() {} +} \ No newline at end of file diff --git a/idea/testData/codeInsight/lineMarker/FakeOverrideFunWithMostRelevantImplementation.kt b/idea/testData/codeInsight/lineMarker/FakeOverrideFunWithMostRelevantImplementation.kt new file mode 100644 index 00000000000..5e94fa40174 --- /dev/null +++ b/idea/testData/codeInsight/lineMarker/FakeOverrideFunWithMostRelevantImplementation.kt @@ -0,0 +1,13 @@ +trait A { + fun f() {} +} + +trait B : A { + override fun f() {} +} + +trait C : B, A + +class SomeClass() : C { + override fun f() {} +} \ No newline at end of file diff --git a/idea/testData/codeInsight/lineMarker/FakeOverrideProperty.kt b/idea/testData/codeInsight/lineMarker/FakeOverrideProperty.kt new file mode 100644 index 00000000000..e4fa8a0cadf --- /dev/null +++ b/idea/testData/codeInsight/lineMarker/FakeOverrideProperty.kt @@ -0,0 +1,12 @@ +trait A { + val f: Int + get() = 2 +} + +trait B : A + +trait C : B, A + +class SomeClass() : C { + override val f: Int = 4 +} \ No newline at end of file diff --git a/idea/tests/org/jetbrains/jet/plugin/codeInsight/OverrideImplementLineMarkerTest.java b/idea/tests/org/jetbrains/jet/plugin/codeInsight/OverrideImplementLineMarkerTest.java index c81b6d7ca84..e44cbbd43d0 100644 --- a/idea/tests/org/jetbrains/jet/plugin/codeInsight/OverrideImplementLineMarkerTest.java +++ b/idea/tests/org/jetbrains/jet/plugin/codeInsight/OverrideImplementLineMarkerTest.java @@ -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());