Refactoring: Extract registerWithElementsUnwrapped() function

This commit is contained in:
Alexey Sedunov
2016-05-12 21:10:43 +03:00
parent cb36b61f7f
commit 36f3d30250
3 changed files with 20 additions and 29 deletions
@@ -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<ProblemDescriptor>.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> ?: LocalQuickFix.EMPTY_ARRAY,
it.highlightType
)
holder.registerProblem(descriptor)
}
}
@@ -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<LocalQuickFix>,
it.highlightType
)
holder.registerProblem(descriptor)
}
javaInspection.checkClass(lightClass, holder.manager, isOnTheFly)?.registerWithElementsUnwrapped(holder, isOnTheFly)
}
}
}
@@ -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> ?: LocalQuickFix.EMPTY_ARRAY,
it.highlightType
)
holder.registerProblem(descriptor)
}
javaInspection.checkClass(lightClass, holder.manager, isOnTheFly)?.registerWithElementsUnwrapped(holder, isOnTheFly)
}
}
}