|
|
@@ -283,20 +283,23 @@ func writeStruct(w *textWriter, sv reflect.Value) error {
|
|
|
if err := w.WriteByte('\n'); err != nil {
|
|
|
return err
|
|
|
}
|
|
|
- // value
|
|
|
- if _, err := w.WriteString("value:"); err != nil {
|
|
|
- return err
|
|
|
- }
|
|
|
- if !w.compact {
|
|
|
- if err := w.WriteByte(' '); err != nil {
|
|
|
+ // nil values aren't legal, but we can avoid panicking because of them.
|
|
|
+ if val.Kind() != reflect.Ptr || !val.IsNil() {
|
|
|
+ // value
|
|
|
+ if _, err := w.WriteString("value:"); err != nil {
|
|
|
+ return err
|
|
|
+ }
|
|
|
+ if !w.compact {
|
|
|
+ if err := w.WriteByte(' '); err != nil {
|
|
|
+ return err
|
|
|
+ }
|
|
|
+ }
|
|
|
+ if err := writeAny(w, val, props.mvalprop); err != nil {
|
|
|
+ return err
|
|
|
+ }
|
|
|
+ if err := w.WriteByte('\n'); err != nil {
|
|
|
return err
|
|
|
}
|
|
|
- }
|
|
|
- if err := writeAny(w, val, props.mvalprop); err != nil {
|
|
|
- return err
|
|
|
- }
|
|
|
- if err := w.WriteByte('\n'); err != nil {
|
|
|
- return err
|
|
|
}
|
|
|
// close struct
|
|
|
w.unindent()
|