diff --git a/scalafmt-core/shared/src/main/scala/org/scalafmt/internal/BestFirstSearch.scala b/scalafmt-core/shared/src/main/scala/org/scalafmt/internal/BestFirstSearch.scala index f4f6a204e4..c0ec8345cf 100644 --- a/scalafmt-core/shared/src/main/scala/org/scalafmt/internal/BestFirstSearch.scala +++ b/scalafmt-core/shared/src/main/scala/org/scalafmt/internal/BestFirstSearch.scala @@ -38,11 +38,7 @@ private class BestFirstSearch private (range: Set[Range])(implicit private def getBlockCloseToRecurse(ft: FormatToken, stop: Token)(implicit style: ScalafmtConfig, - ): Option[Token] = getEndOfBlockOrOptionalBraces(ft).flatMap { - case Left(x) => Some(x) - case Right(x) => - if (extractStatementsIfAny(ft.meta.leftOwner).isEmpty) None else Some(x) - }.filter { close => + ): Option[Token] = getEndOfBlock(ft, parensToo = true).filter { close => // Block must span at least 3 lines to be worth recursing. close != stop && distance(ft.left, close) > style.maxColumn * 3 } 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 f259f3cdaa..21fbe0e331 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 @@ -2675,18 +2675,13 @@ class FormatOps( def getLastNonTrivialTokenOpt(tree: Tree): Option[T] = tokens .getLastNonTrivialOpt(tree).map(_.left) - def getEndOfBlock(ft: FormatToken, parensToo: Boolean)(implicit + def getEndOfBlock(ft: FormatToken, parensToo: => Boolean)(implicit style: ScalafmtConfig, - ): Option[T] = getEndOfBlockOrOptionalBraces(ft, parensToo).map(_.merge) - - def getEndOfBlockOrOptionalBraces(ft: FormatToken, parensToo: Boolean = false)( - implicit style: ScalafmtConfig, - ): Option[Either[T, T]] = ft.left match { - case x: T.LeftBrace => matchingOpt(x).map(Right.apply) - case x: T.LeftParen => - if (parensToo) matchingOpt(x).map(Right.apply) else None + ): Option[T] = ft.left match { + case x: T.LeftBrace => matchingOpt(x) + case x: T.LeftParen => if (parensToo) matchingOpt(x) else None case _ => OptionalBraces.get(ft) - .flatMap(_.rightBrace.map(x => Left(nextNonCommentSameLine(x).left))) + .flatMap(_.rightBrace.map(x => nextNonCommentSameLine(x).left)) } def isCloseDelimForTrailingCommasMultiple(ft: FormatToken): Boolean = diff --git a/scalafmt-tests/shared/src/test/resources/default/Advanced.stat b/scalafmt-tests/shared/src/test/resources/default/Advanced.stat index e86279c28f..563e9c5347 100644 --- a/scalafmt-tests/shared/src/test/resources/default/Advanced.stat +++ b/scalafmt-tests/shared/src/test/resources/default/Advanced.stat @@ -51,10 +51,10 @@ val createAsStat = if (semantics.asInstanceOfs == Unchecked) { val createAsStat = if (semantics.asInstanceOfs == Unchecked) { js.Skip() } else { - envFieldDef( - "as", - className, - js.Function(List(objParam), + envFieldDef("as", + className, + js.Function( + List(objParam), js.Return(className match { case Definitions.ObjectClass => obj case _ => diff --git a/scalafmt-tests/shared/src/test/resources/default/SearchState.stat b/scalafmt-tests/shared/src/test/resources/default/SearchState.stat index 40fea7920f..0dec96ead4 100644 --- a/scalafmt-tests/shared/src/test/resources/default/SearchState.stat +++ b/scalafmt-tests/shared/src/test/resources/default/SearchState.stat @@ -354,105 +354,104 @@ ) )) >>> -EventsResponse.fromJson(json, run).success.value.events should be( - Seq( - Stored( - timestamp = Instant.parse("2016-12-02T16:23:47.412278Z"), - id = "OKO0c_F1RiWU44-qLwYYuA", - storage = Storage( - "https://se.api.mailgun.net/v3/domains/sandbox98d59d0a8d0a4af588f2bb683a4a57cc.mailgun.org/messages/eyJwIjpmYWxzZSwiayI6ImUzZWQ3YjYyLTI4YmMtNDZiYy04MGQ3LTg0NTUyZDc4YzU4MSIsInMiOiJlZDY3MzYyNWRhIiwiYyI6InRhbmtiIn0=", - "eyJwIjpmYWxzZSwiayI6ImUzZWQ3YjYyLTI4YmMtNDZiYy04MGQ3LTg0NTUyZDc4YzU4MSIsInMiOiJlZDY3MzYyNWRhIiwiYyI6InRhbmtiIn0=" - ), - `user-variables` = Map( - "custom" -> """{"createdAt":"2016-12-02T16:23:46.637Z","customerId":"canary","traceToken":"22629a34-e5ef-4d2a-bbd4-5193af11e90d","canary":true}""" - ), - flags = Map( - "is-test-mode" -> false - ), - tags = Nil, - `log-level` = "info", - message = MessageSummary( - Map( - "to" -> "canary@sandbox98d59d0a8d0a4af588f2bb683a4a57cc.mailgun.org", - "message-id" -> "20161202162347.92318.58763.6224A6CC@sandbox98d59d0a8d0a4af588f2bb683a4a57cc.mailgun.org", - "from" -> "Ovo Energy ", - "subject" -> "Canary test email (22629a34-e5ef-4d2a-bbd4-5193af11e90d)" - ), - Nil, - Seq("canary@sandbox98d59d0a8d0a4af588f2bb683a4a57cc.mailgun.org"), - 20430 - ) +EventsResponse.fromJson(json, run).success.value.events should be(Seq( + Stored( + timestamp = Instant.parse("2016-12-02T16:23:47.412278Z"), + id = "OKO0c_F1RiWU44-qLwYYuA", + storage = Storage( + "https://se.api.mailgun.net/v3/domains/sandbox98d59d0a8d0a4af588f2bb683a4a57cc.mailgun.org/messages/eyJwIjpmYWxzZSwiayI6ImUzZWQ3YjYyLTI4YmMtNDZiYy04MGQ3LTg0NTUyZDc4YzU4MSIsInMiOiJlZDY3MzYyNWRhIiwiYyI6InRhbmtiIn0=", + "eyJwIjpmYWxzZSwiayI6ImUzZWQ3YjYyLTI4YmMtNDZiYy04MGQ3LTg0NTUyZDc4YzU4MSIsInMiOiJlZDY3MzYyNWRhIiwiYyI6InRhbmtiIn0=" ), - Accepted( - timestamp = Instant.parse("2016-12-02T16:23:47.124505Z"), - id = "N97VBM3jRIGdpHExzz47mg", - tags = Nil, - envelope = Map( - "sender" -> "postmaster@sandbox98d59d0a8d0a4af588f2bb683a4a57cc.mailgun.org", - "transport" -> "smtp", - "targets" -> "canary@sandbox98d59d0a8d0a4af588f2bb683a4a57cc.mailgun.org" - ), - `user-variables` = Map( - "custom" -> """{"createdAt":"2016-12-02T16:23:46.637Z","customerId":"canary","traceToken":"22629a34-e5ef-4d2a-bbd4-5193af11e90d","canary":true}""" - ), - storage = Some(Storage( - "https://se.api.mailgun.net/v3/domains/sandbox98d59d0a8d0a4af588f2bb683a4a57cc.mailgun.org/messages/eyJwIjpmYWxzZSwiayI6ImUzZWQ3YjYyLTI4YmMtNDZiYy04MGQ3LTg0NTUyZDc4YzU4MSIsInMiOiJlZDY3MzYyNWRhIiwiYyI6InRhbmtiIn0=", - "eyJwIjpmYWxzZSwiayI6ImUzZWQ3YjYyLTI4YmMtNDZiYy04MGQ3LTg0NTUyZDc4YzU4MSIsInMiOiJlZDY3MzYyNWRhIiwiYyI6InRhbmtiIn0=" - )), - recipient = - "canary@sandbox98d59d0a8d0a4af588f2bb683a4a57cc.mailgun.org", - `recipient-domain` = - "sandbox98d59d0a8d0a4af588f2bb683a4a57cc.mailgun.org", - method = "http", - flags = Map( - "is-routed" -> false, - "is-authenticated" -> true, - "is-system-test" -> false, - "is-test-mode" -> false + `user-variables` = Map( + "custom" -> """{"createdAt":"2016-12-02T16:23:46.637Z","customerId":"canary","traceToken":"22629a34-e5ef-4d2a-bbd4-5193af11e90d","canary":true}""" + ), + flags = Map( + "is-test-mode" -> false + ), + tags = Nil, + `log-level` = "info", + message = MessageSummary( + Map( + "to" -> "canary@sandbox98d59d0a8d0a4af588f2bb683a4a57cc.mailgun.org", + "message-id" -> "20161202162347.92318.58763.6224A6CC@sandbox98d59d0a8d0a4af588f2bb683a4a57cc.mailgun.org", + "from" -> "Ovo Energy ", + "subject" -> "Canary test email (22629a34-e5ef-4d2a-bbd4-5193af11e90d)" ), - `log-level` = "info", - message = MessageSummary( - Map( - "to" -> "canary@sandbox98d59d0a8d0a4af588f2bb683a4a57cc.mailgun.org", - "message-id" -> "20161202162347.92318.58763.6224A6CC@sandbox98d59d0a8d0a4af588f2bb683a4a57cc.mailgun.org", - "from" -> "Ovo Energy ", - "subject" -> "Canary test email (22629a34-e5ef-4d2a-bbd4-5193af11e90d)" - ), - Nil, - Seq("canary@sandbox98d59d0a8d0a4af588f2bb683a4a57cc.mailgun.org"), - 20430 - ) + Nil, + Seq("canary@sandbox98d59d0a8d0a4af588f2bb683a4a57cc.mailgun.org"), + 20430 + ) + ), + Accepted( + timestamp = Instant.parse("2016-12-02T16:23:47.124505Z"), + id = "N97VBM3jRIGdpHExzz47mg", + tags = Nil, + envelope = Map( + "sender" -> "postmaster@sandbox98d59d0a8d0a4af588f2bb683a4a57cc.mailgun.org", + "transport" -> "smtp", + "targets" -> "canary@sandbox98d59d0a8d0a4af588f2bb683a4a57cc.mailgun.org" + ), + `user-variables` = Map( + "custom" -> """{"createdAt":"2016-12-02T16:23:46.637Z","customerId":"canary","traceToken":"22629a34-e5ef-4d2a-bbd4-5193af11e90d","canary":true}""" ), - Stored( - timestamp = Instant.parse("2016-12-02T15:53:47.045888Z"), - id = "-KayH5ZASKm2AaQQ1wizDw", - storage = Storage( - "https://si.api.mailgun.net/v3/domains/sandbox98d59d0a8d0a4af588f2bb683a4a57cc.mailgun.org/messages/eyJwIjpmYWxzZSwiayI6IjViNjhkN2QwLWEwZTYtNDU4Yy1hOGJiLTk2ZTY0MWI3MTNhNSIsInMiOiI1ZDY4YWE5M2FmIiwiYyI6InNiaWFkIn0=", - "eyJwIjpmYWxzZSwiayI6IjViNjhkN2QwLWEwZTYtNDU4Yy1hOGJiLTk2ZTY0MWI3MTNhNSIsInMiOiI1ZDY4YWE5M2FmIiwiYyI6InNiaWFkIn0=" + storage = Some(Storage( + "https://se.api.mailgun.net/v3/domains/sandbox98d59d0a8d0a4af588f2bb683a4a57cc.mailgun.org/messages/eyJwIjpmYWxzZSwiayI6ImUzZWQ3YjYyLTI4YmMtNDZiYy04MGQ3LTg0NTUyZDc4YzU4MSIsInMiOiJlZDY3MzYyNWRhIiwiYyI6InRhbmtiIn0=", + "eyJwIjpmYWxzZSwiayI6ImUzZWQ3YjYyLTI4YmMtNDZiYy04MGQ3LTg0NTUyZDc4YzU4MSIsInMiOiJlZDY3MzYyNWRhIiwiYyI6InRhbmtiIn0=" + )), + recipient = + "canary@sandbox98d59d0a8d0a4af588f2bb683a4a57cc.mailgun.org", + `recipient-domain` = + "sandbox98d59d0a8d0a4af588f2bb683a4a57cc.mailgun.org", + method = "http", + flags = Map( + "is-routed" -> false, + "is-authenticated" -> true, + "is-system-test" -> false, + "is-test-mode" -> false + ), + `log-level` = "info", + message = MessageSummary( + Map( + "to" -> "canary@sandbox98d59d0a8d0a4af588f2bb683a4a57cc.mailgun.org", + "message-id" -> "20161202162347.92318.58763.6224A6CC@sandbox98d59d0a8d0a4af588f2bb683a4a57cc.mailgun.org", + "from" -> "Ovo Energy ", + "subject" -> "Canary test email (22629a34-e5ef-4d2a-bbd4-5193af11e90d)" ), - `user-variables` = Map( - "custom" -> """{"createdAt":"2016-12-02T15:53:45.732Z","customerId":"canary","traceToken":"769b0d0e-0f89-48b6-8a07-5a459bbdc2ab","canary":true}""" + Nil, + Seq("canary@sandbox98d59d0a8d0a4af588f2bb683a4a57cc.mailgun.org"), + 20430 + ) + ), + Stored( + timestamp = Instant.parse("2016-12-02T15:53:47.045888Z"), + id = "-KayH5ZASKm2AaQQ1wizDw", + storage = Storage( + "https://si.api.mailgun.net/v3/domains/sandbox98d59d0a8d0a4af588f2bb683a4a57cc.mailgun.org/messages/eyJwIjpmYWxzZSwiayI6IjViNjhkN2QwLWEwZTYtNDU4Yy1hOGJiLTk2ZTY0MWI3MTNhNSIsInMiOiI1ZDY4YWE5M2FmIiwiYyI6InNiaWFkIn0=", + "eyJwIjpmYWxzZSwiayI6IjViNjhkN2QwLWEwZTYtNDU4Yy1hOGJiLTk2ZTY0MWI3MTNhNSIsInMiOiI1ZDY4YWE5M2FmIiwiYyI6InNiaWFkIn0=" + ), + `user-variables` = Map( + "custom" -> """{"createdAt":"2016-12-02T15:53:45.732Z","customerId":"canary","traceToken":"769b0d0e-0f89-48b6-8a07-5a459bbdc2ab","canary":true}""" + ), + flags = Map( + "is-test-mode" -> false + ), + tags = Nil, + `log-level` = "info", + message = MessageSummary( + Map( + "to" -> "canary@sandbox98d59d0a8d0a4af588f2bb683a4a57cc.mailgun.org", + "message-id" -> "20161202155346.30852.16325.1915382A@sandbox98d59d0a8d0a4af588f2bb683a4a57cc.mailgun.org", + "from" -> "Ovo Energy ", + "subject" -> "Canary test email (769b0d0e-0f89-48b6-8a07-5a459bbdc2ab)" ), - flags = Map( - "is-test-mode" -> false + Nil, + Seq( + "canary@sandbox98d59d0a8d0a4af588f2bb683a4a57cc.mailgun.org" ), - tags = Nil, - `log-level` = "info", - message = MessageSummary( - Map( - "to" -> "canary@sandbox98d59d0a8d0a4af588f2bb683a4a57cc.mailgun.org", - "message-id" -> "20161202155346.30852.16325.1915382A@sandbox98d59d0a8d0a4af588f2bb683a4a57cc.mailgun.org", - "from" -> "Ovo Energy ", - "subject" -> "Canary test email (769b0d0e-0f89-48b6-8a07-5a459bbdc2ab)" - ), - Nil, - Seq( - "canary@sandbox98d59d0a8d0a4af588f2bb683a4a57cc.mailgun.org" - ), - 20430 - ) + 20430 ) - )) + ) +)) <<< react #458 val TodoApp = ReactComponentB[Unit]("TodoApp") .initialState(State(Nil, "")).renderS( diff --git a/scalafmt-tests/shared/src/test/resources/newlines/source_fold.stat b/scalafmt-tests/shared/src/test/resources/newlines/source_fold.stat index 9a21dbbcb8..8badc3d13b 100644 --- a/scalafmt-tests/shared/src/test/resources/newlines/source_fold.stat +++ b/scalafmt-tests/shared/src/test/resources/newlines/source_fold.stat @@ -6898,27 +6898,24 @@ object a { } >>> object a { - buffer.append((if (!fetchContent) { - DiffInfo( - changeType = ChangeType.ADD, - newContent = None, - newObjectId = Option(treeWalk.getObjectId(0)) - .map(_.name), - tooLarge = false - ) - } else { - DiffInfo( - changeType = ChangeType.ADD, - newContent = JGitUtil.getContentFromId( - git, - treeWalk.getObjectId(0), - false - ).filter(FileUtil.isText).map(convertFromByteArray), - newObjectId = Option(treeWalk.getObjectId(0)) - .map(_.name), - tooLarge = false - ) - })) + buffer + .append((if (!fetchContent) { + DiffInfo( + changeType = ChangeType.ADD, + newContent = None, + newObjectId = Option(treeWalk.getObjectId(0)).map(_.name), + tooLarge = false + ) + } else { + DiffInfo( + changeType = ChangeType.ADD, + newContent = JGitUtil + .getContentFromId(git, treeWalk.getObjectId(0), false) + .filter(FileUtil.isText).map(convertFromByteArray), + newObjectId = Option(treeWalk.getObjectId(0)).map(_.name), + tooLarge = false + ) + })) } <<< SM 4.7.0: 29.3 maxColumn = 75 @@ -8322,7 +8319,7 @@ object a { val foo = barBarBarBarBarBarBar; val baz = foo } -<<< SKIP #4133 binpack with complex nested applies and not forcing config style, !dangling +<<< #4133 binpack with complex nested applies and not forcing config style, !dangling binPack.preset = always danglingParentheses.preset = false runner.optimizer { @@ -8361,7 +8358,52 @@ object a { ) } >>> -FormatTests:54 [e]: org.scalafmt.Error$SearchStateExploded: Search state exploded on '[227] )∙(: RightParen [1072..1073) [] LeftParen [1073..1074)', line 27: exceeded `runner.maxStateVisits` [see https://scalameta.org/scalafmt/docs/configuration.html#search-state-exploded] +object a { + div(cls := "cover")( + div(cls := "doc")(bodyContents), + Option.when(full)( + section(id := "attributes")( + Option.when( + memberTypeParams.nonEmpty)( + Seq( + h2(cls := "h500")( + "Type parameters"), + dl(cls := "attributes")( + memberTypeParams *))) + .toSeq.flatten, + Option.when( + memberValueParams.nonEmpty)( + Seq( + h2(cls := "h500")( + "Value parameters"), + dl(cls := "attributes")( + memberValueParams *))) + .toSeq.flatten, + h2(cls := "h500")("Attributes"), + dl(cls := "attributes")( + attributes *))).getOrElse( + Option.when( + memberTypeParams.nonEmpty)( + Seq( + h2(cls := "h200")( + "Type parameters"), + dl( + cls := "attributes attributes-small")( + memberTypeParams *))).toSeq + .flatten ++ Option.when( + memberValueParams.nonEmpty)( + Seq( + h2(cls := "h200")( + "Value parameters"), + dl( + cls := "attributes attributes-small")( + memberValueParams *))) + .toSeq.flatten :+ h2( + cls := "h200")("Attributes") :+ dl( + cls := + "attributes attributes-small")( + attributes *))) +} <<< #4133 binpack with complex nested applies and not forcing config style, dangling binPack.preset = always danglingParentheses.preset = true diff --git a/scalafmt-tests/shared/src/test/resources/scalajs/DefDef.stat b/scalafmt-tests/shared/src/test/resources/scalajs/DefDef.stat index eecfe5b34e..22b21b4c4b 100644 --- a/scalafmt-tests/shared/src/test/resources/scalajs/DefDef.stat +++ b/scalafmt-tests/shared/src/test/resources/scalajs/DefDef.stat @@ -714,7 +714,7 @@ trait EntityPage extends HtmlPage { ) } -<<< SKIP #4133 complex nested applies with long infix args 2 +<<< #4133 complex nested applies with long infix args 2 maxColumn = 80 newlines.source = keep runner.maxStateVisits = 100000 @@ -788,8 +788,159 @@ val memberSel: Elems = ) )) >>> -FormatTests:54 [e]: org.scalafmt.Error$SearchStateExploded: Search state exploded on '[221] .∙isEmpty: Dot [999..1000) [] Ident(isEmpty) [1000..1007)', line 24: exceeded `runner.maxStateVisits`=100000 [see https://scalameta.org/scalafmt/docs/configuration.html#search-state-exploded] -<<< SKIP #4133 complex nested applies with long infix args 3 +val memberSel: Elems = + if (valueMembers.forall(_.kind == "package")) NoElems + else List( + Div( + id = "mbrsel", + elems = + Div(`class` = "toggle") :: + Div( + id = "memberfilter", + elems = + I(`class` = "material-icons arrow", + elems = Txt("\uE037")) :: + Span( + `class` = "input", + elems = + Input(id = "mbrsel-input", + placeholder = "Filter all members", + `type` = "text", accesskey = "/") + ) :: + I(`class` = "clear material-icons", + elems = Txt( + "\uE14C")) + ) :: + Div( + id = "filterby", + elems = + Div( + id = "order", + elems = + Span(`class` = "filtertype", + elems = Txt("Ordering")) :: + Ol( + elems = { + if ( + !universe.settings.docGroups.value || tpl + .members.map(_.group).distinct.forall( + _ == ModelFactory.defaultGroup) + ) + NoElems + else + Li(`class` = "group out", + elems = Span( + elems = Txt("Grouped"))) :: NoElems + } ++ + (Li(`class` = "alpha in", + elems = Span( + elems = Txt("Alphabetic"))) :: { + if ( + tpl.linearizationTemplates + .isEmpty && tpl.conversions.isEmpty + ) + NoElems + else + Li(`class` = "inherit out", + elems = Span( + elems = Txt( + "By Inheritance"))) :: NoElems + }) + ) + ) ++ ( + if ( + tpl.linearizationTemplates.isEmpty && tpl + .conversions.isEmpty + ) NoElems + else { + (if (tpl.linearizationTemplates.isEmpty) NoElems + else + Div( + `class` = "ancestors", + elems = + Span(`class` = "filtertype", + elems = Txt( + "Inherited") :: Br :: NoElems) :: + Ol( + id = "linearization", + elems = { + (tpl :: tpl.linearizationTemplates).map( + wte => + Li(`class` = "in", + name = wte.qualifiedName, + elems = Span( + elems = Txt( + wte.name)))) + } + ) + ) :: NoElems) ++ + (if (tpl.conversions.isEmpty) NoElems + else + Div( + `class` = "ancestors", + elems = + Span(`class` = "filtertype", + elems = Txt( + "Implicitly") :: Br :: NoElems) :: + Ol( + id = "implicits", + elems = { + tpl.conversions.map { conv => + val name = + conv.conversionQualifiedName + val hide = universe.settings + .hiddenImplicits(name) + Li(`class` = "in", name = name, + `data-hidden` = hide.toString, + elems = Span( + elems = Txt("by " + conv + .conversionShortName))) + } + } + ) + ) :: NoElems) ++ List( + Div( + `class` = "ancestors", + elems = + Span(`class` = "filtertype") :: + Ol( + elems = + Li(`class` = "hideall out", + elems = Span( + elems = Txt( + "Hide All"))) :: + Li(`class` = "showall in", + elems = Span( + elems = Txt( + "Show All"))) + ) + )) + }) ++ List( + Div( + id = "visbl", + elems = + Span(`class` = "filtertype", + elems = Txt("Visibility")) :: + Ol( + elems = + List( + Li(`class` = "public in", + elems = Span( + elems = Txt("Public"))), + Li(`class` = "protected out", + elems = Span( + elems = Txt( + "Protected"))) + ) ++ List(Li(`class` = "private out", + elems = Span( + elems = Txt("Private")))) + .filter(_ => + universe.settings.visibilityPrivate + .value)) + )) + ) + )) +<<< #4133 complex nested applies with long infix args 3 maxColumn = 80 newlines.source = keep runner.maxStateVisits = 10000 @@ -808,4 +959,29 @@ val template: Elems = List( ) )) >>> -FormatTests:54 [e]: org.scalafmt.Error$SearchStateExploded: Search state exploded on '[84] (∙absValueMembers: LeftParen [544..545) [] Ident(absValueMembers) [545..560)', line 9: exceeded `runner.maxStateVisits`=10000 [see https://scalameta.org/scalafmt/docs/configuration.html#search-state-exploded] +val template: Elems = List( + Div( + id = "template", + elems = List( + Div(id = "allMembers", + elems = + memsDiv("package members", "Package Members", packageMembers, + "packages") + ++ memsDiv("members", "Instance Constructors", constructors, + "constructors") + ++ memsDiv( + "types members", "Type Members", typeMembers, "types") + ++ memsDiv("types members", "Deprecated Type Members", + deprTypeMembers, "deprecatedTypes") + ++ memsDiv("values members", "Abstract Value Members", + absValueMembers) + ++ memsDiv("values members", + if (absValueMembers.isEmpty) "Value Members" + else "Concrete Value Members", concValueMembers) + ++ memsDiv( + "values members", "Shadowed Implicit Value Members", + shadowedImplicitMembers) + ++ memsDiv("values members", "Deprecated Value Members", + deprValueMembers)) + ) + ))