Fix formatting in "simplify call chain" #KT-28576 Fixed
This commit is contained in:
@@ -0,0 +1,26 @@
|
|||||||
|
/*
|
||||||
|
* Copyright 2010-2018 JetBrains s.r.o. Use of this source code is governed by the Apache 2.0 license
|
||||||
|
* that can be found in the license/LICENSE.txt file.
|
||||||
|
*/
|
||||||
|
|
||||||
|
package org.jetbrains.kotlin.idea.formatter
|
||||||
|
|
||||||
|
import com.intellij.openapi.fileEditor.FileDocumentManager
|
||||||
|
import com.intellij.openapi.util.TextRange
|
||||||
|
import com.intellij.psi.PsiDocumentManager
|
||||||
|
import com.intellij.psi.PsiFile
|
||||||
|
import com.intellij.psi.codeStyle.CodeStyleManager
|
||||||
|
|
||||||
|
fun PsiFile.commitAndUnblockDocument(): Boolean {
|
||||||
|
val virtualFile = this.virtualFile ?: return false
|
||||||
|
val document = FileDocumentManager.getInstance().getDocument(virtualFile) ?: return false
|
||||||
|
val documentManager = PsiDocumentManager.getInstance(project)
|
||||||
|
documentManager.doPostponedOperationsAndUnblockDocument(document)
|
||||||
|
documentManager.commitDocument(document)
|
||||||
|
return true
|
||||||
|
}
|
||||||
|
|
||||||
|
fun PsiFile.adjustLineIndent(startOffset: Int, endOffset: Int) {
|
||||||
|
if (!commitAndUnblockDocument()) return
|
||||||
|
CodeStyleManager.getInstance(project).adjustLineIndent(this, TextRange(startOffset, endOffset))
|
||||||
|
}
|
||||||
@@ -9,16 +9,12 @@ import com.intellij.codeInspection.LocalQuickFix
|
|||||||
import com.intellij.codeInspection.ProblemDescriptor
|
import com.intellij.codeInspection.ProblemDescriptor
|
||||||
import com.intellij.codeInspection.ProblemHighlightType
|
import com.intellij.codeInspection.ProblemHighlightType
|
||||||
import com.intellij.codeInspection.ProblemsHolder
|
import com.intellij.codeInspection.ProblemsHolder
|
||||||
import com.intellij.openapi.fileEditor.FileDocumentManager
|
|
||||||
import com.intellij.openapi.project.Project
|
import com.intellij.openapi.project.Project
|
||||||
import com.intellij.openapi.util.TextRange
|
|
||||||
import com.intellij.psi.PsiDocumentManager
|
|
||||||
import com.intellij.psi.PsiElement
|
import com.intellij.psi.PsiElement
|
||||||
import com.intellij.psi.PsiElementVisitor
|
import com.intellij.psi.PsiElementVisitor
|
||||||
import com.intellij.psi.PsiFile
|
|
||||||
import com.intellij.psi.codeStyle.CodeStyleManager
|
|
||||||
import org.jetbrains.kotlin.KtNodeTypes
|
import org.jetbrains.kotlin.KtNodeTypes
|
||||||
import org.jetbrains.kotlin.idea.caches.resolve.analyze
|
import org.jetbrains.kotlin.idea.caches.resolve.analyze
|
||||||
|
import org.jetbrains.kotlin.idea.formatter.adjustLineIndent
|
||||||
import org.jetbrains.kotlin.idea.intentions.branchedTransformations.isElseIf
|
import org.jetbrains.kotlin.idea.intentions.branchedTransformations.isElseIf
|
||||||
import org.jetbrains.kotlin.idea.refactoring.getLineNumber
|
import org.jetbrains.kotlin.idea.refactoring.getLineNumber
|
||||||
import org.jetbrains.kotlin.psi.*
|
import org.jetbrains.kotlin.psi.*
|
||||||
@@ -79,16 +75,6 @@ private class RemoveRedundantElseFix : LocalQuickFix {
|
|||||||
(added.getNextSiblingIgnoringWhitespace() ?: added.parent).endOffset
|
(added.getNextSiblingIgnoringWhitespace() ?: added.parent).endOffset
|
||||||
)
|
)
|
||||||
}
|
}
|
||||||
|
|
||||||
fun PsiFile.adjustLineIndent(startOffset: Int, endOffset: Int) {
|
|
||||||
val virtualFile = this.virtualFile ?: return
|
|
||||||
val document = FileDocumentManager.getInstance().getDocument(virtualFile) ?: return
|
|
||||||
val documentManager = PsiDocumentManager.getInstance(project)
|
|
||||||
val psiFile = documentManager.getPsiFile(document) ?: return
|
|
||||||
documentManager.commitDocument(document)
|
|
||||||
documentManager.doPostponedOperationsAndUnblockDocument(document)
|
|
||||||
CodeStyleManager.getInstance(project).adjustLineIndent(psiFile, TextRange(startOffset, endOffset))
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
|
||||||
private fun KtIfExpression.lastSingleElseKeyword(): PsiElement? {
|
private fun KtIfExpression.lastSingleElseKeyword(): PsiElement? {
|
||||||
|
|||||||
@@ -24,6 +24,7 @@ import com.intellij.psi.codeStyle.CodeStyleManager
|
|||||||
import org.jetbrains.kotlin.idea.core.ShortenReferences
|
import org.jetbrains.kotlin.idea.core.ShortenReferences
|
||||||
import org.jetbrains.kotlin.idea.core.moveFunctionLiteralOutsideParentheses
|
import org.jetbrains.kotlin.idea.core.moveFunctionLiteralOutsideParentheses
|
||||||
import org.jetbrains.kotlin.idea.core.replaced
|
import org.jetbrains.kotlin.idea.core.replaced
|
||||||
|
import org.jetbrains.kotlin.idea.formatter.commitAndUnblockDocument
|
||||||
import org.jetbrains.kotlin.idea.intentions.callExpression
|
import org.jetbrains.kotlin.idea.intentions.callExpression
|
||||||
import org.jetbrains.kotlin.psi.*
|
import org.jetbrains.kotlin.psi.*
|
||||||
import org.jetbrains.kotlin.psi.psiUtil.PsiChildRange
|
import org.jetbrains.kotlin.psi.psiUtil.PsiChildRange
|
||||||
@@ -81,18 +82,19 @@ class SimplifyCallChainFix(
|
|||||||
"$receiverExpressionOrEmptyString$operationSign$newCallText($argumentsText)"
|
"$receiverExpressionOrEmptyString$operationSign$newCallText($argumentsText)"
|
||||||
)
|
)
|
||||||
|
|
||||||
|
val project = qualifiedExpression.project
|
||||||
|
val file = qualifiedExpression.containingKtFile
|
||||||
|
val result = qualifiedExpression.replaced(newQualifiedOrCallExpression)
|
||||||
if (lambdaExpression != null) {
|
if (lambdaExpression != null) {
|
||||||
val callExpression = when (newQualifiedOrCallExpression) {
|
val callExpression = when (result) {
|
||||||
is KtQualifiedExpression -> newQualifiedOrCallExpression.callExpression
|
is KtQualifiedExpression -> result.callExpression
|
||||||
is KtCallExpression -> newQualifiedOrCallExpression
|
is KtCallExpression -> result
|
||||||
else -> null
|
else -> null
|
||||||
}
|
}
|
||||||
callExpression?.moveFunctionLiteralOutsideParentheses()
|
callExpression?.moveFunctionLiteralOutsideParentheses()
|
||||||
}
|
}
|
||||||
|
|
||||||
val project = qualifiedExpression.project
|
result.containingKtFile.commitAndUnblockDocument()
|
||||||
val file = qualifiedExpression.containingKtFile
|
|
||||||
val result = qualifiedExpression.replaced(newQualifiedOrCallExpression)
|
|
||||||
val reformatted = CodeStyleManager.getInstance(project).reformat(result)
|
val reformatted = CodeStyleManager.getInstance(project).reformat(result)
|
||||||
ShortenReferences.DEFAULT.process(reformatted as KtElement)
|
ShortenReferences.DEFAULT.process(reformatted as KtElement)
|
||||||
if (runOptimizeImports) {
|
if (runOptimizeImports) {
|
||||||
|
|||||||
Vendored
+3
-3
@@ -1,7 +1,7 @@
|
|||||||
// WITH_RUNTIME
|
// WITH_RUNTIME
|
||||||
|
|
||||||
val x = listOf(1, 2, 3).joinToString(prefix = "= ", separator = " + ") {
|
val x = listOf(1, 2, 3).joinToString(prefix = "= ", separator = " + ") {
|
||||||
val sb = StringBuilder()
|
val sb = StringBuilder()
|
||||||
sb.append(it).append(" + ").append(it)
|
sb.append(it).append(" + ").append(it)
|
||||||
sb
|
sb
|
||||||
}
|
}
|
||||||
Reference in New Issue
Block a user