From 36f3d30250ca201afd823c13b52d1cdc33c811a9 Mon Sep 17 00:00:00 2001 From: Alexey Sedunov Date: Thu, 12 May 2016 21:10:43 +0300 Subject: [PATCH] Refactoring: Extract registerWithElementsUnwrapped() function --- .../inspections/AbstractKotlinInspection.kt | 20 +++++++++++++++---- .../KotlinSpringFacetCodeInspection.kt | 14 ++----------- .../SpringKotlinAutowiredMembersInspection.kt | 15 ++------------ 3 files changed, 20 insertions(+), 29 deletions(-) diff --git a/idea/idea-analysis/src/org/jetbrains/kotlin/idea/inspections/AbstractKotlinInspection.kt b/idea/idea-analysis/src/org/jetbrains/kotlin/idea/inspections/AbstractKotlinInspection.kt index 4df14c479cd..20c7d3de023 100644 --- a/idea/idea-analysis/src/org/jetbrains/kotlin/idea/inspections/AbstractKotlinInspection.kt +++ b/idea/idea-analysis/src/org/jetbrains/kotlin/idea/inspections/AbstractKotlinInspection.kt @@ -17,11 +17,9 @@ package org.jetbrains.kotlin.idea.inspections import com.intellij.codeHighlighting.HighlightDisplayLevel -import com.intellij.codeInspection.CustomSuppressableInspectionTool -import com.intellij.codeInspection.LocalInspectionTool -import com.intellij.codeInspection.SuppressIntentionAction -import com.intellij.codeInspection.SuppressManager +import com.intellij.codeInspection.* import com.intellij.psi.PsiElement +import org.jetbrains.kotlin.asJava.unwrapped import org.jetbrains.kotlin.caches.resolve.KotlinCacheService import org.jetbrains.kotlin.diagnostics.Severity import org.jetbrains.kotlin.idea.highlighter.createSuppressWarningActions @@ -64,3 +62,17 @@ private fun toSeverity(highlightDisplayLevel: HighlightDisplayLevel): Severity } } +@Suppress("unused") +fun Array.registerWithElementsUnwrapped(holder: ProblemsHolder, isOnTheFly: Boolean) { + forEach { + @Suppress("UNCHECKED_CAST") + val descriptor = holder.manager.createProblemDescriptor( + it.psiElement.unwrapped ?: it.psiElement, + it.descriptionTemplate, + isOnTheFly, + it.fixes as? Array ?: LocalQuickFix.EMPTY_ARRAY, + it.highlightType + ) + holder.registerProblem(descriptor) + } +} \ No newline at end of file diff --git a/ultimate/src/org/jetbrains/kotlin/idea/spring/inspections/KotlinSpringFacetCodeInspection.kt b/ultimate/src/org/jetbrains/kotlin/idea/spring/inspections/KotlinSpringFacetCodeInspection.kt index 79471696e0f..2bb59eb840d 100644 --- a/ultimate/src/org/jetbrains/kotlin/idea/spring/inspections/KotlinSpringFacetCodeInspection.kt +++ b/ultimate/src/org/jetbrains/kotlin/idea/spring/inspections/KotlinSpringFacetCodeInspection.kt @@ -16,12 +16,12 @@ package org.jetbrains.kotlin.idea.spring.inspections -import com.intellij.codeInspection.LocalQuickFix import com.intellij.codeInspection.ProblemsHolder import com.intellij.psi.PsiElementVisitor import com.intellij.spring.model.highlighting.config.SpringFacetCodeInspection import org.jetbrains.kotlin.asJava.toLightClass import org.jetbrains.kotlin.idea.inspections.AbstractKotlinInspection +import org.jetbrains.kotlin.idea.inspections.registerWithElementsUnwrapped import org.jetbrains.kotlin.psi.KtClassOrObject import org.jetbrains.kotlin.psi.KtVisitorVoid @@ -36,17 +36,7 @@ class KotlinSpringFacetCodeInspection : AbstractKotlinInspection() { return object: KtVisitorVoid() { override fun visitClassOrObject(classOrObject: KtClassOrObject) { val lightClass = classOrObject.toLightClass() ?: return - javaInspection.checkClass(lightClass, holder.manager, isOnTheFly)?.forEach { - @Suppress("UNCHECKED_CAST") - val descriptor = holder.manager.createProblemDescriptor( - classOrObject.nameIdentifier ?: classOrObject, - it.descriptionTemplate, - isOnTheFly, - it.fixes as Array, - it.highlightType - ) - holder.registerProblem(descriptor) - } + javaInspection.checkClass(lightClass, holder.manager, isOnTheFly)?.registerWithElementsUnwrapped(holder, isOnTheFly) } } } diff --git a/ultimate/src/org/jetbrains/kotlin/idea/spring/inspections/SpringKotlinAutowiredMembersInspection.kt b/ultimate/src/org/jetbrains/kotlin/idea/spring/inspections/SpringKotlinAutowiredMembersInspection.kt index e603ec6c3e1..83c5065dcc2 100644 --- a/ultimate/src/org/jetbrains/kotlin/idea/spring/inspections/SpringKotlinAutowiredMembersInspection.kt +++ b/ultimate/src/org/jetbrains/kotlin/idea/spring/inspections/SpringKotlinAutowiredMembersInspection.kt @@ -16,13 +16,12 @@ package org.jetbrains.kotlin.idea.spring.inspections -import com.intellij.codeInspection.LocalQuickFix import com.intellij.codeInspection.ProblemsHolder import com.intellij.psi.PsiElementVisitor import com.intellij.spring.model.highlighting.SpringJavaAutowiredMembersInspection import org.jetbrains.kotlin.asJava.toLightClass -import org.jetbrains.kotlin.asJava.unwrapped import org.jetbrains.kotlin.idea.inspections.AbstractKotlinInspection +import org.jetbrains.kotlin.idea.inspections.registerWithElementsUnwrapped import org.jetbrains.kotlin.psi.KtClassOrObject import org.jetbrains.kotlin.psi.KtVisitorVoid @@ -37,17 +36,7 @@ class SpringKotlinAutowiredMembersInspection : AbstractKotlinInspection() { return object: KtVisitorVoid() { override fun visitClassOrObject(classOrObject: KtClassOrObject) { val lightClass = classOrObject.toLightClass() ?: return - javaInspection.checkClass(lightClass, holder.manager, isOnTheFly)?.forEach { - @Suppress("UNCHECKED_CAST") - val descriptor = holder.manager.createProblemDescriptor( - it.psiElement.unwrapped ?: it.psiElement, - it.descriptionTemplate, - isOnTheFly, - it.fixes as? Array ?: LocalQuickFix.EMPTY_ARRAY, - it.highlightType - ) - holder.registerProblem(descriptor) - } + javaInspection.checkClass(lightClass, holder.manager, isOnTheFly)?.registerWithElementsUnwrapped(holder, isOnTheFly) } } }