From baa43a2a55056b396e059bf0f6b0ac9a126f6bb4 Mon Sep 17 00:00:00 2001 From: Dmitry Jemerov Date: Tue, 9 May 2017 10:05:39 +0200 Subject: [PATCH] Show line markers for sealed classes #KT-16755 Fixed --- .../idea/highlighter/markers/KotlinLineMarkerProvider.kt | 6 +++--- .../lineMarker/overrideImplement/SealedClass.kt | 9 +++++++++ .../idea/codeInsight/LineMarkersTestGenerated.java | 6 ++++++ 3 files changed, 18 insertions(+), 3 deletions(-) create mode 100644 idea/testData/codeInsight/lineMarker/overrideImplement/SealedClass.kt diff --git a/idea/src/org/jetbrains/kotlin/idea/highlighter/markers/KotlinLineMarkerProvider.kt b/idea/src/org/jetbrains/kotlin/idea/highlighter/markers/KotlinLineMarkerProvider.kt index 41a3fda3776..ab5543f0c09 100644 --- a/idea/src/org/jetbrains/kotlin/idea/highlighter/markers/KotlinLineMarkerProvider.kt +++ b/idea/src/org/jetbrains/kotlin/idea/highlighter/markers/KotlinLineMarkerProvider.kt @@ -45,6 +45,7 @@ import org.jetbrains.kotlin.idea.highlighter.allImplementingCompatibleModules import org.jetbrains.kotlin.idea.util.ProjectRootsUtil import org.jetbrains.kotlin.lexer.KtTokens import org.jetbrains.kotlin.psi.* +import org.jetbrains.kotlin.psi.psiUtil.isInheritable import org.jetbrains.kotlin.psi.psiUtil.isOverridable import java.awt.event.MouseEvent import java.util.* @@ -227,8 +228,7 @@ private fun collectSuperDeclarationMarkers(declaration: KtDeclaration, result: M } private fun collectInheritedClassMarker(element: KtClass, result: MutableCollection>) { - val isTrait = element.isInterface() - if (!(isTrait || element.hasModifier(KtTokens.OPEN_KEYWORD) || element.hasModifier(KtTokens.ABSTRACT_KEYWORD))) { + if (!element.isInheritable()) { return } @@ -241,7 +241,7 @@ private fun collectInheritedClassMarker(element: KtClass, result: MutableCollect result.add(LineMarkerInfo( anchor, anchor.textRange, - if (isTrait) IMPLEMENTED_MARK else OVERRIDDEN_MARK, + if (element.isInterface()) IMPLEMENTED_MARK else OVERRIDDEN_MARK, Pass.LINE_MARKERS, SUBCLASSED_CLASS.tooltip, SUBCLASSED_CLASS.navigationHandler, diff --git a/idea/testData/codeInsight/lineMarker/overrideImplement/SealedClass.kt b/idea/testData/codeInsight/lineMarker/overrideImplement/SealedClass.kt new file mode 100644 index 00000000000..5d152511c3a --- /dev/null +++ b/idea/testData/codeInsight/lineMarker/overrideImplement/SealedClass.kt @@ -0,0 +1,9 @@ +sealed class A { + open fun a(){ + } +} + +class B:A(){ + override fun a(){ + } +} \ No newline at end of file diff --git a/idea/tests/org/jetbrains/kotlin/idea/codeInsight/LineMarkersTestGenerated.java b/idea/tests/org/jetbrains/kotlin/idea/codeInsight/LineMarkersTestGenerated.java index 9aaa3057393..e37aa5cdf4b 100644 --- a/idea/tests/org/jetbrains/kotlin/idea/codeInsight/LineMarkersTestGenerated.java +++ b/idea/tests/org/jetbrains/kotlin/idea/codeInsight/LineMarkersTestGenerated.java @@ -182,6 +182,12 @@ public class LineMarkersTestGenerated extends AbstractLineMarkersTest { doTest(fileName); } + @TestMetadata("SealedClass.kt") + public void testSealedClass() throws Exception { + String fileName = KotlinTestUtils.navigationMetadata("idea/testData/codeInsight/lineMarker/overrideImplement/SealedClass.kt"); + doTest(fileName); + } + @TestMetadata("ToStringInTrait.kt") public void testToStringInTrait() throws Exception { String fileName = KotlinTestUtils.navigationMetadata("idea/testData/codeInsight/lineMarker/overrideImplement/ToStringInTrait.kt");