func check(t *testing.T, m extendable, fieldA float64, ext *proto.ExtensionDesc) { if !proto.HasExtension(m, ext) { t.Fatalf("expected extension to be set") } fieldA2Interface, err := proto.GetExtension(m, ext) if err != nil { panic(err) } fieldA2 := fieldA2Interface.(*float64) if fieldA != *fieldA2 { t.Fatalf("Expected %f got %f", fieldA, *fieldA2) } proto.ClearExtension(m, ext) if proto.HasExtension(m, ext) { t.Fatalf("expected extension to be cleared") } }
func getCustomType(field *descriptor.FieldDescriptorProto) (packageName string, typ string, err error) { if field.Options != nil { v, err := proto.GetExtension(field.Options, gogoproto.E_Customtype) if err == nil && v.(*string) != nil { ctype := *(v.(*string)) ss := strings.Split(ctype, ".") if len(ss) == 1 { return "", ctype, nil } else { packageName := strings.Join(ss[0:len(ss)-1], ".") typeName := ss[len(ss)-1] importStr := strings.Replace(strings.Replace(packageName, "/", "_", -1), ".", "_", -1) typ = importStr + "." + typeName return packageName, typ, nil } } } return "", "", err }