diff --git a/scalafmt-core/shared/src/main/scala/org/scalafmt/config/Newlines.scala b/scalafmt-core/shared/src/main/scala/org/scalafmt/config/Newlines.scala index 9cd9f7256b..fea81f99ae 100644 --- a/scalafmt-core/shared/src/main/scala/org/scalafmt/config/Newlines.scala +++ b/scalafmt-core/shared/src/main/scala/org/scalafmt/config/Newlines.scala @@ -328,11 +328,13 @@ object Newlines { object BeforeCurlyLambdaParams { case object always extends BeforeCurlyLambdaParams case object never extends BeforeCurlyLambdaParams + case object multiline extends BeforeCurlyLambdaParams case object multilineWithCaseOnly extends BeforeCurlyLambdaParams implicit val codec: ConfCodec[BeforeCurlyLambdaParams] = ReaderUtil.oneOfCustom[BeforeCurlyLambdaParams]( never, always, + multiline, multilineWithCaseOnly ) { case Conf.Bool(true) => Configured.Ok(always) diff --git a/scalafmt-tests/src/test/resources/unit/Lambda.stat b/scalafmt-tests/src/test/resources/unit/Lambda.stat index 25cccf7323..7d3a584f03 100644 --- a/scalafmt-tests/src/test/resources/unit/Lambda.stat +++ b/scalafmt-tests/src/test/resources/unit/Lambda.stat @@ -239,3 +239,32 @@ object a { s"$c -> $i" } } +<<< ONLY #2099 beforeCurlyLambdaParams = multiline +newlines.beforeCurlyLambdaParams = multiline +=== +object a { + x.map { x => s"${x._1} -> ${x._2}" } + x.map { case (c, i) => s"$c -> $i" } + x.zipWithIndex.map { x => s"${x._1} -> ${x._2}" } + x.zipWithIndex.map { case (c, i) => s"$c -> $i" } + x.zipWithIndex.map { case (c, i) => s"$c -> $i (long comment)" } + x.zipWithIndex.map { case (c, i) if c != i => s"$c -> $i" } +} +>>> +object a { + x.map { x => s"${x._1} -> ${x._2}" } + x.map { case (c, i) => s"$c -> $i" } + x.zipWithIndex.map { x => + s"${x._1} -> ${x._2}" + } + x.zipWithIndex.map { case (c, i) => + s"$c -> $i" + } + x.zipWithIndex.map { case (c, i) => + s"$c -> $i (long comment)" + } + x.zipWithIndex.map { + case (c, i) if c != i => + s"$c -> $i" + } +}