[formatter] fix infinite recursion
Already exists in the new repo: original-hash e7ea6926a8a414ab6082299d99239ad167ab75a2 #KT-40636 Fixed
This commit is contained in:
@@ -6,7 +6,6 @@
|
|||||||
package org.jetbrains.kotlin.idea.formatter
|
package org.jetbrains.kotlin.idea.formatter
|
||||||
|
|
||||||
import com.intellij.openapi.diagnostic.Logger
|
import com.intellij.openapi.diagnostic.Logger
|
||||||
import com.intellij.openapi.util.Key
|
|
||||||
import com.intellij.openapi.util.TextRange
|
import com.intellij.openapi.util.TextRange
|
||||||
import com.intellij.psi.PsiComment
|
import com.intellij.psi.PsiComment
|
||||||
import com.intellij.psi.PsiElement
|
import com.intellij.psi.PsiElement
|
||||||
@@ -51,7 +50,6 @@ private class TrailingCommaPostFormatVisitor(val settings: CodeStyleSettings) :
|
|||||||
|
|
||||||
private fun processCommaOwner(trailingCommaContext: TrailingCommaContext) {
|
private fun processCommaOwner(trailingCommaContext: TrailingCommaContext) {
|
||||||
val ktElement = trailingCommaContext.ktElement
|
val ktElement = trailingCommaContext.ktElement
|
||||||
if (!postFormatIsEnable(ktElement)) return
|
|
||||||
|
|
||||||
val lastElementOrComma = trailingCommaOrLastElement(ktElement) ?: return
|
val lastElementOrComma = trailingCommaOrLastElement(ktElement) ?: return
|
||||||
updatePsi(ktElement) {
|
updatePsi(ktElement) {
|
||||||
@@ -78,13 +76,11 @@ private class TrailingCommaPostFormatVisitor(val settings: CodeStyleSettings) :
|
|||||||
}
|
}
|
||||||
|
|
||||||
private fun updatePsi(element: KtElement, block: () -> Unit) {
|
private fun updatePsi(element: KtElement, block: () -> Unit) {
|
||||||
element.putUserData(IS_INSIDE, true)
|
|
||||||
val oldLength = element.parent.textLength
|
val oldLength = element.parent.textLength
|
||||||
block()
|
block()
|
||||||
|
|
||||||
val resultElement = CodeStyleManager.getInstance(element.project).reformat(element)
|
val resultElement = CodeStyleManager.getInstance(element.project).reformat(element, true)
|
||||||
myPostProcessor.updateResultRange(oldLength, resultElement.parent.textLength)
|
myPostProcessor.updateResultRange(oldLength, resultElement.parent.textLength)
|
||||||
element.putUserData(IS_INSIDE, false)
|
|
||||||
}
|
}
|
||||||
|
|
||||||
private fun correctCommaPosition(parent: KtElement) {
|
private fun correctCommaPosition(parent: KtElement) {
|
||||||
@@ -112,8 +108,6 @@ private class TrailingCommaPostFormatVisitor(val settings: CodeStyleSettings) :
|
|||||||
|
|
||||||
companion object {
|
companion object {
|
||||||
private val LOG = Logger.getInstance(TrailingCommaVisitor::class.java)
|
private val LOG = Logger.getInstance(TrailingCommaVisitor::class.java)
|
||||||
private val IS_INSIDE = Key.create<Boolean>("TrailingCommaPostFormat")
|
|
||||||
private fun postFormatIsEnable(source: PsiElement): Boolean = source.getUserData(IS_INSIDE) != true
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
Reference in New Issue
Block a user