func()

in format.go [339:397]


func (un *formatter) visitCallConditional(expr ast.Expr) error {
	c := expr.AsCall()
	args := c.Args()
	// add parens if operand is a conditional itself.
	nested := isSamePrecedence(operators.Conditional, args[0]) ||
		isComplexOperator(args[0])
	err := un.visitMaybeNested(args[0], nested)
	if err != nil {
		return err
	}
	if un.isMultiline(expr) {
		un.WriteString(" ?")
		un.indent++
		un.WriteString(un.Comment(args[0].ID()))
		un.WriteNewLine()

		// add parens if operand is a conditional itself.
		nested = isSamePrecedence(operators.Conditional, args[1]) ||
			isComplexOperator(args[1])
		err = un.visitMaybeNested(args[1], nested)
		if err != nil {
			return err
		}

		un.indent--
		un.WriteString(un.Comment(args[1].ID()))
		un.WriteNewLine()
		un.WriteString(":")
		cuddle := args[2].Kind() == ast.CallKind && args[2].AsCall().FunctionName() == operators.Conditional
		if cuddle {
			un.WriteString(" ")
		} else {
			un.indent++
			un.WriteNewLine()
		}

		err = un.visit(args[2], false)
		if !cuddle {
			un.indent--
		}
		return err
	}
	un.writeOperatorWithWrapping(operators.Conditional, "?")

	// add parens if operand is a conditional itself.
	nested = isSamePrecedence(operators.Conditional, args[1]) ||
		isComplexOperator(args[1])
	err = un.visitMaybeNested(args[1], nested)
	if err != nil {
		return err
	}

	un.WriteString(" : ")
	// add parens if operand is a conditional itself.
	nested = isSamePrecedence(operators.Conditional, args[2]) ||
		isComplexOperator(args[2])

	return un.visitMaybeNested(args[2], nested)
}