diff --git a/idea/src/org/jetbrains/jet/plugin/highlighter/JetLineMarkerProvider.java b/idea/src/org/jetbrains/jet/plugin/highlighter/JetLineMarkerProvider.java
index 22544bde493..06a8e68168b 100644
--- a/idea/src/org/jetbrains/jet/plugin/highlighter/JetLineMarkerProvider.java
+++ b/idea/src/org/jetbrains/jet/plugin/highlighter/JetLineMarkerProvider.java
@@ -227,8 +227,12 @@ public class JetLineMarkerProvider implements LineMarkerProvider {
if (declaration.hasModifier(JetTokens.ABSTRACT_KEYWORD)) return true;
PsiElement parent = declaration.getParent();
+ parent = (parent instanceof JetClassBody) ? parent.getParent() : parent;
+
if (parent instanceof JetClass) {
- return ((JetClass) parent).isTrait();
+ return ((JetClass) parent).isTrait() &&
+ (!(declaration instanceof JetDeclarationWithBody) || !((JetDeclarationWithBody)declaration).hasBody()) &&
+ (!(declaration instanceof JetWithExpressionInitializer) || !((JetWithExpressionInitializer)declaration).hasInitializer());
}
return false;
diff --git a/idea/testData/codeInsight/lineMarker/FakeOverrideForClasses.kt b/idea/testData/codeInsight/lineMarker/FakeOverrideForClasses.kt
index 848bf691e33..49f35fcc94f 100644
--- a/idea/testData/codeInsight/lineMarker/FakeOverrideForClasses.kt
+++ b/idea/testData/codeInsight/lineMarker/FakeOverrideForClasses.kt
@@ -3,9 +3,9 @@ package sample
trait S {
fun foo(t: T): T
- val some: T? get
+ val some: T? get
- var other: T?
+ var other: T?
get
set
}
diff --git a/idea/testData/codeInsight/lineMarker/FakeOverridesForTraitFunWithImpl.kt b/idea/testData/codeInsight/lineMarker/FakeOverridesForTraitFunWithImpl.kt
index bb42b7011d0..005b55efd75 100644
--- a/idea/testData/codeInsight/lineMarker/FakeOverridesForTraitFunWithImpl.kt
+++ b/idea/testData/codeInsight/lineMarker/FakeOverridesForTraitFunWithImpl.kt
@@ -2,10 +2,10 @@ trait A {
fun foo(): String = "A"
// TODO: B shoudn't be mentioned
- val some: String? get() = null
+ val some: String? get() = null
// TODO: B shoudn't be mentioned
- var other: String?
+ var other: String?
get() = null
set(value) {}
}
diff --git a/idea/testData/codeInsight/lineMarker/OverridenTraitDeclarations.kt b/idea/testData/codeInsight/lineMarker/OverridenTraitDeclarations.kt
new file mode 100644
index 00000000000..a6a502a3b64
--- /dev/null
+++ b/idea/testData/codeInsight/lineMarker/OverridenTraitDeclarations.kt
@@ -0,0 +1,15 @@
+// TODO: Declarations have no implementation and should be considered as "overloaded"
+trait First {
+ val some: Int
+ var other: String
+ get
+ set
+
+ fun foo()
+}
+
+trait Second : First {
+ override val some: Int
+ override var other: String
+ override fun foo()
+}
\ No newline at end of file
diff --git a/idea/tests/org/jetbrains/jet/plugin/codeInsight/LineMarkersTestGenerated.java b/idea/tests/org/jetbrains/jet/plugin/codeInsight/LineMarkersTestGenerated.java
index cadbe8835da..cb620023f97 100644
--- a/idea/tests/org/jetbrains/jet/plugin/codeInsight/LineMarkersTestGenerated.java
+++ b/idea/tests/org/jetbrains/jet/plugin/codeInsight/LineMarkersTestGenerated.java
@@ -128,6 +128,12 @@ public class LineMarkersTestGenerated extends AbstractLineMarkersTest {
doTest(fileName);
}
+ @TestMetadata("OverridenTraitDeclarations.kt")
+ public void testOverridenTraitDeclarations() throws Exception {
+ String fileName = JetTestUtils.navigationMetadata("idea/testData/codeInsight/lineMarker/OverridenTraitDeclarations.kt");
+ doTest(fileName);
+ }
+
@TestMetadata("OverridingTooltipOnDefaultTraitImpl.kt")
public void testOverridingTooltipOnDefaultTraitImpl() throws Exception {
String fileName = JetTestUtils.navigationMetadata("idea/testData/codeInsight/lineMarker/OverridingTooltipOnDefaultTraitImpl.kt");