commit 6901b37194aa6d1314f8713e82ddf4e2a48dd40a
parent eb6e5994c712d1e934f6bdd99188ac48317ef3c5
Author: Francois Parquet <francois.parquet@gmail.com>
Date: Wed, 27 Mar 2019 23:02:13 +0800
Merge pull request #106 from francoispqt/update/generator-field-unknown
Update/generator field unknown
Diffstat:
2 files changed, 8 insertions(+), 11 deletions(-)
diff --git a/gojay/codegen/struct.go b/gojay/codegen/struct.go
@@ -194,7 +194,8 @@ func (s *Struct) generateFieldDecoding(fields []*toolbox.FieldInfo) (string, []s
} else if _, k, ok := s.typedFieldDecode(field, field.Type); ok {
templateKey = k
} else {
- templateKey = decodeUnknown
+ // templateKey = decodeUnknown
+ return "", nil, fmt.Errorf("Unknown type %s for field %s", field.Type, field.Name)
}
}
if templateKey != -1 {
@@ -275,12 +276,12 @@ func (s *Struct) generateFieldEncoding(fields []*toolbox.FieldInfo) ([]string, e
templateKey = encodeStructSlice
break main
} else if field.IsSlice {
- s.typedFieldDecode(field, field.ComponentType)
templateKey = encodeStructSlice
} else if _, k, ok := s.typedFieldEncode(field, field.Type); ok {
templateKey = k
} else {
- templateKey = encodeUnknown
+ // templateKey = decodeUnknown
+ return nil, fmt.Errorf("Unknown type %s for field %s", field.Type, field.Name)
}
}
if templateKey != -1 {
diff --git a/gojay/codegen/template.go b/gojay/codegen/template.go
@@ -116,15 +116,11 @@ var fieldTemplate = map[int]string{
enc.SQLNull{{.NullType}}Key{{.OmitEmpty}}("{{.Key}}", {{.PointerModifier}}{{.Accessor}})
}{{else}} enc.SQLNull{{.NullType}}Key{{.OmitEmpty}}("{{.Key}}", {{.PointerModifier}}{{.Accessor}}){{end}}`,
decodeUnknown: ` case "{{.Key}}":
- //TODO
- //dec.Any({{.Accessor}})
- return nil
-`,
- encodeUnknown: `
- //TODO
- //enc.Any({{.Accessor}})
-
+ return dec.Any({{.PointerModifier}}{{.Accessor}})
`,
+ encodeUnknown: `{{if .IsPointer}} if {{.Accessor}} != nil {
+ enc.Any({{.Accessor}})
+ }{{else}}enc.Any({{.Accessor}}){{end}}`,
resetFieldValue: `{{if .ResetDependency}}{{.ResetDependency}}
{{end}} {{.Mutator}} = {{.Reset}}`,
poolInstanceRelease: ` {{.PoolName}}.Put({{.Accessor}})`,