func()

in format.go [233:268]


func (un *formatter) visit(expr ast.Expr, macro bool) error {
	if un.err != nil {
		return un.err
	}
	if expr == nil {
		return errors.New("unsupported expression")
	}

	for _, c := range un.CommentBlock(expr.ID()) {
		un.WriteString(c)
		un.WriteNewLine()
	}

	visited, err := un.visitMaybeMacroCall(expr)
	if visited || err != nil {
		return err
	}
	switch expr.Kind() {
	case ast.CallKind:
		return un.visitCall(expr, macro)
	case ast.LiteralKind:
		return un.visitConst(expr)
	case ast.IdentKind:
		return un.visitIdent(expr)
	case ast.ListKind:
		return un.visitList(expr)
	case ast.MapKind:
		return un.visitStructMap(expr)
	case ast.SelectKind:
		return un.visitSelect(expr)
	case ast.StructKind:
		return un.visitStructMsg(expr)
	default:
		return fmt.Errorf("unsupported expression: %v", expr.Kind())
	}
}