diff --git a/scalafmt-core/shared/src/main/scala/org/scalafmt/rewrite/ConvertToNewScala3Syntax.scala b/scalafmt-core/shared/src/main/scala/org/scalafmt/rewrite/ConvertToNewScala3Syntax.scala index 25b7168828..03f2cdc479 100644 --- a/scalafmt-core/shared/src/main/scala/org/scalafmt/rewrite/ConvertToNewScala3Syntax.scala +++ b/scalafmt-core/shared/src/main/scala/org/scalafmt/rewrite/ConvertToNewScala3Syntax.scala @@ -70,7 +70,9 @@ private class ConvertToNewScala3Syntax(ftoks: FormatTokens) ft.meta.rightOwner match { case _: Importee.Wildcard if dialect.allowStarWildcardImport => replaceTokenIdent("*", ft.right) - case _: Type.Placeholder if dialect.allowQuestionMarkPlaceholder => + case t: Type.Placeholder + if dialect.allowQuestionMarkPlaceholder && + t.parent.exists(_.is[Type]) => replaceTokenIdent("?", ft.right) case _: Term.Repeated if dialect.allowPostfixStarVarargSplices => removeToken // see above, under Colon diff --git a/scalafmt-tests/src/test/resources/scala3/OptionalBraces.stat b/scalafmt-tests/src/test/resources/scala3/OptionalBraces.stat index 06cb08377c..9258992b30 100644 --- a/scalafmt-tests/src/test/resources/scala3/OptionalBraces.stat +++ b/scalafmt-tests/src/test/resources/scala3/OptionalBraces.stat @@ -3554,3 +3554,13 @@ class Foo() { false } } +<<< #3302 +rewrite.scala3.convertToNewSyntax = yes +=== +type Inner[A] = A match + case Seq[x] => x + case _ => A +>>> +type Inner[A] = A match + case Seq[x] => x + case _ => A diff --git a/scalafmt-tests/src/test/resources/scala3/OptionalBraces_fold.stat b/scalafmt-tests/src/test/resources/scala3/OptionalBraces_fold.stat index b2896902d2..a05869d4b0 100644 --- a/scalafmt-tests/src/test/resources/scala3/OptionalBraces_fold.stat +++ b/scalafmt-tests/src/test/resources/scala3/OptionalBraces_fold.stat @@ -3380,3 +3380,13 @@ class Foo() { false } } +<<< #3302 +rewrite.scala3.convertToNewSyntax = yes +=== +type Inner[A] = A match + case Seq[x] => x + case _ => A +>>> +type Inner[A] = A match + case Seq[x] => x + case _ => A diff --git a/scalafmt-tests/src/test/resources/scala3/OptionalBraces_keep.stat b/scalafmt-tests/src/test/resources/scala3/OptionalBraces_keep.stat index b3719d3b77..6c086d0872 100644 --- a/scalafmt-tests/src/test/resources/scala3/OptionalBraces_keep.stat +++ b/scalafmt-tests/src/test/resources/scala3/OptionalBraces_keep.stat @@ -3536,3 +3536,13 @@ class Foo() { false } } +<<< #3302 +rewrite.scala3.convertToNewSyntax = yes +=== +type Inner[A] = A match + case Seq[x] => x + case _ => A +>>> +type Inner[A] = A match + case Seq[x] => x + case _ => A diff --git a/scalafmt-tests/src/test/resources/scala3/OptionalBraces_unfold.stat b/scalafmt-tests/src/test/resources/scala3/OptionalBraces_unfold.stat index a37706e25e..0a409b3949 100644 --- a/scalafmt-tests/src/test/resources/scala3/OptionalBraces_unfold.stat +++ b/scalafmt-tests/src/test/resources/scala3/OptionalBraces_unfold.stat @@ -3661,3 +3661,16 @@ class Foo() { false } } +<<< #3302 +rewrite.scala3.convertToNewSyntax = yes +=== +type Inner[A] = A match + case Seq[x] => x + case _ => A +>>> +type Inner[A] = + A match + case Seq[x] => + x + case _ => + A