EA-210533: fix NPE in LiftReturnOrAssignmentInspection

It may be still active after its application due to slow IDEA responsiveness
Do not try to apply it again on invalid PSI elements
This commit is contained in:
Ilya Kirillov
2019-12-05 18:07:28 +03:00
parent 9af30f4ac7
commit a64526acfb
4 changed files with 7 additions and 5 deletions
@@ -93,7 +93,7 @@ class LiftReturnOrAssignmentInspection @JvmOverloads constructor(private val ski
override fun getFamilyName() = name
override fun applyFix(project: Project, descriptor: ProblemDescriptor) {
BranchedFoldingUtils.foldToAssignment(descriptor.psiElement as KtExpression)
BranchedFoldingUtils.tryFoldToAssignment(descriptor.psiElement as KtExpression)
}
}
@@ -183,7 +183,7 @@ object BranchedFoldingUtils {
fun canFoldToReturn(expression: KtExpression?): Boolean = getFoldableReturnNumber(expression) > 0
fun foldToAssignment(expression: KtExpression) {
fun tryFoldToAssignment(expression: KtExpression) {
var lhs: KtExpression? = null
var op: String? = null
val psiFactory = KtPsiFactory(expression)
@@ -214,7 +214,9 @@ object BranchedFoldingUtils {
}
}
lift(expression)
expression.replace(psiFactory.createExpressionByPattern("$0 $1 $2", lhs!!, op!!, expression))
if (lhs != null && op != null) {
expression.replace(psiFactory.createExpressionByPattern("$0 $1 $2", lhs!!, op!!, expression))
}
}
fun foldToReturn(expression: KtExpression): KtExpression {
@@ -22,7 +22,7 @@ class LiftAssignmentOutOfTryFix(element: KtTryExpression) : KotlinQuickFixAction
override fun invoke(project: Project, editor: Editor?, file: KtFile) {
val element = element ?: return
BranchedFoldingUtils.foldToAssignment(element)
BranchedFoldingUtils.tryFoldToAssignment(element)
}
companion object : KotlinSingleIntentionActionFactory() {
@@ -491,7 +491,7 @@ class LiftAssignmentInspectionBasedProcessing :
} ?: false
override fun apply(element: KtExpression) {
BranchedFoldingUtils.foldToAssignment(element)
BranchedFoldingUtils.tryFoldToAssignment(element)
}
}