reflect/protoreflect: rename methods with Type suffix
The protobuf type system uses the word "descriptor" instead of "type".
We should avoid the "type" verbage when we aren't talking about Go types.
The old names are temporarily kept around for compatibility reasons.
Change-Id: Icc99c913528ead011f7a74aa8399d9c5ec6dc56e
Reviewed-on: https://go-review.googlesource.com/c/protobuf/+/172238
Reviewed-by: Herbie Ong <herbie@google.com>
Reviewed-by: Damien Neil <dneil@google.com>
diff --git a/internal/cmd/generate-protos/main.go b/internal/cmd/generate-protos/main.go
index ec358e3..78e3c19 100644
--- a/internal/cmd/generate-protos/main.go
+++ b/internal/cmd/generate-protos/main.go
@@ -234,9 +234,9 @@
typeName := fd.Kind().String()
switch fd.Kind() {
case protoreflect.EnumKind:
- typeName = string(fd.EnumType().FullName())
+ typeName = string(fd.Enum().FullName())
case protoreflect.MessageKind, protoreflect.GroupKind:
- typeName = string(fd.MessageType().FullName())
+ typeName = string(fd.Message().FullName())
}
g.P(message.GoIdent.GoName, "_", field.GoName, "=", fd.Number(), "// ", fd.Cardinality(), " ", typeName)
}
diff --git a/internal/encoding/pack/pack.go b/internal/encoding/pack/pack.go
index 93dc4ed..6cb9aa2 100644
--- a/internal/encoding/pack/pack.go
+++ b/internal/encoding/pack/pack.go
@@ -325,7 +325,7 @@
kind = fieldDesc.Kind()
switch kind {
case protoreflect.MessageKind, protoreflect.GroupKind:
- subDesc = fieldDesc.MessageType()
+ subDesc = fieldDesc.Message()
if subDesc == nil || subDesc.IsPlaceholder() {
kind = 0
}
diff --git a/internal/encoding/tag/tag.go b/internal/encoding/tag/tag.go
index 23c07f5..72499c1 100644
--- a/internal/encoding/tag/tag.go
+++ b/internal/encoding/tag/tag.go
@@ -166,7 +166,7 @@
// The name of the FieldDescriptor for a group field is
// lowercased. To find the original capitalization, we
// look in the field's MessageType.
- name = string(fd.MessageType().Name())
+ name = string(fd.Message().Name())
}
tag = append(tag, "name="+name)
if jsonName := fd.JSONName(); jsonName != "" && jsonName != name {
@@ -175,13 +175,13 @@
// The previous implementation does not tag extension fields as proto3,
// even when the field is defined in a proto3 file. Match that behavior
// for consistency.
- if fd.Syntax() == pref.Proto3 && fd.ExtendedType() == nil {
+ if fd.Syntax() == pref.Proto3 && fd.Extendee() == nil {
tag = append(tag, "proto3")
}
if fd.Kind() == pref.EnumKind && enumName != "" {
tag = append(tag, "enum="+enumName)
}
- if fd.OneofType() != nil {
+ if fd.Oneof() != nil {
tag = append(tag, "oneof")
}
// This must appear last in the tag, since commas in strings aren't escaped.
diff --git a/internal/fileinit/desc.go b/internal/fileinit/desc.go
index 120b7b9..1d1e10a 100644
--- a/internal/fileinit/desc.go
+++ b/internal/fileinit/desc.go
@@ -439,13 +439,19 @@
func (fd *fieldDesc) HasDefault() bool { return fd.defVal.has }
func (fd *fieldDesc) Default() pref.Value { return fd.defVal.get() }
func (fd *fieldDesc) DefaultEnumValue() pref.EnumValueDescriptor { return fd.defVal.enum }
-func (fd *fieldDesc) OneofType() pref.OneofDescriptor { return fd.oneofType }
-func (fd *fieldDesc) ExtendedType() pref.MessageDescriptor { return nil }
-func (fd *fieldDesc) EnumType() pref.EnumDescriptor { return fd.enumType }
-func (fd *fieldDesc) MessageType() pref.MessageDescriptor { return fd.messageType }
+func (fd *fieldDesc) Oneof() pref.OneofDescriptor { return fd.oneofType }
+func (fd *fieldDesc) Extendee() pref.MessageDescriptor { return nil }
+func (fd *fieldDesc) Enum() pref.EnumDescriptor { return fd.enumType }
+func (fd *fieldDesc) Message() pref.MessageDescriptor { return fd.messageType }
func (fd *fieldDesc) Format(s fmt.State, r rune) { pfmt.FormatDesc(s, r, fd) }
func (fd *fieldDesc) ProtoType(pref.FieldDescriptor) {}
+// TODO: Remove these methods.
+func (fd *fieldDesc) OneofType() pref.OneofDescriptor { return fd.Oneof() }
+func (fd *fieldDesc) ExtendedType() pref.MessageDescriptor { return fd.Extendee() }
+func (fd *fieldDesc) EnumType() pref.EnumDescriptor { return fd.Enum() }
+func (fd *fieldDesc) MessageType() pref.MessageDescriptor { return fd.Message() }
+
func (od *oneofDesc) Options() pref.ProtoMessage {
return unmarshalOptions(descopts.Oneof, od.options)
}
@@ -506,10 +512,10 @@
func (xd *extensionDesc) HasDefault() bool { return xd.lazyInit().defVal.has }
func (xd *extensionDesc) Default() pref.Value { return xd.lazyInit().defVal.get() }
func (xd *extensionDesc) DefaultEnumValue() pref.EnumValueDescriptor { return xd.lazyInit().defVal.enum }
-func (xd *extensionDesc) OneofType() pref.OneofDescriptor { return nil }
-func (xd *extensionDesc) ExtendedType() pref.MessageDescriptor { return xd.extendedType }
-func (xd *extensionDesc) EnumType() pref.EnumDescriptor { return xd.lazyInit().enumType }
-func (xd *extensionDesc) MessageType() pref.MessageDescriptor { return xd.lazyInit().messageType }
+func (xd *extensionDesc) Oneof() pref.OneofDescriptor { return nil }
+func (xd *extensionDesc) Extendee() pref.MessageDescriptor { return xd.extendedType }
+func (xd *extensionDesc) Enum() pref.EnumDescriptor { return xd.lazyInit().enumType }
+func (xd *extensionDesc) Message() pref.MessageDescriptor { return xd.lazyInit().messageType }
func (xd *extensionDesc) Format(s fmt.State, r rune) { pfmt.FormatDesc(s, r, xd) }
func (xd *extensionDesc) ProtoType(pref.FieldDescriptor) {}
func (xd *extensionDesc) ProtoInternal(pragma.DoNotImplement) {}
@@ -527,6 +533,12 @@
return xd.legacyDesc
}
+// TODO: Remove these methods.
+func (xd *extensionDesc) OneofType() pref.OneofDescriptor { return xd.Oneof() }
+func (xd *extensionDesc) ExtendedType() pref.MessageDescriptor { return xd.Extendee() }
+func (xd *extensionDesc) EnumType() pref.EnumDescriptor { return xd.Enum() }
+func (xd *extensionDesc) MessageType() pref.MessageDescriptor { return xd.Message() }
+
type (
serviceDesc struct {
baseDesc
@@ -563,14 +575,18 @@
func (md *methodDesc) Options() pref.ProtoMessage {
return unmarshalOptions(descopts.Method, md.options)
}
-func (md *methodDesc) InputType() pref.MessageDescriptor { return md.inputType }
-func (md *methodDesc) OutputType() pref.MessageDescriptor { return md.outputType }
+func (md *methodDesc) Input() pref.MessageDescriptor { return md.inputType }
+func (md *methodDesc) Output() pref.MessageDescriptor { return md.outputType }
func (md *methodDesc) IsStreamingClient() bool { return md.isStreamingClient }
func (md *methodDesc) IsStreamingServer() bool { return md.isStreamingServer }
func (md *methodDesc) Format(s fmt.State, r rune) { pfmt.FormatDesc(s, r, md) }
func (md *methodDesc) ProtoType(pref.MethodDescriptor) {}
func (md *methodDesc) ProtoInternal(pragma.DoNotImplement) {}
+// TODO: Remove these methods.
+func (md *methodDesc) InputType() pref.MessageDescriptor { return md.Input() }
+func (md *methodDesc) OutputType() pref.MessageDescriptor { return md.Output() }
+
type baseDesc struct {
parentFile *fileDesc
parent pref.Descriptor
diff --git a/internal/fileinit/fileinit_test.go b/internal/fileinit/fileinit_test.go
index c116751..08a5883 100644
--- a/internal/fileinit/fileinit_test.go
+++ b/internal/fileinit/fileinit_test.go
@@ -70,7 +70,7 @@
// Verify that message descriptors for map entries have no Go type info.
mapEntryName := protoreflect.FullName("goproto.proto.test.TestAllTypes.MapInt32Int32Entry")
- d := testpb.File_test_test_proto.Messages().ByName("TestAllTypes").Fields().ByName("map_int32_int32").MessageType()
+ d := testpb.File_test_test_proto.Messages().ByName("TestAllTypes").Fields().ByName("map_int32_int32").Message()
if gotName, wantName := d.FullName(), mapEntryName; gotName != wantName {
t.Fatalf("looked up wrong descriptor: got %v, want %v", gotName, wantName)
}
diff --git a/internal/impl/legacy_extension.go b/internal/impl/legacy_extension.go
index 4a60f05..e187127 100644
--- a/internal/impl/legacy_extension.go
+++ b/internal/impl/legacy_extension.go
@@ -149,7 +149,7 @@
}
func (p legacyExtensionTypes) Register(t pref.ExtensionType) {
- if p.mi.PBType.FullName() != t.ExtendedType().FullName() {
+ if p.mi.PBType.FullName() != t.Extendee().FullName() {
panic("extended type mismatch")
}
if !p.mi.PBType.ExtensionRanges().Has(t.Number()) {
diff --git a/internal/impl/legacy_test.go b/internal/impl/legacy_test.go
index 84cf071..799289b 100644
--- a/internal/impl/legacy_test.go
+++ b/internal/impl/legacy_test.go
@@ -769,7 +769,7 @@
// Ignore New since it a constructor.
case "Options":
// Ignore descriptor options since protos are not cmperable.
- case "EnumType", "MessageType", "ExtendedType":
+ case "Oneof", "Extendee", "Enum", "Message":
// Avoid descending into a dependency to avoid a cycle.
// Just record the full name if available.
//
@@ -778,6 +778,12 @@
if !v.IsNil() {
out[name] = v.Interface().(pref.Descriptor).FullName()
}
+ // TODO: Remove this when the methods are deleted.
+ case "OneofType", "ExtendedType", "EnumType", "MessageType":
+ v := m.Call(nil)[0]
+ if !v.IsNil() {
+ out[name] = v.Interface().(pref.Descriptor).FullName()
+ }
default:
out[name] = m.Call(nil)[0].Interface()
}
diff --git a/internal/impl/message.go b/internal/impl/message.go
index c719e47..6e0f904 100644
--- a/internal/impl/message.go
+++ b/internal/impl/message.go
@@ -115,8 +115,8 @@
switch {
case fd.IsWeak():
fi = fieldInfoForWeak(fd, specialByName["XXX_weak"])
- case fd.OneofType() != nil:
- fi = fieldInfoForOneof(fd, oneofsByName[fd.OneofType().Name()], oneofWrappersByNumber[fd.Number()])
+ case fd.Oneof() != nil:
+ fi = fieldInfoForOneof(fd, oneofsByName[fd.Oneof().Name()], oneofWrappersByNumber[fd.Number()])
case fd.IsMap():
fi = fieldInfoForMap(fd, fs)
case fd.Cardinality() == pref.Repeated:
diff --git a/internal/impl/message_field.go b/internal/impl/message_field.go
index 581481c..ec29a9b 100644
--- a/internal/impl/message_field.go
+++ b/internal/impl/message_field.go
@@ -98,8 +98,8 @@
if ft.Kind() != reflect.Map {
panic(fmt.Sprintf("invalid type: got %v, want map kind", ft))
}
- keyConv := pvalue.NewLegacyConverter(ft.Key(), fd.MessageType().Fields().ByNumber(1).Kind(), legacyWrapper)
- valConv := pvalue.NewLegacyConverter(ft.Elem(), fd.MessageType().Fields().ByNumber(2).Kind(), legacyWrapper)
+ keyConv := pvalue.NewLegacyConverter(ft.Key(), fd.Message().Fields().ByNumber(1).Kind(), legacyWrapper)
+ valConv := pvalue.NewLegacyConverter(ft.Elem(), fd.Message().Fields().ByNumber(2).Kind(), legacyWrapper)
fieldOffset := offsetOf(fs)
// TODO: Implement unsafe fast path?
return fieldInfo{
diff --git a/internal/legacy/extension.go b/internal/legacy/extension.go
index 19205ea..94ad7b7 100644
--- a/internal/legacy/extension.go
+++ b/internal/legacy/extension.go
@@ -64,7 +64,7 @@
// Determine the parent type if possible.
var parent piface.MessageV1
- if mt, ok := t.ExtendedType().(pref.MessageType); ok {
+ if mt, ok := t.Extendee().(pref.MessageType); ok {
// Create a new parent message and unwrap it if possible.
mv := mt.New().Interface()
t := reflect.TypeOf(mv)
@@ -97,7 +97,7 @@
if t.Kind() == pref.EnumKind {
// Derive Go type name.
// For legacy enums, unwrap the wrapper to get the underlying Go type.
- et := t.EnumType().(pref.EnumType)
+ et := t.Enum().(pref.EnumType)
var ev interface{} = et.New(0)
if u, ok := ev.(pvalue.Unwrapper); ok {
ev = u.ProtoUnwrap()
diff --git a/internal/legacy/file_test.go b/internal/legacy/file_test.go
index 15dca7b..20e4aa2 100644
--- a/internal/legacy/file_test.go
+++ b/internal/legacy/file_test.go
@@ -431,7 +431,7 @@
case "HasJSONName":
// Ignore this since the semantics of the field has
// changed across protoc and protoc-gen-go releases.
- case "OneofType", "ExtendedType", "EnumType", "MessageType":
+ case "Oneof", "Extendee", "Enum", "Message":
// Avoid descending into a dependency to avoid a cycle.
// Just record the full name if available.
//
@@ -440,6 +440,12 @@
if !v.IsNil() {
out[name] = v.Interface().(pref.Descriptor).FullName()
}
+ // TODO: Remove this when the methods are deleted.
+ case "OneofType", "ExtendedType", "EnumType", "MessageType":
+ v := m.Call(nil)[0]
+ if !v.IsNil() {
+ out[name] = v.Interface().(pref.Descriptor).FullName()
+ }
default:
out[name] = m.Call(nil)[0].Interface()
}
diff --git a/internal/legacy/legacy_test.go b/internal/legacy/legacy_test.go
index 2f4dbbc..3bac3b3 100644
--- a/internal/legacy/legacy_test.go
+++ b/internal/legacy/legacy_test.go
@@ -55,24 +55,24 @@
var (
wantMTA = messageATypes[0]
- wantMDA = messageATypes[0].Fields().ByNumber(1).MessageType()
+ wantMDA = messageATypes[0].Fields().ByNumber(1).Message()
wantMTB = messageBTypes[0]
- wantMDB = messageBTypes[0].Fields().ByNumber(2).MessageType()
+ wantMDB = messageBTypes[0].Fields().ByNumber(2).Message()
wantET = enumTypes[0]
- wantED = messageATypes[0].Fields().ByNumber(3).EnumType()
+ wantED = messageATypes[0].Fields().ByNumber(3).Enum()
)
for _, gotMT := range messageATypes[1:] {
if gotMT != wantMTA {
t.Error("MessageType(MessageA) mismatch")
}
- if gotMDA := gotMT.Fields().ByNumber(1).MessageType(); gotMDA != wantMDA {
+ if gotMDA := gotMT.Fields().ByNumber(1).Message(); gotMDA != wantMDA {
t.Error("MessageDescriptor(MessageA) mismatch")
}
- if gotMDB := gotMT.Fields().ByNumber(2).MessageType(); gotMDB != wantMDB {
+ if gotMDB := gotMT.Fields().ByNumber(2).Message(); gotMDB != wantMDB {
t.Error("MessageDescriptor(MessageB) mismatch")
}
- if gotED := gotMT.Fields().ByNumber(3).EnumType(); gotED != wantED {
+ if gotED := gotMT.Fields().ByNumber(3).Enum(); gotED != wantED {
t.Error("EnumDescriptor(Enum) mismatch")
}
}
@@ -80,13 +80,13 @@
if gotMT != wantMTB {
t.Error("MessageType(MessageB) mismatch")
}
- if gotMDA := gotMT.Fields().ByNumber(1).MessageType(); gotMDA != wantMDA {
+ if gotMDA := gotMT.Fields().ByNumber(1).Message(); gotMDA != wantMDA {
t.Error("MessageDescriptor(MessageA) mismatch")
}
- if gotMDB := gotMT.Fields().ByNumber(2).MessageType(); gotMDB != wantMDB {
+ if gotMDB := gotMT.Fields().ByNumber(2).Message(); gotMDB != wantMDB {
t.Error("MessageDescriptor(MessageB) mismatch")
}
- if gotED := gotMT.Fields().ByNumber(3).EnumType(); gotED != wantED {
+ if gotED := gotMT.Fields().ByNumber(3).Enum(); gotED != wantED {
t.Error("EnumDescriptor(Enum) mismatch")
}
}
diff --git a/internal/prototype/go_type.go b/internal/prototype/go_type.go
index a9fcc39..8dba537 100644
--- a/internal/prototype/go_type.go
+++ b/internal/prototype/go_type.go
@@ -118,12 +118,12 @@
// The type M is the concrete message type returned by NewMessage,
// which is often, but not required to be, a pointer to a named struct type.
func GoExtension(xd protoreflect.ExtensionDescriptor, et protoreflect.EnumType, mt protoreflect.MessageType) protoreflect.ExtensionType {
- if xd.ExtendedType() == nil {
+ if xd.Extendee() == nil {
panic("field descriptor does not extend a message")
}
switch xd.Kind() {
case protoreflect.EnumKind:
- if et2, ok := xd.EnumType().(protoreflect.EnumType); ok && et == nil {
+ if et2, ok := xd.Enum().(protoreflect.EnumType); ok && et == nil {
et = et2
}
if et == nil {
@@ -133,7 +133,7 @@
panic("message type provided for enum kind")
}
case protoreflect.MessageKind, protoreflect.GroupKind:
- if mt2, ok := xd.MessageType().(protoreflect.MessageType); ok && mt == nil {
+ if mt2, ok := xd.Message().(protoreflect.MessageType); ok && mt == nil {
mt = mt2
}
if et != nil {
diff --git a/internal/prototype/protofile_list.go b/internal/prototype/protofile_list.go
index 188be49..f136b5f 100644
--- a/internal/prototype/protofile_list.go
+++ b/internal/prototype/protofile_list.go
@@ -101,11 +101,11 @@
func (p *oneofFieldsMeta) lazyInit(parent pref.Descriptor) *oneofFields {
p.once.Do(func() {
- otyp := parent.(pref.OneofDescriptor)
- mtyp, _ := parent.Parent()
- fs := mtyp.(pref.MessageDescriptor).Fields()
+ od := parent.(pref.OneofDescriptor)
+ md, _ := parent.Parent()
+ fs := md.(pref.MessageDescriptor).Fields()
for i := 0; i < fs.Len(); i++ {
- if f := fs.Get(i); otyp == f.OneofType() {
+ if f := fs.Get(i); od == f.Oneof() {
p.typs = append(p.typs, f)
}
}
diff --git a/internal/prototype/protofile_type.go b/internal/prototype/protofile_type.go
index 9f23ea2..271fdbc 100644
--- a/internal/prototype/protofile_type.go
+++ b/internal/prototype/protofile_type.go
@@ -160,20 +160,26 @@
}
func (t fieldDesc) IsWeak() bool { return t.f.IsWeak }
func (t fieldDesc) IsMap() bool {
- mt := t.MessageType()
+ mt := t.Message()
return mt != nil && mt.IsMapEntry()
}
func (t fieldDesc) HasDefault() bool { return t.f.Default.IsValid() }
func (t fieldDesc) Default() pref.Value { return t.f.dv.value(t, t.f.Default) }
func (t fieldDesc) DefaultEnumValue() pref.EnumValueDescriptor { return t.f.dv.enum(t, t.f.Default) }
-func (t fieldDesc) OneofType() pref.OneofDescriptor { return t.f.ot.lazyInit(t, t.f.OneofName) }
-func (t fieldDesc) ExtendedType() pref.MessageDescriptor { return nil }
-func (t fieldDesc) MessageType() pref.MessageDescriptor { return t.f.mt.lazyInit(t, &t.f.MessageType) }
-func (t fieldDesc) EnumType() pref.EnumDescriptor { return t.f.et.lazyInit(t, &t.f.EnumType) }
+func (t fieldDesc) Oneof() pref.OneofDescriptor { return t.f.ot.lazyInit(t, t.f.OneofName) }
+func (t fieldDesc) Extendee() pref.MessageDescriptor { return nil }
+func (t fieldDesc) Enum() pref.EnumDescriptor { return t.f.et.lazyInit(t, &t.f.EnumType) }
+func (t fieldDesc) Message() pref.MessageDescriptor { return t.f.mt.lazyInit(t, &t.f.MessageType) }
func (t fieldDesc) Format(s fmt.State, r rune) { pfmt.FormatDesc(s, r, t) }
func (t fieldDesc) ProtoType(pref.FieldDescriptor) {}
func (t fieldDesc) ProtoInternal(pragma.DoNotImplement) {}
+// TODO: Remove these methods.
+func (t fieldDesc) OneofType() pref.OneofDescriptor { return t.Oneof() }
+func (t fieldDesc) ExtendedType() pref.MessageDescriptor { return t.Extendee() }
+func (t fieldDesc) EnumType() pref.EnumDescriptor { return t.Enum() }
+func (t fieldDesc) MessageType() pref.MessageDescriptor { return t.Message() }
+
func isPacked(packed OptionalBool, s pref.Syntax, c pref.Cardinality, k pref.Kind) bool {
if packed == False || (packed == DefaultBool && s == pref.Proto2) {
return false
@@ -289,17 +295,19 @@
func (t extensionDesc) HasDefault() bool { return t.x.Default.IsValid() }
func (t extensionDesc) Default() pref.Value { return t.x.dv.value(t, t.x.Default) }
func (t extensionDesc) DefaultEnumValue() pref.EnumValueDescriptor { return t.x.dv.enum(t, t.x.Default) }
-func (t extensionDesc) OneofType() pref.OneofDescriptor { return nil }
-func (t extensionDesc) ExtendedType() pref.MessageDescriptor {
- return t.x.xt.lazyInit(t, &t.x.ExtendedType)
-}
-func (t extensionDesc) MessageType() pref.MessageDescriptor {
- return t.x.mt.lazyInit(t, &t.x.MessageType)
-}
-func (t extensionDesc) EnumType() pref.EnumDescriptor { return t.x.et.lazyInit(t, &t.x.EnumType) }
-func (t extensionDesc) Format(s fmt.State, r rune) { pfmt.FormatDesc(s, r, t) }
-func (t extensionDesc) ProtoType(pref.FieldDescriptor) {}
-func (t extensionDesc) ProtoInternal(pragma.DoNotImplement) {}
+func (t extensionDesc) Oneof() pref.OneofDescriptor { return nil }
+func (t extensionDesc) Extendee() pref.MessageDescriptor { return t.x.xt.lazyInit(t, &t.x.ExtendedType) }
+func (t extensionDesc) Enum() pref.EnumDescriptor { return t.x.et.lazyInit(t, &t.x.EnumType) }
+func (t extensionDesc) Message() pref.MessageDescriptor { return t.x.mt.lazyInit(t, &t.x.MessageType) }
+func (t extensionDesc) Format(s fmt.State, r rune) { pfmt.FormatDesc(s, r, t) }
+func (t extensionDesc) ProtoType(pref.FieldDescriptor) {}
+func (t extensionDesc) ProtoInternal(pragma.DoNotImplement) {}
+
+// TODO: Remove these methods.
+func (t extensionDesc) OneofType() pref.OneofDescriptor { return t.Oneof() }
+func (t extensionDesc) ExtendedType() pref.MessageDescriptor { return t.Extendee() }
+func (t extensionDesc) EnumType() pref.EnumDescriptor { return t.Enum() }
+func (t extensionDesc) MessageType() pref.MessageDescriptor { return t.Message() }
type enumMeta struct {
inheritedMeta
@@ -377,14 +385,18 @@
func (t methodDesc) FullName() pref.FullName { return t.m.fullName }
func (t methodDesc) IsPlaceholder() bool { return false }
func (t methodDesc) Options() pref.ProtoMessage { return altOptions(t.m.Options, descopts.Method) }
-func (t methodDesc) InputType() pref.MessageDescriptor { return t.m.mit.lazyInit(t, &t.m.InputType) }
-func (t methodDesc) OutputType() pref.MessageDescriptor { return t.m.mot.lazyInit(t, &t.m.OutputType) }
+func (t methodDesc) Input() pref.MessageDescriptor { return t.m.mit.lazyInit(t, &t.m.InputType) }
+func (t methodDesc) Output() pref.MessageDescriptor { return t.m.mot.lazyInit(t, &t.m.OutputType) }
func (t methodDesc) IsStreamingClient() bool { return t.m.IsStreamingClient }
func (t methodDesc) IsStreamingServer() bool { return t.m.IsStreamingServer }
func (t methodDesc) Format(s fmt.State, r rune) { pfmt.FormatDesc(s, r, t) }
func (t methodDesc) ProtoType(pref.MethodDescriptor) {}
func (t methodDesc) ProtoInternal(pragma.DoNotImplement) {}
+// TODO: Remove these methods.
+func (t methodDesc) InputType() pref.MessageDescriptor { return t.Input() }
+func (t methodDesc) OutputType() pref.MessageDescriptor { return t.Output() }
+
type defaultValue struct {
once sync.Once
val pref.Value
@@ -417,12 +429,12 @@
// default value for an enum value is the wrong type.
switch v := v.Interface().(type) {
case string:
- if ev := t.EnumType().Values().ByName(pref.Name(v)); ev != nil {
+ if ev := t.Enum().Values().ByName(pref.Name(v)); ev != nil {
p.eval = ev
p.val = pref.ValueOf(p.eval.Number())
}
case pref.EnumNumber:
- p.eval = t.EnumType().Values().ByNumber(v)
+ p.eval = t.Enum().Values().ByNumber(v)
}
case pref.BytesKind:
// Store a copy of the default bytes, so that we can detect
@@ -455,8 +467,8 @@
case pref.EnumKind:
p.val = zeroEnum
if t.Syntax() == pref.Proto2 {
- if et := t.EnumType(); et != nil {
- if vs := et.Values(); vs.Len() > 0 {
+ if ed := t.Enum(); ed != nil {
+ if vs := ed.Values(); vs.Len() > 0 {
p.val = pref.ValueOf(vs.Get(0).Number())
}
}
diff --git a/internal/prototype/standalone_type.go b/internal/prototype/standalone_type.go
index 4dd681b..098e5ae 100644
--- a/internal/prototype/standalone_type.go
+++ b/internal/prototype/standalone_type.go
@@ -89,10 +89,16 @@
func (t standaloneExtension) DefaultEnumValue() pref.EnumValueDescriptor {
return t.x.dv.enum(t, t.x.Default)
}
-func (t standaloneExtension) OneofType() pref.OneofDescriptor { return nil }
-func (t standaloneExtension) MessageType() pref.MessageDescriptor { return t.x.MessageType }
-func (t standaloneExtension) EnumType() pref.EnumDescriptor { return t.x.EnumType }
-func (t standaloneExtension) ExtendedType() pref.MessageDescriptor { return t.x.ExtendedType }
-func (t standaloneExtension) Format(s fmt.State, r rune) { pfmt.FormatDesc(s, r, t) }
-func (t standaloneExtension) ProtoType(pref.FieldDescriptor) {}
-func (t standaloneExtension) ProtoInternal(pragma.DoNotImplement) {}
+func (t standaloneExtension) Oneof() pref.OneofDescriptor { return nil }
+func (t standaloneExtension) Extendee() pref.MessageDescriptor { return t.x.ExtendedType }
+func (t standaloneExtension) Enum() pref.EnumDescriptor { return t.x.EnumType }
+func (t standaloneExtension) Message() pref.MessageDescriptor { return t.x.MessageType }
+func (t standaloneExtension) Format(s fmt.State, r rune) { pfmt.FormatDesc(s, r, t) }
+func (t standaloneExtension) ProtoType(pref.FieldDescriptor) {}
+func (t standaloneExtension) ProtoInternal(pragma.DoNotImplement) {}
+
+// TODO: Remove these methods.
+func (t standaloneExtension) OneofType() pref.OneofDescriptor { return t.Oneof() }
+func (t standaloneExtension) ExtendedType() pref.MessageDescriptor { return t.Extendee() }
+func (t standaloneExtension) EnumType() pref.EnumDescriptor { return t.Enum() }
+func (t standaloneExtension) MessageType() pref.MessageDescriptor { return t.Message() }
diff --git a/internal/prototype/type_test.go b/internal/prototype/type_test.go
index fa4258e..a8c171b 100644
--- a/internal/prototype/type_test.go
+++ b/internal/prototype/type_test.go
@@ -391,42 +391,42 @@
"Fields": M{
"Len": 2,
"ByNumber:1": M{
- "Parent": M{"FullName": pref.FullName("test.A")},
- "Index": 0,
- "Name": pref.Name("key"),
- "FullName": pref.FullName("test.A.key"),
- "Number": pref.FieldNumber(1),
- "Cardinality": pref.Optional,
- "Kind": pref.StringKind,
- "Options": &descriptorpb.FieldOptions{Deprecated: scalar.Bool(true)},
- "HasJSONName": false,
- "JSONName": "key",
- "IsPacked": false,
- "IsMap": false,
- "IsWeak": false,
- "Default": "",
- "OneofType": nil,
- "ExtendedType": nil,
- "MessageType": nil,
- "EnumType": nil,
+ "Parent": M{"FullName": pref.FullName("test.A")},
+ "Index": 0,
+ "Name": pref.Name("key"),
+ "FullName": pref.FullName("test.A.key"),
+ "Number": pref.FieldNumber(1),
+ "Cardinality": pref.Optional,
+ "Kind": pref.StringKind,
+ "Options": &descriptorpb.FieldOptions{Deprecated: scalar.Bool(true)},
+ "HasJSONName": false,
+ "JSONName": "key",
+ "IsPacked": false,
+ "IsMap": false,
+ "IsWeak": false,
+ "Default": "",
+ "Oneof": nil,
+ "Extendee": nil,
+ "Message": nil,
+ "Enum": nil,
},
"ByNumber:2": M{
- "Parent": M{"FullName": pref.FullName("test.A")},
- "Index": 1,
- "Name": pref.Name("value"),
- "FullName": pref.FullName("test.A.value"),
- "Number": pref.FieldNumber(2),
- "Cardinality": pref.Optional,
- "Kind": pref.MessageKind,
- "JSONName": "value",
- "IsPacked": false,
- "IsMap": false,
- "IsWeak": false,
- "Default": nil,
- "OneofType": nil,
- "ExtendedType": nil,
- "MessageType": M{"FullName": pref.FullName("test.B"), "IsPlaceholder": false},
- "EnumType": nil,
+ "Parent": M{"FullName": pref.FullName("test.A")},
+ "Index": 1,
+ "Name": pref.Name("value"),
+ "FullName": pref.FullName("test.A.value"),
+ "Number": pref.FieldNumber(2),
+ "Cardinality": pref.Optional,
+ "Kind": pref.MessageKind,
+ "JSONName": "value",
+ "IsPacked": false,
+ "IsMap": false,
+ "IsWeak": false,
+ "Default": nil,
+ "Oneof": nil,
+ "Extendee": nil,
+ "Message": M{"FullName": pref.FullName("test.B"), "IsPlaceholder": false},
+ "Enum": nil,
},
"ByNumber:3": nil,
},
@@ -444,11 +444,11 @@
"Len": 6,
"ByJSONName:field_one": nil,
"ByJSONName:fieldOne": M{
- "Name": pref.Name("field_one"),
- "Index": 0,
- "JSONName": "fieldOne",
- "Default": "hello, \"world!\"\n",
- "OneofType": M{"Name": pref.Name("O1"), "IsPlaceholder": false},
+ "Name": pref.Name("field_one"),
+ "Index": 0,
+ "JSONName": "fieldOne",
+ "Default": "hello, \"world!\"\n",
+ "Oneof": M{"Name": pref.Name("O1"), "IsPlaceholder": false},
},
"ByJSONName:fieldTwo": nil,
"ByJSONName:Field2": M{
@@ -457,20 +457,20 @@
"HasJSONName": true,
"JSONName": "Field2",
"Default": pref.EnumNumber(1),
- "OneofType": M{"Name": pref.Name("O2"), "IsPlaceholder": false},
+ "Oneof": M{"Name": pref.Name("O2"), "IsPlaceholder": false},
},
"ByName:fieldThree": nil,
"ByName:field_three": M{
- "IsMap": false,
- "MessageType": M{"FullName": pref.FullName("test.C"), "IsPlaceholder": false},
- "OneofType": M{"Name": pref.Name("O2"), "IsPlaceholder": false},
+ "IsMap": false,
+ "Message": M{"FullName": pref.FullName("test.C"), "IsPlaceholder": false},
+ "Oneof": M{"Name": pref.Name("O2"), "IsPlaceholder": false},
},
"ByNumber:12": nil,
"ByNumber:4": M{
"Cardinality": pref.Repeated,
"IsMap": true,
"Default": nil,
- "MessageType": M{"FullName": pref.FullName("test.A"), "IsPlaceholder": false},
+ "Message": M{"FullName": pref.FullName("test.A"), "IsPlaceholder": false},
},
"ByNumber:5": M{
"Cardinality": pref.Repeated,
@@ -481,7 +481,7 @@
"ByNumber:6": M{
"Cardinality": pref.Required,
"Default": []byte(nil),
- "OneofType": nil,
+ "Oneof": nil,
},
},
"Oneofs": M{
@@ -601,14 +601,14 @@
"Extensions": M{
"Len": 1,
"ByName:X": M{
- "Name": pref.Name("X"),
- "Number": pref.FieldNumber(1000),
- "Cardinality": pref.Repeated,
- "Kind": pref.MessageKind,
- "IsPacked": false,
- "MessageType": M{"FullName": pref.FullName("test.C"), "IsPlaceholder": false},
- "ExtendedType": M{"FullName": pref.FullName("test.B"), "IsPlaceholder": false},
- "Options": &descriptorpb.FieldOptions{Packed: scalar.Bool(true)},
+ "Name": pref.Name("X"),
+ "Number": pref.FieldNumber(1000),
+ "Cardinality": pref.Repeated,
+ "Kind": pref.MessageKind,
+ "IsPacked": false,
+ "Message": M{"FullName": pref.FullName("test.C"), "IsPlaceholder": false},
+ "Extendee": M{"FullName": pref.FullName("test.B"), "IsPlaceholder": false},
+ "Options": &descriptorpb.FieldOptions{Packed: scalar.Bool(true)},
},
},
"Services": M{
@@ -625,8 +625,8 @@
"Parent": M{"FullName": pref.FullName("test.S")},
"Name": pref.Name("M"),
"FullName": pref.FullName("test.S.M"),
- "InputType": M{"FullName": pref.FullName("test.A"), "IsPlaceholder": false},
- "OutputType": M{"FullName": pref.FullName("test.C.A"), "IsPlaceholder": false},
+ "Input": M{"FullName": pref.FullName("test.A"), "IsPlaceholder": false},
+ "Output": M{"FullName": pref.FullName("test.C.A"), "IsPlaceholder": false},
"IsStreamingClient": true,
"IsStreamingServer": true,
"Options": &descriptorpb.MethodOptions{Deprecated: scalar.Bool(true)},
@@ -728,7 +728,7 @@
Cardinality: optional
Kind: message
JSONName: "value"
- MessageType: test.B
+ Message: test.B
}]
}, {
Name: B
@@ -740,7 +740,7 @@
JSONName: "fieldOne"
HasDefault: true
Default: "hello, \"world!\"\n"
- OneofType: O1
+ Oneof: O1
}, {
Name: field_two
Number: 2
@@ -750,16 +750,16 @@
JSONName: "Field2"
HasDefault: true
Default: 1
- OneofType: O2
- EnumType: test.E1
+ Oneof: O2
+ Enum: test.E1
}, {
Name: field_three
Number: 3
Cardinality: optional
Kind: message
JSONName: "fieldThree"
- OneofType: O2
- MessageType: test.C
+ Oneof: O2
+ Message: test.C
}, {
Name: field_four
Number: 4
@@ -768,7 +768,7 @@
HasJSONName: true
JSONName: "Field4"
IsMap: true
- MessageType: test.A
+ Message: test.A
}, {
Name: field_five
Number: 5
@@ -817,12 +817,12 @@
]
}]
Extensions: [{
- Name: X
- Number: 1000
- Cardinality: repeated
- Kind: message
- ExtendedType: test.B
- MessageType: test.C
+ Name: X
+ Number: 1000
+ Cardinality: repeated
+ Kind: message
+ Extendee: test.B
+ Message: test.C
}]
}]
Enums: [{
@@ -835,19 +835,19 @@
ReservedRanges: [10:20, 30]
}]
Extensions: [{
- Name: X
- Number: 1000
- Cardinality: repeated
- Kind: message
- ExtendedType: test.B
- MessageType: test.C
+ Name: X
+ Number: 1000
+ Cardinality: repeated
+ Kind: message
+ Extendee: test.B
+ Message: test.C
}]
Services: [{
Name: S
Methods: [{
Name: M
- InputType: test.A
- OutputType: test.C.A
+ Input: test.A
+ Output: test.C.A
IsStreamingClient: true
IsStreamingServer: true
}]
diff --git a/internal/typefmt/desc_test.go b/internal/typefmt/desc_test.go
index 346362b..6fe9017 100644
--- a/internal/typefmt/desc_test.go
+++ b/internal/typefmt/desc_test.go
@@ -27,6 +27,14 @@
"DescriptorProto": true,
"ExtensionRangeOptions": true,
"Options": true,
+
+ // TODO: Remove these when the methods are removed.
+ "OneofType": true,
+ "ExtendedType": true,
+ "EnumType": true,
+ "MessageType": true,
+ "InputType": true,
+ "OutputType": true,
}
for rt, m := range descriptorAccessors {
diff --git a/internal/typefmt/stringer.go b/internal/typefmt/stringer.go
index feb28ef..eec6fd2 100644
--- a/internal/typefmt/stringer.go
+++ b/internal/typefmt/stringer.go
@@ -106,12 +106,12 @@
var descriptorAccessors = map[reflect.Type][]string{
reflect.TypeOf((*pref.FileDescriptor)(nil)).Elem(): {"Path", "Package", "Imports", "Messages", "Enums", "Extensions", "Services"},
reflect.TypeOf((*pref.MessageDescriptor)(nil)).Elem(): {"IsMapEntry", "Fields", "Oneofs", "ReservedNames", "ReservedRanges", "RequiredNumbers", "ExtensionRanges", "Messages", "Enums", "Extensions"},
- reflect.TypeOf((*pref.FieldDescriptor)(nil)).Elem(): {"Number", "Cardinality", "Kind", "HasJSONName", "JSONName", "IsPacked", "IsMap", "IsWeak", "HasDefault", "Default", "OneofType", "ExtendedType", "MessageType", "EnumType"},
+ reflect.TypeOf((*pref.FieldDescriptor)(nil)).Elem(): {"Number", "Cardinality", "Kind", "HasJSONName", "JSONName", "IsPacked", "IsMap", "IsWeak", "HasDefault", "Default", "Oneof", "Extendee", "Message", "Enum"},
reflect.TypeOf((*pref.OneofDescriptor)(nil)).Elem(): {"Fields"}, // not directly used; must keep in sync with formatDescOpt
reflect.TypeOf((*pref.EnumDescriptor)(nil)).Elem(): {"Values", "ReservedNames", "ReservedRanges"},
reflect.TypeOf((*pref.EnumValueDescriptor)(nil)).Elem(): {"Number"},
reflect.TypeOf((*pref.ServiceDescriptor)(nil)).Elem(): {"Methods"},
- reflect.TypeOf((*pref.MethodDescriptor)(nil)).Elem(): {"InputType", "OutputType", "IsStreamingClient", "IsStreamingServer"},
+ reflect.TypeOf((*pref.MethodDescriptor)(nil)).Elem(): {"Input", "Output", "IsStreamingClient", "IsStreamingServer"},
}
func FormatDesc(s fmt.State, r rune, t pref.Descriptor) {