Minor fixes

This commit is contained in:
Aleksandr Petrukhin
2016-07-18 15:04:06 +03:00
parent 959def0522
commit a777ea8b73
3 changed files with 24 additions and 16 deletions
+10 -1
View File
@@ -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)
+9
View File
@@ -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)
+5 -15
View File
@@ -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] {