diff options
author | Omer Strulovich <ostrulovich@fb.com> | 2022-04-13 14:02:02 -0700 |
---|---|---|
committer | Facebook GitHub Bot <facebook-github-bot@users.noreply.github.com> | 2022-04-13 14:02:02 -0700 |
commit | 781eb2f025b6ef82ef35967f84b7308cba080d6a (patch) | |
tree | 1ba5d3abff1e6d8621898f0e61647762ec3b0592 /core/src/main/java/com/facebook | |
parent | 1bebf0bc4677832a2b7004acf42a938baecd565a (diff) | |
download | ktfmt-781eb2f025b6ef82ef35967f84b7308cba080d6a.tar.gz |
Do not try to make block like syntax for expression with more than 1 lambda
Summary: Avoiding the block like syntax once more than one lambda shows up looks much better for many complicated chains.
Reviewed By: hick209
Differential Revision: D35618238
fbshipit-source-id: acb835a68439d052680fa35053545bdf2f810c2b
Diffstat (limited to 'core/src/main/java/com/facebook')
-rw-r--r-- | core/src/main/java/com/facebook/ktfmt/format/KotlinInputAstVisitor.kt | 11 |
1 files changed, 6 insertions, 5 deletions
diff --git a/core/src/main/java/com/facebook/ktfmt/format/KotlinInputAstVisitor.kt b/core/src/main/java/com/facebook/ktfmt/format/KotlinInputAstVisitor.kt index c4633f2..cdb3344 100644 --- a/core/src/main/java/com/facebook/ktfmt/format/KotlinInputAstVisitor.kt +++ b/core/src/main/java/com/facebook/ktfmt/format/KotlinInputAstVisitor.kt @@ -487,8 +487,9 @@ class KotlinInputAstVisitor( */ private fun emitQualifiedExpression(expression: KtExpression) { val parts = breakIntoParts(expression) - val hasTrailingLambda = parts.last().isLambda() - val groupingInfos = computeGroupingInfo(parts, hasTrailingLambda) + // whether we want to make a lambda look like a block, this make Kotlin DSLs look as expected + val useBlockLikeLambdaStyle = parts.last().isLambda() && parts.count { it.isLambda() } == 1 + val groupingInfos = computeGroupingInfo(parts, useBlockLikeLambdaStyle) builder.block(expressionBreakIndent) { val nameTag = genSym() // allows adjusting arguments indentation if a break will be made for ((index, ktExpression) in parts.withIndex()) { @@ -515,7 +516,7 @@ class KotlinInputAstVisitor( builder.close() } // close group due to last lambda to allow block-like style in `as.forEach { ... }` - val isTrailingLambda = hasTrailingLambda && index == parts.size - 1 + val isTrailingLambda = useBlockLikeLambdaStyle && index == parts.size - 1 if (isTrailingLambda) { builder.close() } @@ -609,7 +610,7 @@ class KotlinInputAstVisitor( */ private fun computeGroupingInfo( parts: List<KtExpression>, - hasTrailingLambda: Boolean + useBlockLikeLambdaStyle: Boolean ): List<GroupingInfo> { val groupingInfos = List(parts.size) { GroupingInfo() } var lastIndexToOpen = 0 @@ -639,7 +640,7 @@ class KotlinInputAstVisitor( } } } - if (hasTrailingLambda) { + if (useBlockLikeLambdaStyle) { // a trailing lambda adds a group that we stop before emitting the lambda groupingInfos[0].groupOpenCount++ } |