New J2K: do not show inline dialog during J2K

#KT-35169 fixed
This commit is contained in:
Ilya Kirillov
2020-04-14 22:39:08 +03:00
parent e4a721d03e
commit c734069cde
5 changed files with 24 additions and 24 deletions
@@ -25,8 +25,9 @@ import org.jetbrains.kotlin.resolve.calls.callUtil.getType
import org.jetbrains.kotlin.resolve.lazy.BodyResolveMode
import javax.swing.JComponent
class IfThenToElvisInspection(
@JvmField var highlightStatement: Boolean = false
class IfThenToElvisInspection @JvmOverloads constructor(
@JvmField var highlightStatement: Boolean = false,
private val inlineWithPrompt: Boolean = true
) : AbstractApplicabilityBasedInspection<KtIfExpression>(KtIfExpression::class.java) {
override fun inspectionText(element: KtIfExpression): String = KotlinBundle.message("if.then.foldable.to")
@@ -41,7 +42,7 @@ class IfThenToElvisInspection(
ProblemHighlightType.INFORMATION
override fun applyTo(element: KtIfExpression, project: Project, editor: Editor?) {
convert(element, editor)
convert(element, editor, inlineWithPrompt)
}
override fun inspectionHighlightRangeInElement(element: KtIfExpression) = element.fromIfKeywordToRightParenthesisTextRangeInThis()
@@ -53,7 +54,7 @@ class IfThenToElvisInspection(
companion object {
val INTENTION_TEXT get() = KotlinBundle.message("replace.if.expression.with.elvis.expression")
fun convert(element: KtIfExpression, editor: Editor?) {
fun convert(element: KtIfExpression, editor: Editor?, inlineWithPrompt: Boolean) {
val ifThenToSelectData = element.buildSelectTransformationData() ?: return
val factory = KtPsiFactory(element)
@@ -79,7 +80,7 @@ class IfThenToElvisInspection(
}
if (editor != null) {
elvis.inlineLeftSideIfApplicableWithPrompt(editor)
elvis.inlineLeftSideIfApplicable(editor, inlineWithPrompt)
with(IfThenToSafeAccessInspection) {
(elvis.left as? KtSafeQualifiedExpression)?.renameLetParameter(editor)
}
@@ -24,7 +24,8 @@ import org.jetbrains.kotlin.resolve.BindingContext
import org.jetbrains.kotlin.resolve.bindingContextUtil.isUsedAsExpression
import org.jetbrains.kotlin.resolve.calls.callUtil.getType
class IfThenToSafeAccessInspection : AbstractApplicabilityBasedInspection<KtIfExpression>(KtIfExpression::class.java) {
class IfThenToSafeAccessInspection @JvmOverloads constructor(private val inlineWithPrompt: Boolean = true) :
AbstractApplicabilityBasedInspection<KtIfExpression>(KtIfExpression::class.java) {
override fun isApplicable(element: KtIfExpression): Boolean = isApplicableTo(element, expressionShouldBeStable = true)
@@ -42,7 +43,7 @@ class IfThenToSafeAccessInspection : AbstractApplicabilityBasedInspection<KtIfEx
override val startFixInWriteAction = false
override fun applyTo(element: KtIfExpression, project: Project, editor: Editor?) {
convert(element, editor)
convert(element, editor, inlineWithPrompt)
}
companion object {
@@ -59,7 +60,7 @@ class IfThenToSafeAccessInspection : AbstractApplicabilityBasedInspection<KtIfEx
}
}
fun convert(ifExpression: KtIfExpression, editor: Editor?) {
fun convert(ifExpression: KtIfExpression, editor: Editor?, inlineWithPrompt: Boolean) {
val ifThenToSelectData = ifExpression.buildSelectTransformationData() ?: return
val factory = KtPsiFactory(ifExpression)
@@ -70,7 +71,7 @@ class IfThenToSafeAccessInspection : AbstractApplicabilityBasedInspection<KtIfEx
}
if (editor != null && resultExpr is KtSafeQualifiedExpression) {
resultExpr.inlineReceiverIfApplicableWithPrompt(editor)
resultExpr.inlineReceiverIfApplicable(editor, inlineWithPrompt)
resultExpr.renameLetParameter(editor)
}
}
@@ -7,10 +7,8 @@ package org.jetbrains.kotlin.idea.intentions.branchedTransformations
import com.intellij.openapi.application.ApplicationManager
import com.intellij.openapi.application.TransactionGuard
import com.intellij.openapi.command.CommandProcessor
import com.intellij.openapi.editor.Editor
import com.intellij.openapi.fileEditor.FileDocumentManager
import com.intellij.openapi.project.Project
import com.intellij.openapi.util.TextRange
import com.intellij.psi.search.LocalSearchScope
import com.intellij.psi.search.searches.ReferencesSearch
@@ -142,7 +140,7 @@ fun KtIfExpression.introduceValueForCondition(occurrenceInThenClause: KtExpressi
)
}
fun KtNameReferenceExpression.inlineIfDeclaredLocallyAndOnlyUsedOnceWithPrompt(editor: Editor?) {
fun KtNameReferenceExpression.inlineIfDeclaredLocallyAndOnlyUsedOnce(editor: Editor?, withPrompt: Boolean) {
val declaration = this.mainReference.resolve() as? KtProperty ?: return
val enclosingElement = KtPsiUtil.getEnclosingElementForLocalDeclaration(declaration)
@@ -155,7 +153,7 @@ fun KtNameReferenceExpression.inlineIfDeclaredLocallyAndOnlyUsedOnceWithPrompt(e
if (references.size == 1) {
if (!ApplicationManager.getApplication().isUnitTestMode) {
ApplicationManager.getApplication().invokeLater {
val handler = KotlinInlineValHandler()
val handler = KotlinInlineValHandler(withPrompt)
if (declaration.isValid && handler.canInlineElement(declaration)) {
TransactionGuard.getInstance().submitTransactionAndWait {
handler.inlineElement(this.project, editor, declaration)
@@ -163,21 +161,21 @@ fun KtNameReferenceExpression.inlineIfDeclaredLocallyAndOnlyUsedOnceWithPrompt(e
}
}
} else {
KotlinInlineValHandler().inlineElement(this.project, editor, declaration)
KotlinInlineValHandler(withPrompt).inlineElement(this.project, editor, declaration)
}
}
}
fun KtSafeQualifiedExpression.inlineReceiverIfApplicableWithPrompt(editor: Editor?) {
(this.receiverExpression as? KtNameReferenceExpression)?.inlineIfDeclaredLocallyAndOnlyUsedOnceWithPrompt(editor)
fun KtSafeQualifiedExpression.inlineReceiverIfApplicable(editor: Editor?, withPrompt: Boolean) {
(this.receiverExpression as? KtNameReferenceExpression)?.inlineIfDeclaredLocallyAndOnlyUsedOnce(editor, withPrompt)
}
fun KtBinaryExpression.inlineLeftSideIfApplicableWithPrompt(editor: Editor?) {
(this.left as? KtNameReferenceExpression)?.inlineIfDeclaredLocallyAndOnlyUsedOnceWithPrompt(editor)
fun KtBinaryExpression.inlineLeftSideIfApplicable(editor: Editor?, withPrompt: Boolean) {
(this.left as? KtNameReferenceExpression)?.inlineIfDeclaredLocallyAndOnlyUsedOnce(editor, withPrompt)
}
fun KtPostfixExpression.inlineBaseExpressionIfApplicableWithPrompt(editor: Editor?) {
(this.baseExpression as? KtNameReferenceExpression)?.inlineIfDeclaredLocallyAndOnlyUsedOnceWithPrompt(editor)
fun KtPostfixExpression.inlineBaseExpressionIfApplicable(editor: Editor?, withPrompt: Boolean) {
(this.baseExpression as? KtNameReferenceExpression)?.inlineIfDeclaredLocallyAndOnlyUsedOnce(editor, withPrompt)
}
// I.e. stable val/var/receiver
@@ -28,13 +28,13 @@ object SmartCastImpossibleInIfThenFactory : KotlinIntentionActionsFactory() {
ifExpression,
{ IfThenToSafeAccessInspection.fixTextFor(it) },
{ IfThenToSafeAccessInspection.isApplicableTo(it, expressionShouldBeStable = false) },
{ ifExpr, _, editor -> IfThenToSafeAccessInspection.convert(ifExpr, editor) }
{ ifExpr, _, editor -> IfThenToSafeAccessInspection.convert(ifExpr, editor, inlineWithPrompt = true) }
),
createQuickFix(
ifExpression,
{ IfThenToElvisInspection.INTENTION_TEXT },
{ IfThenToElvisInspection.isApplicableTo(it, expressionShouldBeStable = false) },
{ ifExpr, _, editor -> IfThenToElvisInspection.convert(ifExpr, editor) }
{ ifExpr, _, editor -> IfThenToElvisInspection.convert(ifExpr, editor, inlineWithPrompt = true) }
)
)
}
@@ -223,8 +223,8 @@ private val inspectionLikePostProcessingGroup =
it
) as KtReturnExpression).returnedExpression.isTrivialStatementBody()
},
inspectionBasedProcessing(IfThenToSafeAccessInspection(), writeActionNeeded = false),
inspectionBasedProcessing(IfThenToElvisInspection(highlightStatement = true), writeActionNeeded = false),
inspectionBasedProcessing(IfThenToSafeAccessInspection(inlineWithPrompt = false), writeActionNeeded = false),
inspectionBasedProcessing(IfThenToElvisInspection(highlightStatement = true, inlineWithPrompt = false), writeActionNeeded = false),
inspectionBasedProcessing(SimplifyNegatedBinaryExpressionInspection()),
inspectionBasedProcessing(ReplaceGetOrSetInspection()),
intentionBasedProcessing(ObjectLiteralToLambdaIntention(), writeActionNeeded = true),