diff --git a/scalafmt-core/shared/src/main/scala/org/scalafmt/config/DanglingParentheses.scala b/scalafmt-core/shared/src/main/scala/org/scalafmt/config/DanglingParentheses.scala index a3be3d995e..5c31082ac1 100644 --- a/scalafmt-core/shared/src/main/scala/org/scalafmt/config/DanglingParentheses.scala +++ b/scalafmt-core/shared/src/main/scala/org/scalafmt/config/DanglingParentheses.scala @@ -1,5 +1,7 @@ package org.scalafmt.config +import org.scalafmt.util.TreeOps + import scala.meta._ import DanglingParentheses.Exclude @@ -36,6 +38,11 @@ case class DanglingParentheses( case _ => defnSite }) && isExcluded(lpOwner) + def atSite(lpOwner: Tree, orElse: => Boolean): Boolean = + if (TreeOps.isArgClauseSite(lpOwner)) atCallSite(lpOwner) + else if (TreeOps.isParamClauseSite(lpOwner)) atDefnSite(lpOwner) + else orElse + @inline def atVerticalMultilineSite(lpOwner: Tree): Boolean = defnSite && isExcluded(lpOwner, Exclude.defaultVerticalMultiline) 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 330354844c..701e0c3879 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 @@ -2549,18 +2549,8 @@ class Router(formatOps: FormatOps) { style: ScalafmtConfig, ft: FormatToken, ): Seq[Split] = { - def wouldDangle = ft.meta.leftOwner.parent.exists { - case p: Member.ParamClause => style.danglingParentheses.atDefnSite(p) - case _: Member.Tuple => style.danglingParentheses.atTupleSite - case _: Type.ArgClause => style.danglingParentheses.atBracketCallSite - case p: Member.ArgClause => style.danglingParentheses.callSite && - (p.parent match { - case Some(_: Term.ApplyInfix) => style.newlines.formatInfix && - p.values.lengthCompare(1) > 0 - case _ => true - }) - case _ => false - } + def wouldDangle = ft.meta.leftOwner.parent + .exists(style.danglingParentheses.atSite(_, false)) val expire = endFt.left // rhsOptimalToken is too aggressive here