diff --git a/project/Dependencies.scala b/project/Dependencies.scala index de2339b7fa..cb7d5c4c6c 100644 --- a/project/Dependencies.scala +++ b/project/Dependencies.scala @@ -6,7 +6,7 @@ import org.portablescala.sbtplatformdeps.PlatformDepsPlugin.autoImport._ object Dependencies { val metaconfigV = "0.10.0" - val scalametaV = "4.5.0" + val scalametaV = "4.5.1" val scalacheckV = "1.15.4" val coursier = "1.0.3" val munitV = "0.7.29" diff --git a/scalafmt-core/shared/src/main/scala/org/scalafmt/config/ScalafmtConfig.scala b/scalafmt-core/shared/src/main/scala/org/scalafmt/config/ScalafmtConfig.scala index 6216f7eb02..fcb614494a 100644 --- a/scalafmt-core/shared/src/main/scala/org/scalafmt/config/ScalafmtConfig.scala +++ b/scalafmt-core/shared/src/main/scala/org/scalafmt/config/ScalafmtConfig.scala @@ -6,6 +6,7 @@ import scala.collection.mutable import scala.io.Codec import scala.meta.Dialect import scala.meta.Tree +import scala.meta.Type import scala.util.Try import metaconfig._ @@ -257,7 +258,11 @@ case class ScalafmtConfig( .getOrElse(optIn.forceBlankLineBeforeDocstring) def breakAfterInfix(tree: => Tree): Newlines.AfterInfix = - newlines.breakAfterInfix + newlines.afterInfix.getOrElse { + val useSome = newlines.source == Newlines.classic && + tree.is[Type.ApplyInfix] && dialect.useInfixTypePrecedence + if (useSome) Newlines.AfterInfix.some else newlines.breakAfterInfix + } def formatInfix(tree: => Tree): Boolean = breakAfterInfix(tree) ne Newlines.AfterInfix.keep diff --git a/scalafmt-core/shared/src/main/scala/org/scalafmt/internal/FormatOps.scala b/scalafmt-core/shared/src/main/scala/org/scalafmt/internal/FormatOps.scala index e89d4d8938..16ff16082f 100644 --- a/scalafmt-core/shared/src/main/scala/org/scalafmt/internal/FormatOps.scala +++ b/scalafmt-core/shared/src/main/scala/org/scalafmt/internal/FormatOps.scala @@ -2752,9 +2752,6 @@ class FormatOps( def getLastNonTrivialTokenOpt(tree: Tree): Option[T] = tokens.getLastNonTrivialOpt(tree).map(_.left) - val ExtractAndOrTypeRhsIdentLeft = - new ExtractFromMeta(ft => getAndOrTypeRhs(ft.meta.leftOwner)) - def getEndOfBlock(ft: FormatToken, parensToo: Boolean)(implicit style: ScalafmtConfig ): Option[T] = diff --git a/scalafmt-core/shared/src/main/scala/org/scalafmt/internal/Router.scala b/scalafmt-core/shared/src/main/scala/org/scalafmt/internal/Router.scala index 94ec1dfcd7..0e096ca3dc 100644 --- a/scalafmt-core/shared/src/main/scala/org/scalafmt/internal/Router.scala +++ b/scalafmt-core/shared/src/main/scala/org/scalafmt/internal/Router.scala @@ -2283,37 +2283,6 @@ class Router(formatOps: FormatOps) { Split(Space, 0).withSingleLineNoOptimal(end) }(Split(Newline, _).withIndent(indent)) - // Union/Intersection types - case FormatToken(_: T.Ident, _, ExtractAndOrTypeRhsIdentLeft(rhs)) => - val rhsEnd = getLastNonTrivialToken(rhs) - @inline def getBreakToken(ft: FormatToken) = nextNonCommentSameLine(ft) - def nlSplit(cost: Int): Split = { - val indent = Indent(style.indent.main, rhsEnd, After) - val breakToken = getBreakToken(formatToken) - if (breakToken eq formatToken) - Split(Newline, cost).withIndent(indent) - else - Split(Space, cost) - .withIndent(indent) - .withPolicy(decideNewlinesOnlyAfterClose(breakToken.left)) - } - def nextRhsEnd = leftOwner.parent - .flatMap(getAndOrTypeRhs) - .map(x => getBreakToken(tokens.tokenBefore(x)).left) - style.newlines.source match { - case Newlines.unfold => - val topEnd = tokens.getLastNonTrivial(getTopAndOrType(leftOwner)) - Seq( - Split(Space, 0).withSingleLine(getBreakToken(topEnd).left), - nlSplit(1) - .andPolicyOpt(nextRhsEnd.map(decideNewlinesOnlyAfterToken)) - ) - case Newlines.keep if newlines != 0 => Seq(nlSplit(0)) - case _ => - val slbEnd = nextRhsEnd.getOrElse(rhsEnd) - Seq(Split(Space, 0).withSingleLine(slbEnd), nlSplit(1)) - } - // Term.ForYield case FormatToken(T.KwYield(), _, _) if leftOwner.is[Term.ForYield] => val lastToken = diff --git a/scalafmt-core/shared/src/main/scala/org/scalafmt/util/TreeOps.scala b/scalafmt-core/shared/src/main/scala/org/scalafmt/util/TreeOps.scala index 1b90a25f58..e4511b3275 100644 --- a/scalafmt-core/shared/src/main/scala/org/scalafmt/util/TreeOps.scala +++ b/scalafmt-core/shared/src/main/scala/org/scalafmt/util/TreeOps.scala @@ -867,18 +867,6 @@ object TreeOps { template.self.tokens.headOption .orElse(template.stats.headOption.flatMap(_.tokens.headOption)) - def getAndOrTypeRhs(tree: Tree): Option[Type] = tree match { - case x: Type.Or => Some(x.rhs) - case x: Type.And => Some(x.rhs) - case _ => None - } - - @tailrec - final def getTopAndOrType(tree: Tree): Tree = tree.parent match { - case Some(x @ (_: Type.Or | _: Type.And)) => getTopAndOrType(x) - case _ => tree - } - def getTemplateGroups(template: Template): Option[Seq[List[Tree]]] = { val groups = Seq(template.inits, template.derives).filter(_.nonEmpty) if (groups.isEmpty) None else Some(groups) diff --git a/scalafmt-tests/src/test/resources/newlines/source_classic.stat b/scalafmt-tests/src/test/resources/newlines/source_classic.stat index 2e45d7d49d..6176fe3977 100644 --- a/scalafmt-tests/src/test/resources/newlines/source_classic.stat +++ b/scalafmt-tests/src/test/resources/newlines/source_classic.stat @@ -4159,16 +4159,17 @@ type T = A1 & A2 | A3 & A4 | A5 & A6 | A7 & A8 | A9 & A10[T10] | type T = A1 & A2 | A3 & A4 | A5 & A6 | A7 & A8 | A9 & A10[T10] | A11 & A12 | A13 & A14 | A15 & A16 | A17 & A18 | - A19 & A20[T20] | A21 & A22 | A23 & - A24 | A25 & A26 | A27 & A28 | A29 & - A30[T30] | A31 & A32 | A33 & A34 | - A35 & A36 | A37 & A38 | A39 & - A40[T40] | A41 & A42 | A43 & A44 | - A45 & A46 | A47 & A48 | A49 & - A50[T50] | A51 & A52 | A53 & A54 | - A55 & A56 | A57 & A58 | A59 & - A60[T60] | A61 & A62 | A63 & A64 | - A65 & A66 | A67 & A68 | A69 & A70[T70] + A19 & A20[T20] | A21 & A22 | + A23 & A24 | A25 & A26 | A27 & A28 | + A29 & A30[T30] | A31 & A32 | + A33 & A34 | A35 & A36 | A37 & A38 | + A39 & A40[T40] | A41 & A42 | + A43 & A44 | A45 & A46 | A47 & A48 | + A49 & A50[T50] | A51 & A52 | + A53 & A54 | A55 & A56 | A57 & A58 | + A59 & A60[T60] | A61 & A62 | + A63 & A64 | A65 & A66 | A67 & A68 | + A69 & A70[T70] <<< #2422 with comments runner.dialect = scala3 === @@ -4180,26 +4181,27 @@ type T = A1 & A2 | A3 & A4 | A5 & A6 /* c1 */ | /* c2 */ A7 & A8 | A9 & A10[T10] A51 & A52 | A53 & A54 | A55 & A56 /* c1 */ | /* c2 */ A57 & A58 | A59 & A60[T60] | A61 & A62 | A63 & A64 | A65 & A66 /* c1 */ | /* c2 */ A67 & A68 | A69 & A70[T70] >>> -type T = A1 & A2 | A3 & A4 | A5 & - A6 /* c1 */ | /* c2 */ A7 & A8 | A9 & - A10[T10] | A11 & A12 | A13 & A14 | - A15 & A16 /* c1 */ | /* c2 */ A17 & - A18 | A19 & A20[T20] | A21 & A22 | - A23 & A24 | A25 & - A26 /* c1 */ | /* c2 */ A27 & A28 | - A29 & A30[T30] | A31 & A32 | A33 & - A34 | A35 & - A36 /* c1 */ | /* c2 */ A37 & A38 | - A39 & A40[T40] | A41 & A42 | A43 & - A44 | A45 & - A46 /* c1 */ | /* c2 */ A47 & A48 | - A49 & A50[T50] | A51 & A52 | A53 & - A54 | A55 & - A56 /* c1 */ | /* c2 */ A57 & A58 | - A59 & A60[T60] | A61 & A62 | A63 & - A64 | A65 & - A66 /* c1 */ | /* c2 */ A67 & A68 | - A69 & A70[T70] +type T = A1 & A2 | A3 & A4 | + A5 & A6 /* c1 */ | /* c2 */ + A7 & A8 | A9 & A10[T10] | A11 & A12 | + A13 & A14 | + A15 & A16 /* c1 */ | /* c2 */ + A17 & A18 | A19 & A20[T20] | + A21 & A22 | A23 & A24 | + A25 & A26 /* c1 */ | /* c2 */ + A27 & A28 | A29 & A30[T30] | + A31 & A32 | A33 & A34 | + A35 & A36 /* c1 */ | /* c2 */ + A37 & A38 | A39 & A40[T40] | + A41 & A42 | A43 & A44 | + A45 & A46 /* c1 */ | /* c2 */ + A47 & A48 | A49 & A50[T50] | + A51 & A52 | A53 & A54 | + A55 & A56 /* c1 */ | /* c2 */ + A57 & A58 | A59 & A60[T60] | + A61 & A62 | A63 & A64 | + A65 & A66 /* c1 */ | /* c2 */ + A67 & A68 | A69 & A70[T70] <<< #2561 scala 2: defn, no align align.preset = none newlines.beforeOpenParenDefnSite = source diff --git a/scalafmt-tests/src/test/resources/newlines/source_fold.stat b/scalafmt-tests/src/test/resources/newlines/source_fold.stat index bbfe130267..fad6e21461 100644 --- a/scalafmt-tests/src/test/resources/newlines/source_fold.stat +++ b/scalafmt-tests/src/test/resources/newlines/source_fold.stat @@ -3965,16 +3965,17 @@ type T = A1 & A2 | A3 & A4 | A5 & A6 | A7 & A8 | A9 & A10[T10] | type T = A1 & A2 | A3 & A4 | A5 & A6 | A7 & A8 | A9 & A10[T10] | A11 & A12 | A13 & A14 | A15 & A16 | A17 & A18 | - A19 & A20[T20] | A21 & A22 | A23 & - A24 | A25 & A26 | A27 & A28 | A29 & - A30[T30] | A31 & A32 | A33 & A34 | - A35 & A36 | A37 & A38 | A39 & - A40[T40] | A41 & A42 | A43 & A44 | - A45 & A46 | A47 & A48 | A49 & - A50[T50] | A51 & A52 | A53 & A54 | - A55 & A56 | A57 & A58 | A59 & - A60[T60] | A61 & A62 | A63 & A64 | - A65 & A66 | A67 & A68 | A69 & A70[T70] + A19 & A20[T20] | A21 & A22 | + A23 & A24 | A25 & A26 | A27 & A28 | + A29 & A30[T30] | A31 & A32 | + A33 & A34 | A35 & A36 | A37 & A38 | + A39 & A40[T40] | A41 & A42 | + A43 & A44 | A45 & A46 | A47 & A48 | + A49 & A50[T50] | A51 & A52 | + A53 & A54 | A55 & A56 | A57 & A58 | + A59 & A60[T60] | A61 & A62 | + A63 & A64 | A65 & A66 | A67 & A68 | + A69 & A70[T70] <<< #2422 with comments runner.dialect = scala3 === @@ -3986,26 +3987,27 @@ type T = A1 & A2 | A3 & A4 | A5 & A6 /* c1 */ | /* c2 */ A7 & A8 | A9 & A10[T10] A51 & A52 | A53 & A54 | A55 & A56 /* c1 */ | /* c2 */ A57 & A58 | A59 & A60[T60] | A61 & A62 | A63 & A64 | A65 & A66 /* c1 */ | /* c2 */ A67 & A68 | A69 & A70[T70] >>> -type T = A1 & A2 | A3 & A4 | A5 & - A6 /* c1 */ | /* c2 */ A7 & A8 | A9 & - A10[T10] | A11 & A12 | A13 & A14 | - A15 & A16 /* c1 */ | /* c2 */ A17 & - A18 | A19 & A20[T20] | A21 & A22 | - A23 & A24 | A25 & - A26 /* c1 */ | /* c2 */ A27 & A28 | - A29 & A30[T30] | A31 & A32 | A33 & - A34 | A35 & - A36 /* c1 */ | /* c2 */ A37 & A38 | - A39 & A40[T40] | A41 & A42 | A43 & - A44 | A45 & - A46 /* c1 */ | /* c2 */ A47 & A48 | - A49 & A50[T50] | A51 & A52 | A53 & - A54 | A55 & - A56 /* c1 */ | /* c2 */ A57 & A58 | - A59 & A60[T60] | A61 & A62 | A63 & - A64 | A65 & - A66 /* c1 */ | /* c2 */ A67 & A68 | - A69 & A70[T70] +type T = A1 & A2 | A3 & A4 | + A5 & A6 /* c1 */ | /* c2 */ + A7 & A8 | A9 & A10[T10] | A11 & A12 | + A13 & A14 | + A15 & A16 /* c1 */ | /* c2 */ + A17 & A18 | A19 & A20[T20] | + A21 & A22 | A23 & A24 | + A25 & A26 /* c1 */ | /* c2 */ + A27 & A28 | A29 & A30[T30] | + A31 & A32 | A33 & A34 | + A35 & A36 /* c1 */ | /* c2 */ + A37 & A38 | A39 & A40[T40] | + A41 & A42 | A43 & A44 | + A45 & A46 /* c1 */ | /* c2 */ + A47 & A48 | A49 & A50[T50] | + A51 & A52 | A53 & A54 | + A55 & A56 /* c1 */ | /* c2 */ + A57 & A58 | A59 & A60[T60] | + A61 & A62 | A63 & A64 | + A65 & A66 /* c1 */ | /* c2 */ + A67 & A68 | A69 & A70[T70] <<< #2561 scala 2: defn, no align align.preset = none newlines.beforeOpenParenDefnSite = source diff --git a/scalafmt-tests/src/test/resources/newlines/source_keep.stat b/scalafmt-tests/src/test/resources/newlines/source_keep.stat index 369f10dc21..153e50415a 100644 --- a/scalafmt-tests/src/test/resources/newlines/source_keep.stat +++ b/scalafmt-tests/src/test/resources/newlines/source_keep.stat @@ -4167,20 +4167,28 @@ type T = A1 & A2 | A3 & A4 | A5 & A6 | A7 & A8 | A9 & A10[T10] | A51 & A52 | A53 & A54 | A55 & A56 | A57 & A58 | A59 & A60[T60] | A61 & A62 | A63 & A64 | A65 & A66 | A67 & A68 | A69 & A70[T70] >>> -type T = A1 & A2 | A3 & A4 | A5 & A6 | - A7 & A8 | A9 & A10[T10] | - A11 & A12 | A13 & A14 | A15 & A16 | - A17 & A18 | A19 & A20[T20] | - A21 & A22 | A23 & A24 | A25 & A26 | - A27 & A28 | A29 & A30[T30] | - A31 & A32 | A33 & A34 | A35 & A36 | - A37 & A38 | A39 & A40[T40] | - A41 & A42 | A43 & A44 | A45 & A46 | - A47 & A48 | A49 & A50[T50] | - A51 & A52 | A53 & A54 | A55 & A56 | - A57 & A58 | A59 & A60[T60] | - A61 & A62 | A63 & A64 | A65 & A66 | - A67 & A68 | A69 & A70[T70] +type T = + A1 & A2 | A3 & A4 | A5 & A6 | A7 & A8 | A9 & A10[ + T10 + ] | + A11 & A12 | A13 & A14 | A15 & A16 | A17 & A18 | A19 & A20[ + T20 + ] | + A21 & A22 | A23 & A24 | A25 & A26 | A27 & A28 | A29 & A30[ + T30 + ] | + A31 & A32 | A33 & A34 | A35 & A36 | A37 & A38 | A39 & A40[ + T40 + ] | + A41 & A42 | A43 & A44 | A45 & A46 | A47 & A48 | A49 & A50[ + T50 + ] | + A51 & A52 | A53 & A54 | A55 & A56 | A57 & A58 | A59 & A60[ + T60 + ] | + A61 & A62 | A63 & A64 | A65 & A66 | A67 & A68 | A69 & A70[ + T70 + ] <<< #2422 with comments runner.dialect = scala3 === @@ -4192,27 +4200,28 @@ type T = A1 & A2 | A3 & A4 | A5 & A6 /* c1 */ | /* c2 */ A7 & A8 | A9 & A10[T10] A51 & A52 | A53 & A54 | A55 & A56 /* c1 */ | /* c2 */ A57 & A58 | A59 & A60[T60] | A61 & A62 | A63 & A64 | A65 & A66 /* c1 */ | /* c2 */ A67 & A68 | A69 & A70[T70] >>> -type T = A1 & A2 | A3 & A4 | A5 & - A6 /* c1 */ | /* c2 */ A7 & A8 | A9 & - A10[T10] | - A11 & A12 | A13 & A14 | A15 & - A16 /* c1 */ | /* c2 */ A17 & A18 | - A19 & A20[T20] | - A21 & A22 | A23 & A24 | A25 & - A26 /* c1 */ | /* c2 */ A27 & A28 | - A29 & A30[T30] | - A31 & A32 | A33 & A34 | A35 & - A36 /* c1 */ | /* c2 */ A37 & A38 | - A39 & A40[T40] | - A41 & A42 | A43 & A44 | A45 & - A46 /* c1 */ | /* c2 */ A47 & A48 | - A49 & A50[T50] | - A51 & A52 | A53 & A54 | A55 & - A56 /* c1 */ | /* c2 */ A57 & A58 | - A59 & A60[T60] | - A61 & A62 | A63 & A64 | A65 & - A66 /* c1 */ | /* c2 */ A67 & A68 | - A69 & A70[T70] +type T = + A1 & A2 | A3 & A4 | A5 & A6 /* c1 */ | /* c2 */ A7 & A8 | A9 & A10[ + T10 + ] | + A11 & A12 | A13 & A14 | A15 & A16 /* c1 */ | /* c2 */ A17 & A18 | A19 & A20[ + T20 + ] | + A21 & A22 | A23 & A24 | A25 & A26 /* c1 */ | /* c2 */ A27 & A28 | A29 & A30[ + T30 + ] | + A31 & A32 | A33 & A34 | A35 & A36 /* c1 */ | /* c2 */ A37 & A38 | A39 & A40[ + T40 + ] | + A41 & A42 | A43 & A44 | A45 & A46 /* c1 */ | /* c2 */ A47 & A48 | A49 & A50[ + T50 + ] | + A51 & A52 | A53 & A54 | A55 & A56 /* c1 */ | /* c2 */ A57 & A58 | A59 & A60[ + T60 + ] | + A61 & A62 | A63 & A64 | A65 & A66 /* c1 */ | /* c2 */ A67 & A68 | A69 & A70[ + T70 + ] <<< #2226 object Class extends Base with Trait1 diff --git a/scalafmt-tests/src/test/resources/newlines/source_unfold.stat b/scalafmt-tests/src/test/resources/newlines/source_unfold.stat index 7cf4a2872a..2c939544b8 100644 --- a/scalafmt-tests/src/test/resources/newlines/source_unfold.stat +++ b/scalafmt-tests/src/test/resources/newlines/source_unfold.stat @@ -4215,76 +4215,20 @@ type T = A1 & A2 | A3 & A4 | A5 & A6 | A7 & A8 | A9 & A10[T10] | A61 & A62 | A63 & A64 | A65 & A66 | A67 & A68 | A69 & A70[T70] >>> type T = - A1 & - A2 | - A3 & - A4 | - A5 & - A6 | - A7 & - A8 | - A9 & - A10[T10] | - A11 & - A12 | - A13 & - A14 | - A15 & - A16 | - A17 & - A18 | - A19 & - A20[T20] | - A21 & - A22 | - A23 & - A24 | - A25 & - A26 | - A27 & - A28 | - A29 & - A30[T30] | - A31 & - A32 | - A33 & - A34 | - A35 & - A36 | - A37 & - A38 | - A39 & - A40[T40] | - A41 & - A42 | - A43 & - A44 | - A45 & - A46 | - A47 & - A48 | - A49 & - A50[T50] | - A51 & - A52 | - A53 & - A54 | - A55 & - A56 | - A57 & - A58 | - A59 & - A60[T60] | - A61 & - A62 | - A63 & - A64 | - A65 & - A66 | - A67 & - A68 | - A69 & - A70[T70] + A1 & A2 | A3 & A4 | A5 & A6 | + A7 & A8 | A9 & A10[T10] | + A11 & A12 | A13 & A14 | A15 & A16 | + A17 & A18 | A19 & A20[T20] | + A21 & A22 | A23 & A24 | A25 & A26 | + A27 & A28 | A29 & A30[T30] | + A31 & A32 | A33 & A34 | A35 & A36 | + A37 & A38 | A39 & A40[T40] | + A41 & A42 | A43 & A44 | A45 & A46 | + A47 & A48 | A49 & A50[T50] | + A51 & A52 | A53 & A54 | A55 & A56 | + A57 & A58 | A59 & A60[T60] | + A61 & A62 | A63 & A64 | A65 & A66 | + A67 & A68 | A69 & A70[T70] <<< #2422 with comments runner.dialect = scala3 === @@ -4297,76 +4241,27 @@ type T = A1 & A2 | A3 & A4 | A5 & A6 /* c1 */ | /* c2 */ A7 & A8 | A9 & A10[T10] A61 & A62 | A63 & A64 | A65 & A66 /* c1 */ | /* c2 */ A67 & A68 | A69 & A70[T70] >>> type T = - A1 & - A2 | - A3 & - A4 | - A5 & - A6 /* c1 */ | /* c2 */ - A7 & - A8 | - A9 & - A10[T10] | - A11 & - A12 | - A13 & - A14 | - A15 & - A16 /* c1 */ | /* c2 */ - A17 & - A18 | - A19 & - A20[T20] | - A21 & - A22 | - A23 & - A24 | - A25 & - A26 /* c1 */ | /* c2 */ - A27 & - A28 | - A29 & - A30[T30] | - A31 & - A32 | - A33 & - A34 | - A35 & - A36 /* c1 */ | /* c2 */ - A37 & - A38 | - A39 & - A40[T40] | - A41 & - A42 | - A43 & - A44 | - A45 & - A46 /* c1 */ | /* c2 */ - A47 & - A48 | - A49 & - A50[T50] | - A51 & - A52 | - A53 & - A54 | - A55 & - A56 /* c1 */ | /* c2 */ - A57 & - A58 | - A59 & - A60[T60] | - A61 & - A62 | - A63 & - A64 | - A65 & - A66 /* c1 */ | /* c2 */ - A67 & - A68 | - A69 & - A70[T70] + A1 & A2 | A3 & A4 | + A5 & A6 /* c1 */ | /* c2 */ + A7 & A8 | A9 & A10[T10] | + A11 & A12 | A13 & A14 | + A15 & A16 /* c1 */ | /* c2 */ + A17 & A18 | A19 & A20[T20] | + A21 & A22 | A23 & A24 | + A25 & A26 /* c1 */ | /* c2 */ + A27 & A28 | A29 & A30[T30] | + A31 & A32 | A33 & A34 | + A35 & A36 /* c1 */ | /* c2 */ + A37 & A38 | A39 & A40[T40] | + A41 & A42 | A43 & A44 | + A45 & A46 /* c1 */ | /* c2 */ + A47 & A48 | A49 & A50[T50] | + A51 & A52 | A53 & A54 | + A55 & A56 /* c1 */ | /* c2 */ + A57 & A58 | A59 & A60[T60] | + A61 & A62 | A63 & A64 | + A65 & A66 /* c1 */ | /* c2 */ + A67 & A68 | A69 & A70[T70] <<< #2561 scala 2: defn, no align align.preset = none newlines.beforeOpenParenDefnSite = source diff --git a/scalafmt-tests/src/test/resources/scala3/OptionalBraces.stat b/scalafmt-tests/src/test/resources/scala3/OptionalBraces.stat index d320475d6c..acb1b9d622 100644 --- a/scalafmt-tests/src/test/resources/scala3/OptionalBraces.stat +++ b/scalafmt-tests/src/test/resources/scala3/OptionalBraces.stat @@ -3371,3 +3371,20 @@ for { foobar <- LongClassName(database).longMethodName() } yield doSomething(foo for { foobar <- LongClassName(database).longMethodName() } yield doSomething( foobar ) +<<< #3153 +maxColumn = 14 +indentOperator.excludeRegex = "^(&|\\||&&|\\|\\|)$" +indentOperator.exemptScope = aloneArgOrBody +=== +type T = + Byte | + Short | + Int | + Long | + Double +>>> +type T = + Byte | + Short | + Int | Long | + Double diff --git a/scalafmt-tests/src/test/resources/scala3/OptionalBraces_fold.stat b/scalafmt-tests/src/test/resources/scala3/OptionalBraces_fold.stat index 910d574b68..6742718749 100644 --- a/scalafmt-tests/src/test/resources/scala3/OptionalBraces_fold.stat +++ b/scalafmt-tests/src/test/resources/scala3/OptionalBraces_fold.stat @@ -3211,3 +3211,20 @@ for { foobar <- LongClassName(database).longMethodName() } yield doSomething(foo for { foobar <- LongClassName(database).longMethodName() } yield doSomething(foobar) +<<< #3153 +maxColumn = 14 +indentOperator.excludeRegex = "^(&|\\||&&|\\|\\|)$" +indentOperator.exemptScope = aloneArgOrBody +=== +type T = + Byte | + Short | + Int | + Long | + Double +>>> +type T = + Byte | + Short | + Int | Long | + Double diff --git a/scalafmt-tests/src/test/resources/scala3/OptionalBraces_keep.stat b/scalafmt-tests/src/test/resources/scala3/OptionalBraces_keep.stat index 5b8de213c1..64952a9832 100644 --- a/scalafmt-tests/src/test/resources/scala3/OptionalBraces_keep.stat +++ b/scalafmt-tests/src/test/resources/scala3/OptionalBraces_keep.stat @@ -3363,3 +3363,21 @@ for { foobar <- LongClassName(database).longMethodName() } yield doSomething(foo for { foobar <- LongClassName(database).longMethodName() } yield doSomething( foobar ) +<<< #3153 +maxColumn = 14 +indentOperator.excludeRegex = "^(&|\\||&&|\\|\\|)$" +indentOperator.exemptScope = aloneArgOrBody +=== +type T = + Byte | + Short | + Int | + Long | + Double +>>> +type T = + Byte | + Short | + Int | + Long | + Double diff --git a/scalafmt-tests/src/test/resources/scala3/OptionalBraces_unfold.stat b/scalafmt-tests/src/test/resources/scala3/OptionalBraces_unfold.stat index 1152ac04ae..2ca7222743 100644 --- a/scalafmt-tests/src/test/resources/scala3/OptionalBraces_unfold.stat +++ b/scalafmt-tests/src/test/resources/scala3/OptionalBraces_unfold.stat @@ -3463,3 +3463,20 @@ for { foobar <- LongClassName(database).longMethodName() } yield doSomething(foo for { foobar <- LongClassName(database).longMethodName() } yield doSomething(foobar) +<<< #3153 +maxColumn = 14 +indentOperator.excludeRegex = "^(&|\\||&&|\\|\\|)$" +indentOperator.exemptScope = aloneArgOrBody +=== +type T = + Byte | + Short | + Int | + Long | + Double +>>> +type T = + Byte | + Short | + Int | Long | + Double diff --git a/scalafmt-tests/src/test/resources/scala3/UnionIntersectionType.stat b/scalafmt-tests/src/test/resources/scala3/UnionIntersectionType.stat index 60372b27de..bee27404c5 100644 --- a/scalafmt-tests/src/test/resources/scala3/UnionIntersectionType.stat +++ b/scalafmt-tests/src/test/resources/scala3/UnionIntersectionType.stat @@ -52,11 +52,9 @@ def hello(): FirstTypeInTheInterSectionType & SecondTypeInTheInterSectionType & val a : FirstTypeInTheInterSectionType & SecondTypeInTheInterSectionType } >>> -def hello(): FirstTypeInTheInterSectionType & - SecondTypeInTheInterSectionType & - ThirdTypeInTheInterSectionType = { - val a: FirstTypeInTheInterSectionType & - SecondTypeInTheInterSectionType +def hello() + : FirstTypeInTheInterSectionType & SecondTypeInTheInterSectionType & ThirdTypeInTheInterSectionType = { + val a: FirstTypeInTheInterSectionType & SecondTypeInTheInterSectionType } <<< long union keep maxColumn = 30 @@ -66,9 +64,8 @@ def hello(): FirstTypeInTheInterSectionType | SecondTypeInTheInterSectionType | val a : A | B } >>> -def hello(): FirstTypeInTheInterSectionType | - SecondTypeInTheInterSectionType | - ThirdTypeInTheInterSectionType = { +def hello() + : FirstTypeInTheInterSectionType | SecondTypeInTheInterSectionType | ThirdTypeInTheInterSectionType = { val a: A | B } <<< long intersection param