From ca19ea820520bfb4423a641dd2fedf3756b0f17b Mon Sep 17 00:00:00 2001 From: Nicolay Mitropolsky Date: Thu, 15 Jun 2017 14:23:00 +0300 Subject: [PATCH] `KotlinSpringClassAnnotator` ignores duplicate gutter handlers (IDEA-173995, KT-18298) --- .../lineMarking/KotlinSpringClassAnnotator.kt | 14 ++++++++++++++ 1 file changed, 14 insertions(+) diff --git a/ultimate/src/org/jetbrains/kotlin/idea/spring/lineMarking/KotlinSpringClassAnnotator.kt b/ultimate/src/org/jetbrains/kotlin/idea/spring/lineMarking/KotlinSpringClassAnnotator.kt index ff9e2558e6c..0db285999f4 100644 --- a/ultimate/src/org/jetbrains/kotlin/idea/spring/lineMarking/KotlinSpringClassAnnotator.kt +++ b/ultimate/src/org/jetbrains/kotlin/idea/spring/lineMarking/KotlinSpringClassAnnotator.kt @@ -16,6 +16,7 @@ package org.jetbrains.kotlin.idea.spring.lineMarking +import com.intellij.codeInsight.daemon.GutterIconNavigationHandler import com.intellij.codeInsight.daemon.LineMarkerInfo import com.intellij.codeInsight.daemon.RelatedItemLineMarkerInfo import com.intellij.navigation.GotoRelatedItem @@ -105,6 +106,7 @@ class KotlinSpringClassAnnotator : SpringClassAnnotator() { else -> return@mapNotNullTo item } if (elementToAnnotate == null) return@mapNotNullTo null + if (alreadyMarked(result, elementToAnnotate, item.navigationHandler)) return@mapNotNullTo null @Suppress("UNCHECKED_CAST") RelatedItemLineMarkerInfo( @@ -119,4 +121,16 @@ class KotlinSpringClassAnnotator : SpringClassAnnotator() { ) } } + + private fun alreadyMarked(result: MutableCollection>, + elementToAnnotate: PsiElement, + navigationHandler: GutterIconNavigationHandler<*>?) = + result.any { + when (it) { + is RelatedItemLineMarkerInfo<*> -> { + it.element == elementToAnnotate && it.navigationHandler == navigationHandler + } + else -> false + } + } } \ No newline at end of file