From 5eadf4db1739a27a096c1a73a501054ad0cce653 Mon Sep 17 00:00:00 2001 From: Evgeny Gerashchenko Date: Fri, 17 Apr 2015 15:26:50 +0300 Subject: [PATCH] Minor. Moved stuff from companion object to top-level. --- .../markers/KotlinLineMarkerProvider.kt | 252 +++++++++--------- 1 file changed, 125 insertions(+), 127 deletions(-) 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 1cfe9bd5bda..cf573893116 100644 --- a/idea/src/org/jetbrains/kotlin/idea/highlighter/markers/KotlinLineMarkerProvider.kt +++ b/idea/src/org/jetbrains/kotlin/idea/highlighter/markers/KotlinLineMarkerProvider.kt @@ -78,145 +78,143 @@ public class KotlinLineMarkerProvider : LineMarkerProvider { collectOverridingAccessors(functions, result) collectOverridingPropertiesAccessors(properties, result) } +} - companion object { - public val OVERRIDING_MARK: Icon = AllIcons.Gutter.OverridingMethod - public val IMPLEMENTING_MARK: Icon = AllIcons.Gutter.ImplementingMethod - protected val OVERRIDDEN_MARK: Icon = AllIcons.Gutter.OverridenMethod - protected val IMPLEMENTED_MARK: Icon = AllIcons.Gutter.ImplementedMethod +private val OVERRIDING_MARK: Icon = AllIcons.Gutter.OverridingMethod +private val IMPLEMENTING_MARK: Icon = AllIcons.Gutter.ImplementingMethod +private val OVERRIDDEN_MARK: Icon = AllIcons.Gutter.OverridenMethod +private val IMPLEMENTED_MARK: Icon = AllIcons.Gutter.ImplementedMethod - private val SUBCLASSED_CLASS = MarkerType( - { getPsiClass(it)?.let { MarkerType.getSubclassedClassTooltip(it) } }, - object : LineMarkerNavigator() { - override fun browse(e: MouseEvent?, element: PsiElement?) { - getPsiClass(element)?.let { MarkerType.navigateToSubclassedClass(e, it) } - } - }) - - private val OVERRIDDEN_FUNCTION = MarkerType( - { getPsiMethod(it)?.let { getOverriddenMethodTooltip(it) } }, - object : LineMarkerNavigator() { - override fun browse(e: MouseEvent?, element: PsiElement?) { - getPsiMethod(element)?.let { navigateToOverriddenMethod(e, it) } - } - }) - - private val OVERRIDDEN_PROPERTY = MarkerType( - { it?.let { getOverriddenPropertyTooltip(it.getParent() as JetProperty) } }, - object : LineMarkerNavigator() { - override fun browse(e: MouseEvent?, element: PsiElement?) { - element?.let { navigateToPropertyOverriddenDeclarations(e, it.getParent() as JetProperty) } - } - }) - - private fun isImplementsAndNotOverrides(descriptor: CallableMemberDescriptor, overriddenMembers: Collection): Boolean { - return descriptor.getModality() != Modality.ABSTRACT && overriddenMembers.all { it.getModality() == Modality.ABSTRACT } - } - - private fun collectSuperDeclarationMarkers(declaration: JetDeclaration, result: MutableCollection>) { - assert((declaration is JetNamedFunction || declaration is JetProperty)) - - if (!declaration.hasModifier(JetTokens.OVERRIDE_KEYWORD)) return - - val resolveWithParents = resolveDeclarationWithParents(declaration) - if (resolveWithParents.overriddenDescriptors.isEmpty()) return - - val implements = isImplementsAndNotOverrides(resolveWithParents.descriptor!!, resolveWithParents.overriddenDescriptors) - - // NOTE: Don't store descriptors in line markers because line markers are not deleted while editing other files and this can prevent - // clearing the whole BindingTrace. - val marker = LineMarkerInfo( - declaration, - declaration.getTextOffset(), - if (implements) IMPLEMENTING_MARK else OVERRIDING_MARK, - Pass.UPDATE_OVERRIDEN_MARKERS, - SuperDeclarationMarkerTooltip, - SuperDeclarationMarkerNavigationHandler() - ) - - result.add(marker) - } - - private fun collectInheritedClassMarker(element: JetClass, result: MutableCollection>) { - val isTrait = element.isTrait() - if (!(isTrait || element.hasModifier(JetTokens.OPEN_KEYWORD) || element.hasModifier(JetTokens.ABSTRACT_KEYWORD))) { - return +private val SUBCLASSED_CLASS = MarkerType( + { getPsiClass(it)?.let { MarkerType.getSubclassedClassTooltip(it) } }, + object : LineMarkerNavigator() { + override fun browse(e: MouseEvent?, element: PsiElement?) { + getPsiClass(element)?.let { MarkerType.navigateToSubclassedClass(e, it) } } + }) - val lightClass = LightClassUtil.getPsiClass(element) ?: return - - if (ClassInheritorsSearch.search(lightClass, false).findFirst() == null) return - - val anchor = element.getNameIdentifier() ?: element - - result.add(LineMarkerInfo( - anchor, - anchor.getTextOffset(), - if (isTrait) IMPLEMENTED_MARK else OVERRIDDEN_MARK, - Pass.UPDATE_OVERRIDEN_MARKERS, - SUBCLASSED_CLASS.getTooltip(), - SUBCLASSED_CLASS.getNavigationHandler() - )) - } - - private fun collectOverridingPropertiesAccessors(properties: Collection, result: MutableCollection>) { - val mappingToJava = Maps.newHashMap() - for (property in properties) { - if (property.isOverridable()) { - val accessorsPsiMethods = LightClassUtil.getLightClassPropertyMethods(property) - for (psiMethod in accessorsPsiMethods) { - mappingToJava.put(psiMethod, property) - } - } +private val OVERRIDDEN_FUNCTION = MarkerType( + { getPsiMethod(it)?.let { getOverriddenMethodTooltip(it) } }, + object : LineMarkerNavigator() { + override fun browse(e: MouseEvent?, element: PsiElement?) { + getPsiMethod(element)?.let { navigateToOverriddenMethod(e, it) } } + }) - val classes = collectContainingClasses(mappingToJava.keySet()) - - for (property in getOverriddenDeclarations(mappingToJava, classes)) { - ProgressManager.checkCanceled() - - var anchor = property.getNameIdentifier() - if (anchor == null) anchor = property - - result.add(LineMarkerInfo( - anchor, - anchor!!.getTextOffset(), - if (isImplemented(property)) IMPLEMENTED_MARK else OVERRIDDEN_MARK, - Pass.UPDATE_OVERRIDEN_MARKERS, - OVERRIDDEN_PROPERTY.getTooltip(), - OVERRIDDEN_PROPERTY.getNavigationHandler(), - GutterIconRenderer.Alignment.RIGHT - )) +private val OVERRIDDEN_PROPERTY = MarkerType( + { it?.let { getOverriddenPropertyTooltip(it.getParent() as JetProperty) } }, + object : LineMarkerNavigator() { + override fun browse(e: MouseEvent?, element: PsiElement?) { + element?.let { navigateToPropertyOverriddenDeclarations(e, it.getParent() as JetProperty) } } - } + }) - private fun collectOverridingAccessors(functions: Collection, result: MutableCollection>) { - val mappingToJava = Maps.newHashMap() - for (function in functions) { - if (function.isOverridable()) { - val method = LightClassUtil.getLightClassMethod(function) - if (method != null) { - mappingToJava.put(method, function) - } - } - } +private fun isImplementsAndNotOverrides(descriptor: CallableMemberDescriptor, overriddenMembers: Collection): Boolean { + return descriptor.getModality() != Modality.ABSTRACT && overriddenMembers.all { it.getModality() == Modality.ABSTRACT } +} - val classes = collectContainingClasses(mappingToJava.keySet()) +private fun collectSuperDeclarationMarkers(declaration: JetDeclaration, result: MutableCollection>) { + assert((declaration is JetNamedFunction || declaration is JetProperty)) - for (function in getOverriddenDeclarations(mappingToJava, classes)) { - ProgressManager.checkCanceled() + if (!declaration.hasModifier(JetTokens.OVERRIDE_KEYWORD)) return - val anchor = function.getNameIdentifier() ?: function + val resolveWithParents = resolveDeclarationWithParents(declaration) + if (resolveWithParents.overriddenDescriptors.isEmpty()) return - result.add(LineMarkerInfo( - anchor, - anchor!!.getTextOffset(), - if (isImplemented(function)) IMPLEMENTED_MARK else OVERRIDDEN_MARK, - Pass.UPDATE_OVERRIDEN_MARKERS, OVERRIDDEN_FUNCTION.getTooltip(), - OVERRIDDEN_FUNCTION.getNavigationHandler(), - GutterIconRenderer.Alignment.RIGHT - )) + val implements = isImplementsAndNotOverrides(resolveWithParents.descriptor!!, resolveWithParents.overriddenDescriptors) + + // NOTE: Don't store descriptors in line markers because line markers are not deleted while editing other files and this can prevent + // clearing the whole BindingTrace. + val marker = LineMarkerInfo( + declaration, + declaration.getTextOffset(), + if (implements) IMPLEMENTING_MARK else OVERRIDING_MARK, + Pass.UPDATE_OVERRIDEN_MARKERS, + SuperDeclarationMarkerTooltip, + SuperDeclarationMarkerNavigationHandler() + ) + + result.add(marker) +} + +private fun collectInheritedClassMarker(element: JetClass, result: MutableCollection>) { + val isTrait = element.isTrait() + if (!(isTrait || element.hasModifier(JetTokens.OPEN_KEYWORD) || element.hasModifier(JetTokens.ABSTRACT_KEYWORD))) { + return + } + + val lightClass = LightClassUtil.getPsiClass(element) ?: return + + if (ClassInheritorsSearch.search(lightClass, false).findFirst() == null) return + + val anchor = element.getNameIdentifier() ?: element + + result.add(LineMarkerInfo( + anchor, + anchor.getTextOffset(), + if (isTrait) IMPLEMENTED_MARK else OVERRIDDEN_MARK, + Pass.UPDATE_OVERRIDEN_MARKERS, + SUBCLASSED_CLASS.getTooltip(), + SUBCLASSED_CLASS.getNavigationHandler() + )) +} + +private fun collectOverridingPropertiesAccessors(properties: Collection, result: MutableCollection>) { + val mappingToJava = Maps.newHashMap() + for (property in properties) { + if (property.isOverridable()) { + val accessorsPsiMethods = LightClassUtil.getLightClassPropertyMethods(property) + for (psiMethod in accessorsPsiMethods) { + mappingToJava.put(psiMethod, property) } } } -} \ No newline at end of file + + val classes = collectContainingClasses(mappingToJava.keySet()) + + for (property in getOverriddenDeclarations(mappingToJava, classes)) { + ProgressManager.checkCanceled() + + var anchor = property.getNameIdentifier() + if (anchor == null) anchor = property + + result.add(LineMarkerInfo( + anchor, + anchor!!.getTextOffset(), + if (isImplemented(property)) IMPLEMENTED_MARK else OVERRIDDEN_MARK, + Pass.UPDATE_OVERRIDEN_MARKERS, + OVERRIDDEN_PROPERTY.getTooltip(), + OVERRIDDEN_PROPERTY.getNavigationHandler(), + GutterIconRenderer.Alignment.RIGHT + )) + } +} + +private fun collectOverridingAccessors(functions: Collection, result: MutableCollection>) { + val mappingToJava = Maps.newHashMap() + for (function in functions) { + if (function.isOverridable()) { + val method = LightClassUtil.getLightClassMethod(function) + if (method != null) { + mappingToJava.put(method, function) + } + } + } + + val classes = collectContainingClasses(mappingToJava.keySet()) + + for (function in getOverriddenDeclarations(mappingToJava, classes)) { + ProgressManager.checkCanceled() + + val anchor = function.getNameIdentifier() ?: function + + result.add(LineMarkerInfo( + anchor, + anchor!!.getTextOffset(), + if (isImplemented(function)) IMPLEMENTED_MARK else OVERRIDDEN_MARK, + Pass.UPDATE_OVERRIDEN_MARKERS, OVERRIDDEN_FUNCTION.getTooltip(), + OVERRIDDEN_FUNCTION.getNavigationHandler(), + GutterIconRenderer.Alignment.RIGHT + )) + } +}