if-then --> safe access: run write action manually to avoid AWT events inside
This commit is contained in:
+6
-1
@@ -21,6 +21,7 @@ import org.jetbrains.kotlin.idea.core.replaced
|
|||||||
import org.jetbrains.kotlin.idea.inspections.IntentionBasedInspection
|
import org.jetbrains.kotlin.idea.inspections.IntentionBasedInspection
|
||||||
import org.jetbrains.kotlin.idea.intentions.SelfTargetingOffsetIndependentIntention
|
import org.jetbrains.kotlin.idea.intentions.SelfTargetingOffsetIndependentIntention
|
||||||
import org.jetbrains.kotlin.idea.intentions.branchedTransformations.*
|
import org.jetbrains.kotlin.idea.intentions.branchedTransformations.*
|
||||||
|
import org.jetbrains.kotlin.idea.util.application.runWriteAction
|
||||||
import org.jetbrains.kotlin.lexer.KtTokens
|
import org.jetbrains.kotlin.lexer.KtTokens
|
||||||
import org.jetbrains.kotlin.psi.*
|
import org.jetbrains.kotlin.psi.*
|
||||||
|
|
||||||
@@ -50,6 +51,8 @@ class IfThenToSafeAccessIntention : SelfTargetingOffsetIndependentIntention<KtIf
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
override fun startInWriteAction() = false
|
||||||
|
|
||||||
override fun applyTo(element: KtIfExpression, editor: Editor?) {
|
override fun applyTo(element: KtIfExpression, editor: Editor?) {
|
||||||
val condition = element.condition as KtBinaryExpression
|
val condition = element.condition as KtBinaryExpression
|
||||||
val receiverExpression = condition.expressionComparedToNull()!!
|
val receiverExpression = condition.expressionComparedToNull()!!
|
||||||
@@ -64,7 +67,9 @@ class IfThenToSafeAccessIntention : SelfTargetingOffsetIndependentIntention<KtIf
|
|||||||
}
|
}
|
||||||
|
|
||||||
val newExpr = KtPsiFactory(element).createExpressionByPattern("$0?.$1", receiverExpression, selectorExpression) as KtSafeQualifiedExpression
|
val newExpr = KtPsiFactory(element).createExpressionByPattern("$0?.$1", receiverExpression, selectorExpression) as KtSafeQualifiedExpression
|
||||||
val safeAccessExpr = element.replaced(newExpr)
|
val safeAccessExpr = runWriteAction {
|
||||||
|
element.replaced(newExpr)
|
||||||
|
}
|
||||||
|
|
||||||
if (editor != null) {
|
if (editor != null) {
|
||||||
safeAccessExpr.inlineReceiverIfApplicableWithPrompt(editor)
|
safeAccessExpr.inlineReceiverIfApplicableWithPrompt(editor)
|
||||||
|
|||||||
Reference in New Issue
Block a user