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.ProblemHighlightType
|
||||
import com.intellij.codeInspection.ProblemsHolder
|
||||
import com.intellij.openapi.fileEditor.FileDocumentManager
|
||||
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.PsiElementVisitor
|
||||
import com.intellij.psi.PsiFile
|
||||
import com.intellij.psi.codeStyle.CodeStyleManager
|
||||
import org.jetbrains.kotlin.KtNodeTypes
|
||||
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.refactoring.getLineNumber
|
||||
import org.jetbrains.kotlin.psi.*
|
||||
@@ -79,16 +75,6 @@ private class RemoveRedundantElseFix : LocalQuickFix {
|
||||
(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? {
|
||||
|
||||
@@ -24,6 +24,7 @@ import com.intellij.psi.codeStyle.CodeStyleManager
|
||||
import org.jetbrains.kotlin.idea.core.ShortenReferences
|
||||
import org.jetbrains.kotlin.idea.core.moveFunctionLiteralOutsideParentheses
|
||||
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.psi.*
|
||||
import org.jetbrains.kotlin.psi.psiUtil.PsiChildRange
|
||||
@@ -81,18 +82,19 @@ class SimplifyCallChainFix(
|
||||
"$receiverExpressionOrEmptyString$operationSign$newCallText($argumentsText)"
|
||||
)
|
||||
|
||||
val project = qualifiedExpression.project
|
||||
val file = qualifiedExpression.containingKtFile
|
||||
val result = qualifiedExpression.replaced(newQualifiedOrCallExpression)
|
||||
if (lambdaExpression != null) {
|
||||
val callExpression = when (newQualifiedOrCallExpression) {
|
||||
is KtQualifiedExpression -> newQualifiedOrCallExpression.callExpression
|
||||
is KtCallExpression -> newQualifiedOrCallExpression
|
||||
val callExpression = when (result) {
|
||||
is KtQualifiedExpression -> result.callExpression
|
||||
is KtCallExpression -> result
|
||||
else -> null
|
||||
}
|
||||
callExpression?.moveFunctionLiteralOutsideParentheses()
|
||||
}
|
||||
|
||||
val project = qualifiedExpression.project
|
||||
val file = qualifiedExpression.containingKtFile
|
||||
val result = qualifiedExpression.replaced(newQualifiedOrCallExpression)
|
||||
result.containingKtFile.commitAndUnblockDocument()
|
||||
val reformatted = CodeStyleManager.getInstance(project).reformat(result)
|
||||
ShortenReferences.DEFAULT.process(reformatted as KtElement)
|
||||
if (runOptimizeImports) {
|
||||
|
||||
Vendored
+3
-3
@@ -1,7 +1,7 @@
|
||||
// WITH_RUNTIME
|
||||
|
||||
val x = listOf(1, 2, 3).joinToString(prefix = "= ", separator = " + ") {
|
||||
val sb = StringBuilder()
|
||||
sb.append(it).append(" + ").append(it)
|
||||
sb
|
||||
val sb = StringBuilder()
|
||||
sb.append(it).append(" + ").append(it)
|
||||
sb
|
||||
}
|
||||
Reference in New Issue
Block a user