private def showParens[T: Showable]()

in finagle-core/src/main/scala/com/twitter/finagle/NameTree.scala [247:290]


  private def showParens[T: Showable](tree: NameTree[T]): String = s"(${show(tree)})"

  // return value is restricted to Fail | Neg | Leaf
  // NB: discards weights
  private def eval[T](tree: NameTree[T]): NameTree[Set[T]] = tree match {
    case Union() | Alt() => Neg
    case Alt(tree) => eval(tree)
    case Union(Weighted(_, tree)) => eval(tree)
    case Fail => Fail
    case Neg => Neg
    case Empty => Leaf(Set.empty)
    case Leaf(t) => Leaf(Set(t))

    case Union(trees @ _*) =>
      @tailrec def loop(trees: Seq[Weighted[T]], accum: Seq[Set[T]]): NameTree[Set[T]] =
        trees match {
          case Nil =>
            accum match {
              case Nil => Neg
              case _ => Leaf(accum.flatten.toSet)
            }
          case Seq(Weighted(_, head), tail @ _*) =>
            eval(head) match {
              case Fail | Neg => loop(tail, accum)
              case Leaf(value) => loop(tail, accum :+ value)
              case _ => scala.sys.error("bug")
            }
        }
      loop(trees, Nil)

    case Alt(trees @ _*) =>
      @tailrec def loop(trees: Seq[NameTree[T]]): NameTree[Set[T]] =
        trees match {
          case Nil => Neg
          case Seq(head, tail @ _*) =>
            eval(head) match {
              case Fail => Fail
              case Neg => loop(tail)
              case head @ Leaf(_) => head
              case _ => scala.sys.error("bug")
            }
        }
      loop(trees)
  }