Merge pull request #47 from moul/vgheri/fixarrays

goType helper can now correctly detect arrays of built-in types
This commit is contained in:
Manfred Touron 2017-02-07 19:20:48 +01:00 committed by GitHub
commit cf5e1b7064

View File

@ -112,18 +112,39 @@ func isFieldRepeated(f *descriptor.FieldDescriptorProto) bool {
func goType(pkg string, f *descriptor.FieldDescriptorProto) string { func goType(pkg string, f *descriptor.FieldDescriptorProto) string {
switch *f.Type { switch *f.Type {
case descriptor.FieldDescriptorProto_TYPE_DOUBLE: case descriptor.FieldDescriptorProto_TYPE_DOUBLE:
if *f.Label == descriptor.FieldDescriptorProto_LABEL_REPEATED {
return "[]float64"
}
return "float64" return "float64"
case descriptor.FieldDescriptorProto_TYPE_FLOAT: case descriptor.FieldDescriptorProto_TYPE_FLOAT:
if *f.Label == descriptor.FieldDescriptorProto_LABEL_REPEATED {
return "[]float32"
}
return "float32" return "float32"
case descriptor.FieldDescriptorProto_TYPE_INT64: case descriptor.FieldDescriptorProto_TYPE_INT64:
if *f.Label == descriptor.FieldDescriptorProto_LABEL_REPEATED {
return "[]int64"
}
return "int64" return "int64"
case descriptor.FieldDescriptorProto_TYPE_UINT64: case descriptor.FieldDescriptorProto_TYPE_UINT64:
if *f.Label == descriptor.FieldDescriptorProto_LABEL_REPEATED {
return "[]uint64"
}
return "uint64" return "uint64"
case descriptor.FieldDescriptorProto_TYPE_INT32: case descriptor.FieldDescriptorProto_TYPE_INT32:
if *f.Label == descriptor.FieldDescriptorProto_LABEL_REPEATED {
return "[]uint32"
}
return "uint32" return "uint32"
case descriptor.FieldDescriptorProto_TYPE_BOOL: case descriptor.FieldDescriptorProto_TYPE_BOOL:
if *f.Label == descriptor.FieldDescriptorProto_LABEL_REPEATED {
return "[]bool"
}
return "bool" return "bool"
case descriptor.FieldDescriptorProto_TYPE_STRING: case descriptor.FieldDescriptorProto_TYPE_STRING:
if *f.Label == descriptor.FieldDescriptorProto_LABEL_REPEATED {
return "[]string"
}
return "string" return "string"
case descriptor.FieldDescriptorProto_TYPE_MESSAGE: case descriptor.FieldDescriptorProto_TYPE_MESSAGE:
if *f.Label == descriptor.FieldDescriptorProto_LABEL_REPEATED { if *f.Label == descriptor.FieldDescriptorProto_LABEL_REPEATED {
@ -131,8 +152,14 @@ func goType(pkg string, f *descriptor.FieldDescriptorProto) string {
} }
return fmt.Sprintf("*%s.%s", pkg, shortType(*f.TypeName)) return fmt.Sprintf("*%s.%s", pkg, shortType(*f.TypeName))
case descriptor.FieldDescriptorProto_TYPE_BYTES: case descriptor.FieldDescriptorProto_TYPE_BYTES:
if *f.Label == descriptor.FieldDescriptorProto_LABEL_REPEATED {
return "[]byte"
}
return "byte" return "byte"
case descriptor.FieldDescriptorProto_TYPE_UINT32: case descriptor.FieldDescriptorProto_TYPE_UINT32:
if *f.Label == descriptor.FieldDescriptorProto_LABEL_REPEATED {
return "[]uint32"
}
return "uint32" return "uint32"
case descriptor.FieldDescriptorProto_TYPE_ENUM: case descriptor.FieldDescriptorProto_TYPE_ENUM:
return fmt.Sprintf("*%s.%s", pkg, shortType(*f.TypeName)) return fmt.Sprintf("*%s.%s", pkg, shortType(*f.TypeName))