From e8fd69fde180bd20525c6a828a5ada1350b20bd0 Mon Sep 17 00:00:00 2001 From: Dmitry Gridin Date: Mon, 27 Jul 2020 19:56:19 +0700 Subject: [PATCH] [formatter] fix infinite recursion Already exists in the new repo: original-hash e7ea6926a8a414ab6082299d99239ad167ab75a2 #KT-40636 Fixed --- .../idea/formatter/TrailingCommaPostFormatProcessor.kt | 8 +------- 1 file changed, 1 insertion(+), 7 deletions(-) diff --git a/idea/src/org/jetbrains/kotlin/idea/formatter/TrailingCommaPostFormatProcessor.kt b/idea/src/org/jetbrains/kotlin/idea/formatter/TrailingCommaPostFormatProcessor.kt index 922f343959b..594ffec0396 100644 --- a/idea/src/org/jetbrains/kotlin/idea/formatter/TrailingCommaPostFormatProcessor.kt +++ b/idea/src/org/jetbrains/kotlin/idea/formatter/TrailingCommaPostFormatProcessor.kt @@ -6,7 +6,6 @@ package org.jetbrains.kotlin.idea.formatter import com.intellij.openapi.diagnostic.Logger -import com.intellij.openapi.util.Key import com.intellij.openapi.util.TextRange import com.intellij.psi.PsiComment import com.intellij.psi.PsiElement @@ -51,7 +50,6 @@ private class TrailingCommaPostFormatVisitor(val settings: CodeStyleSettings) : private fun processCommaOwner(trailingCommaContext: TrailingCommaContext) { val ktElement = trailingCommaContext.ktElement - if (!postFormatIsEnable(ktElement)) return val lastElementOrComma = trailingCommaOrLastElement(ktElement) ?: return updatePsi(ktElement) { @@ -78,13 +76,11 @@ private class TrailingCommaPostFormatVisitor(val settings: CodeStyleSettings) : } private fun updatePsi(element: KtElement, block: () -> Unit) { - element.putUserData(IS_INSIDE, true) val oldLength = element.parent.textLength block() - val resultElement = CodeStyleManager.getInstance(element.project).reformat(element) + val resultElement = CodeStyleManager.getInstance(element.project).reformat(element, true) myPostProcessor.updateResultRange(oldLength, resultElement.parent.textLength) - element.putUserData(IS_INSIDE, false) } private fun correctCommaPosition(parent: KtElement) { @@ -112,8 +108,6 @@ private class TrailingCommaPostFormatVisitor(val settings: CodeStyleSettings) : companion object { private val LOG = Logger.getInstance(TrailingCommaVisitor::class.java) - private val IS_INSIDE = Key.create("TrailingCommaPostFormat") - private fun postFormatIsEnable(source: PsiElement): Boolean = source.getUserData(IS_INSIDE) != true } }