Pārlūkot izejas kodu

Change MessageName to check if Message has an XXX_MessageName() method, and use the name returned by that method instead of internal registry when present.
PiperOrigin-RevId: 131111087

Googler 9 gadi atpakaļ
vecāks
revīzija
5bdfda0a01
1 mainītis faili ar 9 papildinājumiem un 1 dzēšanām
  1. 9 1
      proto/properties.go

+ 9 - 1
proto/properties.go

@@ -844,7 +844,15 @@ func RegisterType(x Message, name string) {
 }
 
 // MessageName returns the fully-qualified proto name for the given message type.
-func MessageName(x Message) string { return revProtoTypes[reflect.TypeOf(x)] }
+func MessageName(x Message) string {
+	type xname interface {
+		XXX_MessageName() string
+	}
+	if m, ok := x.(xname); ok {
+		return m.XXX_MessageName()
+	}
+	return revProtoTypes[reflect.TypeOf(x)]
+}
 
 // MessageType returns the message type (pointer to struct) for a named message.
 func MessageType(name string) reflect.Type { return protoTypes[name] }