diff --git a/scalafmt-core/shared/src/main/scala/org/scalafmt/config/Align.scala b/scalafmt-core/shared/src/main/scala/org/scalafmt/config/Align.scala index e98a562de3..bb6fb5ff9c 100644 --- a/scalafmt-core/shared/src/main/scala/org/scalafmt/config/Align.scala +++ b/scalafmt-core/shared/src/main/scala/org/scalafmt/config/Align.scala @@ -158,13 +158,11 @@ object Align { implicit val alignTokensDecoder: ConfDecoderEx[Seq[AlignToken]] = AlignToken .seqDecoder.except { case (_, conf) => preset.lift(conf).map(x => Configured.Ok(x.tokens)) - }.contramap { - case Conf.Obj(List(("add", c))) => - Console.err.println( - """'align.tokens.add' is deprecated; use align.tokens."+" instead.""", - ) - Conf.Obj("+" -> c) - case conf => conf + }.contramapPartial { case Conf.Obj(List(("add", c))) => + Console.err.println( + """'align.tokens.add' is deprecated; use align.tokens."+" instead.""", + ) + Conf.Obj("+" -> c) } } diff --git a/scalafmt-core/shared/src/main/scala/org/scalafmt/config/IndentOperator.scala b/scalafmt-core/shared/src/main/scala/org/scalafmt/config/IndentOperator.scala index 2eea364e3d..8c120d1b43 100644 --- a/scalafmt-core/shared/src/main/scala/org/scalafmt/config/IndentOperator.scala +++ b/scalafmt-core/shared/src/main/scala/org/scalafmt/config/IndentOperator.scala @@ -109,8 +109,8 @@ object IndentOperator { val boolToAssign: PartialFunction[Conf, Conf] = { case Conf.Bool(value) => if (value) Conf.Obj( - exemptScopeName -> Conf.nameOf(Exempt.notAssign), - Conf.nameOf(default.excludeRegex).value -> Conf.Str(".*"), + (exemptScopeName, Conf.nameOf(Exempt.notAssign)), + (Conf.nameOf(default.excludeRegex), Conf.Str(".*")), ) else Conf.Obj.empty } 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 983226d342..7e2d249edb 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 @@ -810,10 +810,8 @@ object Newlines { .deriveSurface[SelectChain] implicit val encoder: ConfEncoder[SelectChain] = generic.deriveEncoder implicit val decoder: ConfDecoderEx[SelectChain] = generic - .deriveDecoderEx(default).noTypos.contramap { - case conf: Conf.Str => Conf.Obj("style" -> conf) - case conf => conf - } + .deriveDecoderEx(default).noTypos + .contramapPartial { case conf: Conf.Str => Conf.Obj("style" -> conf) } } } diff --git a/scalafmt-core/shared/src/main/scala/org/scalafmt/config/Presets.scala b/scalafmt-core/shared/src/main/scala/org/scalafmt/config/Presets.scala index bdd385a365..ac6055da42 100644 --- a/scalafmt-core/shared/src/main/scala/org/scalafmt/config/Presets.scala +++ b/scalafmt-core/shared/src/main/scala/org/scalafmt/config/Presets.scala @@ -6,13 +6,11 @@ object Presets { val presetKey = "preset" - def contramap[A <: Product]( - baseDecoder: ConfDecoderEx[A], - )(f: PartialFunction[Conf, Conf]): ConfDecoderEx[A] = baseDecoder.contramap { - case conf @ Conf.Obj(v) => v.collectFirst { case (`presetKey`, x) => x } - .flatMap(f.lift.apply) - .fold(conf)(x => Conf.Obj((presetKey -> x) :: v.filter(_._1 != presetKey))) - case conf => conf + def contramap[A <: Product](baseDecoder: ConfDecoderEx[A])( + f: PartialFunction[Conf, Conf], + ): ConfDecoderEx[A] = baseDecoder.contramapPartialOpt { case Conf.Obj(v) => + v.collectFirst { case (`presetKey`, x) => x }.flatMap(f.lift.apply) + .map(x => Conf.Obj((presetKey -> x) :: v.filter(_._1 != presetKey))) } def mapDecoder[A <: Product]( diff --git a/scalafmt-core/shared/src/main/scala/org/scalafmt/config/RewriteScala3Settings.scala b/scalafmt-core/shared/src/main/scala/org/scalafmt/config/RewriteScala3Settings.scala index 0dd93642a0..ffb3c96fab 100644 --- a/scalafmt-core/shared/src/main/scala/org/scalafmt/config/RewriteScala3Settings.scala +++ b/scalafmt-core/shared/src/main/scala/org/scalafmt/config/RewriteScala3Settings.scala @@ -67,14 +67,13 @@ object RewriteScala3Settings { implicit final val decoder: ConfDecoderEx[RemoveOptionalBraces] = generic .deriveDecoderEx[RemoveOptionalBraces](no).noTypos.detectSectionRenames - .contramap { + .contramapPartial { case Conf.Bool(true) | Conf.Str("yes") => Conf .Obj("enabled" -> Conf(true)) case Conf.Bool(false) | Conf.Str("no") => Conf .Obj("enabled" -> Conf(false)) case Conf.Str("oldSyntaxToo") => Conf .Obj("enabled" -> Conf(true), "oldSyntaxToo" -> Conf(true)) - case conf => conf } }