def getShortText()

in scala/scala-impl/src/org/jetbrains/plugins/scala/lang/refactoring/util/ScalaRefactoringUtil.scala [635:785]


  def getShortText(expr: ScalaPsiElement): String = {
    val builder = new mutable.StringBuilder
    expr match {
      case ass: ScAssignment =>
        builder.append(getShortText(ass.leftExpression))
        builder.append(" = ")
        ass.rightExpression match {
          case Some(r) => builder.append(getShortText(r))
          case _ =>
        }
      case _: ScBlock =>
        builder.append("{...}")
      case _: ScDo =>
        builder.append("do {...} while (...)")
      case f: ScFor =>
        builder.append("for (...) ")

        val yieldOrDo = f.yieldOrDoKeyword
        val yieldOrDoStr = yieldOrDo.map(_.elementType).map(_.getDebugName + " ")
        yieldOrDoStr.foreach(builder.append)

        builder.append("{...}")
      case f: ScFunctionExpr =>
        val arrow = ScalaPsiUtil.functionArrow(f.getProject)
        builder.append(f.params.getText).append(s" $arrow {...}")
      case g: ScGenericCall =>
        builder.append(getShortText(g.referencedExpr))
        builder.append("[...]")
      case i: ScIf =>
        builder.append("if (...) {...}")
        if (i.elseExpression.isDefined) builder.append(" else {...}")
      //
      case ScInfixElement(left, op, rightOption) =>
        rightOption match {
          case Some(right) =>
            builder.append(getShortText(left))
            builder.append(" ")
            builder.append(getShortText(op))
            builder.append(" ")
            builder.append(getShortText(right))
          case _ =>
        }
      case i: ScInterpolationPattern =>
        builder.append(getShortText(i.ref))
        builder.append("\"...\"")
      case c: ScConstructorPattern =>
        builder.append(getShortText(c.ref))
        builder.append(c.args.patterns.map(getShortText).mkString("(", ", ", ")"))
      case n: ScNamingPattern =>
        builder.append(n.name)
        builder.append(" @ ")
        builder.append(getShortText(n.named))
      case f: ScFunctionalTypeElement =>
        builder.append(getShortText(f.paramTypeElement))
        builder.append(" => ")
        builder.append(f.returnTypeElement.map(getShortText(_)).getOrElse("..."))
      case l: ScLiteral => builder.append(l.getText)
      case m: ScMatch =>
        m.expression match {
          case Some(expression) => builder.append(getShortText(expression))
          case _ => builder.append("...")
        }
        builder.append(" match {...}")
      case m: ScMethodCall =>
        builder.append(getShortText(m.getInvokedExpr))
        if (m.argumentExpressions.isEmpty) builder.append("()")
        else builder.append("(...)")
      case n: ScNewTemplateDefinition =>
        builder.append("new ")
        val types = n.extendsBlock.superTypes
        for (tp <- types) {
          builder.append(tp.codeText(expr, Context(expr)))
          if (tp != types.last) builder.append(" with ")
        }
        n.extendsBlock.templateBody match {
          case Some(_) => builder.append(" {...}")
          case _ =>
        }
      case p : ScParenthesizedElement =>
        builder.append("(")
        p.innerElement match {
          case Some(sub) => builder.append(getShortText(sub))
          case _ =>
        }
        builder.append(")")
      case p: ScPostfixExpr =>
        builder.append(getShortText(p.operand))
        builder.append(" ")
        builder.append(getShortText(p.operation))
      case p: ScPrefixExpr =>
        builder.append(getShortText(p.operation))
        builder.append(getShortText(p.operand))
      case r: ScReferenceExpression =>
        r.qualifier match {
          case Some(q) => builder.append(getShortText(q)).append(".")
          case _ =>
        }
        builder.append(r.refName)
      case r: ScReturn =>
        builder.append("return ")
        r.expr.map(getShortText)
          .foreach(builder.append)
      case s: ScSuperReference => builder.append(s.getText)
      case t: ScThisReference => builder.append(t.getText)
      case t: ScThrow =>
        builder.append("throw ")
        t.expression match {
          case Some(expression) => builder.append(getShortText(expression))
          case _ => builder.append("...")
        }
      case t: ScTry =>
        builder.append("try {...}")
        if (t.catchBlock.isDefined) builder.append(" catch {...}")
        if (t.finallyBlock.isDefined) builder.append(" finally {...}")
      case t: ScTuple =>
        builder.append("(")
        val exprs = t.exprs
        for (expr <- exprs) {
          builder.append(getShortText(expr))
          if (expr != exprs.last) builder.append(", ")
        }
        builder.append(")")
      case ScNamedTuple(components) =>
        builder.append("(")
        for (comp <- components) {
          comp.name.foreach(builder.append)
          builder.append(" = ")
          comp.expr.foreach(expr => builder.append(getShortText(expr)))
          if (comp != components.last) builder.append(", ")
        }
        builder.append(")")
      case t: ScTypedExpression =>
        builder.append(getShortText(t.expr))
        builder.append(" : ")
        builder.append(t.typeElement match {
          case Some(te) => te.getText
          case _ => "..."
        })
      case u: ScUnderscoreSection =>
        if (u.bindingExpr.isEmpty) builder.append("_")
        else {
          builder.append(getShortText(u.bindingExpr.get))
          builder.append(" _")
        }
      case _: ScUnitExpr => builder.append("()")
      case _: ScWhile => builder.append("while (...) {...}")
      case x: ScXmlExpr => builder.append(x.getText)
      case _ => builder.append(expr.getText)
    }
    builder.toString()
  }