TrailingCommaPostFormatProcessor: allow everything except adding before 1.4
#KT-34744
This commit is contained in:
@@ -26,26 +26,23 @@ import org.jetbrains.kotlin.idea.util.module
|
|||||||
import org.jetbrains.kotlin.idea.util.needTrailingComma
|
import org.jetbrains.kotlin.idea.util.needTrailingComma
|
||||||
import org.jetbrains.kotlin.lexer.KtTokens
|
import org.jetbrains.kotlin.lexer.KtTokens
|
||||||
import org.jetbrains.kotlin.psi.*
|
import org.jetbrains.kotlin.psi.*
|
||||||
import org.jetbrains.kotlin.psi.psiUtil.*
|
import org.jetbrains.kotlin.psi.psiUtil.createSmartPointer
|
||||||
|
import org.jetbrains.kotlin.psi.psiUtil.getPrevSiblingIgnoringWhitespaceAndComments
|
||||||
|
import org.jetbrains.kotlin.psi.psiUtil.prevLeaf
|
||||||
|
import org.jetbrains.kotlin.psi.psiUtil.siblings
|
||||||
import org.jetbrains.kotlin.utils.addToStdlib.cast
|
import org.jetbrains.kotlin.utils.addToStdlib.cast
|
||||||
import org.jetbrains.kotlin.utils.addToStdlib.safeAs
|
import org.jetbrains.kotlin.utils.addToStdlib.safeAs
|
||||||
import org.jetbrains.kotlin.utils.ifEmpty
|
import org.jetbrains.kotlin.utils.ifEmpty
|
||||||
|
|
||||||
class TrailingCommaPostFormatProcessor : PostFormatProcessor {
|
class TrailingCommaPostFormatProcessor : PostFormatProcessor {
|
||||||
override fun processElement(source: PsiElement, settings: CodeStyleSettings): PsiElement =
|
override fun processElement(source: PsiElement, settings: CodeStyleSettings): PsiElement =
|
||||||
if (trailingCommaIsAllowedInModule(source))
|
TrailingCommaVisitor(settings).process(source)
|
||||||
TrailingCommaVisitor(settings).process(source)
|
|
||||||
else
|
|
||||||
source
|
|
||||||
|
|
||||||
override fun processText(source: PsiFile, rangeToReformat: TextRange, settings: CodeStyleSettings): TextRange =
|
override fun processText(source: PsiFile, rangeToReformat: TextRange, settings: CodeStyleSettings): TextRange =
|
||||||
if (trailingCommaIsAllowedInModule(source))
|
TrailingCommaVisitor(settings).processText(source, rangeToReformat)
|
||||||
TrailingCommaVisitor(settings).processText(source, rangeToReformat)
|
|
||||||
else
|
|
||||||
rangeToReformat
|
|
||||||
}
|
}
|
||||||
|
|
||||||
private fun trailingCommaIsAllowedInModule(source: PsiElement): Boolean =
|
private fun trailingCommaAllowedInModule(source: PsiElement): Boolean =
|
||||||
Registry.`is`("kotlin.formatter.allowTrailingCommaInAnyProject", false) ||
|
Registry.`is`("kotlin.formatter.allowTrailingCommaInAnyProject", false) ||
|
||||||
source.module?.languageVersionSettings?.supportsFeature(LanguageFeature.TrailingCommas) == true
|
source.module?.languageVersionSettings?.supportsFeature(LanguageFeature.TrailingCommas) == true
|
||||||
|
|
||||||
@@ -104,7 +101,7 @@ private class TrailingCommaVisitor(val settings: CodeStyleSettings) : KtTreeVisi
|
|||||||
when {
|
when {
|
||||||
parent.needComma(false) -> {
|
parent.needComma(false) -> {
|
||||||
// add a missing comma
|
// add a missing comma
|
||||||
if (elementType !== KtTokens.COMMA) {
|
if (elementType !== KtTokens.COMMA && trailingCommaAllowedInModule(parent)) {
|
||||||
lastElement.addCommaAfter(KtPsiFactory(parent))
|
lastElement.addCommaAfter(KtPsiFactory(parent))
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
Reference in New Issue
Block a user