| // Copyright 2019 The Go Authors. All rights reserved. |
| // Use of this source code is governed by a BSD-style |
| // license that can be found in the LICENSE file. |
| |
| package irregular |
| |
| import ( |
| "google.golang.org/protobuf/encoding/prototext" |
| "google.golang.org/protobuf/reflect/protodesc" |
| "google.golang.org/protobuf/reflect/protoreflect" |
| "google.golang.org/protobuf/runtime/protoiface" |
| |
| "google.golang.org/protobuf/types/descriptorpb" |
| ) |
| |
| type IrregularMessage struct { |
| set bool |
| value string |
| } |
| |
| func (m *IrregularMessage) ProtoReflect() protoreflect.Message { return (*message)(m) } |
| |
| type message IrregularMessage |
| |
| type messageType struct{} |
| |
| func (messageType) New() protoreflect.Message { return &message{} } |
| func (messageType) Zero() protoreflect.Message { return (*message)(nil) } |
| func (messageType) Descriptor() protoreflect.MessageDescriptor { return fileDesc.Messages().Get(0) } |
| |
| func (m *message) New() protoreflect.Message { return &message{} } |
| func (m *message) Descriptor() protoreflect.MessageDescriptor { return fileDesc.Messages().Get(0) } |
| func (m *message) Type() protoreflect.MessageType { return messageType{} } |
| func (m *message) Interface() protoreflect.ProtoMessage { return (*IrregularMessage)(m) } |
| func (m *message) ProtoMethods() *protoiface.Methods { return nil } |
| |
| var fieldDescS = fileDesc.Messages().Get(0).Fields().Get(0) |
| |
| func (m *message) Range(f func(protoreflect.FieldDescriptor, protoreflect.Value) bool) { |
| if m.set { |
| f(fieldDescS, protoreflect.ValueOf(m.value)) |
| } |
| } |
| |
| func (m *message) Has(fd protoreflect.FieldDescriptor) bool { |
| if fd == fieldDescS { |
| return m.set |
| } |
| panic("invalid field descriptor") |
| } |
| |
| func (m *message) Clear(fd protoreflect.FieldDescriptor) { |
| if fd == fieldDescS { |
| m.value = "" |
| m.set = false |
| return |
| } |
| panic("invalid field descriptor") |
| } |
| |
| func (m *message) Get(fd protoreflect.FieldDescriptor) protoreflect.Value { |
| if fd == fieldDescS { |
| return protoreflect.ValueOf(m.value) |
| } |
| panic("invalid field descriptor") |
| } |
| |
| func (m *message) Set(fd protoreflect.FieldDescriptor, v protoreflect.Value) { |
| if fd == fieldDescS { |
| m.value = v.String() |
| m.set = true |
| return |
| } |
| panic("invalid field descriptor") |
| } |
| |
| func (m *message) Mutable(protoreflect.FieldDescriptor) protoreflect.Value { |
| panic("invalid field descriptor") |
| } |
| |
| func (m *message) NewField(protoreflect.FieldDescriptor) protoreflect.Value { |
| panic("invalid field descriptor") |
| } |
| |
| func (m *message) WhichOneof(protoreflect.OneofDescriptor) protoreflect.FieldDescriptor { |
| panic("invalid oneof descriptor") |
| } |
| |
| func (m *message) GetUnknown() protoreflect.RawFields { return nil } |
| func (m *message) SetUnknown(protoreflect.RawFields) { return } |
| |
| func (m *message) IsValid() bool { |
| return m != nil |
| } |
| |
| var fileDesc = func() protoreflect.FileDescriptor { |
| p := &descriptorpb.FileDescriptorProto{} |
| if err := prototext.Unmarshal([]byte(descriptorText), p); err != nil { |
| panic(err) |
| } |
| file, err := protodesc.NewFile(p, nil) |
| if err != nil { |
| panic(err) |
| } |
| return file |
| }() |
| |
| func file_internal_testprotos_irregular_irregular_proto_init() { _ = fileDesc } |
| |
| const descriptorText = ` |
| name: "internal/testprotos/irregular/irregular.proto" |
| package: "goproto.proto.thirdparty" |
| message_type { |
| name: "IrregularMessage" |
| field { |
| name: "s" |
| number: 1 |
| label: LABEL_OPTIONAL |
| type: TYPE_STRING |
| json_name: "s" |
| } |
| } |
| options { |
| go_package: "google.golang.org/protobuf/internal/testprotos/irregular" |
| } |
| ` |
| |
| type AberrantMessage int |
| |
| func (m AberrantMessage) ProtoMessage() {} |
| func (m AberrantMessage) Reset() {} |
| func (m AberrantMessage) String() string { return "" } |
| func (m AberrantMessage) Marshal() ([]byte, error) { return nil, nil } |
| func (m AberrantMessage) Unmarshal([]byte) error { return nil } |