From a777ea8b73be23bb8a87d7d9d59870a8400d6dcf Mon Sep 17 00:00:00 2001 From: Aleksandr Petrukhin Date: Mon, 18 Jul 2016 15:04:06 +0300 Subject: [PATCH] Minor fixes --- gen/decoder.go | 11 ++++++++++- gen/encoder.go | 9 +++++++++ gen/generator.go | 20 +++++--------------- 3 files changed, 24 insertions(+), 16 deletions(-) diff --git a/gen/decoder.go b/gen/decoder.go index e812567..2bc9f1f 100644 --- a/gen/decoder.go +++ b/gen/decoder.go @@ -267,6 +267,15 @@ func getStructFields(t reflect.Type) ([]reflect.StructField, error) { return mergeStructFields(efields, fields), nil } +func (g *Generator) genDecoder(t reflect.Type) error { + switch t.Kind() { + case reflect.Slice: + return g.genSliceDecoder(t) + default: + return g.genStructDecoder(t) + } +} + func (g *Generator) genSliceDecoder(t reflect.Type) error { if t.Kind() != reflect.Slice { return fmt.Errorf("cannot generate encoder/decoder for %v, not a slice type", t) @@ -287,7 +296,7 @@ func (g *Generator) genSliceDecoder(t reflect.Type) error { func (g *Generator) genStructDecoder(t reflect.Type) error { if t.Kind() != reflect.Struct { - return fmt.Errorf("cannot generate encoder/decoder for %v, not a struct type") + return fmt.Errorf("cannot generate encoder/decoder for %v, not a struct type", t) } fname := g.getDecoderName(t) diff --git a/gen/encoder.go b/gen/encoder.go index e9d4e20..19d7077 100644 --- a/gen/encoder.go +++ b/gen/encoder.go @@ -232,6 +232,15 @@ func (g *Generator) genStructFieldEncoder(t reflect.Type, f reflect.StructField) return nil } +func (g *Generator) genEncoder(t reflect.Type) error { + switch t.Kind() { + case reflect.Slice: + return g.genSliceEncoder(t) + default: + return g.genStructEncoder(t) + } +} + func (g *Generator) genSliceEncoder(t reflect.Type) error { if t.Kind() != reflect.Slice { return fmt.Errorf("cannot generate encoder/decoder for %v, not a slice type", t) diff --git a/gen/generator.go b/gen/generator.go index e10a1c6..fcf0dda 100644 --- a/gen/generator.go +++ b/gen/generator.go @@ -175,21 +175,11 @@ func (g *Generator) Run(out io.Writer) error { g.typesUnseen = g.typesUnseen[:len(g.typesUnseen)-1] g.typesSeen[t] = true - switch t.Kind() { - case reflect.Slice: - if err := g.genSliceDecoder(t); err != nil { - return err - } - if err := g.genSliceEncoder(t); err != nil { - return err - } - default: - if err := g.genStructDecoder(t); err != nil { - return err - } - if err := g.genStructEncoder(t); err != nil { - return err - } + if err := g.genDecoder(t); err != nil { + return err + } + if err := g.genEncoder(t); err != nil { + return err } if !g.marshallers[t] {