package impl
import (
ptag
)
func ( *ExtensionInfo) () {
:= .desc
var protoiface.MessageV1
:= .ContainingMessage().FullName()
if , := protoregistry.GlobalTypes.FindMessageByName(); != nil {
:= .New().Interface()
:= reflect.TypeOf()
if , := .(unwrapper); {
= reflect.TypeOf(.protoUnwrap())
}
:= reflect.Zero().Interface()
if , := .(protoiface.MessageV1); {
=
}
}
:= .goType
switch .Kind() {
case reflect.Bool, reflect.Int32, reflect.Int64, reflect.Uint32, reflect.Uint64, reflect.Float32, reflect.Float64, reflect.String:
= reflect.PtrTo()
}
var string
if .Kind() == protoreflect.EnumKind {
= legacyEnumName(.Enum())
}
var string
if := .ParentFile(); != nil {
= .Path()
}
:= .FullName()
if messageset.IsMessageSetExtension() {
= .Parent()
}
.ExtendedType =
.ExtensionType = reflect.Zero().Interface()
.Field = int32(.Number())
.Name = string()
.Tag = ptag.Marshal(, )
.Filename =
}
func ( *ExtensionInfo) () {
if .ExtendedType == nil || .ExtensionType == nil {
:= placeholderExtension{
name: protoreflect.FullName(.Name),
number: protoreflect.FieldNumber(.Field),
}
.desc = extensionTypeDescriptor{, }
return
}
var protoreflect.EnumDescriptor
var protoreflect.MessageDescriptor
:= reflect.TypeOf(.ExtensionType)
:= .Kind() == reflect.Ptr && .Elem().Kind() != reflect.Struct
:= .Kind() == reflect.Slice && .Elem().Kind() != reflect.Uint8
if || {
= .Elem()
}
switch v := reflect.Zero().Interface().(type) {
case protoreflect.Enum:
= .Descriptor()
case enumV1:
= LegacyLoadEnumDesc()
case protoreflect.ProtoMessage:
= .ProtoReflect().Descriptor()
case messageV1:
= LegacyLoadMessageDesc()
}
var protoreflect.EnumValueDescriptors
if != nil {
= .Values()
}
:= ptag.Unmarshal(.Tag, , ).(*filedesc.Field)
:= &filedesc.Extension{L2: new(filedesc.ExtensionL2)}
.L0.ParentFile = filedesc.SurrogateProto2
.L0.FullName = protoreflect.FullName(.Name)
.L1.Number = protoreflect.FieldNumber(.Field)
.L1.Cardinality = .L1.Cardinality
.L1.Kind = .L1.Kind
.L2.IsPacked = .L1.IsPacked
.L2.Default = .L1.Default
.L1.Extendee = Export{}.MessageDescriptorOf(.ExtendedType)
.L2.Enum =
.L2.Message =
if messageset.IsMessageSet(.L1.Extendee) && .FullName() == .L0.FullName {
.L0.FullName = .L0.FullName.Append(messageset.ExtensionName)
}
:= reflect.TypeOf(.ExtensionType)
if {
= .Elem()
}
.goType =
.desc = extensionTypeDescriptor{, }
}
type placeholderExtension struct {
name protoreflect.FullName
number protoreflect.FieldNumber
}
func ( placeholderExtension) () protoreflect.FileDescriptor { return nil }
func ( placeholderExtension) () protoreflect.Descriptor { return nil }
func ( placeholderExtension) () int { return 0 }
func ( placeholderExtension) () protoreflect.Syntax { return 0 }
func ( placeholderExtension) () protoreflect.Name { return .name.Name() }
func ( placeholderExtension) () protoreflect.FullName { return .name }
func ( placeholderExtension) () bool { return true }
func ( placeholderExtension) () protoreflect.ProtoMessage { return descopts.Field }
func ( placeholderExtension) () protoreflect.FieldNumber { return .number }
func ( placeholderExtension) () protoreflect.Cardinality { return 0 }
func ( placeholderExtension) () protoreflect.Kind { return 0 }
func ( placeholderExtension) () bool { return false }
func ( placeholderExtension) () string { return "[" + string(.name) + "]" }
func ( placeholderExtension) () string { return "[" + string(.name) + "]" }
func ( placeholderExtension) () bool { return false }
func ( placeholderExtension) () bool { return false }
func ( placeholderExtension) () bool { return true }
func ( placeholderExtension) () bool { return false }
func ( placeholderExtension) () bool { return false }
func ( placeholderExtension) () bool { return false }
func ( placeholderExtension) () bool { return false }
func ( placeholderExtension) () protoreflect.FieldDescriptor { return nil }
func ( placeholderExtension) () protoreflect.FieldDescriptor { return nil }
func ( placeholderExtension) () bool { return false }
func ( placeholderExtension) () protoreflect.Value { return protoreflect.Value{} }
func ( placeholderExtension) () protoreflect.EnumValueDescriptor { return nil }
func ( placeholderExtension) () protoreflect.OneofDescriptor { return nil }
func ( placeholderExtension) () protoreflect.MessageDescriptor { return nil }
func ( placeholderExtension) () protoreflect.EnumDescriptor { return nil }
func ( placeholderExtension) () protoreflect.MessageDescriptor { return nil }
func ( placeholderExtension) (protoreflect.FieldDescriptor) { return }
func ( placeholderExtension) (pragma.DoNotImplement) { return }