Add invokeLater for inlining extra refactoring in branchedTransformations intension

Fixed #EA214432
This commit is contained in:
Igor Yakovlev
2019-11-28 20:19:55 +03:00
parent a2188610b1
commit a672427e72
@@ -5,8 +5,12 @@
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
@@ -149,7 +153,18 @@ fun KtNameReferenceExpression.inlineIfDeclaredLocallyAndOnlyUsedOnceWithPrompt(e
val references = ReferencesSearch.search(declaration, scope).findAll()
if (references.size == 1) {
KotlinInlineValHandler().inlineElement(this.project, editor, declaration)
if (!ApplicationManager.getApplication().isUnitTestMode) {
ApplicationManager.getApplication().invokeLater {
val handler = KotlinInlineValHandler()
if (declaration.isValid && handler.canInlineElement(declaration)) {
TransactionGuard.getInstance().submitTransactionAndWait {
handler.inlineElement(this.project, editor, declaration)
}
}
}
} else {
KotlinInlineValHandler().inlineElement(this.project, editor, declaration)
}
}
}