From 80194dd5365915f718e61f543901dffcfa833ea3 Mon Sep 17 00:00:00 2001 From: Dmitry Gridin Date: Thu, 23 Jan 2020 01:32:22 +0700 Subject: [PATCH] Trailing comma: cleanup code after review #KT-34744 --- .../org/jetbrains/kotlin/psi/psiUtil/ktPsiUtil.kt | 2 +- .../kotlin/idea/formatter/KotlinCommonBlock.kt | 13 ++++++------- .../org/jetbrains/kotlin/idea/util/FormatterUtil.kt | 5 +++-- .../formatter/TrailingCommaPostFormatProcessor.kt | 6 +++--- 4 files changed, 13 insertions(+), 13 deletions(-) diff --git a/compiler/psi/src/org/jetbrains/kotlin/psi/psiUtil/ktPsiUtil.kt b/compiler/psi/src/org/jetbrains/kotlin/psi/psiUtil/ktPsiUtil.kt index 94f124c69ec..e5f4e4b0852 100644 --- a/compiler/psi/src/org/jetbrains/kotlin/psi/psiUtil/ktPsiUtil.kt +++ b/compiler/psi/src/org/jetbrains/kotlin/psi/psiUtil/ktPsiUtil.kt @@ -671,5 +671,5 @@ fun getTrailingCommaByClosingElement(closingElement: PsiElement?): PsiElement? { fun getTrailingCommaByElementsList(elementList: PsiElement?): PsiElement? { val lastChild = elementList?.lastChild?.let { if (it !is PsiComment) it else it.getPrevSiblingIgnoringWhitespaceAndComments() } - return lastChild?.run { if (node.elementType == KtTokens.COMMA) this else null } + return lastChild?.takeIf { it.node.elementType == KtTokens.COMMA } } diff --git a/idea/formatter/src/org/jetbrains/kotlin/idea/formatter/KotlinCommonBlock.kt b/idea/formatter/src/org/jetbrains/kotlin/idea/formatter/KotlinCommonBlock.kt index 19974521de3..086a24fc5da 100644 --- a/idea/formatter/src/org/jetbrains/kotlin/idea/formatter/KotlinCommonBlock.kt +++ b/idea/formatter/src/org/jetbrains/kotlin/idea/formatter/KotlinCommonBlock.kt @@ -588,7 +588,8 @@ abstract class KotlinCommonBlock( when { elementType === VALUE_ARGUMENT_LIST -> { val wrapSetting = commonSettings.CALL_PARAMETERS_WRAP - if (!node.trailingCommaIsAllowed && (wrapSetting == CommonCodeStyleSettings.WRAP_AS_NEEDED || wrapSetting == CommonCodeStyleSettings.WRAP_ON_EVERY_ITEM) && + if (!node.trailingCommaIsAllowed && + (wrapSetting == CommonCodeStyleSettings.WRAP_AS_NEEDED || wrapSetting == CommonCodeStyleSettings.WRAP_ON_EVERY_ITEM) && !needWrapArgumentList(nodePsi) ) { return ::noWrapping @@ -752,12 +753,10 @@ abstract class KotlinCommonBlock( fun(childElement: ASTNode): Wrap? = trailingCommaWrappingStrategyWithMultiLineCheck(leftAnchor, rightAnchor)(childElement) private val ASTNode.trailingCommaIsAllowed: Boolean - get() = if (settings.kotlinCustomSettings.ALLOW_TRAILING_COMMA || - lastChildNode?.let { getSiblingWithoutWhitespaceAndComments(it) }?.elementType === COMMA - ) - psi?.let(PsiElement::isMultiline) == true - else - false + get() = (settings.kotlinCustomSettings.ALLOW_TRAILING_COMMA || + lastChildNode?.let { getSiblingWithoutWhitespaceAndComments(it) }?.elementType === COMMA) && + psi?.let(PsiElement::isMultiline) == true + private fun ASTNode.notDelimiterSiblingNodeInSequence( forward: Boolean, diff --git a/idea/formatter/src/org/jetbrains/kotlin/idea/util/FormatterUtil.kt b/idea/formatter/src/org/jetbrains/kotlin/idea/util/FormatterUtil.kt index e606cb1ab07..2cd42ab4fd6 100644 --- a/idea/formatter/src/org/jetbrains/kotlin/idea/util/FormatterUtil.kt +++ b/idea/formatter/src/org/jetbrains/kotlin/idea/util/FormatterUtil.kt @@ -76,11 +76,12 @@ fun T.needTrailingComma( additionalCheck: () -> Boolean = { true }, globalStartOffset: T.() -> Int? = PsiElement::startOffset, globalEndOffset: T.() -> Int? = PsiElement::endOffset -) = (trailingComma() != null || settings.kotlinCustomSettings.ALLOW_TRAILING_COMMA) && additionalCheck() && run(fun(): Boolean { +): Boolean { + if (trailingComma() == null && !settings.kotlinCustomSettings.ALLOW_TRAILING_COMMA || !additionalCheck()) return false val startOffset = globalStartOffset() ?: return false val endOffset = globalEndOffset() ?: return false return containsLineBreakInThis(startOffset, endOffset) -}) +} fun PsiElement.containsLineBreakInThis(globalStartOffset: Int, globalEndOffset: Int): Boolean { val textRange = TextRange.create(globalStartOffset, globalEndOffset).shiftLeft(startOffset) diff --git a/idea/src/org/jetbrains/kotlin/idea/formatter/TrailingCommaPostFormatProcessor.kt b/idea/src/org/jetbrains/kotlin/idea/formatter/TrailingCommaPostFormatProcessor.kt index 3420bbf0977..b885066e7f8 100644 --- a/idea/src/org/jetbrains/kotlin/idea/formatter/TrailingCommaPostFormatProcessor.kt +++ b/idea/src/org/jetbrains/kotlin/idea/formatter/TrailingCommaPostFormatProcessor.kt @@ -129,7 +129,7 @@ private class TrailingCommaPostFormatVisitor(val settings: CodeStyleSettings) : when { needComma(parent, settings, false) -> { // add a missing comma - if (elementType !== KtTokens.COMMA && trailingCommaAllowedInModule(parent)) { + if (elementType != KtTokens.COMMA && trailingCommaAllowedInModule(parent)) { lastElement.addCommaAfter(KtPsiFactory(parent)) } @@ -138,7 +138,7 @@ private class TrailingCommaPostFormatVisitor(val settings: CodeStyleSettings) : needComma(parent, settings) -> { correctCommaPosition(parent) } - elementType === KtTokens.COMMA -> { + elementType == KtTokens.COMMA -> { // remove redundant comma lastElement.delete() } @@ -225,4 +225,4 @@ fun PsiElement.leaf(forward: Boolean = true, filter: (PsiElement) -> Boolean): P if (forward) nextLeaf(filter) else prevLeaf(filter) -val PsiElement.isComma: Boolean get() = elementType === KtTokens.COMMA \ No newline at end of file +val PsiElement.isComma: Boolean get() = elementType == KtTokens.COMMA \ No newline at end of file