From 30644e00e83f9a1da5b666be59920ea263b50809 Mon Sep 17 00:00:00 2001 From: Albert Meltzer <7529386+kitbellew@users.noreply.github.com> Date: Tue, 19 Nov 2024 10:36:37 -0800 Subject: [PATCH 1/2] Test AvoidInfix with match as lhs --- .../test/resources/scala3/OptionalBraces.stat | 47 +++++++++++++++++++ .../resources/scala3/OptionalBraces_fold.stat | 46 ++++++++++++++++++ .../resources/scala3/OptionalBraces_keep.stat | 46 ++++++++++++++++++ .../scala3/OptionalBraces_unfold.stat | 46 ++++++++++++++++++ .../test/scala/org/scalafmt/FormatTests.scala | 2 +- 5 files changed, 186 insertions(+), 1 deletion(-) diff --git a/scalafmt-tests/shared/src/test/resources/scala3/OptionalBraces.stat b/scalafmt-tests/shared/src/test/resources/scala3/OptionalBraces.stat index 0d96fbca55..39cbea6c95 100644 --- a/scalafmt-tests/shared/src/test/resources/scala3/OptionalBraces.stat +++ b/scalafmt-tests/shared/src/test/resources/scala3/OptionalBraces.stat @@ -7564,3 +7564,50 @@ object Build: } }.evaluated ) +<<< AvoidInfix with match +rewrite.rules = [AvoidInfix] +=== +object a { + a b c match + case _ => +} +>>> +object a { + a.b(c) match + case _ => +} +<<< AvoidInfix with match within applyinfix +rewrite.rules = [AvoidInfix] +=== +object a { + a b c match { + case _ => + } d e +} +>>> +test does not parse +[dialect scala3] `;` expected but `.` found + a .b( c) match { + case _ => + } .d( e) + ^ +} +====== full result: ====== +object a { + a .b( c) match { + case _ => + } .d( e) +} +<<< AvoidInfix with match, with dot +rewrite.rules = [AvoidInfix] +=== +object a { + (a.b(c)).match + case _ => +} +>>> +object a { + (a.b(c)) + .match + case _ => +} diff --git a/scalafmt-tests/shared/src/test/resources/scala3/OptionalBraces_fold.stat b/scalafmt-tests/shared/src/test/resources/scala3/OptionalBraces_fold.stat index 595f389c12..a08ab241b5 100644 --- a/scalafmt-tests/shared/src/test/resources/scala3/OptionalBraces_fold.stat +++ b/scalafmt-tests/shared/src/test/resources/scala3/OptionalBraces_fold.stat @@ -7275,3 +7275,49 @@ object Build: config: GenerationConfig => config.remove[SiteRoot] } }.evaluated) +<<< AvoidInfix with match +rewrite.rules = [AvoidInfix] +=== +object a { + a b c match + case _ => +} +>>> +object a { + a.b(c) match + case _ => +} +<<< AvoidInfix with match within applyinfix +rewrite.rules = [AvoidInfix] +=== +object a { + a b c match { + case _ => + } d e +} +>>> +test does not parse +[dialect scala3] `;` expected but `.` found + a .b( c) match { + case _ => + } .d( e) + ^ +} +====== full result: ====== +object a { + a .b( c) match { + case _ => + } .d( e) +} +<<< AvoidInfix with match, with dot +rewrite.rules = [AvoidInfix] +=== +object a { + (a.b(c)).match + case _ => +} +>>> +object a { + (a.b(c)).match + case _ => +} diff --git a/scalafmt-tests/shared/src/test/resources/scala3/OptionalBraces_keep.stat b/scalafmt-tests/shared/src/test/resources/scala3/OptionalBraces_keep.stat index de21c14bf5..2515ab3312 100644 --- a/scalafmt-tests/shared/src/test/resources/scala3/OptionalBraces_keep.stat +++ b/scalafmt-tests/shared/src/test/resources/scala3/OptionalBraces_keep.stat @@ -7592,3 +7592,49 @@ object Build: } }.evaluated ) +<<< AvoidInfix with match +rewrite.rules = [AvoidInfix] +=== +object a { + a b c match + case _ => +} +>>> +object a { + a.b(c) match + case _ => +} +<<< AvoidInfix with match within applyinfix +rewrite.rules = [AvoidInfix] +=== +object a { + a b c match { + case _ => + } d e +} +>>> +test does not parse +[dialect scala3] `;` expected but `.` found + a .b( c) match { + case _ => + } .d( e) + ^ +} +====== full result: ====== +object a { + a .b( c) match { + case _ => + } .d( e) +} +<<< AvoidInfix with match, with dot +rewrite.rules = [AvoidInfix] +=== +object a { + (a.b(c)).match + case _ => +} +>>> +object a { + (a.b(c)).match + case _ => +} diff --git a/scalafmt-tests/shared/src/test/resources/scala3/OptionalBraces_unfold.stat b/scalafmt-tests/shared/src/test/resources/scala3/OptionalBraces_unfold.stat index c84a38f02c..45dc8b7047 100644 --- a/scalafmt-tests/shared/src/test/resources/scala3/OptionalBraces_unfold.stat +++ b/scalafmt-tests/shared/src/test/resources/scala3/OptionalBraces_unfold.stat @@ -7879,3 +7879,49 @@ object Build: } .evaluated ) +<<< AvoidInfix with match +rewrite.rules = [AvoidInfix] +=== +object a { + a b c match + case _ => +} +>>> +object a { + a.b(c) match + case _ => +} +<<< AvoidInfix with match within applyinfix +rewrite.rules = [AvoidInfix] +=== +object a { + a b c match { + case _ => + } d e +} +>>> +test does not parse +[dialect scala3] `;` expected but `.` found + a .b( c) match { + case _ => + } .d( e) + ^ +} +====== full result: ====== +object a { + a .b( c) match { + case _ => + } .d( e) +} +<<< AvoidInfix with match, with dot +rewrite.rules = [AvoidInfix] +=== +object a { + (a.b(c)).match + case _ => +} +>>> +object a { + (a.b(c)).match + case _ => +} diff --git a/scalafmt-tests/shared/src/test/scala/org/scalafmt/FormatTests.scala b/scalafmt-tests/shared/src/test/scala/org/scalafmt/FormatTests.scala index 779ec0e9d8..2f14c53cc2 100644 --- a/scalafmt-tests/shared/src/test/scala/org/scalafmt/FormatTests.scala +++ b/scalafmt-tests/shared/src/test/scala/org/scalafmt/FormatTests.scala @@ -144,7 +144,7 @@ class FormatTests extends FunSuite with CanRunTests with FormatAssertions { val explored = Debug.explored.get() logger.debug(s"Total explored: $explored") if (!onlyUnit && !onlyManual) - assertEquals(explored, 1082944, "total explored") + assertEquals(explored, 1083242, "total explored") val results = debugResults.result() // TODO(olafur) don't block printing out test results. // I don't want to deal with scalaz's Tasks :'( From 4dd2c73d2881923aff61833e3eefcf5d49fe7522 Mon Sep 17 00:00:00 2001 From: Albert Meltzer <7529386+kitbellew@users.noreply.github.com> Date: Tue, 19 Nov 2024 16:05:04 -0800 Subject: [PATCH 2/2] AvoidInfix: make sure to wrap Term.Match as well --- .../scala/org/scalafmt/rewrite/AvoidInfix.scala | 2 +- .../test/resources/scala3/OptionalBraces.stat | 12 ++---------- .../resources/scala3/OptionalBraces_fold.stat | 12 +----------- .../resources/scala3/OptionalBraces_keep.stat | 12 ++---------- .../resources/scala3/OptionalBraces_unfold.stat | 16 +++++----------- .../test/scala/org/scalafmt/FormatTests.scala | 2 +- 6 files changed, 12 insertions(+), 44 deletions(-) diff --git a/scalafmt-core/shared/src/main/scala/org/scalafmt/rewrite/AvoidInfix.scala b/scalafmt-core/shared/src/main/scala/org/scalafmt/rewrite/AvoidInfix.scala index b4bf9deb04..018b68aa56 100644 --- a/scalafmt-core/shared/src/main/scala/org/scalafmt/rewrite/AvoidInfix.scala +++ b/scalafmt-core/shared/src/main/scala/org/scalafmt/rewrite/AvoidInfix.scala @@ -89,7 +89,7 @@ class AvoidInfix(implicit ctx: RewriteCtx) extends RewriteSession { val shouldWrapLhs = !lhsIsWrapped && (lhs match { - case _: Term.ApplyInfix => !lhsIsOK + case _: Term.ApplyInfix | _: Term.Match => !lhsIsOK // foo _ compose bar => (foo _).compose(bar) // new Foo compose bar => (new Foo).compose(bar) case _: Term.Eta | _: Term.New => true diff --git a/scalafmt-tests/shared/src/test/resources/scala3/OptionalBraces.stat b/scalafmt-tests/shared/src/test/resources/scala3/OptionalBraces.stat index 39cbea6c95..7e3a4ba871 100644 --- a/scalafmt-tests/shared/src/test/resources/scala3/OptionalBraces.stat +++ b/scalafmt-tests/shared/src/test/resources/scala3/OptionalBraces.stat @@ -7585,18 +7585,10 @@ object a { } d e } >>> -test does not parse -[dialect scala3] `;` expected but `.` found - a .b( c) match { - case _ => - } .d( e) - ^ -} -====== full result: ====== object a { - a .b( c) match { + (a.b(c) match { case _ => - } .d( e) + }).d(e) } <<< AvoidInfix with match, with dot rewrite.rules = [AvoidInfix] diff --git a/scalafmt-tests/shared/src/test/resources/scala3/OptionalBraces_fold.stat b/scalafmt-tests/shared/src/test/resources/scala3/OptionalBraces_fold.stat index a08ab241b5..5d45dec21e 100644 --- a/scalafmt-tests/shared/src/test/resources/scala3/OptionalBraces_fold.stat +++ b/scalafmt-tests/shared/src/test/resources/scala3/OptionalBraces_fold.stat @@ -7296,18 +7296,8 @@ object a { } d e } >>> -test does not parse -[dialect scala3] `;` expected but `.` found - a .b( c) match { - case _ => - } .d( e) - ^ -} -====== full result: ====== object a { - a .b( c) match { - case _ => - } .d( e) + (a.b(c) match { case _ => }).d(e) } <<< AvoidInfix with match, with dot rewrite.rules = [AvoidInfix] diff --git a/scalafmt-tests/shared/src/test/resources/scala3/OptionalBraces_keep.stat b/scalafmt-tests/shared/src/test/resources/scala3/OptionalBraces_keep.stat index 2515ab3312..d675ccc27c 100644 --- a/scalafmt-tests/shared/src/test/resources/scala3/OptionalBraces_keep.stat +++ b/scalafmt-tests/shared/src/test/resources/scala3/OptionalBraces_keep.stat @@ -7613,18 +7613,10 @@ object a { } d e } >>> -test does not parse -[dialect scala3] `;` expected but `.` found - a .b( c) match { - case _ => - } .d( e) - ^ -} -====== full result: ====== object a { - a .b( c) match { + (a.b(c) match { case _ => - } .d( e) + }).d(e) } <<< AvoidInfix with match, with dot rewrite.rules = [AvoidInfix] diff --git a/scalafmt-tests/shared/src/test/resources/scala3/OptionalBraces_unfold.stat b/scalafmt-tests/shared/src/test/resources/scala3/OptionalBraces_unfold.stat index 45dc8b7047..4458bed87c 100644 --- a/scalafmt-tests/shared/src/test/resources/scala3/OptionalBraces_unfold.stat +++ b/scalafmt-tests/shared/src/test/resources/scala3/OptionalBraces_unfold.stat @@ -7900,18 +7900,12 @@ object a { } d e } >>> -test does not parse -[dialect scala3] `;` expected but `.` found - a .b( c) match { - case _ => - } .d( e) - ^ -} -====== full result: ====== object a { - a .b( c) match { - case _ => - } .d( e) + ( + a.b(c) match { + case _ => + } + ).d(e) } <<< AvoidInfix with match, with dot rewrite.rules = [AvoidInfix] diff --git a/scalafmt-tests/shared/src/test/scala/org/scalafmt/FormatTests.scala b/scalafmt-tests/shared/src/test/scala/org/scalafmt/FormatTests.scala index 2f14c53cc2..77937b4ad7 100644 --- a/scalafmt-tests/shared/src/test/scala/org/scalafmt/FormatTests.scala +++ b/scalafmt-tests/shared/src/test/scala/org/scalafmt/FormatTests.scala @@ -144,7 +144,7 @@ class FormatTests extends FunSuite with CanRunTests with FormatAssertions { val explored = Debug.explored.get() logger.debug(s"Total explored: $explored") if (!onlyUnit && !onlyManual) - assertEquals(explored, 1083242, "total explored") + assertEquals(explored, 1083470, "total explored") val results = debugResults.result() // TODO(olafur) don't block printing out test results. // I don't want to deal with scalaz's Tasks :'(