func()

in format.go [711:765]


func (un *formatter) visitStructMsg(expr ast.Expr) error {
	m := expr.AsStruct()
	fields := m.Fields()
	un.WriteString(m.TypeName())
	un.WriteString("{")
	if un.isMultiline(expr) {
		un.indent++
		for i, f := range fields {
			field := f.AsStructField()
			f := field.Name()
			v := field.Value()
			un.WriteNewLine()
			if field.IsOptional() {
				for _, c := range un.CommentBlock(v.ID()) {
					un.WriteString(c)
					un.WriteNewLine()
				}
				un.WriteString("?")
			}
			un.WriteString(f)
			un.WriteString(": ")
			err := un.visit(v, false)
			if err != nil {
				return err
			}
			if un.options.alwaysComma || i < len(fields)-1 {
				un.WriteString(",")
			}
			un.WriteString(un.Comment(un.lastChild(field.Value()).ID()))
		}
		un.indent--
		un.WriteNewLine()
		un.WriteString("}")
	} else {
		for i, f := range fields {
			field := f.AsStructField()
			f := field.Name()
			if field.IsOptional() {
				un.WriteString("?")
			}
			un.WriteString(f)
			un.WriteString(": ")
			v := field.Value()
			err := un.visit(v, false)
			if err != nil {
				return err
			}
			if i < len(fields)-1 {
				un.WriteString(", ")
			}
		}
		un.WriteString("}")
	}
	return nil
}