Fix worng breaking of lines in expression functions
Summary: Long expressions in an expression function did not break correctly
Reviewed By: cgrushko
Differential Revision: D19873183
fbshipit-source-id: 7ba5659480b1483cf989ac2773461945b81b764d
diff --git a/core/src/main/java/com/facebook/ktfmt/KotlinInputAstVisitor.kt b/core/src/main/java/com/facebook/ktfmt/KotlinInputAstVisitor.kt
index 6efdbcf..68a6cfe 100644
--- a/core/src/main/java/com/facebook/ktfmt/KotlinInputAstVisitor.kt
+++ b/core/src/main/java/com/facebook/ktfmt/KotlinInputAstVisitor.kt
@@ -246,6 +246,7 @@
typeParameters.accept(this)
}
}
+
if (name != null || receiverTypeReference != null) {
builder.space()
}
@@ -298,7 +299,9 @@
builder.token("=")
builder.block(expressionBreakIndent) {
builder.breakOp(Doc.FillMode.INDEPENDENT, " ", ZERO)
- nonBlockBodyExpressions.accept(this)
+ builder.block(ZERO) {
+ nonBlockBodyExpressions.accept(this)
+ }
}
}
}
diff --git a/core/src/test/java/com/facebook/ktfmt/FormatterKtTest.kt b/core/src/test/java/com/facebook/ktfmt/FormatterKtTest.kt
index e817e1d..74b5e32 100644
--- a/core/src/test/java/com/facebook/ktfmt/FormatterKtTest.kt
+++ b/core/src/test/java/com/facebook/ktfmt/FormatterKtTest.kt
@@ -359,6 +359,13 @@
|""".trimMargin())
@Test
+ fun `safe dot operator expression chain in expression function`() = assertFormatted(
+ """
+ |fun f(number: Int) =
+ | Something.doStuff(number)?.size
+ |""".trimMargin(), 50)
+
+ @Test
fun `import list`() {
val code = """
| import com .example.common.reality. FooBar