From 31596f0d0b5a9befb1d8e9738562dd0dde9c0c3c Mon Sep 17 00:00:00 2001 From: Dmitry Gridin Date: Tue, 10 Dec 2019 15:44:49 +0700 Subject: [PATCH] Formatter: fix some cases of call chain with `wrap first call chain` #KT-35388 Fixed --- .../idea/formatter/KotlinCommonBlock.kt | 38 +++--- .../callChain/CallChainWrapping.after.inv.kt | 38 ++++++ .../callChain/CallChainWrapping.after.kt | 28 +++++ .../formatter/callChain/CallChainWrapping.kt | 16 +++ .../callChain/CallChainWrapping2.after.inv.kt | 116 ++++++++++++++++++ .../callChain/CallChainWrapping2.after.kt | 86 +++++++++++++ .../formatter/callChain/CallChainWrapping2.kt | 71 +++++++++++ .../formatter/FormatterTestGenerated.java | 10 ++ 8 files changed, 386 insertions(+), 17 deletions(-) create mode 100644 idea/testData/formatter/callChain/CallChainWrapping2.after.inv.kt create mode 100644 idea/testData/formatter/callChain/CallChainWrapping2.after.kt create mode 100644 idea/testData/formatter/callChain/CallChainWrapping2.kt 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 ec9a85a3f54..9ab8c9e0d40 100644 --- a/idea/formatter/src/org/jetbrains/kotlin/idea/formatter/KotlinCommonBlock.kt +++ b/idea/formatter/src/org/jetbrains/kotlin/idea/formatter/KotlinCommonBlock.kt @@ -122,7 +122,9 @@ abstract class KotlinCommonBlock( return nodeSubBlocks } - private fun ASTNode.isQualifiedNode(): Boolean { + private fun ASTNode.isQualifiedNode(strict: Boolean = false): Boolean { + if (strict) return elementType in QUALIFIED_EXPRESSIONS + var currentNode: ASTNode? = this while (currentNode != null) { if (currentNode.elementType in QUALIFIED_EXPRESSIONS) return true @@ -143,7 +145,7 @@ abstract class KotlinCommonBlock( if (operationBlockIndex == -1) return nodeSubBlocks val block = nodeSubBlocks.first() - val wrap = createWrapForQualifiedExpression(block.requireNode()) + val wrap = createWrapForQualifiedExpression(node) val indent = createIndentForQualifiedExpression(block) val newBlock = block.processBlock(indent, wrap) return nodeSubBlocks.replaceBlock(newBlock, 0).splitAtIndex(operationBlockIndex, indent, wrap) @@ -164,7 +166,11 @@ abstract class KotlinCommonBlock( else -> return this } - val resultWrap = wrap.takeIf { elementType != PARENTHESIZED } ?: createWrapForQualifiedExpression(currentNode) + val resultWrap = if (currentNode.wrapForFirstCallInChainIsAllowed) + wrap.takeIf { elementType != PARENTHESIZED } ?: createWrapForQualifiedExpression(currentNode) + else + null + val newBlock = subBlocks.elementAt(index).processBlock(indent, resultWrap) return subBlocks.replaceBlock(newBlock, index).let { val operationIndex = subBlocks.indexOfBlockWithType(QUALIFIED_OPERATION) @@ -175,22 +181,20 @@ abstract class KotlinCommonBlock( }.wrapToBlock(currentNode, this) } - private fun List.replaceBlock( - block: ASTBlock, - index: Int = 0 - ): List = subList(0, index) + block + (takeIf { index + 1 < it.size }?.subList(index + 1, size) ?: emptyList()) + private fun List.replaceBlock(block: ASTBlock, index: Int = 0): List = toMutableList().apply { this[index] = block } - private fun createWrapForQualifiedExpression(node: ASTNode): Wrap? { - val isNonFirstChainedCall = (node.treeParent)?.isQualifiedNode() == true + private val ASTNode.wrapForFirstCallInChainIsAllowed + get() = settings.kotlinCommonSettings.WRAP_FIRST_METHOD_IN_CALL_CHAIN || + settings.kotlinCommonSettings.METHOD_CALL_CHAIN_WRAP != CommonCodeStyleSettings.WRAP_AS_NEEDED || + firstChildNode?.isQualifiedNode(true) == true - return if (isNonFirstChainedCall) - Wrap.createWrap( - settings.kotlinCommonSettings.METHOD_CALL_CHAIN_WRAP, - settings.kotlinCommonSettings.WRAP_FIRST_METHOD_IN_CALL_CHAIN - ) - else - null - } + private fun createWrapForQualifiedExpression(node: ASTNode): Wrap? = if (node.wrapForFirstCallInChainIsAllowed) + Wrap.createWrap( + settings.kotlinCommonSettings.METHOD_CALL_CHAIN_WRAP, + settings.kotlinCommonSettings.WRAP_FIRST_METHOD_IN_CALL_CHAIN + ) + else + null private fun createIndentForQualifiedExpression(block: ASTBlock): Indent { // enforce indent to children when there's a line break before the dot in any call in the chain (meaning that diff --git a/idea/testData/formatter/callChain/CallChainWrapping.after.inv.kt b/idea/testData/formatter/callChain/CallChainWrapping.after.inv.kt index e4520931d8e..a8b93704c9a 100644 --- a/idea/testData/formatter/callChain/CallChainWrapping.after.inv.kt +++ b/idea/testData/formatter/callChain/CallChainWrapping.after.inv.kt @@ -3,6 +3,44 @@ val x = foo .baz() .quux() +val x2 = foo() + .bar() + .baz() + .quux() + +val x3 = ((foo() + .bar())) + .baz() + .quux() + +val x4 = (foo() + .bar() + .baz()) + .quux() + +val x5 = (foo()) + .bar() + .baz() + .quux() + +val x6 = foo!! + .bar() + .baz()!! + .quux()!! + +val x7 = foo!! + .bar() + .baz()!! + .quux()!! + +val x8 = foo!!!!!!!! + .bar() + .baz()!! + .quux()!! + +val x9 = ((b!!)!!!!)!! + .f + val y = xyzzy(foo .bar() .baz() diff --git a/idea/testData/formatter/callChain/CallChainWrapping.after.kt b/idea/testData/formatter/callChain/CallChainWrapping.after.kt index 7b1154ad96f..3ea6ebc2aeb 100644 --- a/idea/testData/formatter/callChain/CallChainWrapping.after.kt +++ b/idea/testData/formatter/callChain/CallChainWrapping.after.kt @@ -2,6 +2,34 @@ val x = foo.bar() .baz() .quux() +val x2 = foo().bar() + .baz() + .quux() + +val x3 = ((foo().bar())).baz() + .quux() + +val x4 = (foo().bar() + .baz()).quux() + +val x5 = (foo()).bar() + .baz() + .quux() + +val x6 = foo!!.bar() + .baz()!! + .quux()!! + +val x7 = foo!!.bar() + .baz()!! + .quux()!! + +val x8 = foo!!!!!!!!.bar() + .baz()!! + .quux()!! + +val x9 = ((b!!)!!!!)!!.f + val y = xyzzy(foo.bar() .baz() .quux()) diff --git a/idea/testData/formatter/callChain/CallChainWrapping.kt b/idea/testData/formatter/callChain/CallChainWrapping.kt index 9dc20893a67..98489357454 100644 --- a/idea/testData/formatter/callChain/CallChainWrapping.kt +++ b/idea/testData/formatter/callChain/CallChainWrapping.kt @@ -1,5 +1,21 @@ val x = foo.bar().baz().quux() +val x2 = foo().bar().baz().quux() + +val x3 = ((foo().bar())).baz().quux() + +val x4 = (foo().bar().baz()).quux() + +val x5 = (foo()).bar().baz().quux() + +val x6 = foo!!.bar().baz()!!.quux()!! + +val x7 = foo!!.bar().baz()!!.quux()!! + +val x8 = foo!!!!!!!!.bar().baz()!!.quux()!! + +val x9 = ((b!!)!!!!)!!.f + val y = xyzzy(foo.bar().baz().quux()) fun foo() { diff --git a/idea/testData/formatter/callChain/CallChainWrapping2.after.inv.kt b/idea/testData/formatter/callChain/CallChainWrapping2.after.inv.kt new file mode 100644 index 00000000000..1b6a10cd545 --- /dev/null +++ b/idea/testData/formatter/callChain/CallChainWrapping2.after.inv.kt @@ -0,0 +1,116 @@ +fun test() { + INSTANCE + .awswswswswswswswwawswswswswswswswwawswswswswswswswwawswswswswswswswwawswswswswswswswwawswswswswswswswwawswswswswswswswwawswswswswswswsww + .awswswswswswswswwawswswswswswswswwawswswswswswswswwawswswswswswswswwawswswswswswswswwawswswswswswswswwawswswswswswswswwawswswswswswswsww + .adad.adad + + INSTANCE.adad.adad + + INSTANCE.adad + + INSTANCE + .awswswswswswswswwawswswswswswswswwawswswswswswswswwawswswswswswswswwawswswswswswswswwawswswswswswswswwawswswswswswswswwawswswswswswswsww + .awswswswswswswswwawswswswswswswswwawswswswswswswswwawswswswswswswswwawswswswswswswswwawswswswswswswswwawswswswswswswswwawswswswswswswsww + + (INSTANCE + .awswswswswswswswwawswswswswswswswwawswswswswswswswwawswswswswswswswwawswswswswswswswwawswswswswswswswwawswswswswswswswwawswswswswswswsww) + .awswswswswswswswwawswswswswswswswwawswswswswswswswwawswswswswswswswwawswswswswswswswwawswswswswswswswwawswswswswswswswwawswswswswswswsww + + (INSTANCE) + .awswswswswswswswwawswswswswswswswwawswswswswswswswwawswswswswswswswwawswswswswswswswwawswswswswswswswwawswswswswswswswwawswswswswswswsww + .awswswswswswswswwawswswswswswswswwawswswswswswswswwawswswswswswswswwawswswswswswswswwawswswswswswswswwawswswswswswswswwawswswswswswswsww + + INSTANCE + .awswswswswswswswwawswswswswswswswwawswswswswswswswwawswswswswswswswwawswswswswswswswwawswswswswswswswwawswswswswswswswwawswswswswswswsww + + (INSTANCE) + .awswswswswswswswwawswswswswswswswwawswswswswswswswwawswswswswswswswwawswswswswswswswwawswswswswswswswwawswswswswswswswwawswswswswswswsww + + val b = INSTANCE + .awswswswswswswswwawswswswswswswswwawswswswswswswswwawswswswswswswswwawswswswswswswswwawswswswswswswswwawswswswswswswswwawswswswswswswsww + .awswswswswswswswwawswswswswswswswwawswswswswswswswwawswswswswswswswwawswswswswswswswwawswswswswswswswwawswswswswswswswwawswswswswswswsww + + val b = (INSTANCE) + .awswswswswswswswwawswswswswswswswwawswswswswswswswwawswswswswswswswwawswswswswswswswwawswswswswswswswwawswswswswswswswwawswswswswswswsww + .awswswswswswswswwawswswswswswswswwawswswswswswswswwawswswswswswswswwawswswswswswswswwawswswswswswswswwawswswswswswswswwawswswswswswswsww + + val b = (INSTANCE + .awswswswswswswswwawswswswswswswswwawswswswswswswswwawswswswswswswswwawswswswswswswswwawswswswswswswswwawswswswswswswswwawswswswswswswsww) + .awswswswswswswswwawswswswswswswswwawswswswswswswswwawswswswswswswswwawswswswswswswswwawswswswswswswswwawswswswswswswswwawswswswswswswsww + + val b = (((INSTANCE) + .awswswswswswswswwawswswswswswswswwawswswswswswswswwawswswswswswswswwawswswswswswswswwawswswswswswswswwawswswswswswswswwawswswswswswswsww)) + .awswswswswswswswwawswswswswswswswwawswswswswswswswwawswswswswswswswwawswswswswswswswwawswswswswswswswwawswswswswswswswwawswswswswswswsww + + val b = INSTANCE.adad.adad + + val b = INSTANCE.adad + + val b = INSTANCE + .awswswswswswswswwawswswswswswswswwawswswswswswswswwawswswswswswswswwawswswswswswswswwawswswswswswswswwawswswswswswswswwawswswswswswswsww + + val b = INSTANCE!!!! + .awswswswswswswswwawswswswswswswswwawswswswswswswswwawswswswswswswswwawswswswswswswswwawswswswswswswswwawswswswswswswswwawswswswswswswsww + + val b = INSTANCE!! + .awswswswswswswswwawswswswswswswswwawswswswswswswswwawswswswswswswswwawswswswswswswswwawswswswswswswswwawswswswswswswswwawswswswswswswsww + + val b = if (INSTANCE + .awswswswswswswswwawswswswswswswswwawswswswswswswswwawswswswswswswswwawswswswswswswswwawswswswswswswswwawswswswswswswswwawswswswswswswsww == INSTANCE + .awswswswswswswswwawswswswswswswswwawswswswswswswswwawswswswswswswswwawswswswswswswswwawswswswswswswswwawswswswswswswswwawswswswswswswsww) + true + else + false + + if (INSTANCE + .awswswswswswswswwawswswswswswswswwawswswswswswswswwawswswswswswswswwawswswswswswswswwawswswswswswswswwawswswswswswswswwawswswswswswswsww == INSTANCE + .awswswswswswswswwawswswswswswswswwawswswswswswswswwawswswswswswswswwawswswswswswswswwawswswswswswswswwawswswswswswswswwawswswswswswswsww) + true + else + false + + if ((INSTANCE) + .awswswswswswswswwawswswswswswswswwawswswswswswswswwawswswswswswswswwawswswswswswswswwawswswswswswswswwawswswswswswswswwawswswswswswswsww == INSTANCE + .awswswswswswswswwawswswswswswswswwawswswswswswswswwawswswswswswswswwawswswswswswswswwawswswswswswswswwawswswswswswswswwawswswswswswswsww) + true + else + false + + val bawdawdwad = INSTANCE + .awswswswswswswswwawswswswswswswswwawswswswswswswswwawswswswswswswswwawswswswswswswswwawswswswswswswswwawswswswswswswswwawswswswswswswsww + .awswswswswswswswwawswswswswswswswwawswswswswswswswwawswswswswswswswwawswswswswswswswwawswswswswswswswwawswswswswswswswwawswswswswswswsww + + val c = INSTANCE + .awswswswswswswswwawswswswswswswswwawswswswswswswswwawswswswswswswswwawswswswswswswswwawswswswswswswswwawswswswswswswswwawswswswswswswsww() + .awswswswswswswswwawswswswswswswswwawswswswswswswswwawswswswswswswswwawswswswswswswswwawswswswswswswswwawswswswswswswswwawswswswswswswsww + + val c = INSTANCE() + .awswswswswswswswwawswswswswswswswwawswswswswswswswwawswswswswswswswwawswswswswswswswwawswswswswswswswwawswswswswswswswwawswswswswswswsww + .awswswswswswswswwawswswswswswswswwawswswswswswswswwawswswswswswswswwawswswswswswswswwawswswswswswswswwawswswswswswswswwawswswswswswswsww() + .adad.adawd + + val c = INSTANCE() + .awswswswswswswswwawswswswswswswswwawswswswswswswswwawswswswswswswswwawswswswswswswswwawswswswswswswswwawswswswswswswswwawswswswswswswsww + +} + +val b = INSTANCE + .awswswswswswswswwawswswswswswswswwawswswswswswswswwawswswswswswswswwawswswswswswswswwawswswswswswswswwawswswswswswswswwawswswswswswswsww + .awswswswswswswswwawswswswswswswswwawswswswswswswswwawswswswswswswswwawswswswswswswswwawswswswswswswswwawswswswswswswswwawswswswswswswsww + +val bawdawdwad = INSTANCE + .awswswswswswswswwawswswswswswswswwawswswswswswswswwawswswswswswswswwawswswswswswswswwawswswswswswswswwawswswswswswswswwawswswswswswswsww + .awswswswswswswswwawswswswswswswswwawswswswswswswswwawswswswswswswswwawswswswswswswswwawswswswswswswswwawswswswswswswswwawswswswswswswsww + +val c = INSTANCE + .awswswswswswswswwawswswswswswswswwawswswswswswswswwawswswswswswswswwawswswswswswswswwawswswswswswswswwawswswswswswswswwawswswswswswswsww() + .awswswswswswswswwawswswswswswswswwawswswswswswswswwawswswswswswswswwawswswswswswswswwawswswswswswswswwawswswswswswswswwawswswswswswswsww + +val c = INSTANCE() + .awswswswswswswswwawswswswswswswswwawswswswswswswswwawswswswswswswswwawswswswswswswswwawswswswswswswswwawswswswswswswswwawswswswswswswsww + .awswswswswswswswwawswswswswswswswwawswswswswswswswwawswswswswswswswwawswswswswswswswwawswswswswswswswwawswswswswswswswwawswswswswswswsww() + .adad.adawd + + +// SET_INT: METHOD_CALL_CHAIN_WRAP = 1 +// SET_FALSE: WRAP_FIRST_METHOD_IN_CALL_CHAIN \ No newline at end of file diff --git a/idea/testData/formatter/callChain/CallChainWrapping2.after.kt b/idea/testData/formatter/callChain/CallChainWrapping2.after.kt new file mode 100644 index 00000000000..76081b23b6f --- /dev/null +++ b/idea/testData/formatter/callChain/CallChainWrapping2.after.kt @@ -0,0 +1,86 @@ +fun test() { + INSTANCE.awswswswswswswswwawswswswswswswswwawswswswswswswswwawswswswswswswswwawswswswswswswswwawswswswswswswswwawswswswswswswswwawswswswswswswsww + .awswswswswswswswwawswswswswswswswwawswswswswswswswwawswswswswswswswwawswswswswswswswwawswswswswswswswwawswswswswswswswwawswswswswswswsww + .adad.adad + + INSTANCE.adad.adad + + INSTANCE.adad + + INSTANCE.awswswswswswswswwawswswswswswswswwawswswswswswswswwawswswswswswswswwawswswswswswswswwawswswswswswswswwawswswswswswswswwawswswswswswswsww + .awswswswswswswswwawswswswswswswswwawswswswswswswswwawswswswswswswswwawswswswswswswswwawswswswswswswswwawswswswswswswswwawswswswswswswsww + + (INSTANCE.awswswswswswswswwawswswswswswswswwawswswswswswswswwawswswswswswswswwawswswswswswswswwawswswswswswswswwawswswswswswswswwawswswswswswswsww).awswswswswswswswwawswswswswswswswwawswswswswswswswwawswswswswswswswwawswswswswswswswwawswswswswswswswwawswswswswswswswwawswswswswswswsww + + (INSTANCE).awswswswswswswswwawswswswswswswswwawswswswswswswswwawswswswswswswswwawswswswswswswswwawswswswswswswswwawswswswswswswswwawswswswswswswsww + .awswswswswswswswwawswswswswswswswwawswswswswswswswwawswswswswswswswwawswswswswswswswwawswswswswswswswwawswswswswswswswwawswswswswswswsww + + INSTANCE.awswswswswswswswwawswswswswswswswwawswswswswswswswwawswswswswswswswwawswswswswswswswwawswswswswswswswwawswswswswswswswwawswswswswswswsww + + (INSTANCE).awswswswswswswswwawswswswswswswswwawswswswswswswswwawswswswswswswswwawswswswswswswswwawswswswswswswswwawswswswswswswswwawswswswswswswsww + + val b = INSTANCE.awswswswswswswswwawswswswswswswswwawswswswswswswswwawswswswswswswswwawswswswswswswswwawswswswswswswswwawswswswswswswswwawswswswswswswsww + .awswswswswswswswwawswswswswswswswwawswswswswswswswwawswswswswswswswwawswswswswswswswwawswswswswswswswwawswswswswswswswwawswswswswswswsww + + val b = (INSTANCE).awswswswswswswswwawswswswswswswswwawswswswswswswswwawswswswswswswswwawswswswswswswswwawswswswswswswswwawswswswswswswswwawswswswswswswsww + .awswswswswswswswwawswswswswswswswwawswswswswswswswwawswswswswswswswwawswswswswswswswwawswswswswswswswwawswswswswswswswwawswswswswswswsww + + val b = (INSTANCE.awswswswswswswswwawswswswswswswswwawswswswswswswswwawswswswswswswswwawswswswswswswswwawswswswswswswswwawswswswswswswswwawswswswswswswsww).awswswswswswswswwawswswswswswswswwawswswswswswswswwawswswswswswswswwawswswswswswswswwawswswswswswswswwawswswswswswswswwawswswswswswswsww + + val b = (((INSTANCE).awswswswswswswswwawswswswswswswswwawswswswswswswswwawswswswswswswswwawswswswswswswswwawswswswswswswswwawswswswswswswswwawswswswswswswsww)).awswswswswswswswwawswswswswswswswwawswswswswswswswwawswswswswswswswwawswswswswswswswwawswswswswswswswwawswswswswswswswwawswswswswswswsww + + val b = INSTANCE.adad.adad + + val b = INSTANCE.adad + + val b = INSTANCE.awswswswswswswswwawswswswswswswswwawswswswswswswswwawswswswswswswswwawswswswswswswswwawswswswswswswswwawswswswswswswswwawswswswswswswsww + + val b = INSTANCE!!!!.awswswswswswswswwawswswswswswswswwawswswswswswswswwawswswswswswswswwawswswswswswswswwawswswswswswswswwawswswswswswswswwawswswswswswswsww + + val b = INSTANCE!!.awswswswswswswswwawswswswswswswswwawswswswswswswswwawswswswswswswswwawswswswswswswswwawswswswswswswswwawswswswswswswswwawswswswswswswsww + + val b = if (INSTANCE.awswswswswswswswwawswswswswswswswwawswswswswswswswwawswswswswswswswwawswswswswswswswwawswswswswswswswwawswswswswswswswwawswswswswswswsww == INSTANCE.awswswswswswswswwawswswswswswswswwawswswswswswswswwawswswswswswswswwawswswswswswswswwawswswswswswswswwawswswswswswswswwawswswswswswswsww) + true + else + false + + if (INSTANCE.awswswswswswswswwawswswswswswswswwawswswswswswswswwawswswswswswswswwawswswswswswswswwawswswswswswswswwawswswswswswswswwawswswswswswswsww == INSTANCE.awswswswswswswswwawswswswswswswswwawswswswswswswswwawswswswswswswswwawswswswswswswswwawswswswswswswswwawswswswswswswswwawswswswswswswsww) + true + else + false + + if ((INSTANCE).awswswswswswswswwawswswswswswswswwawswswswswswswswwawswswswswswswswwawswswswswswswswwawswswswswswswswwawswswswswswswswwawswswswswswswsww == INSTANCE.awswswswswswswswwawswswswswswswswwawswswswswswswswwawswswswswswswswwawswswswswswswswwawswswswswswswswwawswswswswswswswwawswswswswswswsww) + true + else + false + + val bawdawdwad = INSTANCE.awswswswswswswswwawswswswswswswswwawswswswswswswswwawswswswswswswswwawswswswswswswswwawswswswswswswswwawswswswswswswswwawswswswswswswsww + .awswswswswswswswwawswswswswswswswwawswswswswswswswwawswswswswswswswwawswswswswswswswwawswswswswswswswwawswswswswswswswwawswswswswswswsww + + val c = INSTANCE.awswswswswswswswwawswswswswswswswwawswswswswswswswwawswswswswswswswwawswswswswswswswwawswswswswswswswwawswswswswswswswwawswswswswswswsww() + .awswswswswswswswwawswswswswswswswwawswswswswswswswwawswswswswswswswwawswswswswswswswwawswswswswswswswwawswswswswswswswwawswswswswswswsww + + val c = INSTANCE().awswswswswswswswwawswswswswswswswwawswswswswswswswwawswswswswswswswwawswswswswswswswwawswswswswswswswwawswswswswswswswwawswswswswswswsww + .awswswswswswswswwawswswswswswswswwawswswswswswswswwawswswswswswswswwawswswswswswswswwawswswswswswswswwawswswswswswswswwawswswswswswswsww() + .adad.adawd + + val c = INSTANCE().awswswswswswswswwawswswswswswswswwawswswswswswswswwawswswswswswswswwawswswswswswswswwawswswswswswswswwawswswswswswswswwawswswswswswswsww + +} + +val b = INSTANCE.awswswswswswswswwawswswswswswswswwawswswswswswswswwawswswswswswswswwawswswswswswswswwawswswswswswswswwawswswswswswswswwawswswswswswswsww + .awswswswswswswswwawswswswswswswswwawswswswswswswswwawswswswswswswswwawswswswswswswswwawswswswswswswswwawswswswswswswswwawswswswswswswsww + +val bawdawdwad = INSTANCE.awswswswswswswswwawswswswswswswswwawswswswswswswswwawswswswswswswswwawswswswswswswswwawswswswswswswswwawswswswswswswswwawswswswswswswsww + .awswswswswswswswwawswswswswswswswwawswswswswswswswwawswswswswswswswwawswswswswswswswwawswswswswswswswwawswswswswswswswwawswswswswswswsww + +val c = INSTANCE.awswswswswswswswwawswswswswswswswwawswswswswswswswwawswswswswswswswwawswswswswswswswwawswswswswswswswwawswswswswswswswwawswswswswswswsww() + .awswswswswswswswwawswswswswswswswwawswswswswswswswwawswswswswswswswwawswswswswswswswwawswswswswswswswwawswswswswswswswwawswswswswswswsww + +val c = INSTANCE().awswswswswswswswwawswswswswswswswwawswswswswswswswwawswswswswswswswwawswswswswswswswwawswswswswswswswwawswswswswswswswwawswswswswswswsww + .awswswswswswswswwawswswswswswswswwawswswswswswswswwawswswswswswswswwawswswswswswswswwawswswswswswswswwawswswswswswswswwawswswswswswswsww() + .adad.adawd + + +// SET_INT: METHOD_CALL_CHAIN_WRAP = 1 +// SET_FALSE: WRAP_FIRST_METHOD_IN_CALL_CHAIN \ No newline at end of file diff --git a/idea/testData/formatter/callChain/CallChainWrapping2.kt b/idea/testData/formatter/callChain/CallChainWrapping2.kt new file mode 100644 index 00000000000..d14af1a24d3 --- /dev/null +++ b/idea/testData/formatter/callChain/CallChainWrapping2.kt @@ -0,0 +1,71 @@ +fun test() { + INSTANCE.awswswswswswswswwawswswswswswswswwawswswswswswswswwawswswswswswswswwawswswswswswswswwawswswswswswswswwawswswswswswswswwawswswswswswswsww.awswswswswswswswwawswswswswswswswwawswswswswswswswwawswswswswswswswwawswswswswswswswwawswswswswswswswwawswswswswswswswwawswswswswswswsww.adad.adad + + INSTANCE.adad.adad + + INSTANCE.adad + + INSTANCE.awswswswswswswswwawswswswswswswswwawswswswswswswswwawswswswswswswswwawswswswswswswswwawswswswswswswswwawswswswswswswswwawswswswswswswsww.awswswswswswswswwawswswswswswswswwawswswswswswswswwawswswswswswswswwawswswswswswswswwawswswswswswswswwawswswswswswswswwawswswswswswswsww + + (INSTANCE.awswswswswswswswwawswswswswswswswwawswswswswswswswwawswswswswswswswwawswswswswswswswwawswswswswswswswwawswswswswswswswwawswswswswswswsww).awswswswswswswswwawswswswswswswswwawswswswswswswswwawswswswswswswswwawswswswswswswswwawswswswswswswswwawswswswswswswswwawswswswswswswsww + + (INSTANCE).awswswswswswswswwawswswswswswswswwawswswswswswswswwawswswswswswswswwawswswswswswswswwawswswswswswswswwawswswswswswswswwawswswswswswswsww.awswswswswswswswwawswswswswswswswwawswswswswswswswwawswswswswswswswwawswswswswswswswwawswswswswswswswwawswswswswswswswwawswswswswswswsww + + INSTANCE.awswswswswswswswwawswswswswswswswwawswswswswswswswwawswswswswswswswwawswswswswswswswwawswswswswswswswwawswswswswswswswwawswswswswswswsww + + (INSTANCE).awswswswswswswswwawswswswswswswswwawswswswswswswswwawswswswswswswswwawswswswswswswswwawswswswswswswswwawswswswswswswswwawswswswswswswsww + + val b = INSTANCE.awswswswswswswswwawswswswswswswswwawswswswswswswswwawswswswswswswswwawswswswswswswswwawswswswswswswswwawswswswswswswswwawswswswswswswsww.awswswswswswswswwawswswswswswswswwawswswswswswswswwawswswswswswswswwawswswswswswswswwawswswswswswswswwawswswswswswswswwawswswswswswswsww + + val b = (INSTANCE).awswswswswswswswwawswswswswswswswwawswswswswswswswwawswswswswswswswwawswswswswswswswwawswswswswswswswwawswswswswswswswwawswswswswswswsww.awswswswswswswswwawswswswswswswswwawswswswswswswswwawswswswswswswswwawswswswswswswswwawswswswswswswswwawswswswswswswswwawswswswswswswsww + + val b = (INSTANCE.awswswswswswswswwawswswswswswswswwawswswswswswswswwawswswswswswswswwawswswswswswswswwawswswswswswswswwawswswswswswswswwawswswswswswswsww).awswswswswswswswwawswswswswswswswwawswswswswswswswwawswswswswswswswwawswswswswswswswwawswswswswswswswwawswswswswswswswwawswswswswswswsww + + val b = (((INSTANCE).awswswswswswswswwawswswswswswswswwawswswswswswswswwawswswswswswswswwawswswswswswswswwawswswswswswswswwawswswswswswswswwawswswswswswswsww)).awswswswswswswswwawswswswswswswswwawswswswswswswswwawswswswswswswswwawswswswswswswswwawswswswswswswswwawswswswswswswswwawswswswswswswsww + + val b = INSTANCE.adad.adad + + val b = INSTANCE.adad + + val b = INSTANCE.awswswswswswswswwawswswswswswswswwawswswswswswswswwawswswswswswswswwawswswswswswswswwawswswswswswswswwawswswswswswswswwawswswswswswswsww + + val b = INSTANCE!!!!.awswswswswswswswwawswswswswswswswwawswswswswswswswwawswswswswswswswwawswswswswswswswwawswswswswswswswwawswswswswswswswwawswswswswswswsww + + val b = INSTANCE!!.awswswswswswswswwawswswswswswswswwawswswswswswswswwawswswswswswswswwawswswswswswswswwawswswswswswswswwawswswswswswswswwawswswswswswswsww + + val b = if (INSTANCE.awswswswswswswswwawswswswswswswswwawswswswswswswswwawswswswswswswswwawswswswswswswswwawswswswswswswswwawswswswswswswswwawswswswswswswsww == INSTANCE.awswswswswswswswwawswswswswswswswwawswswswswswswswwawswswswswswswswwawswswswswswswswwawswswswswswswswwawswswswswswswswwawswswswswswswsww) + true + else + false + + if (INSTANCE.awswswswswswswswwawswswswswswswswwawswswswswswswswwawswswswswswswswwawswswswswswswswwawswswswswswswswwawswswswswswswswwawswswswswswswsww == INSTANCE.awswswswswswswswwawswswswswswswswwawswswswswswswswwawswswswswswswswwawswswswswswswswwawswswswswswswswwawswswswswswswswwawswswswswswswsww) + true + else + false + + if ((INSTANCE).awswswswswswswswwawswswswswswswswwawswswswswswswswwawswswswswswswswwawswswswswswswswwawswswswswswswswwawswswswswswswswwawswswswswswswsww == INSTANCE.awswswswswswswswwawswswswswswswswwawswswswswswswswwawswswswswswswswwawswswswswswswswwawswswswswswswswwawswswswswswswswwawswswswswswswsww) + true + else + false + + val bawdawdwad = INSTANCE.awswswswswswswswwawswswswswswswswwawswswswswswswswwawswswswswswswswwawswswswswswswswwawswswswswswswswwawswswswswswswswwawswswswswswswsww.awswswswswswswswwawswswswswswswswwawswswswswswswswwawswswswswswswswwawswswswswswswswwawswswswswswswswwawswswswswswswswwawswswswswswswsww + + val c = INSTANCE.awswswswswswswswwawswswswswswswswwawswswswswswswswwawswswswswswswswwawswswswswswswswwawswswswswswswswwawswswswswswswswwawswswswswswswsww().awswswswswswswswwawswswswswswswswwawswswswswswswswwawswswswswswswswwawswswswswswswswwawswswswswswswswwawswswswswswswswwawswswswswswswsww + + val c = INSTANCE().awswswswswswswswwawswswswswswswswwawswswswswswswswwawswswswswswswswwawswswswswswswswwawswswswswswswswwawswswswswswswswwawswswswswswswsww.awswswswswswswswwawswswswswswswswwawswswswswswswswwawswswswswswswswwawswswswswswswswwawswswswswswswswwawswswswswswswswwawswswswswswswsww().adad.adawd + + val c = INSTANCE().awswswswswswswswwawswswswswswswswwawswswswswswswswwawswswswswswswswwawswswswswswswswwawswswswswswswswwawswswswswswswswwawswswswswswswsww + +} + +val b = INSTANCE.awswswswswswswswwawswswswswswswswwawswswswswswswswwawswswswswswswswwawswswswswswswswwawswswswswswswswwawswswswswswswswwawswswswswswswsww.awswswswswswswswwawswswswswswswswwawswswswswswswswwawswswswswswswswwawswswswswswswswwawswswswswswswswwawswswswswswswswwawswswswswswswsww + +val bawdawdwad = INSTANCE.awswswswswswswswwawswswswswswswswwawswswswswswswswwawswswswswswswswwawswswswswswswswwawswswswswswswswwawswswswswswswswwawswswswswswswsww.awswswswswswswswwawswswswswswswswwawswswswswswswswwawswswswswswswswwawswswswswswswswwawswswswswswswswwawswswswswswswswwawswswswswswswsww + +val c = INSTANCE.awswswswswswswswwawswswswswswswswwawswswswswswswswwawswswswswswswswwawswswswswswswswwawswswswswswswswwawswswswswswswswwawswswswswswswsww().awswswswswswswswwawswswswswswswswwawswswswswswswswwawswswswswswswswwawswswswswswswswwawswswswswswswswwawswswswswswswswwawswswswswswswsww + +val c = INSTANCE().awswswswswswswswwawswswswswswswswwawswswswswswswswwawswswswswswswswwawswswswswswswswwawswswswswswswswwawswswswswswswswwawswswswswswswsww.awswswswswswswswwawswswswswswswswwawswswswswswswswwawswswswswswswswwawswswswswswswswwawswswswswswswswwawswswswswswswswwawswswswswswswsww().adad.adawd + + +// SET_INT: METHOD_CALL_CHAIN_WRAP = 1 +// SET_FALSE: WRAP_FIRST_METHOD_IN_CALL_CHAIN \ No newline at end of file diff --git a/idea/tests/org/jetbrains/kotlin/formatter/FormatterTestGenerated.java b/idea/tests/org/jetbrains/kotlin/formatter/FormatterTestGenerated.java index 6e22f65d8c4..ffd8c1ab449 100644 --- a/idea/tests/org/jetbrains/kotlin/formatter/FormatterTestGenerated.java +++ b/idea/tests/org/jetbrains/kotlin/formatter/FormatterTestGenerated.java @@ -867,6 +867,11 @@ public class FormatterTestGenerated extends AbstractFormatterTest { runTest("idea/testData/formatter/callChain/CallChainWrapping.after.kt"); } + @TestMetadata("CallChainWrapping2.after.kt") + public void testCallChainWrapping2() throws Exception { + runTest("idea/testData/formatter/callChain/CallChainWrapping2.after.kt"); + } + @TestMetadata("CallChainWrappingChopDown.after.kt") public void testCallChainWrappingChopDown() throws Exception { runTest("idea/testData/formatter/callChain/CallChainWrappingChopDown.after.kt"); @@ -1437,6 +1442,11 @@ public class FormatterTestGenerated extends AbstractFormatterTest { runTest("idea/testData/formatter/callChain/CallChainWrapping.after.inv.kt"); } + @TestMetadata("CallChainWrapping2.after.inv.kt") + public void testCallChainWrapping2() throws Exception { + runTest("idea/testData/formatter/callChain/CallChainWrapping2.after.inv.kt"); + } + @TestMetadata("CallChainWrappingChopDown.after.inv.kt") public void testCallChainWrappingChopDown() throws Exception { runTest("idea/testData/formatter/callChain/CallChainWrappingChopDown.after.inv.kt");