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:
@@ -93,7 +93,7 @@ class LiftReturnOrAssignmentInspection @JvmOverloads constructor(private val ski
|
|||||||
override fun getFamilyName() = name
|
override fun getFamilyName() = name
|
||||||
|
|
||||||
override fun applyFix(project: Project, descriptor: ProblemDescriptor) {
|
override fun applyFix(project: Project, descriptor: ProblemDescriptor) {
|
||||||
BranchedFoldingUtils.foldToAssignment(descriptor.psiElement as KtExpression)
|
BranchedFoldingUtils.tryFoldToAssignment(descriptor.psiElement as KtExpression)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
+4
-2
@@ -183,7 +183,7 @@ object BranchedFoldingUtils {
|
|||||||
|
|
||||||
fun canFoldToReturn(expression: KtExpression?): Boolean = getFoldableReturnNumber(expression) > 0
|
fun canFoldToReturn(expression: KtExpression?): Boolean = getFoldableReturnNumber(expression) > 0
|
||||||
|
|
||||||
fun foldToAssignment(expression: KtExpression) {
|
fun tryFoldToAssignment(expression: KtExpression) {
|
||||||
var lhs: KtExpression? = null
|
var lhs: KtExpression? = null
|
||||||
var op: String? = null
|
var op: String? = null
|
||||||
val psiFactory = KtPsiFactory(expression)
|
val psiFactory = KtPsiFactory(expression)
|
||||||
@@ -214,7 +214,9 @@ object BranchedFoldingUtils {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
lift(expression)
|
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 {
|
fun foldToReturn(expression: KtExpression): KtExpression {
|
||||||
|
|||||||
@@ -22,7 +22,7 @@ class LiftAssignmentOutOfTryFix(element: KtTryExpression) : KotlinQuickFixAction
|
|||||||
|
|
||||||
override fun invoke(project: Project, editor: Editor?, file: KtFile) {
|
override fun invoke(project: Project, editor: Editor?, file: KtFile) {
|
||||||
val element = element ?: return
|
val element = element ?: return
|
||||||
BranchedFoldingUtils.foldToAssignment(element)
|
BranchedFoldingUtils.tryFoldToAssignment(element)
|
||||||
}
|
}
|
||||||
|
|
||||||
companion object : KotlinSingleIntentionActionFactory() {
|
companion object : KotlinSingleIntentionActionFactory() {
|
||||||
|
|||||||
+1
-1
@@ -491,7 +491,7 @@ class LiftAssignmentInspectionBasedProcessing :
|
|||||||
} ?: false
|
} ?: false
|
||||||
|
|
||||||
override fun apply(element: KtExpression) {
|
override fun apply(element: KtExpression) {
|
||||||
BranchedFoldingUtils.foldToAssignment(element)
|
BranchedFoldingUtils.tryFoldToAssignment(element)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
Reference in New Issue
Block a user